Morphing - płynna animacja


Opracowując strony www potrzebowałem programu realizującego płynną animację obrazu. Takim programem jest Xmorph znajdujący się w dystrybucji Mandrake 8.2 na płycie B. W katalogu domowym należy stworzyć nowy katalog o nazwie np. Warp. Ponieważ obsługa programu jest uciążliwa to postanowiłem ją uprościć. W tym celu napisałem prosty skrypt powłoki o nazwie xmorphas, który umieściłem w katalogu /home/andrzej/bin oraz stworzyłem do niego ikonę uruchomieniową. Program Xmorph zapisuje tylko obrazki i zdjęcia w formacie tga i dlatego procedura postępowania wygląda nastepująco. Obrazek, który jest poczatkowy otwieramy w programie gimp i zapisujemy do katalogu /home/andrzej/Warp pod nazwą 1.tga. Z obrazkiem docelowym postępujemy podobnie, lecz zapisujemy go jako 2.tga. Nastepnie uruchamiamy skrypt xmorphas i postępujemy zgodnie z poniższymi zrzutami ekranu.

 
   
Cyfra ta mówi, ile klatek obrazu jest pomiędzy zdjęciami.
Po ustawieniu tych parametrów klikamy na napis Morph Sequence - Preview ... i oglądamy efekt naszej pracy. Jeżeli wynik jest zadowalający to klikamy na następną pozycję o nazwie Warp sequence i po upływie krótkiego czasu w katalogu /home/andrzej/Warp mamy gotowyą animację Morph.gif z dziesięciu sztuk klatek. W przypaku, gdy jest potrzebna większa płynność animacji możemy cyfrę 10 zamienić na 30 i otrzymamy wtedu 30 sztuk klatek obrazu. Z liczbą tą nie należy przesadzać, gdyż objętość pliku gifa bardzo szybko rośnie i strona internetowa będzie się wolno ładowała. Efekt animacji wygląda tak:


Na początek podam, że aby uzyskać dobry efekt oczy twarzy ze zdjęć powinny znajdować się w tym samym (lub podobnym) położeniu. W opisywanym przpadku nie było potrzeby ustawiania punktów siatki. Przy morphingu zdjęć sprawy się komplikują i jeżeli zwykły morphing nas nie zadowala to musimy ustawiać punkty siatki (mesh). Uzyskany efekt jest dużo lepszy niż bez tego ustawiania. Ze względu na prawa autorskie zamieszczę tylko jeden przykład znanego koszykarza , a do reszty podam jedynie linki.
Ze swojego doświadczenia wiem, że wystarczy tydzień czasu, aby nauczyć sie manipulacji tymi punktami. Na moim komputerze robiłem morphing z siedmiu zdjęć mojego kolegi od lat szkolnych do teraz (60 sztuk klatek). Efekt jest bardzo ciekawy. Tytułem informacji podam, że w pakiecie Xmorph oprócz programu xmorph jest jeszcze program Gtkmorph. Niestety programu tego nie udało mi się zmusić do tworzenia sekwencji klatek i dlatego go nie używam.

A oto kilka linków o morfingu:
opis tworzenia morphingu z przykładami.
strona o Xmorph.
jeszcze jedna strona.

Ponieważ w/w linki są często niedostępne to zamieszczę poniżej krótki opis i cztery zrzuty ekranu z morphingu zdjęć twarzy. Będą na nich widoczne punkty charakterystyczne. I tak należy stworzyć obrys twarzy, zaznaczyć oczy, usta i jak starczy punktów to nos. Takie zaznaczanie rozpoczyna się od najechania kursorem na przecięcie się siatki i naciśnięciu lewego klawisza myszki. Wtedy kursor zmieni swój kształt i możemy przeciągnąć punkt (na lewym zdjęciu) do np. środka oka. Zauważymy, że na prawym obrazku podświetli się na biało punkt odpowiadający temu oku. Należy wtedy najechać (na prawym zdjęciu) tym punktem na to samo oko. W ten sposób zaznaczamy usta, owal twarzy i inne punkty. Przesuwanie punktów na prawym obrazku nie zmienia punktów na lewym. Jeżeli zamierzamy przesyłać naszą twórczość innym, to należy zapisać do pliku zmiany oczek siatki. Robimy to wpisując do File - Save ... mesh... nazwę np.: 1.msh (dla źródłowego), a dla docelowego 2.msh. A oto zrzuty:

 

Na koniec omówię program znajdujący się standardowo w dystrybucji w pakiecie Imagemagick o nazwie convert, którego używam w skrypcie do zamiany plików o rozszerzeniu tga na gify w sposób następujący:
for x in *
do
  convert $x $x.gif;
done

Powstała animacja jest surowym gifem, bez ustawienia innych parametrów animacji, które zmieniam używając programu Xgifsicle.

do góry 2003.08.24