SVEUČILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
DIPLOMSKI RAD br. 476
SUSTAV ZA DETEKCIJU USMJERENOSTI POGLEDA
Ivan Kaurić
Zagreb, veljača 2013.
SVEUČILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
DIPLOMSKI RAD br. 476
SUSTAV ZA DETEKCIJU USMJERENOSTI POGLEDA
Ivan Kaurić
Zagreb, veljača 2013.
(izvorni zadatak)
Sadržaj1. Uvod...................................................................................................................................1
1.1. Pozadina......................................................................................................................11.2. Opis problema.............................................................................................................11.3. Pregled rada................................................................................................................2
2. Praćenje pogleda.................................................................................................................32.1. Definicija praćenja pogleda ......................................................................................32.2. Motivacija..................................................................................................................32.3. Pogled i komunikacija...............................................................................................42.4. Pogled kao ulazna informacija..................................................................................52.5. Povijest praćenja pogleda..........................................................................................72.6. Područja primjene praćenje pogleda .........................................................................82.7. Praćenje pogleda i budućnost..................................................................................10
3. Temelji praćenja usmjerenosti pogleda............................................................................123.1. Fiziologija oka ........................................................................................................123.2. Gibanja oka..............................................................................................................14
3.2.1. Fiksacije ...........................................................................................................143.2.2. Sakade...............................................................................................................153.2.3. Blaga potraga....................................................................................................153.2.4. Šumovitost pogleda...........................................................................................163.2.5. Preciznost sustava i pogleda.............................................................................163.2.6. Problem neželjenih odabira...............................................................................17
3.3. Tehnike praćenja oka................................................................................................183.3.1. Elektro-okulografija (EOG)..............................................................................183.3.2. Leće...................................................................................................................183.3.3. Video-okulografija (VOG)................................................................................18
3.4. Temelji estimacije pogleda.......................................................................................204. Opis razvijenog rješenja...................................................................................................21
4.1. Detekcija lica............................................................................................................214.2. Detekcija područja oka.............................................................................................224.3. Detekcija centra oka ................................................................................................224.4. Detekcija ruba oka....................................................................................................234.4. Estimacija usmjerenosti pogleda..............................................................................254.5. Kalibracija................................................................................................................26
5. Implementacija.................................................................................................................275.1. Opis implementacije kritičnih dijelova algoritma....................................................27
5.1.1. Implementacija detekcije lica..........................................................................275.1.2. Implementacija traženja centra........................................................................275.1.3. Implementacija traženja ruba oka....................................................................295.1.4. Implementacija kalibracije i mapiranja............................................................30
5.2. Primjer izvođenja algoritma.....................................................................................335.3. Opis aplikacije..........................................................................................................34
6. Rezultati i primjena..........................................................................................................357. Zaključak..........................................................................................................................37Literatura..............................................................................................................................38Sažetak .................................................................................................................................40Abstract................................................................................................................................41
1. Uvod
1.1. Pozadina
Praćenje pogleda (eng. Gaze tracking) označava proces detektiranja i praćenja
usmjerenost pogleda odnosno smjera u kojem osoba gleda. Takva informacija se može
koristiti za interakciju čovjeka sa računalom (eng. HCI). Postojeći sustavi većinom koriste
IR luminaciju kako bi osvijetlili oko, odnosno zjenicu, osobe i na temelju takve
informacije pratili njenu poziciju.
Praćenje pogleda ima niz primjena, vjerojatno najpoznatije kao pomoć osobama
koje se teško kreću, posebno onima kojima je jedini kanal komunikacije sa okolinom
pokret oka. U novije vrijeme sve više se koriste i u promidžbenoj industriji za praćenje
reakcija korisnika takvih usluga, rašireno je i korištenje za praćenje reakcija na promjene u
okolini, primjerice prilikom vožnje automobila, u različitim vojnim situacijama i slično.
Postoje različite kompanije specijalizirane za ovo područje koje su u zadnje vrijeme
privukle investitore, a raste i broj patenata vezano uz tehnologije praćenja pogleda koje
izdaju vodeće IT kompanije. Također, razvijaju se i open source projekti koji omogućuju
širu raširenost inače skupog softwarea. Ipak, većinom se radi o sustavima koji zahtijevaju
poseban hardware, bilo da se radi o nešto jednostavnijem sustavu sa IR iluminacijom i
prikladnom kamerom, ili nešto složeniji sustavi koji uključuju i posebne naočale, složenije
sustave kamera koje prate niz promjena na ljudskom licu i okolini. Iako padaju cijene
uređaja i potrebne programske podrške, još uvijek većina sustava zahtjeva dodatne, uz
računalo ili konzolu, uređaje zbog čega tehnologija nije toliko raširena.
U ovome radu mi je cilj razviti jednostavan sustav koji omogućuje praćenje
usmjerenosti pogleda samo pomoću obične web kamere.
1.2. Opis problema
Razviti algoritam koji omogućuje estimaciju pogleda u sustavu obične web kamere,
računala i korisnika. Iz video signala koji prikazuje korisnika kako radi na računalu
prepoznati u koju regiju odnosno točku je usmjerio svoj pogled. Potrebno je pokazati
1
uspješnost sustava u nekoj primjeni.
1.3. Pregled rada
U drugom poglavlju dan je pregled područja praćenja pogleda, opisana je povijest,
raširenost, prednosti i nedostaci, primjena i izazovi. Treće poglavlje pruža pregled
fiziologije oka, osnovne vrste pokreta oka, određena ograničenja i probleme prilikom
estimacije pogleda, kao i tehnička ograničenja.
Četvrto poglavlje nudi razradu problema i opis metode rješavanja potproblema,
odnosno detekcije centra i ruba oka, kalibracije i mapiranja. Peto poglavlja opisuje
implementaciju, a u šestom poglavlju su ponuđeni rezultati i primjena razvijenog
algoritma.
2
2. Praćenje pogleda
Razvojem računala razvila se i potreba za novim načinima komuniciranja između
korisnika i računala što je dovelo do razvoja posebnog područja HCI (eng. Human
computer interaction) sa ciljem razvoja lakše, intuitivnije i učinkovitije komunikacije sa
računalima. Praćenje pogleda je jedini način komuniciranja za osobe sa određenim
bolestima, ali osim toga postoji niz područja u kojima se primjenjuje praćenje pogleda,
najčešće u kombinaciji sa drugim ulaznim jedinicama.
2.1. Definicija praćenja pogleda
Pojam praćenja pogleda označava estimiranje usmjerenosti pogleda neke osobe.
Većinom se pritom misli na određivanje objekta na koje se pogled fokusira, ali kada
govorimo o računalima najčešće mislimo na određivanje piksela odnosno regije na ekranu.
Postoje i složeniji sustavi koji prate usmjerenost pogleda u 3D prostoru.
2.2. Motivacija
Danas se većina sustava praćenja oka temelji na video signalu odnosno snimanju
lica, ili konkretnije područja oka, zajedno sa izvorom infracrvene svjetlosti. Većina
današnjih uređaja dolazi sa već ugrađenim kamerama; prijenosna računala, mobiteli,
tableti, pa i neki monitori. Povećanjem snage računala, odnosno procesora, obrada signala
u realnom vremenu postaje moguće i na najmanjim uređajima što omogućuje i širenje
tehnologije praćenja oka. Veliki broj ljudi većinu radnog vremena provode uz računala,
uostalom kao i slobodnog, koriste se tipkovnicama i miševima, koristeći obje ruke, što
dovodi do različitih zdravstvenih problema. S obzirom na taj stalni porast interakcije sa
računalima, postoji potreba i za alternativnim načina upravljanja računalom.
Unatoč padu cijena, i procjenama kako je širenje tehnologije samo stvar vremena, i
kako će uskoro svatko imati uređaj za praćenje oka po cijeni miša ili današnje web kamere,
to se još uvijek nije dogodilo. Iako cijena takvog sustava (kamera i izvor IR svjetlosti) nije
velika, ona se još uvijek nije raširila tako da sam u ovome radu odlučio razviti sustav koji
3
koristi običnu web kameru.
2.3. Pogled i komunikacija
Pogled je bitan za komunikaciju, primjerice često ćemo upitati "što je ovo?"
gledajući neki objekt, pritom očekujemo da osoba sa kojim razgovaramo prepoznaje na što
mislimo. Slično tome, kada u društvu pričamo sa nekim onda tu osobu i gledamo kako ne
bi došlo do greške u komunikaciji. Ljudi su po tome donekle specifični jer se ljudsko oko
razlikuje od oka životinja čija bjeloočnica nije bijela pa je teško odrediti gdje gledaju.
Jasno je iz toga kako i oko, odnosno pogled, ima važnu ulogu u svakodnevnoj
komunikaciji.
Razlika u kulturnom odgoju rezultira
i razlikom u kretanju oka, kao što pokazuju i
istraživanja, primjerice kinezi se više
fokusiraju na pozadinu fotografija od
amerikanaca. Čak i bez takvih istraživanja,
znamo da će osoba drugačije proučavati
sliku ukoliko se na njoj nalazi neki tekst
kojeg zna čitati nego ukoliko nije upoznata
sa jezikom tog teksta. Još su davno
obavljena istraživanja koja pokazuju kako
osobe drugačije promatraju fotografije
ukoliko se fokusiraju na neki od zadataka. Kao što pokazuje slika 1, osobe kojima je dan
zadatak da odrede godine ljudi na fotografiji su je drugačije promatrali od onih koji su
trebali zapamtiti što je tko nosio i slično.
Unatoč nekim univerzalnim biološkim datostima trzaja oka, takva kretanja ovise o osobi.
Činjenica da ljudi koriste oči kao sredstvo komunikacije dovela je do slijedećih zaključaka
u području HCI;
• Imamo sposobnost kontroliranja pogleda(oka) i koristiti ga kao izlaz
Primjerice gledamo ljude sa kojima razgovaramo. Ipak, postoje tvrdnje kako je
neprirodno opterećivati vidni kanal sa zadacima motoričke kontrole.
4
Slika 1. Ovisno o tome koju informaciju na slici traže, osobe će drugačije analizirati sliku
• Za prirodnu komunikaciju sa računalima, računala moraju biti u stanju
prepoznati usmjerenost našeg pogleda
Slično kao što računalo koje koristi analizu i sintezu govora mora biti u stanju
potpuno komunicirati jezikom sa nama, tako mora biti upoznat i sa pogledom.
• Analiziranje pogleda otkriva informacije o osobi
Oči različitih ljudi reagiraju različito ovisno o raspoloženju, namjerama i životnom
iskustvo. Takve informacije mogu pomoći računalu da pomaže osobi koja ga
koristi.
2.4. Pogled kao ulazna informacija
Tradicionalno, nepokretni ljudi koriste sustave praćenja kako bi komunicirali sa
okolinom[16]. U novije vrijeme, čini se kako bi praćenje pogleda moglo zamijeniti, barem
dio, postojećih interakcija sa računalom. Iako su sustavi koji pomažu nepokretnima velika
pomoć, takvi sustavi su u pravilu sporiji za korištenje od miša ili tipkovnice, iako postoje
istraživanja uspješnosti određenih akcija koja su pokazala kako je upravljanje pogledom
brže. Činjenica da su takvi sustavi ipak većinom sporiji od tradicionalnih ulaza, nije u
skladu sa činjenicom kako je pogledom lagano i brzo upravljati [13]. Sustavi praćenja
pogleda mogu ponuditi više prednosti:
• Lagano korištenje
Korištenje praćenja pogleda može smanjiti pritisak na ruku i mišiće tako što bi
pogled zamijenio dio aktivnosti. To ne mora značiti nikakav novi pritisak na oči jer
se u velikom broju akcija pogled već i koristi, primjerice pritisak miša na neku
ikonu
• Ubrzanje interakcije
Oči su brze, što znači da mogu dovesti do brže interakcije. Iako su postojeći sustavi
sporiji, postoji prostor za napredak, posebno u kombinaciji sa drugim ulazima.
• Nema potrebe za održavanjem
5
Sustavi za praćenje ne zahtijevaju nikakav fizički kontakt, nema potrebe za
čišćenjem uređaja. Postavljanje kamere iza neprobojnog stakla sprečava vandalska
oštećenja što nije moguće izbjeći sa tipkovnicom.
• Higijensko sučelje
U okruženjima koja zahtijevaju minimalni kontakt, primjerice u operacijskim
salama, takvi sustavi bi bili pogodni jer nema potrebe za dodirivanjem. Također,
različite tipkovnice u javnim mjestima mogu prenositi različite neželjene pojave.
• Daljinsko upravljanje
Sustavi omogućuju daljinsku kontrolu, čak i oni sa lošijim kamerama omogućuju
udaljenost veću od duljine ruku.
• Sigurnija interakcija
Sustavi praćenja pogleda zahtijevaju ne samo prisutnost nego i pažnju, primjerice
mobitel ne bi pritisnuo slučajno neku tipku. Takav sustav također omogućuje
ostvarenje zahtjeva da se pročita neki tekst upozorenja prije nastavka funkcije.
• Više informacija o korisnikovim aktivnostima
Oči govore puno o tome što osoba radi. Praćenje oka pruža puno korisnih
informacija za sustav koji se bavi kontekst situacije. Osim očitoga, praćenja
pogleda, već jednostavniji sustavi mogu odrediti čita li netko tekst, a složeniji
sustavi bi mogli odrediti fizičko ili emocionalno stanje korisnika, dob, ili stupanj
pismenosti.
Naravno, postoje problemi;
• Mogućnost kontrole
Oči imaju niz nekontroliranih ponašanja što bi moglo ozbiljno narušiti mogućnost
oka kao ulaza. Nije jasno do kojeg stupnja ljudi mogu kontrolirati svoj pogled.
Jasno je kako možemo kontrolirati u društvenim interakcijama, ali nije jasno
možemo li istrenirati oko kao što možemo istrenirati prste da sviraju klavir.
• Konflikt ulaza i vida
Primarna funkcija oka je vid. Korištenje oka za ulazne podatke može dovesti do
6
konflikta sa vidom. Sustav mora biti u stanju razlikovati prirodne geste od
namjernih. Različiti objekti koji se kreću ili na neki drugi način odvlače pažnju
mogu rezultirati sa dodatnim problemima na koje bi trebalo paziti prilikom
osmišljavanja.
• Zamor očnih mišića
Na temelju drugih ulaznih jedinica poznato je kako neke dovode do zamora
određenih mišića odnosno mišićnih grupa što rezultira fizikalne probleme,
takozvani RSI (eng. repetitive strain injury). Postoji bojazan, da je isto moguće i za
očne mišiće, ali kako su oni stalno u uporabi, opasnost se čini manjom.
2.5. Povijest praćenja pogleda
U ranoj fazi razvoja područja praćenja pogleda, pokreti oka su se proučavali kako
bi saznali više o njihovoj prirodi, a ne kao nečemu što bi omogućilo komunikaciju sa
okolinom. Prvi uređaji za praćenje pogleda koji su davali objektivne i precizne podatke su
bili izrazito invazivni i neudobni. Primjerice krajem 19. stoljeća, Delabarre je koristio
aparaturu (svojevrsni poklopac za oko) koja se stavljala direktno na oko (što je zahtjevalo
prethodnu anesteziju), subjekt bi mogao gledati kroz rupicu na tom poklopcu što bi
pomicalo polugicu i davalo objektivne rezultate. Početkom dvadesetog stoljeća razvijene
su metode koje se temelje na fotografiji odnosno refleksiji svjetla od rožnice.
Unapređenjem tehnologije uskoro su kategorizirani različita svojstva i tipovi pokreta oka.
Miles Tinker je 1930-ih istraživao utjecaj veličine, fonta i drugih obilježja teksta prilikom
čitanja.
Jung je 1939. godine mjerio horizontalne i
vertikalne pomake oka sa elektrodama na koži blizu
oka. Metoda poznata kao elektrookulografija
omogućila je prvu mogućnost procesiranja pogleda u
realnom vremenu korištenjem analogne elektronike.
Paul Fitts, poznat po Fittovom zakonu, je 1947. godine
koristio kameru kako bi snimio pokrete oka pilota
prilikom spuštanja aviona. Zanimalo ga je kako piloti
7
Slika 2. Jedan od prvih uređaja za detekciju pogleda
koriste sve kontrole u kabini.
Razvoj računalne snage doveo je do mogućnosti obrade podataka u realnom
vremenu, a samim time i uređaja koji su mogli pomagati ljudima pri komunikaciji. Slika 2.
prikazuje jedan takav uređaj. Naočale (na vrhu uređaja) su omogućavala korisniku da
odabire redove odnosno stupce i tako dolazi do željenog slova. Iako spor, sustav je bio
učinkovit.
Od 1990-ih, dolazi do stalnog porasta korištenja sustava za praćenje pogleda.
Padanje cijene je rezultiralo sa sve većim korištenjem u različitim područjima, kao i u
interakciji između čovjeka i računala.
2.6. Područja primjene praćenje pogleda
Danas se sustavi za praćenje koriste u različitim područjima[22];
• Istraživanje tržišta i testiranje oglasa
Gledano po količini novca, najveće područje korištenja sustava je istraživanje
tržišta. Prije nego što počnu oglašavati, tvrtke žele testirati učinak svojih oglasa.
Predstavljaju plakate potencijalnim klijentima te prati njihov pogled kako bi saznali
odgovore na pitanja poput; "Je li osoba vidjela svaki proizvod?"; "Koliko vremena
je osoba provela gledajući logo tvrtke?" i slično. Koristeći prijenosne sustave može
se provjeriti kako se kupac ponaša u dućanu, koje proizvode nije vidio, koji su mu
privukli pažnju i slično. Vidi sliku 3 za primjer.
8
Slika 3. Primjer korištenja tehnologije detekcije pogleda
• Istraživanje uporabljivosti
Jedno od komercijalno najprivlačnijih područja je testiranje uporabljivosti [7,15].
Prvo istraživanje spomenuto u prethodnom poglavlju je bilo u kabini pilota kako bi
odredili koji je najbolji položaj za raspoređivanje različitih kontrola. Kada ponudite
nekom novi proizvod, lagano je pratiti kako se snalazi i što mu privlači odnosno
odvlači pažnju.
Razvojem weba, uporabljivost stranica je postala bitna stvar o kojoj ovisi
posjećenost i uspješnost stranice. Za stranice je bitno stvoriti pregledno sučelje koje
omogućava korisniku da se odmah snađe i koristi dostupne sadržaje.
• Kontrola pogledom za nepokretne
Jedno od najvažnijih područja primjene je kao pomagalo nepokretnim osobama.
Kvadriplegičari i osobe sa drugim bolestima, zbog gubitka kontrole nad mišićima,
koriste sustave praćenja pogleda kako bi komunicirali sa svijetom [25]. Takvi
sustavi primjerice omogućuju tipkovnicu odnosno pretvaranje teksta u govor, kao i
neke druge kontrole, pokretanje kolica, upravljanje televizorom i drugim uređajima.
Postoje različite primjene, primjerice crtanje očima, skladanje i slično.
• Psihologija i istraživanje vida
Sustavi za praćenje pogleda su vrijedan alat za istraživanje vida, percepcije i
psihologije. Jedna od prvih stvari za koje su sustavi praćenja uporabljeni je bila
proučavanje procesa čitanja. Postoji niz različitih istraživanja iz područja
psihologije [10].
• Medicinska istraživanja, dijagnostika i istraživanje
Sustavi praćenja se također koriste u medicinske svrhe kako bi istražili funkciju
oka, posebno kod osoba koje su imale ozljedu oka ili mozga koja je rezultirala sa
djelomičnim gubitkom vida. Sustav se koristi i za praćenje rehabilitacije
• Interakcija pogledom i sustavi upravljanja autom
Polako se uvode sustavi koji omogućuju komunikaciju sa uređajima koje
svakodnevno koristimo, primjerice paljenje televizora kada netko gleda u njega i
slično. U autoindustriji se razvijaju sustavi koji bi pomagali vozaču, primjerice ako
9
bi zaspao sustav bi ga na to upozorio i slično. Istraživanja u ovom području još nisu
toliko raširena.
• Industrija zabave
Razvijene su konzole koje omogućuju praćenje pogleda, najčešće u kombinaciji sa
drugim načinima interakcije, ali postoje i igrači automati koji koriste samo pogled,
primjerice u igrici asteroid gdje se pogledom puca po objektima. Postoje različite
aplikacije koje spadaju u ovu skupinu proizvoda[21].
Ovo je okvirni pregled područja korištenja, naravno postoje i druga područja. Primjerice u
testiranju sportaša (i vojnika), kako se snalaze u prostoru, kako reagiraju na određene
situacije i slično. Jedna od mogućih primjena su i bankomat koji bi postali sigurniji ukoliko
bi korisnik samo pogledom birao svoju šifru. S obzirom da je upravljanje pogledom sve
veći dio HCI, u svaku uporaba računala koja zahtjeva interakciju se može u nekoj mjeri
uključiti upravljanje pogledom.
2.7. Praćenje pogleda i budućnost
Razvojem novih metoda interakcije sa uređajima, praćenje pogleda će zasigurno
imati sve veći utjecaj. Sve veća pozornost istraživanju uporabljivosti, kao i razvoj
interaktivnijih prijenosnih uređaja potvrđuju taj trend. Takvo predviđanje temeljimo na
različitim podacima;
• Snižavanje cijene uređaja
Stalno dolazi do smanjivanja cijene odnosno do povećanja brzine procesora što
omogućuje izvršavanje različitih metoda obrada signala. Sve kvalitetnije i jeftinije
kamere omogućuju izgradnju relativno jeftinih sustava i širu rasprostranjenost što
je posebno bitno za pacijente koji se nalaze u siromašnijim državama.
• Tvrtke koje se bave praćenjem pogleda
Postoji više tvrtki koje su se specijalizirale za sustave praćenja pogleda.
Najpoznatija od njih je švedska kompanija tobii koja je nedavno prodala udio od
10% za 20 milijuna dolara HP-u. Postoje različite manje start-up kompanije koje
10
se bave tim područjem, neke od njih su kupile veće kompanije, primjerice
facebook.
• Open Source projekti
Unatoč sve manjim cijenama sklopovlja, sustavi sa pripadnim softwareom koštaju
i do nekoliko desetaka tisuća eura zbog čega su nedostupni velikom djelu
populacije. Ipak, postoje open source projekti koji besplatno nude svoj software
tako da je moguće kupiti kvalitetnu kameru, izvore IR svjetla, i računalo koje će
sve to pokretati za manje od tisuću dolara što znači da si sve veći broj ljudi može
priuštiti takvu pomoć[4,5,6].
• Patentni
Pregledavanjem patenata pronalazimo da veće kompanije koje se bave
potrošačkom elektronikom odnosno prodajom softwarea imaju svoje patente iz
ovog područja.
• Trendovi
Nedavno je lenovo u suradnji sa, već spomenutim, tobiiem osmislio laptop koji u
sebi ima ugrađeno sklopovlje za praćenje pogleda i omogućuje korištenje
programa kombinacijom standarnih metoda i pogleda, što je primjerice posebno
prikladno za pregledavanje karti. Novi windowsi također imaju svoje sučelje koje
omogućuje upravljanje pogledom.
Jedan od najiščekivanijih IT proizvoda su google naočale koje omogućuju
korisniku da u stvarnom svijetu dobiva različite informacije koje mu se prikazuju
na staklu. Naočale su u razvoju, ali po opisu se uvelike temelje upravo na praćenju
pogleda.
11
3. Temelji praćenja usmjerenosti pogleda
Oko je glavni organ kojim percipiramo svijet oko sebe. Koristimo oči kako bi
prikupili informacije o okolini tako što usmjerimo pogled na neki objekt. Osim toga, oči
imaju važnu ulogu u društvenoj interakciji; iz njih možemo saznati o nečijem raspoloženju,
pažnji i emocionalnom stanju. Oko je organ koji tradicionalno promatramo kao,
računalnim rječnikom, ulaznu jedinicu, naravno za osobu čije je oko, ali ono također može
poslužiti kao vanjska jedinica koja signalizira okolini o našem stanju i fokusiranosti.
Oko nam služi za interakciju sa svijetom, prije odabira nekog smjera ponašanja
koristimo se pogledom kako bi procijenili situaciju, što znači da nam pogled govori o
intencionalnosti osobe. Iako usmjerenost pogleda ne mora nužno značiti i stvarnu
fokusiranost osobe na taj objekt, u pravilu možemo prateći promjene oka zaključiti što
promatrač gleda.
3.1. Fiziologija oka
Shematski prikaz ljudskog oka dan je na slici 4. Očna jabučica je kuglasti objekt
promjera oko 12 mm. Ono što možemo vidjeti izvana je; šarenica (obojeni dio), zjenica
12
Slika 4. Fiziologija oka
(tamni dio u centru šarenice) i bjeloočnica (bijeli dio). Zjenica i šarenica su pokrivene
rožnicom, prozirnim slojem koji lomi svjetlo prije nego što uđe u oko. Granica između
zjenice i bjeloočnice se naziva limbus (što je zbog kontrasta najzanimljiviji dio oka za ovaj
rad).
Svjetlost ulazi u oko kroz zjenicu koja može kontrolirati količinu svjetlosti tako što
se širi odnosno skuplja. Nakon što svjetlo uđe u oko, prelomi se od leće, prozirne strukture
koja se nalazi iz zjenice. Leća mijenja svoj oblik kako bi usmjerila zrake svjetlosti do
mrežnice, površine koja sadrži fotoreceptore. Fotoreceptori su vrsta neurona osjetljivih na
svjetlost, pretvaraju ju je u električni impuls koji se optičkim živcima šalje dalje do mozga.
Postoje dvije skupine fotoreceptora; čunjiči i štapići. Štapići omogućuju monokromatski
pogled i osjetljivi su na svjetlost što znači da omogućuju snalaženje i kada nema toliko
svjetla, a čunjići omogućuju razlikovanje boja. Slika 5 daje shematski prikaz oka. Oko nije
potpuno simetrično; ali možemo ga tako aproksimirati s obzirom na optičku os odnosno
liniju usmjerenosti (line of gaze), ta linija nije ista kao i linija pogleda (line of sight)
odnosno vizualne osi. Optička i vizualna os se sjeku u centru zjenice[24].
Postoje dvije strukture u oku koje lome svjetlost, rožnica i leće. Osim što lome
svjetlost, djelomično je i odbijaju što rezultira sekundarnom slikom izvora, takozvane
Purkinje slike. Prva Purkinje slika se stvara na površini rožnice i najuočitljivija je od svih
četiri Purkinje slika.
Iako se jedan dio sustava za praćenje pogleda bavi detekcijom Purkinje slika, za
takvo što je potrebna usmjerenost kamere na oko, luminacija i visoka rezolucija tako da
one nisu bitne za ovaj rad.
13
Slika 5. Prikaz osi
3.2. Gibanja oka
Stalno primamo veliku količinu vizualnih informacija tako da je potrebno stalno
pomicanje našeg oka kako bi odlučili koje od tih informacija su bitne za nas. O tome
odlučujemo na temelju; naših namjera i očekivanja odnosno na temelju isturenosti neke
regije u prostoru, primjerice kretanje objekta u statičnoj sceni će izazvati našu pažnju.
Postoje dvije vrste kretanja koje omogućuju da naš vizualni sustav odabere relevantne
objekte; sakade i blaga potraga. Kada se oko ustabili, onda dolazi do fiksacije
3.2.1. Fiksacije
Do fiksacije dolazi kada se usmjerimo na
neki objekt, obično se smatra da ima trajanje barem
100 do 150 ms. Tijekom fiksacije prikupljamo
podatke od naše okoline. Iako nam se čini kako je
slika potpuno mirna, tijekom fiksiranja dolazi do
različitih mikropokreta; driftova, tremoran i
mikrosakada [12]. Cilj tih pokreta je da se
fotoreceptori konstantno pobuđuju jer bi inače
odmah izgubili sliku objekta na kojeg se
fokusiramo, i kako bi objekt došao u centar
mrežnice. Slika 7 prikazuje utjecaj mikrogibanja tijekom fiksiranja. Disperzija zbog takvih
gibanja je u pravilu oko jedan stupanj vizualnog kuta.
14
Slika 7. Demonstracija utjecaja mikrogibanja tijekom fiksiranja
Slika 6. Purkinje slike
3.2.2. Sakade
Sakada je brzo izmjenično gibanje oka koje premješta oko tako da je objekt u
vizualnoj sceni projektiran na fovei. Sakade se javljaju tijekom dvije fiksacije, i za to
vrijeme ne prikupljaju se nikakve informacije u vizualnom sustavu.
Tijekom sakade oči rotiraju velikom brzinom, često i do 700 stupnjeva po sekundi
za veće amplitude, trajanje nije konstantno, povećava se sa povećanjem gibanja. Trajanje
sakade za više od 5 stupnje je oko 30ms sa dodatnih 2ms za svaki dodatni stupanja
amplitude. Kod gibanja veća od 30 stupnjeva doći će i do gibanja glave. Razdoblje između
sakada je od 100 do 200 ms.
3.2.3. Blaga potraga
Do blage potrage dolazi kako oči prate objekt u pokretu. Vizualni sustav je us tanju
pratiti objekte brzinom od 1 do 30 stupnja po sekundi, iako su zabilježeni slučajevi i preko
100 stupnjeva po sekundi. Ova vrsta gibanja oka zahtjeva stimulus kretanja.
Sastoji se od dvije komponente; komponente kretanja koja stabilizira foveu na
objekt u pokretnu i sakadne komponente koje vrši male korekcije i premješta foveu na
metu. Postoje tri faze ovakvog kretanja; 125ms nakon stimulusa dolazi do inicijalnog
gibanja, nakon 100ms dolazi do korektirajuće sakade, zatim dolazi do konačne blage
potrage, oči se polako stabliziraju na brzini mete. Saturacijska brzina iznosi 25 do 30
stupnjeva po sekundi, za više brzine dolazi do korektirajućih sakadnih pokreta.
15
Slika 8. Trajanje gibanja
3.2.4. Šumovitost pogleda
Sve opisano znači da se u pokretima oka inherentno nalazi "šum". Slika 9 prikazuje
kako ljudsko oko prati
geometrijske likove. Ovisno o
sustavu, potrebno je koristi
različite metode kako bi se
izbjegli takvi problemi[23].
3.2.5. Preciznost sustava i pogleda
Slika 10 prikazuje dva kruga, unutarnji krug odgovara polovici, a vanjski jednom
stupnju (gledano iz kuta prosječne udaljenosti korisnika od kamere). Suvremeni sustavi
imaju preciznost od 0.5-1 stupanja tako da nisu u stanju raspoznati samo na temelju
pogleda određena područja na ekranu. Sustavi kojima se komunicira pogledom se
dizajniraju tako da područja odabira budu veća i općenito da sustav bude što prilagođeniji
osobi koja ga koristi [11,15]. Kada govorimo o ljudima koji na taj način komuniciraju sa
okolinom, kod njih je često potrebno dizajnirati sustav sa samo par gumba kako bi olakšali
korištenje. Postoje različita programska rješenja za taj problem, jedan je korištenje zooma
kada se prepozna da je korisnik fokusiran na područje ekrana te onda unutar te
"zoomirane" regije odabire normalno ono što je želio.
Gledanje oka u nekom smjeru zapravo znači rotiranje bjeloočnice kako bi ušla
svijetlost iz tog smjera. Neki od parametara ljudskog oka su dani u donjoj tablici.
Neintruzivni sustavi nisu u stanju postići zadovoljavajuću preciznost zbog male rezolucije
slike oka. Tipična situacija je 40x25, što znači da se šarenica može kretati unutar 20x20
piksela. Kada govorimo o pikselima, to znači da je najbolja preciznost koja se može postići
70°/20=3,5°.
16
Slika 9. Praćenje linija okom zapravo izgleda ovako
Veličina ljudskog vizualnog polja ~ 135° x 160°
Rotacija bjeloočnice ~ 70° x 70°
Promjer foveje ~ 5,2°
Polumjer bjeloočnice 1,3 cm
Ukoliko računamo smjer pogleda na temelju razlike neke fiksne
točke na licu (centar ili rub oka) i centra šarenice (odnosno
zjenice), uz 20 piksela, prema jednostavnom modelu oka
možemo izračunati da će doći do pogreške od oko 3° za svaki
pogrešni piksel [3]. Neki modeli oka unose svoje dodatne
pogreške, primjerice pogreška od 0.2cm radijusa pri modeliranje
bjeloočnice kao sfere rezultirat će sa pogreškom od 6%.
Taj problem se može riješiti zumiranjem oka odnosno stavljanjem kamere blizu
subjekta. Iako analitički pristup nije u stanju ponuditi veliku preciznost, pristup preko
neuronskih mreža daje bolje rezultate[18,19,20]. Razlog za bolju preciznost je u tome što
imati sliku od 40x25 piksela zapravo znači da teoretski, barem matematički, postoji
256^(40x25) kombinacija, uz pretpostavku da se koriste jednokanalna slika od 8 bita po
pikselu. Unatoč toj prednosti, neuronske mreže se ne koriste same za sebe u realnim
sustavima jer već i mala promjena u vanjskim okolnostima rezultira sa potpuno pogrešnim
procjenama, primjerice promjena svijetla ima veći utjecaj od promjene pozicije šarenice.
3.2.6. Problem neželjenih odabira
Kada koristimo miš ili tipkovnicu onda smo sigurni da naš pritisak određene tipke
rezultira akcijom, ali kada koristimo oko kao ulaz onda postoji problem razlikovanja
želimo li stvarno nešto odabrati ili se radi tek o (ne) svjesnom pregledavanju ekrana. Taj
problem se obično naziva "midas touch". Čak i ako kompenzirate šumove, napravite
najprecizniji sustav (s obzirom na mogućnosti fokusiranja oka) još uvijek ostaje problem
kako biti siguran da je usmjerenost pogleda znak i odabira te regije. Zbog toga se često
detekcija pogleda koristi u kombinaciji sa drugim ulaznim jedinicama.
17
Slika 10. Unutarnji kut odgovara pola stupnja, vanjski jednom stupnju
3.3. Tehnike praćenja oka
Pokrete oka možemo pratiti različitim tehnologijama. Postoje sustavi različitih
preciznosti i stupnja invazivnosti, ovisno o korištenim metodama i korištenom hardwaru.
Obično se motode dijeli u tri kategorije;
3.3.1. Elektro-okulografija (EOG)
Elektro-okulografija se temelji na postojanju električnog polja koji mijenja svoj
potencijal ovisno o kretanju oka. Kako bi se detektirale takve promjene električnog
potencijala, postavljaju se elektorde na kožu oko oka. Takav sustav se smatra invazivnim s
obzirom da je potrebno postaviti elktorde izravno na lice korisnika. Prednost metode je što
leće i naočale ne utječu na rezultat, te postoji velika tolerancija na pomake glave. Sama
oprema je skupa.
3.3.2. Leće
Najpreciznija metoda za praćenje pogleda razvijena je korištenjem posebnih
kontaktnih leći. Radi se o izrazito invazivnoj metodi jer korisnik mora umetnuti leću koja
je spojena sa žicama. Zbog toga se koristi samo u laboratorijskim istaživanjima.
3.3.3. Video-okulografija (VOG)
Ova metoda koristi kameru koja snima pokrete oka, te različite značajke kako bi
odredila točku usmjernosti pogleda odnosno liniju pogleda. Takve metode nisu intruzivne i
često toleriraju pokrete glavom tako da su najraširenije.
18
Slika 11. Primjer leće i EOG metode
Sustave koje koriste kameru odnosno video signal dijelimo na; udaljene (eng.
remote) sustave praćenja i na sustave montirane na glavi (eng. head mounted). U sustavima
za udaljeno praćenje kamera i izbori svjetlosti (za IR luminaciju) se nalaze pokraj ekrana
tako da ih korisnik nije niti svjestan. Takvi sustavi omogućuju i pomicanje glave, ali je
potrebno da oči budu u videokrugu kamere. Postoje različite verzije sustava, neke
zahtjevaju da korisnik na sebi ima neko obilježje kako bi se postigla veća brzina i
preciznost. Sustavi koji su montirani na glavi korisnika uključuju naočale ili kacigu na
kojoj se nalazi kamera i izvor IR luminacije.
Metode koje uključuju videosignal koriste različite tehnike računalnog vida kako bi
pratili kretanje oka, možemo ih podjeliti na tehnike; temeljene na obliku, temeljene na
izgledu i hibridne. Tehnike koje se temelje na obliku koriste prijašnje modele strukture oka,
uspoređuju podatke na slici sa prethodno definiranim modelima oka tako da se radi o
bottom-up pristupu. Tehnike temeljene na izgledu koriste modele izgrađene treningom
velikog broja subjekata u različitim situacijama što omogućuje dana svakoj slici postoji
mogućnost detekcije. Hibridne metode kombiniraju takva dva pristupa.
Većina sustava koriste izvor IR svjetlosti i prikladnu kameru, ali kao što sam ranije
u radu objasnio to nije pristup koji sam odabrao jer sam želio razviti sustav koji omogućuje
da svatko može na svome računalo koristiti sustav. Slika 13 prikazuje oko pod običnim i
pod IR svjetlom. Metode korištene u sustavu sa odnosno bez IR svjetla se razlikuju.
Vidljivo je iz slike kako IR omogućuje raspoznavanje zjenice što je u pravilu nemoguće
kada ga nema.
19
Slika 12. Ljevo detekcija purkinje slike, desno sustav montiran na glavi
Prema Duchowskom[1], trenutno se nalazimo u četvrtoj generaciji uređaja za praćenje
pogleda. Prva generacija je omogućavala mjerenje pokreta oka unutar glave (eng. Eye-in-
head), to uključuje elektro-okulografiju i slične metode koje nisu bile u stanju mjeriti točku
usmjerenosti (eng. Point-of-regard). Druga generacija su foto i video-okulografni uređaji
koji također nisu računali POR. Treća generacija su analogne tehnike utemeljene na vidu,
koje su mogle pratiti odsjaj zjenice. Dobivene podatke danas obrađujemo tehnikama
računalnog vida i algoritmima digitalne obrade signala. Kroz generacija, povećala se
uporabljivost, a smanjila cijena tehnologije.
3.4. Temelji estimacije pogleda
Cilj estimacije pogleda je pružati preciznu informaciju o korisnikovom pogledu s
obzirom na neku informaciju koju imamo o tome oku, kada govorimo o sustavu
temeljenom na videosignalu te informacije su najčešće centar zjenice, rubovi oka i slično.
Temeljni problem estimacije pogleda je pronaći vezu između informacija na slici i
usmjerenosti pogleda. Razvijeni su različiti pristupi ovisno o sustavu koji se koriste;
metode temeljene na geometriji i metode temeljene na interpolaciji.
Metode temeljene na geometriji uključuju informaciju o 3D pozicijama različitih
uređaja u prostoru, primjerice izvora IR svjetla i kamere. Metode koje se temelje na
interpolaciji koriste neke opće jednadžbe, poput liberalnih ili kvadratnih polinoma kako bi
mapirali podatke sa slike sa koordinatama pogleda. Metode estimacije pogleda uključuju
znanje o parametrima koji se računaju prilikom kalibracije koja u pravilu znači da korisnik
ima trening fazu u kojoj gleda od 4 do 16 točaka i tako sustavu predaje informacije
potrebne za daljnje korištenje.
20
Slika 13. Primjer oka pod vidljivim i pod IR svjetlom
4. Opis razvijenog rješenja
U ovom radu sam se odlučio za analitički pristup problemu. Najzanimljivija točka
za detekciju pogleda je naravno centar zjenice, odnosno šarenice jer obična web kamera ne
dopušta dovoljno kvalitetno razlikovanje granice. Osim pomične točke koja određuje
usmjerenost pogleda potrebno je poznavati i neku fiksnu točku na licu. Iz praktičnih
razloga odabrao sam vanjski rub oka. Poznavanje informacija o pozicijama šarenica i
rubova oka nije samo za sebe dovoljno kako bi odredili područje ekrana na koje je korisnik
usmjeren, potrebno je poznavati njegov položaj u prostoru odnosno potrebna je trening
faza u kojoj se kombinira znanje o fiksnoj (rubnoj) poziciji ekrana sa znanjem o
detektiranom položaju šarenice i ruba oka. Na kraju svega potrebno je mapirati detektirane
pozicije lica na ekran.
Jedan od glavnih ciljeva ovog rada bio je razviti analitički pristup problemu
estimiranja pogleda, kako bi to postigli sve komponente sustava su razvijene tako da
omogućuju dosta slobode pri izboru radne okoline.
4.1. Detekcija lica
Prvi korak u razvijenom sustavu je detekcija
lica. Pokušaji da razvijem vlastiti detektor lica su se
pokazali neuspješnim odnosno imali su previše
ograničenja. Primjerice detektor koji bi se temeljio na
bojama lica (kože) zahtijevao bi da pozadina iza osobe
nije slične obje, a različiti izvori svjetlosti bi također
onemogućavali uspješnu i robusnu detekciju [8,9].
Jedan od problema je primjerice i položaj ruke, neki od alternativnih detektora ne
omogućuju da osoba na neki način dodiruju svoje lice.
Za detekciju lica iskorištena je metoda Viola-Jones koja se temelji na četiri ključna
koncepta; jednostavne pravokutne značajke odnosno Haarove značajke, integralnu sliku za
brzu detekciju značajki, AdaBoost metodu strojnog učenja i kaskadni klasifikator.Harrove
značajke odnosno Haarovi valići su u dvodimenzionalnom prostoru zapravo kvadratni
21
Slika 14. Haar klasifikatori
valovi, par pravokutnika – jednog crnog jednog bijelog.
U sustavu je iskorištena već napisana metoda odnosno već istrenirani podaci u
obliku .xml dokumenta koji omogućuju detektiranje lica. Pozvana metoda vraća
pravokutnik koji okružuje detektirano lice.
4.2. Detekcija područja oka
Isprobana je metoda slična detekciji lica za oko, ali je
davala nezadovoljavajuće rezultate. Kako bi odredili otprilike
položaj oka iskorišteni su antropometrijski podaci. Širina regije
oka je 0.35 x širine regije lica, a visina regije oka je 0.2 x visine
regije lica. Početna pozicija desnog oka je 0.3x širina, odnosno
0.4x visina regije lica; a ljevog 0.7 x širina, odnosno 0.4 x
visina lica. Vrijednosti se mogu malo pomaknuti prema gore ili
prema dolje.
4.3. Detekcija centra oka
Sada kada znamo gdje se otprilike nalazi oko potrebno je odrediti gdje se točno
nalazi bjeloočnica odnosno šarenica (kao što je već objašnjeno, zbog tehničkih ograničenja
web kamere nije moguće odrediti točno zjenicu). Kako bi pronašli centar oka koristimo
metodu gradijenata. Geometrijski, centar kružnog objekta možemo odrediti analizirajući
vektorsko polje gradijenta slike [2]. Neka c bude potencijalni centar, a gi je gradijent
vektor na poziciji x. Onda normalizirani vektor udaljenosti d bi trebao imati istu orjentaciju
22
Slika 15. Regije oka
Slika 16. Centar okruglog objekta će imati isti smjer kao i pikseli sa najvećim gradijentom
(osim predznaka) kao i gradijent gi. Tu činjenicu možemo iskorsiti tako što izračunamo
skalarni produkt između normaliziranog vektora udaljenosti (od centra) i gradijent vektora
gi. Optimalni centar c* onda možemo izračunati preko formula.
Osim normaliziranja vektora udaljenosti potrebno je normalizirati i vektore
gradijenta zbog linearnih promjena. Kako bi smanjili računsku složenost zanemarujemo
gradijente sa malom vrijednošću. Gornja formula vrijedi za svaki okrugli objekt, a s
obzirom da znamo kako je naš krug zapravo šarenica odnosno tamnija je od okoline svaki
skalarni produkt ćemo pomnožiti sa invertiranom vrijednošću izvorne slike, tako će
doprinos tamnijih biti veći od doprinosa svjetlijih piksela. Rezultat takvog postupka vidimo
na slici 17;
4.4. Detekcija ruba oka
Za estimaciju smjera pogleda potrebno je poznavati i jednu fiksnu točku na licu
pomoću koje ćemo računati relativnu udaljenost od šarenice odnosno fokusa osobe. Postoje
različite metode za detekciju ruba oka, vanjskog ili unutarnjeg, ali nažalost nisu se
pokazale uspješnima u ovom sustavu. Metode koje koriste posebno osmišljene filtre daju
dobre rezultate kada radimo sa kvalitetnijim slikama, ali za ovako malu rezoluciju se nisu
pokazale uspješnima. Testirao sam i metode koje razvijaju svoj prostor boja odnosno
23
Slika 17. Centar oka će imati najveću vrijednost opisane funkcije
posebne funkcije koje iskorištavaju njihov odnos, ali niti one nisu dale željeni rezultat.
Ono što smo za sada razvili je traženje centra oba oka. Nameće se rješenje da
iskoristimo te informacije za traženje ruba oka. Jedno potencijalno rješenje bi bilo povući
liniju kroz centre oba oka te na produžetku tih linija pronaći rubove oka. Unutarnji rub je
teško pronaći zbog male rezolucije slike, a i cilj je razviti robustan sustav koji bi radio i
pod lošijim svjetlosnim uvjetima, nos može praviti sjenu odnosno prepreku koju sustav
onda prepoznaje kao granicu. Iako i vanjski rub predstavlja izazov, zbog trepavica ga je
lakše pronaći. Jedno rješenje bi bilo tražiti sjecište dužine koja spaja središta oči sa
trepavicom i tako pronaći rub, ali takvo označavanje rubova nam ne bi dalo dovoljno novih
informacija odnosno možemo ga primjeniti primjerice u sustavu koji koristi neuronske
mreže, ali za ovakav analitički pristup nije dovoljno dobro jer bi rub uvijek bio u istoj
visini kao i centar. Za svaki slučaj, isprobao sam rezultate, tražeći najveći gradijent po liniji
koji bi predstavljao prijelaz sa bjeloočnice na trepavicu, ali rezultat je stalno varirao i nije
bio dovoljno dobar.
Kombinirajući različite tehnike razvijena je slijedeća metoda za detektiranje vanjskog ruba
oka;
1. Zumiranje područja oka u omjeru ~70x30 piksela (znamo centar oka)
2. Konvolucija sa Gaussom
3. Rotacija područja oka da bude horizontalno ( znamo dužinu koja spaja centre oka)
4. Zbrajanje R,G i B vrijednosti slike (poveća se kontrast)
5. Rađenje maske preko praga Th= -3/4*StdVal + meanVal; (std- standarna devijacija)
6. Median filtar 3x3 (kako bi uklonili osamljene piksele)
7. Uklanjanje komponenti spojenih sa rubom
8. Morfološka analiza (Preostalo je područje šarenice i trepavice-kapka, pretraga sa
vanjske strane do prve značajne pojave preostalih piksela označava vanjski rub –
trepavice.)
Metoda se pokazala uspješnom, iako nije u stanju prepoznati rub kada dolazi jaka svijetlost
sa strane odnosno kada potpuno (nejednako) osvjetljuje taj prostor. Isto tako, prisutnost
kose na tom području će rezultirati pogrešnim detekcijama.
24
4.4. Estimacija usmjerenosti pogleda
Sada kada samo pronašli fiksnu točku (rub) i pokretnu točku, potrebno je tu
informaciju pretvoriti u informaciju o usmjerenosti pogleda. Računanje usmjerenosti
pogleda iz značajki oka nije lagan zadatak, uključuje različite geometrijske modele i
pretpostavke [17], poput onih o veličini i kretanju bjeloočnice. Takvi izračuni ne samo da
smanjuju robustnost sustava nego često unose i pogreške. U ovome radu iskoristio sam
jednostavnu shemu za računanje usmjerenosit pogleda [3]. Unatoč jednostavnosti, sustav je
precizan. Shema je;
1. Korisnik u fazi kalibracije gleda u poznate točke u ravnini, poput rubova i sličnih
specifičnih točki. Zapamte se odgovarajuće pozicije ruba oka i centra šarenice. Te
točke služe kao kalibracijske točke.
2. Konstruira se 2D linerno mapiranje iz vektora između ruba oka i centra prema kutu
gledanja. Usmjerenost pogleda u slijedećim slikama se računa interpolacijom.
Primjerice, pretpostavite da su kut gledanja i vektor između ruba i centra oka za
kalibracijske točke P1,P2; {(α1,β1),(x1,y1)} i {(α2,β2),(x2,y2)}, ukoliko
detektiramo vektor (x,y), odgovarajući kut računamo iz formula;
Gornja estimacijska shema ima slijedeće prednosti;
1. Računski je jednostavna i učinkovita.
2. Iznimno je precizna. Unatoč jednostavnosti, jedina aproksimacija modela je
pojednostavljenje rotacijskog kuta bjeloočnice kao projekcija kretanja centra
šarenice. Radi se o aproksimaciji θ~=sin(θ) što je zanemariva pogreška za male
iznose. Čak i za velike kuteve od 35° unesena greška iznosi samo 1.2°, a najčešće
ppromjene u kutu gledanja su oko 15° tako da je unesena pogreška samo 0.17°.
25
3. Brzna je, lagana i adaptivna. U mnogim aplikacijama nije nam potrebno poznavati
kut nego su α i β zapravo koodrinate na ekranu. Zbog toga je kalibracijski proces
izuzetno jednostavan, traje svega par sekundi.
4.5. Kalibracija
Postoje različiti postupci kalibracije, ovisno o metodama korištenim u sustavu.
Ukoliko sustav koristi neuronske mreže onda je potrebna duža kalibracija gdje korisnik
prati niz kalibracijskih točki po cijelom ekranu. (Obično se radi o zig-zag kretanju.) Kada
govorimo o analitičkom pristupu potrebno je od 4 - 16 točaka. U ovom sustavu koristio
sam pet točaka, četiri rubne i jedna centralna. Kalibracija je izuzetno brza, potrebno je
kratko gledati u svaku od točaka, sustav pamti pozicije ruba i centra oka za poznate
koodrinate na ekranu. Na kraju kalibracije računa se aritmetička sredina za svaku od
odgovarajućih točaka te se dobivene vrijednosti koriste poslije za estimaciju pogleda.
26
Slika 18. Model oka, odnosno mapiranja na ekran
5. Implementacija
Sustav je implementiran u C# , razvojna okolina Visual Studio 2008, pomoću Emgu
wrappera koji omogućuje korištenje i pozivanje OpenCV biblioteka.
5.1. Opis implementacije kritičnih dijelova algoritma
U nastavku su opisane implementacije određenog dijela sustava. Implementacija nije potpuno opisana, ali dovoljno da se opišu specifičnosti korištenih algoritama.
5.1.1. Implementacija detekcije lica
Kao što je objašnjeno u prethodnom poglavlju, za detekciju lica iskorištena je
postojeća openCV metoda kojoj predajemo dokument sa prethodno istreniranim
vrijednostima ("haarcascade_frontalface_alt2.xml"), faktor skaliranja prozora,najmanji
broj susjeda koji čine pravokutnik, tip operacije i najmanju veličinu prozora.
MCvAvgComp[] faces = grayframe.DetectHaarCascade( haarface, 1.2, 2, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(nextFrame.Width / 5, nextFrame.Height / 4))[0];
Nakon što nam metoda pozvana nad sivom slikom vrati polje sa područjima lica,
izaberemo najveće te iz njega odredimo područje ljevog i desnog oka kao što je već
opisano. Sustav ne prati vremensku zavisnost tako da je za svaku novu sliku potrebno
pozvati metodu.
5.1.2. Implementacija traženja centra
Funkcija FindEyeCenter napisana je da nađe sliku. Predaje joj se float polje sa
vrijednostima piksela područja oka. Iako funkcija radi u različitim prostorima boja, ipak je
odabrana value komponenta u HSV prostoru boja. Dakle na ulaznoj slici se
(antropometrijski) izdvoji područje oka, pretvorti se u hsv prostor, te se value komponenta,
27
filtrirana gaussom, preda funkciji koja vrati poziciju centra šarenice. U nastavku opis
ključnih djelova funkcije, nisu uključne petlje, deklaracije i slični pomoćni djelovi;
public int[] FindEyeCenter(float[,] eyeRegion) { // Računanje x i y gradijenta matXGradient = ComputeMatXGradient(eyeRegion); pomocnazaYGradient = ComputeMatXGradient(pomocnazaYGradient); transpose(pomocnazaYGradient, matYGradient, rows, cols);
// Računanje magnitude Gradijenta magnitudeGradient = matrixMagnitude(matXGradient, matYGradient);
// Računanje praga, iznosi -0.75 stdDevValue+ meanValue float gradientThresh = computeDynamicThreshold(magnitudeGradient, (float)0.75);
// Izrada matrice tezina, najtamnije imaju najveći doprinos (petlja nije prikazana) weight[i, j] = 255-eyeRegion[i, j]; // Za svaku točku pozovi funkciju testPossibleCentersFormula // Funkcija izračuna sve vrijednosti za formulu opisanu u prethodnom poglavlju // Izračunaj koordinate najveće vrijednosti return centerPosition;
Funkcija testPossibleCentersFormula je implementirana;
public static void testPossibleCentersFormula(int x, int y, float weight, float gx, float gy, ref float[,] outSum) { // dobije piksel sa koordinatama (x,y), tezinom weight (invertirana vrijednost), gradijentom gx i gy // za svaki potencijalni centar izračuna doprinos predanog piksela, zanemaruje rub od par piksela
for (int cy = 0+rub; cy < rows-rub; cy++) { for (int cx = 0 + rub; cx < cols - rub; cx++) { if (x == cx && y == cy) { continue; } // računa vektor udaljenosti od potencijalnog centra float dx = x - cx; float dy = y - cy; // normalizira na jediničnu vrijednost float magnitude = (float)Math.Sqrt((dx * dx) + (dy * dy)); dx = dx / magnitude; dy = dy / magnitude;
float dotProduct = dx * gx + dy * gy; // produkt će biti negativan ako vektori pokazuju u suprotnom smjeru // zanemarujemo takve vrijednosti jer su nebitne i unose pogrešku
28
dotProduct = (float)Math.Max(0.0, dotProduct);
outSum[cy, cx] += dotProduct * dotProduct * weight; } }
5.1.3. Implementacija traženja ruba oka
Postupak je već prethodno opisan u dovoljno detalja, poznate su pozicije centra
oka, nazovimo te točke A i B. Lagano je odrediti točku C sa kojom čine pravokutni trokut.
Nakon računanje pripadnih stranica trokuta, računamo i kut (u radijanima).
float kut = (float)Math.Atan(duljina_BC / duljina_AC);
S obzirom da znamo poziciju centra oka, možemo zumirati regiju, empirijski smo
odredili aproksimativni omjer širine odnosno visine oka i lica. Iz tog omjera izračunamo
regiju oka, za normalnu udaljenost nekih 70x30 piksela.
float omjerLiceOko_Width = (float)35 / 250;
float omjerLiceOko_Height = (float)15 / 250;
Rotacija slike(RGB) za izračunati kut, slika se nadopunjuje sa vrijednostima pa je
potrebno pamtiti i masku zbog kasnije morfološke analize. Nakon toga se normalizira
svaka komponenta (R,G,B) te zbrajaju vrijednosti u jednu sivu sliku. Takvo zbrajanje
povećava kontrast između bjeloočnice okoline. Dobivenu vrijednost pomnožimo sa
spremeljnom maskom rotacijom kako bi zanemarili rubne(dodane rotacijom) djelove.
Nakon toga izračunamo prag (preko formule Th=stdVal*faktor+meanVal). U izračunu
standardne devijacije odnosno srednje vrijednosti uzimaju se samo nenul vrijednosti.
float prag = computeDynamicThresholdRot(rightEye, (float)-0.75); RightEyeCorner = RightEyeCorner.ThresholdBinary(new Gray(prag), new Gray(255)); RightEyeCorner = RightEyeCorner.SmoothMedian(3);
Dobivena maska može imati u gornjem desnom odnosno gornjem lijevom (za ljevo
oko) nenul vrijednosti zbog kose (ili pozadine) pa je potrebno ukloniti sve piksele koji
diraju gornji kut. Nakon toga maska prikazuje tamna područja, odosno područje šarenice i
29
trepavica, ruba oka. Izrađeni su histogrami, vertikalni i horizontalni; krenemo od vanjskog
ruba i tražimo prvu pojavu piksela koji predstavljaju područje ruba.
5.1.4. Implementacija kalibracije i mapiranja
Za kalibraciju je osmišljena posebna forma koja crta krugove odnosno kalibracijske
točke. Nakon pokretanja kalibracije pojavljuje se točka (plava) koja upućuje korisnika gdje
da gleda, nakon par frameova krug postaje crvne odnosno aktivan i pamte se podaci
odnosno uzimaju u obzir. Taj korak je potreban kako bi uklonili potencijalnu pogrešku koju
uvodi zbog nagle promjene kalibracijskih točki. Točke se nalaze na svakome rubu
(goreljevo, goredesno, doljeljevo i doljedesno) te u samom centru slike.
Pokretanje kalibracije;
private void Trainingform_Load(object sender, EventArgs e) { image = new Image<Bgr, byte>((int)(pictureBox1.Width), (int)(pictureBox1.Height));
center = new PointF(image.Width / 2, image.Height / 2);
//...
Form1.calibration = true; Form1.phases[0] = true; }
Nakon što se otvori nova forma za kalibraciju preko cijelog ekrana, pokreće se
kalibracija u glavnoj formi. Ovisno o fazi kalibracije, prikazuju se odgovarajuće
kalibracijske točke te se zbrajaju detektirane vrijednosti;
if (calibration) { if (phases[1]) initialrightcorrect++;
if (phases[3]) { if (brojacKalibracije[0] > waitToCalibrate) { correctrightframes++; centercornerrighteye.X += (int)edgeRightEye_X; centercornerrighteye.Y += (int)edgeRightEye_Y; centerpupilrighteye.X += (int)aRight; centerpupilrighteye.Y += (int)bRight; // isto i za ljevo oko }
30
Nakon što se određena faza završi, računa se aritmetička sredina svih prikupljenih
vrijednosti.
if (calibration) { if (phases[0]) { Trainingform.DrawText("Kalibracija: Drzati glavu u videokrugu kamere, mirno..."); textframecounter++; if (textframecounter == 15) { phases[0] = false; phases[1] = true; Trainingform.ClearImage(); } }
//... if (phases[3]) {
Trainingform.CenterCircle();
brojacKalibracije[0]++; if (brojacKalibracije[0] < waitToCalibrate) { Trainingform.CenterCircleDontCount(); }
else if ((correctleftframes > noofdotcorrectframes) && (correctrightframes > noofdotcorrectframes)) { phases[3] = false; phases[4] = true; centercornerlefteye.X = centercornerlefteye.X / correctleftframes; centercornerlefteye.Y = centercornerlefteye.Y / correctleftframes; centerpupillefteye.X = centerpupillefteye.X / correctleftframes; centerpupillefteye.Y = centerpupillefteye.Y / correctleftframes; centercornerrighteye.X = centercornerrighteye.X / correctrightframes; centercornerrighteye.Y = centercornerrighteye.Y / correctrightframes; centerpupilrighteye.X = centerpupilrighteye.X / correctrightframes; centerpupilrighteye.Y = centerpupilrighteye.Y / correctrightframes;
correctleftframes = 0; correctrightframes = 0; } }
Tako dobivene vrijednosti predstavljaju fiksne podatke koje koristimo za mapiranje.
Nakon što završi kalibracija znamo poziciju kalibracijskih točaka te odgovarajuće vektore
udaljenosti između ruba i centra šarenice oka koje poslije iskoristimo za mapiranje.
Poznavajući fiksnu poziciju kalibracijske točke, i vektor razlike za oko u nekom trenutku
računamo;
31
/* imamo dvije kalibracijske tocke TopLeft( Xs1,Ys2) i BottomRight (Xs2,Ys2) * imamo vrijednost oka TopLeftCorner(a11,a21) TopLeftPupile(a12,a22) * imamo vrijednost oka BotomRightCorner(a21,a21) BottomRightPupil(a22,a22) * * racunamo vektor od ruba oka do centra * iks2= BotomRightCorner.x-BottomRightPupil.x * ipsilon2= BotomRightCorner.y-BottomRightPupil.y * * iks1= TopLeftCorner.x-TopLeftPupile.x * ipsilon1= TopLeftCorner.y-TopLeftPupile.y * * * Formule za preslikavanje su; * ALPHA=Xs1+(x-iks1)* (Xs2-Xs1) /(iks2-iks1) * BETA=Ys1+(y-ipsilon1)*(YS2-YS1)/(ipislon2-ipsilon1) * */
int WidthScreen = Trainingform.ReturnWidth() / 2; int HeightScreen =Trainingform.ReturnHeight() / 2;
int Xs1 = -WidthScreen+10; // pozicija kalibracijske tocke top left int Ys1 = HeightScreen-10;
float iks1 = (topleftcornerlefteye.X - WidthScreen) - (topleftpupillefteye.X-WidthScreen); float ipsilon1 = (topleftcornerlefteye.Y-HeightScreen) - (topleftpupillefteye.Y-HeightScreen);
float iks2 = (bottomrightcornerlefteye.X-WidthScreen) - (bottomrightpupillefteye.X-WidthScreen); float ipsilon2 = (bottomrightcornerlefteye.Y-HeightScreen) - (bottomrightpupillefteye.Y-HeightScreen);
int Xs2= WidthScreen-10; // pozicija kalibracijske tocke bottomright int Ys2= -HeightScreen+10;
float AlphaScreen; float BetaScreen;
int x = edgeLeftEye_X - aLeft; int y = edgeLeftEye_Y - bLeft; AlphaScreen = Xs1 + (x - iks1) * (Xs2 - Xs1) / (iks2 - iks1); BetaScreen = Ys1 + (y - ipsilon1) * (Ys2 - Ys1) / (ipsilon2 - ipsilon1);
Dobivene vrijednosti AlphaScreen i BetaScreen označavaju gdje ljevo oko gleda na
ekranu (x i y koordinate). Potrebno je napomenuti kako je centar koordinatnog sustava
postavljen na sredinu ekrana. Odnosno ono što je pozicija slike (W/2,H2) je u
koordinatnom sustavu zapravo (0,0). Nakon izračuna potrebno je prebaciti koordinate iz
sustava pomaknutog u centar ekrana u sustav koji ima ishodište u gornjem ljevom kutu
ekrana.
32
5.2. Primjer izvođenja algoritma
U nastavku slijedi prolazak kroz obradu jedne slike;1. Detekcija lica i regije oka (antropometrijski)
2. Detekcija centra šarenice oka (crveno označene regije se uzimaju u obzir, uzima se
V vrijednost iz HSV prostora boja, podotipka, predaje algoritmu koji vraća centar)
3. Detekcija ruba oka (Izdvoji se
područje oka – znamo informaciju
o centru, rotiramo sliku za kut
izračunat iz dužine koja spaja
centre šarenica, zbrojimo R,G i B
vrijednosti te novodobivenu sliku
pretvorimo u binarnu pomoću
dinamičkog praga, uklonimo rubne
piksele te područje koje preostaje
najbliže vanjskom rubu predstavlja rub oka.
33
Slika 20. Područja oka se pretvaraju u HSV prostor, podotipkaju, value komponenta se predaje opisanoj funkciji, rezultat je centralna pozicija šarenice
Slika 21. Desno detektirani centri oka i dužina iz koje izračunamo kut nagiba, lijevo izdvojeno područje, zatim rotirano za izračunati kut te zbrojene vrijednosti R, G, B komponenti, izračunata maska sa rubom
Slika 19. Detektirano lice i regije očiju
5.3. Opis aplikacije
Razvijena je aplikacija prikazana na slici, omogućuje crtanje različitih parametara.
Kallibracija se pokreće iz posebne forme. Pojavljuje se novi prozor preko cijelog
ekrana koji iscrtava na rubovima kalibracijske točke koje je potrebno pratiti. Nakon
kalibracije moguće je pratiti mapiranje na ekran pomocu novog prozora (otvara se
pritiskom na "Prati mapiranje"). Za rad aplikacije potrebno je u folderu Temp snimiti .xml
dokument kojeg predajemo metodi za detekciju lica.
("C://Temp//haarcascade_frontalface_alt2.xml")
34
Slika 22. Izgled aplikacije
Slika 23. Forma za pokretanje kalibracije
6. Rezultati i primjena
Kao što je već objašnjeno, analitički pristup ne daje veliku preciznost tako da sustav
ne omogućuje precizni odabir. Osim podataka o kalibraciji, u sustav nije uključena nikakva
vremenska zavisnost, iskoristivši te podatke mogla bi se postići veća preciznost. Sustav
omogućuje puno bolji raspon po horizontalnoj komponenti od vertikalne. Sa prosječne
(korisničke) udaljenosti visina ekrana je svega 3-4 piksela, ovisno o položaju, što znači da
je vertikalno moguće raspoznati mali broj pozicija. Uz to, nisu dopuštena veća kretanja
korisnika nakon kalibracije.
Sustav omogućuje rad u različitim svjetlosnim uvjetima, iako postoji problem kada
snop svjetlosti pada na rub oka. Kosa koja pada preko oka također može dovesti do
pogrešne detekcije ruba oka, a ovisno o količini, i do pogrešne estimacije centra. Naočale u
pravilu nije moguće koristi zbog velikog odsjaja, iako to ovisi o uvjetima okoline.
Vremenski najzahtjevniji dio je sama detekcija lica što se može ubrzati ukoliko
pretpostavimo blizinu korisnika (pa predamo podotipkanu sliku) odnosno ako
pretpostavimo statičnost pa taj korak možemo potpuno isključiti, barem na kraćim
intervalima.
Na udaljenosti od ~50cm i monitoru
od 15", idealna razlučivost je;
Horizontalni pomak ~15 piksela
Vertikalni pomak ~3 piksela
Sustav je primjenjen za pokretanje miša, odnosno estimaciju smjera pokreta, dakle
samo četiri pozicije (gore, dolje, lijevo, desno). Sustav je također iskorišten za estimaciju
smjera pogleda odnosno koordinate na ekranu. S obzirom da sustav ne koristi nikakvu
vremensku zavisnost, već i male promjene između dvije slike dobivene iz kamere
rezultiraju sa promjenom estimiranog centra odnosno smjera pogleda. To je posebno bitno
kada govorimo o vertikalnom smjeru jer tada promjena od jednog piksela rezultira sa
velikom pogreškom.
Velikim ograničenjem sustava se pokazala nestabilnost slike odnosno česta
35
promjena estimacije centra za piksel što rezultira unosom velike pogreške. Kako bi to
otklonili potrebno je uvesti vremensku zavisnost između pojedinih dobivenih slika. Iako
sustav omogućuje tek određene primitivne primjene, razvijene komponente se mogu
koristiti u drugim sustavima, ili u kombinaciji sa drugim pristupima, primjerice sa učenjem
neuronskih mreža.
36
7. Zaključak
Većina sustava razvijenih za estimaciju smjera pogleda koriste izvore IR svjetlosti i
odgovarajuće kamere. Postojeći sustavi su često izuzetno skupi, te zahtijevaju opremu koja
nije svima dostupna. S obzirom da svatko ima kameru u nekom od uređaja, u zadnje
vrijeme se razvijaju sustavi koji omogućuju estimaciju usmjerenosti pogleda u vidnom
području, samo pomoću web kamera. Takvi sustavi imaju svoja ograničenja koja su
opisana i u ovome radu. Za kvalitetniju estimaciju pogleda potrebno je pratiti pokrete
glave, rotaciju oko sve tri osi i druge podatke. Osim analitičkog pristupa, moguć je i
pristup preko strojnog učenja odnosno neuronskih mreža, ali tada je potrebna duža
kalibracija i sustav je osjetljiv na promjene.
U ovome radu razvijeni sustav omogućuje tek primitivne primjene, iako su
razvijene komponente koje rade pod različitim uvjetima, krajnji rezultat nije dovoljno
robustan. Potrebno je još raditi na samom sustavu jer se za sada sustav zapravo sastoji od
više komponenti koje nisu toliko međusobno povezane i ne nude dovoljno kvalitetnu
informaciju. Sami pokreti oka, uz horizontalnu razliku od samo 15 odnosno vertikalnu od
samo 3 piksela, na normalno udaljenosti od ekrana, ne omogućuju dovoljno kvalitetno
razlikovanje, posebno zato što razvijene metode ponekad pogriješe u estimaciji za jedan
piksel što uvodi veliku pogrešku.
Unatoč tome, razvijene su komponente koje omogućuju primjenu u drugačijim
sustavima, odnosno uz doradu postojećeg, metoda detekcija centra šarenice i ruba
omogućuju relativno brzu detekciju područja oka što se može iskoristiti kao polazište za
druge metode.
37
Literatura
1. Duchowski, A.T, Eye Tracking Methodology, 2006. Springer
2. Barth E., Timm F., Accurate Eye centre localisation by means of gradients, In
proceeding of: VISAPP 2011 - Proceedings of the Sixth International Conference
on Computer Vision Theory and Applications, Vilamoura, Algarve, Portugal, 5-7
March, 2011
3. Zhu J.,Yang J., Subpixel Eye Gaze Tracking, Automatic Face and Gesture
Recognition, 2002. Proceedings. Fifth IEEE International Conference
4. Li D., Parkhurst D., Open-SOurce Software for Real-Time Visible Spectrum Eye
Tracking, The 2nd Conference on Communication by Gaze Interaction COGAIN
2006.
5. Kumar, M. Reducing the Cost of Eye Tracking Systems, Stanford Tech Report
CSTR 2006-08, April 2006
6. Tall M. Barret M. MollenBach E.m Agustin J., Skovsgaard H., Evalution of a Low-
Cost Open Source Gaze tracker, ETRA 2010, Proceedings of the 2010 Symposium
on Eye-Tracking Research & Applications, Pages 77-80
7. Pannaasch S., Helmert J., Celichkovsky B., Eye Tracking and usability research: an
introduction to the special issue,Journal od Eye Movement Research
8. Waibel A. Schiele B., Gaze tracking based on Face-Color,In International
Workshop on Automatic Face- and Gesture-Recognition, p.344–349, (1995)
9. Back D., Neural Network Gaze Trackingusing Web Camera, Thesis, IMT, 2005
10. Silva M., Mohamed A.O., Courboulay, Gaze tracking, attention and interactive
applications
11. Skovsgaard H.H.T., Estimating acceptable noise levels on gaze and mouse selection
by zooming, Student Paper, 2008 Annual IEEE Conference
12. Mackink S., Hubel D., Martinez-Conde S., The role of fixational eye movements in
visual perception, Nature reviews, volume 5, p 229, 2004.
13. Sibert L., Jacob Robert, Evaluation of Eye Gaze Interaction, CHI '00 Proceedings
of the SIGCHI conference on Human Factors in Computing Systems, p. 281-288
14. Fono D, Vertegaal R., EyeWindows: Evaluation of Eye-Controlled zooming
windows for focus selection, CHI 2005.
38
15. Winograd T., Kumar M., GUIDe: Gaze-echanced UI Design
16. Kingstone A. Birmingham E., Bischof W., Why do we look at people's eyes?
Journal od Eye Movement Research
17. Cabeza R., Villanueva A., Models for Gaze trackign Systems, EURASIP Journal of
Image and vido processing, volume 2007.
18. Baluja S. Pomerleau D., Non-intrusive gaze trackingusing artificial neural networks
19. Pratla M., Jayasumana A., A neural network based real-time gaze tracker, Journal
od Network and Computer Applications, 2002, 179-196.
20. Sewell W. Komogorstev O., Real time Eye gaze trackiing with an unmodified
commodity webcam empoying a neural network, Proceedings od ACM Conference
on Human Factors in Computing Systems(CHI), Atlanta, Ga, 2010.
21. Jonsson E., If Looks Could Kill – An Evaluation of Eye Tracking in Computer
Games, Master degree project, KTH
22. Drewes H., Eye Gaze Tracking for Human Computer Interaction, PhD Thesis, der
Ludwig-Maximilians-Universität, 2010.
23. Skovsgaard H., Noise Challenges in Monomodal Gaze Interaction, PhD Thesis, IT
University of Copenhagen, 2011.
24. Lopez J., Of-the-Shelf Gaze Interaction, PhD Thesis, IT University of Copenhagen,
2009.
25. Majaranta P., Text Entry by Eye Gaze, PhD Thesis, University of Tampere, 2009.
39
Sažetak
Sustav za detekciju usmjerenosti pogleda
Praćenje pogleda označava proces detektiranja i praćenja usmjerenost pogleda
odnosno smjera u kojem osoba gleda. Praćenje pogleda ima niz primjena, ali
većinom se koriste sustavi koji zahtijevaju uređaje koje mnogi nemaju, primjerice izvor IR
svijetla i prikladnu kameru. Kako bi se izbjeglo to ograničenje, razvijen je jednostavan
sustav temeljen na analitičkim tehnikama koji omogućuje praćenje pogleda pomoću obične
web kamere. Iako je sustav pokazao očekivana ograničenja, ponajviše malu preciznost,
ipak pokazuje da se može koristiti u jednostavnijim primjenama. Razvijena je metoda za
detekciju ruba oka, a sustav je iskorišten za upravljanje mišem.
Ključne riječi: detekcija pogleda, praćenje pogleda, praćenje oka, detekcija ruba oka
40
Abstract
System for automatic detection of gaze direction
Gaze tracking means detecting and following direction in which person looks. Gaze
tracking has many applications, but use of this technology isn't widespread because most of
them use special IR luminance source and camera. To avoid this problem, we developed
simple system, based on analytical technics, using regular web cam. Although system has
expected limitations, it can still be used for simple applications. New method for eye
corner detection was developed, and system was used for mouse control.
Keywords: gaze tracking, gaze detection, eye detection, eye corner detection
41