5

Czy istnieje sposób obracania obrazu w oparciu o mapowanie w ImageMagick? Problem jest podobny do odwzorowania przesunięcia, jednak zamiast wypaczania zmienia się kształt na podstawie luma/chroma na mapie Chcę obrócić obraz w oparciu o mapę.Mapowanie obrotów w ImageMagick

Na przykład: Gdybym miał wzór, a następnie zastosował do niego kształt mapy chroma/luma, obróciłby wzór i wyprowadził go w oparciu o różnicę luma/chroma od punktu środkowego (50%).

tak: enter image description here

Moim zadaniem jest stworzenie dość złożony zestaw kształtów i zmapować wzór do nich pod różnymi kątami odpowiednich ich chroma/Luma.

Czy to byłaby jakaś niestandardowa wtyczka, którą musiałabym napisać, czy jest prosty sposób na to w IM 6?

Dziękuję bardzo!

Odpowiedz

5

ImageMagick nie ma wbudowanej funkcjonalności, ale dzięki argumentowi -fx można pisać własne.
Poniższa komenda będzie się obracać zgodnie z ruchem wskazówek źródło obrazu przez zastosowanej maski:

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 

Fill mapę rotacji z #202020 obrócić o 45 stopni na przykład:

hexval = (rotation_deg/360) * 255 

enter image description here

Or rób rzeczy bardziej sillier (zabawnie się z tym bawić):

enter image description here

Ostrzeżenia:

  • Odciąć rogi tylko powtarzać w nieskończoność.
  • Mapa obrotów musi być tego samego rozmiaru co obraz źródłowy.
  • Brak ponownego próbkowania, wynik może być niewyraźny lub ostry.
+0

Świetna propozycja! jakikolwiek pomysł, w jaki sposób mogę wymusić resampling? – Alex

+1

@Alex Niestety nie ma bezpośredniego resamplingu dla parametru '-fx', ale podstawowa interpolacja to: http://www.imagemagick.org/script/command-line-options.php?#interpolate. Przetestowałem kilka i 'mesh' wydaje się wypluwać dobre wyniki, chociaż różnica między nimi jest bardzo niewielka. Ewentualnie możesz wprowadzić własne formuły interpolacji do formuły. –