5

Có cách nào để xoay hình ảnh dựa trên ánh xạ trong ImageMagick không? Vấn đề tương tự như bản đồ chuyển vị trí thay vì cong vênh & biến hình dạng dựa trên luma/chroma trên bản đồ, tôi muốn xoay hình ảnh dựa trên bản đồ. Ví dụ: Nếu tôi có một mẫu, sau đó áp dụng một hình dạng bản đồ sắc/luma với nó, nó sẽ xoay mẫu và xuất nó dựa trên sự chênh lệch luma/chroma từ điểm giữa (50%).Lập bản đồ xoay trong ImageMagick

Giống như vậy: enter image description here

Nhiệm vụ của tôi là tạo ra một tập hợp khá phức tạp của các hình dạng và bản đồ một mô hình đối với họ ở góc độ khác nhau tương ứng của họ chroma/luma.

Đây có phải là một số loại plugin tùy chỉnh mà tôi phải viết hoặc có cách đơn giản để thực hiện điều này trong IM 6 không?

Cảm ơn rất nhiều!

Trả lời

5

ImageMagick không có chức năng bạn muốn xây dựng, nhưng nhờ vào đối số -fx bạn có thể tự viết.
Lệnh sau sẽ xoay chiều kim đồng hồ hình ảnh nguồn bởi mặt nạ áp dụng:

convert input.png rotationmap.png -fx \ 
'rs=-6.28318531; 
p{ 
    cos(v*rs)*(i-w/2.0)-sin(v*rs)*(j-h/2.0)+w/2.0, 
    sin(v*rs)*(i-w/2.0)+cos(v*rs)*(j-h/2.0)+h/2.0 
}' output.png 

Điền vào bản đồ luân chuyển với #202020 để xoay 45 độ ví dụ:

hexval = (rotation_deg/360) * 255 

enter image description here

Hoặc làm những thứ sillier hơn (thật thú vị khi chơi với, thực sự):

enter image description here

Hãy cẩn thận:

  • Cắt góc chỉ cần lặp lại vô thời hạn.
  • Bản đồ quay phải có cùng kích thước với hình ảnh nguồn.
  • Không lấy lại mẫu, kết quả có thể bị mờ hoặc sắc nét.
+0

Đề xuất tuyệt vời! bất kỳ ý tưởng làm thế nào tôi có thể có thể lực lượng resampling? – Alex

+1

@Alex Thật không may là không có lấy lại trực tiếp tham số '-fx', nhưng nội suy cơ bản là: http://www.imagemagick.org/script/command-line-options.php?#interpolate. Tôi đã thử nghiệm một vài và 'lưới' dường như nhổ ra kết quả không sao, mặc dù sự khác biệt giữa chúng là rất nhỏ. Hoặc bạn có thể đặt công cụ nội suy của riêng bạn vào công thức. –