KLONIRANJE IZRAZA LICA - APLIKACIJA
UVOD POSTUPAK APLIKACIJA REZULTATI ZAKLJUČAK LITERATURA

IZVEDBA APLIKACIJE

Aplikacija je napravljena pomoću Visual Studio C++ 6.0 razvojnog sučelja, gdje je za iscrtavanje 3D modela korišten OpenGL uz dodatak GLUI biblioteke za upravljanje prozorima [11]. GLUI je inače besplatna biblioteka koja proširuje mogućnosti poznatije i raširenije, no ograničenije GLUT biblioteke. Kao i GLUT, i GLUI je neovisna o platformi na kojoj se izvodi. Datoteke potrebne za izvođenje programa su: glut32.dll, glut32.lib i glui32.lib.


ULAZNI PODACI

Aplikacija koristi nekoliko tipova ulaznih datoteka. Datoteke sa 3D modelima nalaze se u direktoriju glave i imaju ekstenziju head.

Osim ovih datoteka, u direktoriju glave nalaze se i datoteke sa indeksima točaka koje ulaze u početni skup za učenje potreban za interpolaciju radij-funkcijama. Pošto je prilikom svakog postupka kloniranja izraza potrebno definirati te točke, ovime je omogućeno da se njihova identifikacija obavi samo prvi put te se za svako kasnije kloniranje može koristiti ta datoteka. Te datoteke su obične tekstualne datoteke (ekstenzija txt).

Treća ulazna datoteka nalazi se u direktoriju input. To je također tekstualna datoteka u kojoj navodimo putanju do datoteka sa modelima lica i datoteke s točkama skupa za učenje te neke parametre samog algoritma.

Prilikom učitavanja ulaznih datoteka sa 3D modelima izračunavaju se za svaki model normale poligona, a zatim i normale svih točaka kao srednja vrijednost normala onih poligona kojima je ta točka jedan od vrhova. Taj postupak malo usporava proces učitavanja, no izračunate normale točaka omogućavaju nam osjenčano iscrtavanje modela te ubrzavaju postupak podešavanja smjera vektora pomaka, gdje te normale koristimo kao X-os novo-konstruiranih lokalnih koordinatnih sustava.


IZLAZNI PODACI

Prilikom izvršavanja algoritma stvara se nekoliko datoteka koje omogućavaju provjeru rada i kasnije ponovno korištenje rezultata. Datoteka error.txt je tekstualna datoteka u kojoj se zapisuju sve pogreške tijekom izvođenja, npr. nemogućnost otvaranja neke od ulaznih datoteka i slično. U datoteke H.txt i H1.txt zapisuju se konstruirane matrice Hi,j i njen inverz prilikom interpolacije. Datoteka SourceDeformed.head sadrži opis 3D modela nakon prve deformacije radij-funkcijama, a datoteka Output.head opis ciljnog 3D modela sa kloniranim izrazom.

OPIS APLIKACIJE

Pri pokretanju aplikacije iscrtava se glavni prozor sa dva 3D modela definirana u ulaznoj datoteci input.txt. Pritiskom na tipku space iscrtavaju se izvorni model i ciljni model. U ovom prozoru definirano je nekoliko komandi vezano uz iscrtavanje:

- tipka ‘w’ – Uključivanje/isključivanje žičane mreže modela (engl. wireframe).
- tipka ‘e’ – Iscrtavanje poligona modela. Moguće je birati između grubog sjenčanja (engl. flat shading) ili finog sjenčanja (engl. smooth shading) poligona.
- tipka ‘m’ – Približavanje kamere (zoom in)
- tipka ‘n’ – Udaljavanje kamere (zoom out)
- tipka ‘r’ – Vraća kameru u početno stanje (reset view)

 

ODABIR POČETNIH TOČAKA

Ukoliko nemamo definirane točke početnog skupa za učenje za učitane modele, potrebno ih je odabrati. Odabir počinje pritiskom na gumb F1. Zatim je potrebno pritiskom na desni gumb miša odabrati točke na izvornom i na ciljnom modelu koje predstavljaju ekvivalentne dijelove lica. Nakon svakog odabira pritiskom na F2 potvrđuju se točke. Kada smo izabrali dovoljno točaka, pritiskom na F3 odabrani parovi se snimaju u datoteku input.txt koja se može kasnije koristiti za kloniranje drugih izraza na ta dva modela.

 

IZVOĐENJE ALGORITMA KLONIRANJA IZRAZA LICA

Sam algoritam kloniranja izraza u cijelosti izvodi se pritiskom na tipku enter. Nakon izračunavanja svih koraka algoritma na ekranu se iscrtava konačni rezultat: ciljni model sa kloniranim izrazom. Osim toga, generira se i datoteka Output.head sa zapisom tog 3D modela. Algoritam se može izvoditi i korak po korak, što omogućuje praćenje dobivenih među-rezultata i olakšava pronalaženje eventualnih grešaka. Ukoliko se tako krene izvoditi algoritam, potrebno je korake obavljati točnim redoslijedom:

- tipka ‘1’ – Deformacija izvornog modela radij-funkcijom
- tipka ‘2’ – Cilindrična projekcija izvornog na ciljni model
- tipka ‘3’ – Cilindrična projekcija ciljnog na izvorni model
- tipka ‘4’ – Podešavanje smjera vektora pomaka
- tipka ‘5’ – Podešavanje veličine vektora pomaka
- tipka ‘6’ – Izračunavanje vektora pomaka ciljnog modela i iscrtavanje konačnog rezultata

Nakon 4. koraka tipkom ‘z’ moguće je iscrtati dobivene lokalne koordinatne sustave na deformiranom izvornom modelu. Nakon 5. koraka tipkom ‘t’ moguće je iscrtati vektore pomaka na deformiranom izvornom modelu.