TA te kształtu
Transkrypt
TA te kształtu
Grafika 2D Animacja Zmiany Kształtu opracowanie: Jacek Kęsik Wykład przedstawia podstawy animacji zmiany kształtu - morfingu Animacja zmiany kształtu Podstawowe pojęcia Zlewanie (Dissolving / cross-dissolving) łączenie dwóch obrazów poprzez płynne przejście - uśrednianie Wstawianie (tweening) proces sekwencyjnej interpolacji obrazów pośrednich między dwoma stanami kluczowymi w celu uzyskania wrażenia płynnego przejścia między nimi Deformowanie (warping) zniekształcanie obrazu uzależnione od obszaru tego obrazu, matematyczny odpowiednik nadruku na elastycznej powierzchni (rozciąganej i ściskanej w różnych miejscach) Przekształcanie (morphing) jest kombinacją powyższych Animacja zmiany kształtu - morphing Na postawie pracy dr Stevena Seitza (University of Washington) http://www.cs.washington.edu/homes/seitz/ Animacja zmiany kształtu - morphing Czym jest morphing? Próba znalezienia „stanu pośredniego” pomiędzy dwoma obiektami NIE stan pośredni między dwoma obrazami obiektów Animacja zmiany kształtu - morphing Czym jest morphing? Próba znalezienia „stanu pośredniego” pomiędzy dwoma obiektami NIE stan pośredni między dwoma obrazami obiektów tylko obraz „obiektu pośredniego” Animacja zmiany kształtu - morphing Chcemy uzyskać płynną transformację pomiędzy dwoma obiektami Animacja zmiany kształtu - morphing „Zwykłe” przenikanie nie zdaje z reguły egzaminu ze względu na efekt powstawania „duchów” na obrazie …czasem taki efekt może być zamierzony… http://www.salavon.com/ Animacja zmiany kształtu - morphing Morfing = warping + przenikanie Kształt (zmiany geometryczne) Kolor (zmiany fotometryczne) Animacja zmiany kształtu - morphing Obraz #1 warp przenikanie morphing Obraz #2 warp Image morphing image #1 warp cross-dissolving morphing image #2 warp Animacja zmiany kształtu - morphing Czym jest warping? W gruncie rzeczy jest to przekształcenie obrazu. Część z poznanych już przekształceń możemy zaliczyć do globalnego (dla całego obrazu) warpingu Animacja zmiany kształtu - morphing filtrowanie: zmiana zakresu obrazu g(x) = h(f(x)) h(y)=0.5y+0.5 f g h warping: zmiana domeny obrazu g(x) = f(h(x)) h([x,y])=[x,y/2] f h g Animacja zmiany kształtu - morphing Przykłady warpingu parametrycznego: translacja afiniczne obrót perspektywa aspect cylindryczne Animacja zmiany kształtu - morphing Globalny warping parametryczny T p = (x,y) Transformacja T jest elementem zmieniającym współrzędne: p’ = T(p) Co to znaczy że T jest globalne? p’ = (x’,y’) Takie samo dla każdego punktu p Można je stosunkowo łatwo opisać (kilka parametrów) T często reprezentowane jako macierz: p’ = M*p x' x y ' M y Animacja zmiany kształtu - morphing Globalny warping parametryczny Znamy już globalny warping parametryczny, jego przykładami są transformacje liniowe: x ' ax x ' a 0 x Skalowanie y ' 0 b y y ' by x' cos sin x y ' sin cos y Obroty Pochylenia i odbicia x ' 1 y ' sh y sh x x 1 y x ' 1 0 x x ' 1 0 x y ' 0 1 y y ' 0 1 y Animacja zmiany kształtu - morphing Globalny warping parametryczny Cechy transformacji liniowych: Środek układu wsp. nie zmienia się Wszystkie linie mają swoje odpowiedniki Linie równoległe pozostają równoległe Zachowane są współczynniki kształtu/wz. wielkości Ale macierz 2x2 nie pozwala na zapisanie translacji. Wygodniej stosować współrzędne jednorodne x ' 1 0 t x x x t x y ' 0 1 t y y t y y 1 0 0 1 1 1 Animacja zmiany kształtu - morphing Globalny warping parametryczny Cechy transformacji liniowych: ? T(x,y) y’ y x x’ Animacja zmiany kształtu - morphing Globalny warping parametryczny Transformacje Afiniczne Tr. Liniowe + przesunięcia Cechy transformacji liniowych: Środek układu wsp. Może zmienić położenie Wszystkie linie mają swoje odpowiedniki Linie równoległe pozostają równoległe Zachowane są współczynniki kształtu/wz. wielkości Animacja zmiany kształtu - morphing Globalny warping parametryczny Transformacje Afiniczne Tr. Liniowe + przesunięcia ? T(x,y) y’ y x x’ Animacja zmiany kształtu - morphing Globalny warping parametryczny Transformacje Projekcyjne Tr. Afiniczne + projekcyjny warp Cechy transformacji liniowych: Środek układu wsp. może zmienić położenie Wszystkie linie mają swoje odpowiedniki Linie równoległe nie koniecznie pozostają równoległe Współczynniki kształtu nie muszą być zachowane x' a b y ' d e w' g h c x f y i w Animacja zmiany kształtu - morphing Globalny warping parametryczny Transformacje Projekcyjne Tr. Afiniczne + projekcyjny warp ? T(x,y) y’ y x x’ Animacja zmiany kształtu - morphing Globalny warping parametryczny Gdy mamy już określony warp obrazu, przekształcamy jego poszczególne piksele. Dwie drogi: Forward warping Inverse warping Animacja zmiany kształtu - morphing Globalny warping parametryczny Forward warping Dla każdego piksela obrazu źródłowego określana jest jego pozycja na obrazie wynikowym x’ = T(x) T(x) x I(x) x’ I’(x’) Animacja zmiany kształtu - morphing Globalny warping parametryczny Forward warping - algorytm fwarp(I, I’, T) { for (y=0; y<I.height; y++) for (x=0; x<I.width; x++) { (x’,y’)=T(x,y); I’(x’,y’)=I(x,y); } I } I’ T x x’ Animacja zmiany kształtu - morphing Globalny warping parametryczny Forward warping – rozwiązanie Rozprowadzenie (dodanie) wartości koloru po sąsiadujących pikselach (splatting) Normalizacja wartości kolorów obrazu po zakończeniu warpa Animacja zmiany kształtu - morphing Globalny warping parametryczny Inverse warping Dla każdego piksela obrazu docelowego określany jest jego odpowiednik na obrazie źródłowym x = T-1(x’) T-1(x’) x I(x) x’ I’(x’) Animacja zmiany kształtu - morphing Globalny warping parametryczny Inverse warping - algorytm iwarp(I, I’, T) { for (y=0; y<I’.height; y++) for (x=0; x<I’.width; x++) { (x,y)=T-1(x’,y’); I’(x’,y’)=I(x,y); } I } T-1 I’ x x’ Animacja zmiany kształtu - morphing Globalny warping parametryczny Inverse warping Dla każdego piksela obrazu docelowego określany jest jego odpowiednik na obrazie źródłowym x = T-1(x’) Co jeśli trafiamy pomiędzy pikselami źródłowymi? Rozwiązanie – interpolacja z obrazu źródłowego Animacja zmiany kształtu - morphing Globalny warping parametryczny Inverse warping Zalety: Brak „dziur” w obrazie wynikowym Wady Konieczność resamplingu źródła – nie możemy stosować najbliższego sąsiada - aliasing Animacja zmiany kształtu - morphing Globalny warping parametryczny Inverse warping - aliasing Animacja zmiany kształtu - morphing Globalny warping parametryczny Czy możemy osiągnąć dobry efekt stosując globalny warping? Czasem tak… Animacja zmiany kształtu - morphing W szczególnych przypadkach (dopasowane do siebie obrazy tego samego obiektu) wystarczy nawet samo przenikanie Ale co gdy obrazy nie są dopasowane do siebie? Animacja zmiany kształtu - morphing W przypadku obrazów tego samego obiektu wystarczy dopasowanie obrazów jako całości – warping globalny Ale co gdy obrazy przedstawiają różne obiekty? Animacja zmiany kształtu - morphing Co gdy obiekty różnią się kształtem? Przenikanie nie działa Globalne dopasowanie nie działa żadna globalna transformacja (np. afiniczna) Animacja zmiany kształtu - morphing Rozwiązanie: Dopasowywanie szczegółów Ogon do ogona, oko do oka... Wprowadzamy tym samym zniekształcenia lokalne (nie parametryczne) Animacja zmiany kształtu - morphing Procedura morphingu 1. dla każdego t, Znajdź kształt pośredni każdego z obrazów („pośredni pies”) 2. Lokalne zniekształcenia Interpoluj kolory pikseli z tych 2 obrazów pośrednich przenikanie Animacja zmiany kształtu - morphing Konieczność zdefiniowana przekształcenia bardziej złożonego Przekształcenia globalne były funkcjami kilku parametrów Przekształcenia lokalne u(x,y) i v(x,y) mogą być zdefiniowane niezależnie dla każdej pozycji x,y! (każdego szczegółu) Animacja zmiany kształtu - morphing Warping lokalny Czy możemy osiągnąć dobry efekt stosując globalny warping? Aby dokonać warpu obrazu 1 w obraz 2 musimy określić odpowiedniki na obrazie (odpowiadające sobie elementy) Następnie te elementy podlegają transformacji a reszta obrazu „podąża” za nimi Najbardziej powszechny algorytm to Beier-Neely (1992), gdzie odpowiedniki są oznaczane (przez użytkownika) odcinkami (np. nos, oko itp) Taki warping jest transformacją obrazu (bardziej skomplikowaną od np. skali ale bazującą na tych samych zasadach) Animacja zmiany kształtu - morphing Warping lokalny Czy możemy osiągnąć dobry efekt stosując globalny warping? Najbardziej powszechny algorytm to Beier-Neely (1992), gdzie odpowiedniki są oznaczane (przez użytkownika) odcinkami (np. nos, oko itp) Animacja zmiany kształtu - morphing Algorytm Beier-Neely Przypadek pojedynczej pary odcinków Znamy przekształcenie (warp) całego odcinka – na bazie położenia początkowego i końcowego. Ale co z punktami obrazu w koło linii? Jak określić źródłowy piksel p’ dla piksela p w obrazie docelowym? Animacja zmiany kształtu - morphing Algorytm Beier-Neely Przypadek pojedynczej pary odcinków Wyznaczamy linię prostopadłą do odcinka i przechodzącą przez p (lub p’) u lub u’ oznacza część odcinka od początku do przecięcia z linią prostopadłą (wartość procentowa) v jest odległością p lub p’ od odcinka (w pikselach) Animacja zmiany kształtu - morphing Algorytm Beier-Neely Przypadek pojedynczej pary odcinków Co się stanie z obrazem? Translacja odcinka Animacja zmiany kształtu - morphing Algorytm Beier-Neely Przypadek pojedynczej pary odcinków Co się stanie z obrazem? Skalowanie odcinka Animacja zmiany kształtu - morphing Algorytm Beier-Neely Przypadek pojedynczej pary odcinków Co się stanie z obrazem? Rotacja odcinka Animacja zmiany kształtu - morphing Algorytm Beier-Neely Przypadek wielu par odcinków Możemy wyznaczyć wszystkie pary 𝑢𝑖 , 𝑣𝑖 oraz 𝑢𝑖′ , 𝑣𝑖′ na obrazie docelowym i źródłowym Pary 𝑢𝑖′ , 𝑣𝑖′ wskażą różne piksele źródłowe p' jest wyznaczany na ich podstawie jako średnia ważona Animacja zmiany kształtu - morphing Algorytm Beier-Neely Przypadek wielu par odcinków Waga każdego z punktów pośrednich dla kolejnych odcinków jest obliczana wg. wzoru: gdzie: Length[i] jest długością i-tego odcinka dist[i] jest odległością punktu p od i-tego odcinka a, p, b są współczynnikami kontrolującymi warp Animacja zmiany kształtu - morphing Algorytm Beier-Neely Animacja zmiany kształtu - morphing Algorytm Beier-Neely Algorytm Animacja zmiany kształtu - morphing Algorytm Beier-Neely Zaleta Zdecydowanie lepsza „ekspresyjność” efektu Wady Szybkość Kontrola Animacja zmiany kształtu - morphing Warping lokalny Czy można inaczej zdefiniować przekształcenie lokalne? Tak, bazując na punktach kontrolnych – ustalane przez użytkownika i triangulacji (triangularyzacji) - automatycznie Animacja zmiany kształtu - morphing Jak określić przekształcenie? Zdefiniować odpowiadające sobie punkty kontrolne • Interpolacja reszty pozycji by uzyskać pełne przekształcenie. Ale jak? Jak zdefiniować przejście od punktów kontrolnych do pikseli? Animacja zmiany kształtu - morphing Rozwiązanie - siatka trójkątów 1. Oznaczenie odpowiadających sobie kluczowych obszarach obiektów punktów w Animacja zmiany kształtu - morphing Rozwiązanie - siatka trójkątów 2. Zdefiniowanie siatki trójkątów, rozpiętej na tych punktach Ta sama siatka na obu obrazach Siatki określają odpowiadające sobie trójkąty na obrazach Animacja zmiany kształtu - morphing Rozwiązanie - siatka trójkątów 3. Każdy trójkąt jest przekształcany osobno od wyglądu początkowego do końcowego – warping linii. Ale jak przekształcać piksele wewnątrz trójkątów? Animacja zmiany kształtu - morphing Odpowiedź – wsp. barycentryczne Dowolny punkt q (piksel) wewnątrz trójkąta 𝑝0 , 𝑝1 , 𝑝2 może zostać opisany za pomocą współrzędnych względnych do wierzchołków tego trójkąta Współrzędne te 𝑏0 , 𝑏1 , 𝑏2 spełniają warunki: 𝑏0 + 𝑏1 + 𝑏2 = 1 oraz 𝑞 = 𝑏0 ∗ 𝑝0 + 𝑏1 ∗ 𝑝1 + 𝑏2 ∗ 𝑝2 Współrzędne barycentryczne można porównać do sytuacji umieszczenia w wierzchołkach 𝑝0 , 𝑝1 , 𝑝2 trójkąta odważników o masach 𝑏0 , 𝑏1 , 𝑏2 . Wtedy punkt q jest środkiem ciężkości tak obciążonego trójkąta Współrzędne barycentryczne dowolnego punktu wewnątrz trójkąta są dodatnie Punkty każdej z trzech prostych, na których leżą boki trójkąta, mają jedną ze współrzędnych barycentrycznych równą 0 Animacja zmiany kształtu - morphing Odpowiedź – wsp. barycentryczne Przebieg • Obliczane są współrzędne barycentryczne punktu q, wewnątrz trójkąta na obrazie wynikowym (względem wsp. wierzchołków trójkąta). • wsp. wierzchołków są zamieniane na współrzędne odpowiednika trójkąta na obrazie początkowym. • Ze współrzędnych barycentrycznych wyliczana jest pozycja w obrazie początkowym punktu q’ – odpowiednika punktu q na obrazie docelowym q’ q Animacja zmiany kształtu - morphing OK, ale jak z grupy punktów uzyskać trójkąty? Animacja zmiany kształtu - morphing Podział otoczki wypukłej zestawu punktów na powierzchni na trójkąty jest nazywany Triangularyzacją. Punkty znajdują się tylko i wyłącznie w wierzchołkach trójkątów Istnieje wiele wyników triangularyzacji zestawu punktów Animacja zmiany kształtu - morphing Algorytm triangularyzacji o złożoności O(n3) Powtarzaj tak długo jak możliwe Wybierz 2 wierzchołki Jeśli linia je łącząca nie przecina poprzednich linii – zapisz ją Animacja zmiany kształtu - morphing Jakość triangularyzacji Niech (T) = (1, 2 ,.., 3t) będzie wektorem kątów triangularyzacji T Triangularyzacja T1 będzie „lepsza” od T2 jeśli (T1) > (T2) leksykograficznie Takie określenie jakości dąży do maksymalizacji najmniejszych kątów w trójkątach (Delaunay triangulation) dobrze źle Animacja zmiany kształtu - morphing Poprawianie triangularyzacji W każdym czworokącie wypukłym możliwe jest odwrócenie krawędzi wewnętrznej. Jeśli poprawia to lokalną jakość triangularyzacji, poprawia również jakość triangularyzacji globalnej Jeśli odwrócenie krawędzi poprawia triangularyzację, poprzednia krawędź jest nazywana „nielegalną” Animacja zmiany kształtu - morphing Naiwny algorytm Delaunay Rozpocznij z dowolną triangularyzacją Analizuj wszystkie dostępne czworokąty Odwracaj kolejno „nielegalne” krawędzie, tak długo jak występują Może pracować bardzo długo… Animacja zmiany kształtu - morphing algorytm Delaunay (Delone) Wykorzystuje podział płaszczyzny na komórki Woronoja (dla danego zbioru n punktów, dzieli się płaszczyznę na n obszarów, w taki sposób, że każdy punkt w dowolnym obszarze znajduje się bliżej określonego punktu ze zbioru n punktów niż do pozostałych n − 1 punktów ) Łącząc punkty z sąsiadujących ze sobą obszarów uzyskujemy triangularyzację Delaunay Złożoność zredukowana do O(nlogn) Animacja zmiany kształtu - morphing Wiemy już jak przekształcić jeden obiekt w drugi ale jak stworzyć animowaną sekwencję morfingu? 1. 2. 3. 4. Posiadamy obrazy P i Q. Określamy zakres chwil (klatek) animacji f jako <0,1> Dla określonej chwili f animacji (np. 0.25) wyznaczamy stany (warpy) obrazów wg. zasady f P i (1-f)Q Wykonujemy zlanie kolorów obu przekształconych obrazów Animacja zmiany kształtu - morphing Q Jak znaleźć wartość pośrednią między P i Q? v=Q-P P Interpolacja liniowa dowolny punkt pośredni aP + bQ, Zdefiniowany tylko gdy a+b = 1 więc aP+bQ = aP+(1-a)Q P + 0.5v = P + 0.5(Q – P) = 0.5P + 0.5 Q P + 1.5v = P + 1.5(Q – P) = -0.5P + 1.5 Q (ekstrapolacja) Animacja zmiany kształtu - morphing Ograniczenie dla morfingu 2D Możliwość wystąpienia „złożenia” trójkątów Pojawia się w przypadku zmiany kolejności punktów kontrolnych na obrazie Z reguły w przypadku próby wykonania przekształcenia pseudo 3D Działa poprawnie tylko z danymi 3D Za pomocą ekstrapolacji można osiągnąć ciekawe efekty - karykatury Animacja zmiany kształtu - morphing Morfing widoku – view morphing Morfowaniu podlega pozycja wirtualnej kamery Animacja zmiany kształtu - morphing Morfing widoku – view morphing Metoda i efekt Kamery rejestrujące ten sam obiekt w tej samej chwili Tworzą zgrubną ścieżkę ruchu wokół obiektu Płynny ruch kamery wokół obiektu uzyskany dzięki morfowaniu pozycji wirtualnej kamery pomiędzy poszczególnymi rzeczywistymi kamerami w ścieżce Przetwarzanie obrazu cyfrowego Zadanie referatowe View morphing 3D mesh morphing That’s all folks…