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…

Podobne dokumenty