Cviˇcen´ı z pˇredmˇetu Biometrie ´ Uloha 3: Rozpozn´av´an´ı duhovky Eduard Bakˇstein,
[email protected] 3. ledna 2013
´ Uvod Rozpozn´av´an´ı duhovky je vysoce pˇresn´a biometrick´a metoda s celou ˇradou praktick´ ych, vyuˇz´ıvan´a na letiˇstn´ıch kontrol´ach, v pˇr´ıstupov´ ych syst´emech i humanit´arn´ıch mis´ıch. Mezi jej´ı hlavn´ı v´ yhody patˇr´ı robustnost a stabilita duhovky po cel´ y ˇzivot jedince, stejnˇe jako moˇznost odeˇc´ıtat duhovku z vˇetˇs´ı vzd´alenosti. Z´akladn´ımi prvky syst´emu rozpozn´av´an´ı duhovky jsou sn´ım´an´ı, segmentace (nalezen´ı oblasti duhovky), rozbalen´ı (”unwrapping”) a k´odov´an´ı. C´ılem u ´lohy je vyzkouˇset v praxi metody, pouˇz´ıvan´e pro rozpozn´av´an´ı ´ duhovky. Uloha je sloˇzena z n´asleduj´ıc´ıch ˇc´ast´ı: 1. Implementace k´odu pro segmentaci oblasti duhovky pomoc´ı Houghovy transformace 2. Pˇriˇrazen´ı zadan´ ych obr´azk˚ u oka k irisCodes v datab´azi 3. Bonusov´a u ´loha: zpracov´an´ı obr´azk˚ u vlastn´ı duhovky, u ´toky na syst´em. ˇ sen´ı bude prob´ıhat formou implementace poˇzadovan´ Reˇ ych funkc´ı do existuj´ıc´ıho Iris Toolboxu, kter´ y je ke staˇzen´ı na str´ank´ach cviˇcen´ı. Jedn´ım z v´ ystup˚ u u ´lohy bude v´ami zpracovan´ y struˇcn´ y protokol, do kter´eho vloˇz´ıte zejm´ena ty ˇca´sti kter´e jsou vyˇzadov´any v textu zad´an´ı. Jednotliv´e body struˇcnˇe okomentujte (pˇredevˇs´ım pro vaˇs´ı vlastn´ı orientaci) Pˇredpokl´ad´a se samostatn´a pr´ace na u ´loze. Cviˇcen´ı vyuˇz´ıv´a zdrojov´e k´ody Libora Maˇska z University of Western Australia.
´ Uloha 3, Duhovka - extrakce pˇ r´ıznak˚ u a porovn´ av´ an´ı irisCode (20 bod˚ u) Pokyny k odevzd´ an´ı ´ Uloha se odevzd´av´a na posledn´ım cviˇcen´ı bloku cviˇc´ıc´ımu. Struˇcnˇe pop´ıˇsete zdrojov´ y k´od Vaˇs´ı implementace a pˇredvedete funkci na zadan´ ych testovac´ıch obr´azc´ıch. Grafy a obr´azky z jednotliv´ ych krok˚ u zpracov´an´ı se odevzd´avaj´ı v kr´atk´em reportu se struˇcn´ ym popisem a zodpovˇezen´ım 1
ot´azek, poloˇzen´ ych v zad´an´ı. K zapoˇcten´ı bod˚ u za u ´lohu je tak´e nutno odeslat zdrojov´ y k´od (pouze zazipovan´ y adres´aˇr ToDo) do odevzd´avac´ıho syst´emu (deadline v den cviˇcen´ı do p˚ ulnoci).
1
Segmentace oblasti duhovky pomoc´ı Houghovy transformace
Ku ´spˇeˇsn´emu zak´odov´an´ı informace, obsaˇzen´e ve struktuˇre duhovky, je nezbytn´e nal´ezt a oddˇelit (segmentovat) oblast duhovky od okol´ı (bˇelma, v´ıˇcka atd.). Nejjednoduˇsˇs´ım zp˚ usobem je aproximace oblasti duhovky jako mezikruˇz´ı. K nalezen´ı oblasti duhovky pak m˚ uˇzeme pouˇz´ıt Houghovu transformaci (HT) pro kruh (Viz pˇredn´aˇska 9). Pˇri t´eto metodˇe se nejprve pomoc´ı hranov´eho detektoru naleznou v obr´azku hrany a n´aslednˇe se kaˇzd´ y nalezen´ y hranov´ y bod projektuje do prostoru parametr˚ u. Projekce pak prob´ıh´a pˇriˇcten´ım pevnˇe dan´e konstanty na vˇsechna m´ısta prostoru parametr˚ u, kter´ ymi proch´az´ı pomysln´a kruˇznice se stˇredem ve zvolen´em hranov´em bodˇe a s dan´ ym polomˇerem. Za pˇredpokladu zn´am´eho polomˇeru se v bodˇe stˇredu hledan´eho kruhu v prostoru parametr˚ u vyskytne maximum. Postup pro nezn´am´ y polomˇer je obdobn´ y: provede se projekce pro hodnoty polomˇeru ve zvolen´em rozsahu a n´aslednˇe se hled´a maxim´aln´ı hodnota pˇres cel´ y prostor parametr˚ u.
Parametrick´ y prostor Mˇejme obr´azek velikosti x kr´at y pixel˚ u. Hled´ame-li kruˇznici o nezn´am´em polomˇeru v rozsahu r ∈ R, R = {rmin , rmin + 1, ..., rmax } se stˇredem v libovoln´em bodˇe obr´azku, bude naˇs´ım v´ ychoz´ım parametrick´ ym prostorem nulov´a matice o rozmˇerech (y + 2 · rmax ) × (x + 2 · rmax ) × |R|, kde |R| znaˇc´ı kardinalitu mnoˇziny R, zde tedy poˇcet pozorovan´ ych polomˇer˚ u1 . Do jednotliv´ ych vrstev parametrick´eho prostoru pak vepisujeme kruˇznice o polomˇeru odpov´ıdaj´ıc´ım dan´e vrstvˇe se stˇredy postupnˇe ve vˇsech hranov´ ych bodech. Pˇri vykreslov´an´ı kruˇznice m˚ uˇzete vyj´ıt z analytick´e rovnice pro kruˇznici (x − a)2 + (y − b)2 = r2 , (1) z n´ıˇz si vyj´adˇr´ıte jednu ze souˇradnic a pˇres druhou m˚ uˇzete tud´ıˇz snadno iterovat. Nejjednoduˇsˇs´ım zp˚ usobem vytvoˇren´ı souˇradnic na kruˇznici je funkce circlecoords, obsaˇzen´a v iris toolboxu, kter´a vrac´ı pˇr´ımo souˇradnice bod˚ u na kˇruˇznici o zadan´ ych parametrech (tady se m˚ uˇze hodit funkce sub2ind2 , pozor tak´e na konvenci [radeksloupec] vs. [xy])). Dalˇs´ı moˇznost´ı je pak napˇr. vyuˇzit´ı goniometrick´ ych funkc´ı. 1
Pouˇzijete-li pro vytvoˇren´ı n´ıˇze uvedenou funkci circlecoords, kter´a dok´aˇze omezit body na zadan´ y rozsah, nen´ı rozˇs´ıˇren´ı parametrick´eho prostoru v rozmˇeru x − y potˇreba a parametrick´ y prostor bude m´ıt rozmˇer y × x × |R| 2 Pokud v Matlabu zad´ ate jako indexy matice dva vektory, bude pouˇzit jejich kart´ezsk´ y souˇcin, nikoliv jednotli´e p´ary [ˇr´adek sloupec]! Funkce sub2ind() pˇrevede takov´eto p´ ary na line´ arn´ı indexy, kter´e lze jiˇz pouˇz´ıt jako vektor. Pˇr: a = magic(3); r = 1 : 3; c = r; a(r, c) =?; a(sub2ind(size(a), r, c)) =?
2
Struˇcn´ y popis pouˇzit´ı iris toolboxu naleznete na konci tohoto zad´an´ı v pˇr´ıloze. Kostry funkc´ı, kter´e m´ate za u ´kol implementovat, naleznete v adres´aˇri ToDo.
´ Ukol: 1. Implemetujte funkci [circlePupil, circleIris] = findIrisAnnulus(uint8 iris_image), zaloˇzenou na Houghovˇe transformaci (HT). circlePupil a circleIris jsou vektory parametr˚ u nalezen´ ych kruˇznic [x, y, polomˇer] pro zornici a duhovku. Rozsahy parametr˚ u HT pro prohled´av´an´ı vhodnˇe zvolte tak, aby nebyla nutn´a jejich u ´prava pro jednotliv´e V´am pˇridˇelen´e obr´azky. 2. Funkci vyuˇzijte spolu se zbytkem Iris Toolboxu pro zak´odov´an´ı zadan´ ych obr´azk˚ u duhovky. 3. Obr´azky meziv´ ysledk˚ u (detekce hran, nalezen´e kruˇznice, parametrick´ y prostor) pˇridejte do zpr´avy. Pot´e, co implementujete funkci FindIrisAnnulus, m˚ uˇzete spustit toolbox na libovoln´ y V´ami zvolen´ y obr´azek (staˇc´ı zmˇenit n´azev uk´azkov´eho obr´azku v iris demo.m na cestu k vybran´emu souboru). Iris toolbox, konkr´etnˇe obalov´a funkce createIrisTemplate provede rozbalen´ı v´ami segmentovan´eho mezikruˇz´ı do pseudopol´arn´ıch souˇradnic a zak´odov´an´ı duhovky pomoc´ı kvantizace f´aze Gaborov´ ych filtr˚ u (viz pˇredn´aˇsky). Pozn´ amky k implementaci: • Pro detekci hran pouˇzijte funkci edge(I,0 canny 0 , thres). Funkce nejprve vypoˇc´ıt´a gradientn´ı pole obr´azku a n´aslednˇe vyprahuje za pouˇzit´ı parametru thres. Experimentujte s prahem, snadno dos´ahnete odstranˇen´ı ˇca´sti nadbyteˇcn´ ych hranov´ ych bod˚ u, ˇc´ımˇz m˚ uˇzete v´ yznamnˇe urychlit a zpˇresnit v´ ypoˇcet. • Pro odstranˇen´ı vysokofrekvenˇcn´ıch sloˇzek obr´azku, kter´e vedou k velk´emu poˇctu neuˇziteˇcn´ ych hranov´ ych bod˚ u (ˇrasy apod). V´ ysledek m˚ uˇzete vylepˇsit pˇredzpracov´an´ım obr´azku jeˇstˇe pˇred hranovou detekc´ı, a to napˇr. u ´pravou jasov´ ych hodnot (´ upravou jasu a kontrastu) nebo gaussovskou filtrac´ı (”rozmaz´an´ım”). Nejprve vytvoˇr´ıte masku filtru pomoc´ı f special, kterou n´aslednˇe aplikujete na obr´azek: G = fspecial(’gaussian’,[a a],sigma); Ig = imfilter(image,G); Promˇenn´a a urˇcuje velikost vytvoˇren´e masky, sigma smˇerodatnou odchylky vypoˇc´ıtan´eho 2D gaussovsk´eho rozdˇelen´ı.
3
• Vyzkouˇsejte, zda l´epe funguje Vaˇse detekce pro vnˇejˇs´ı nebo vnitˇrn´ı hranu duhovky a tuto detekci prov´adˇejte jako prvn´ı. Nalezen´e parametry pak m˚ uˇzete s v´ yhodou pouˇz´ıt pro omezen´ı druh´e vyhled´avan´e kruˇznice (napˇr: stˇred kruhu ohraniˇcuj´ıc´ıho duhovku zvenˇc´ı by mˇel leˇzet uvnitˇr nalezen´e zornice apod.) M˚ uˇze se hodit pro vnitˇrn´ı a vnˇejˇs´ı hranu pouˇz´ıt r˚ uzn´a nastaven´ı pˇredzpracov´an´ı obr´azku. • Kaˇzd´e rozumn´e omezen´ı poˇctu prohled´avan´ ych parametr˚ u razantnˇe sniˇzuje dobu, potˇrebnou pro v´ ypoˇcet.
2
Nalezen´ı zadan´ ych obr´ azk˚ u v datab´ azi
Tato ˇc´ast u ´lohy simuluje proces identifikace na z´akladˇe duhovky tak, jak prob´ıh´a v re´aln´em prostˇred´ı. Nezn´am´e osobˇe jsou nejprve sejmuty fotografie duhovky (zde: zadan´e obr´azky), kter´e jsou zak´odov´any shodn´ ym zp˚ usobem, jako zbytek datab´aze. N´aslednˇe se v datab´azi vyhled´av´a uloˇzen´ y vzorek, kter´ y je pr´avˇe sejmut´emu vzorku nejpodobnˇejˇs´ı. T´ımto zp˚ usobem je v datab´azi nalezen nejpravdˇepodobnˇejˇs´ı subjekt. K porovn´an´ı dvou irisCodes se pouˇz´ıv´a Hammingovy vzd´alenosti (Hamming distance - HD), normovan´e poˇctem pˇrekr´ yvaj´ıc´ıch se pouˇziteln´ ych bit˚ u v mask´ach obou Iris-k´od˚ u: HD =
k (codeA ⊗ codeB) ∩ maskA ∩ maskB k , k maskA ∩ maskB k
(2)
kde ⊗ je logick´ y XOR oper´ator, ∩ logick´ y AND a k norm oper´ator3 - poˇcet jedniˇckov´ ych bit˚ u v dan´em ˇretˇezci. CodeA a codeB jsou porovn´avan´e iris k´ody a maskA a maskB pˇr´ısluˇsn´e ˇsumov´e masky (zde 1 je uˇziteˇcn´ y sign´al, 0 ˇsum. Pozor: v Iris toolboxu je konvence opaˇcn´a! ) Aby se pˇredeˇslo neˇza´douc´ımu vlivu rotace duhovky (naklopen´ı hlavy) na v´ ysledek porovn´an´ı, pouˇz´ıv´a se vz´ajemn´ y bitov´ y posun iris k´od˚ u v˚ uˇci sobˇe ve zvolen´em rozsahu a v´ ypoˇcet Hammingovy vzd´alenosti pro kaˇzd´ y posun. Jako v´ ysledek porovn´an´ı se pak bere nejlepˇs´ı shoda - tedy nejmenˇs´ı dosaˇzen´a vzd´alenost.
´ Ukol: 1. Implementujte funkci HD = irisHammingDistance(codeA,codeB, maskA, maskB) pro porovn´an´ı dvou iris k´od˚ u na z´akladˇe vzorce (2). Implementujte vz´ajemn´ y bitov´ y posun iris k´od˚ u, rozsah posun˚ u volte ±12 bit˚ u4 , hodit se m˚ uˇze funkce circshif t(). 3
Pozor: norm oper´ ator zde operuje v bin´arn´ım oboru - vrac´ı tedy poˇcet jedniˇcek - narozd´ıl od Matlabovsk´e funkce norm(), kter´a vrac´ı vˇzdy euklidovskou vzd´alenost ´ celu poslouˇz´ı funkce sum(). od poˇc´ atku a je tedy pro tyto u ´ˇcely nevhodn´a! Uˇ 4 Uvˇedomte si, kolik bit˚ u z´ aroveˇ n je zak´odov´ano bˇehem kvantov´an´ı f´aze (viz pˇredn´ aˇsky), upravte podle toho krok posunu a uˇsetˇrete si podstatnou ˇc´ast porovn´an´ı!
4
2. Projdˇete datab´azi uloˇzen´ ych iris k´odu (database.mat) a najdˇete takovou osobu, od kter´e V´am pˇridˇelen´ y obr´azek duhovky nejpravdˇepodobnˇeji poch´az´ı. Nejniˇzˇs´ı nalezen´e hodnoty Hammingov´ ych vzd´alenost´ı pro jednotliv´e, V´am zadan´e obr´azky, vloˇzte do zpr´avy, stejnˇetak jako informaci, kter´e osoby (a oˇci) jste na z´akladˇe obr´azk˚ u dohledali. K naˇcten´ı a proch´azen´ı datab´aze m˚ uˇzete pro usnadnˇen´ı pouˇz´ıt pˇripraven´ y skript walkDatabase.m 3. Projdˇete datab´azi jeˇstˇe jednou a nyn´ı porovnejte vˇsechny z´aznamy se vˇsemi, pˇriˇcemˇz rozdˇelte ty, u kter´ ych se porovn´avaly iris k´ody stejn´eho oka (=stejn´e oko stejn´e osoby) a ostatn´ı. Obˇe sady hodnot vykreslete do spoleˇcn´eho histogramu. Jak´e vych´azej´ı Hammingovy vzd´alenosti pro porovn´an´ı stejn´ ych a r˚ uzn´ ych oˇc´ı. Kam byste um´ıstili rozhodovac´ı pr´ah (zvolte)? Jak´ y by mˇel tento pr´ah FAR a FRR? A Co n´am v´ ysledn´ y graf vypov´ıd´a o naˇs´ı metodˇe? Graf s kr´atk´ ym koment´aˇrem a odpovˇed’mi na ot´azky zaneste do zpr´avy.
3
Bonusov´ eu ´ lohy
V r´amci tˇechto nepovinn´ ych u ´loh m´ate moˇznost vyuˇz´ıt V´ami implementovan´ ych funkc´ı. Jejich zpracov´an´ı nezabere pˇr´ıliˇs ˇcasu a umoˇzn´ı V´am pochopit a prakticky si vyzkouˇset dalˇs´ı aspekty rozpozn´av´an´ı duhovky.
Bonus: zpracov´ an´ı vlastn´ıch obr´ azk˚ u duhovky • Pomoc´ı kamery pro sn´ım´an´ı duhovky vyfotografujte vlastn´ı duhovky obou oˇc´ı. • Parametry iris toolboxu upravte tak, aby dobˇre vyhovovaly ke zpracov´an´ı obr´azk˚ u pouˇzit´e kamery. Pravdˇepodobnˇe bude tˇreba upravit parametr irisConfig.loNoiseThreshold v iris demo.m, urˇcuj´ıc´ı pr´ah pro ˇrasy (oblasti tmavˇs´ı neˇz zadan´ y pr´ah jsou oznaˇceny jako ˇsum). Aktu´aln´ı hodnota prahu je nastavena pro v´ ychoz´ı datab´azi. • Poˇr´ızen´e sn´ımky pˇreved’te na iris k´ody a uloˇzte do vlastn´ı datab´aze. Jak´a je hammingova vzd´alenost mezi fotografiemi obou Vaˇsich oˇc´ı? Jak´ y je vztah t´eto hodnoty k V´ami zvolen´emu prahu z pˇredchoz´ıho u ´kolu a k hodnot´am porovn´an´ı stejn´ ych a rozd´ıln´ ych oˇc´ı? V´ ysledky uved’te do zpr´avy a komentujte.
´ Bonus: Utok na syst´ em pomoc´ı vytiˇ stˇ en´ ych sn´ımk˚ u duhovky Ku ´toku pouˇzijeme bˇeˇzn´e fotografie duhovky. • Poskytnut´e fotografie duhovky, vytiˇstˇen´e na laserov´e tisk´arnˇe i ty, vznikl´e klasick´ ym fotografick´ ym osvitem, nasn´ımejte iris kamerou. • Sn´ımky, sejmut´e kamerou, segmentujte, pˇreved’te na iris k´ody a porovnejte se zadan´ ymi iris k´ody, vznikl´ ymi pˇr´ımo sejmut´ım oka 5
kamerou. Jak se liˇs´ı, jak´a je jejich hammingova vzd´alenost? Byl by takov´ y syst´em u ´spˇeˇsn´ y? • Vyzkouˇsejte detekci tohoto u ´toku pomoc´ı 2D Fourierovy transformace: porovnejte spektra pˇr´ım´eho a podvrˇzen´eho obr´azku. Jak se tato spektra liˇs´ı? Je nˇejak´ y rozd´ıl mezi obr´azkem z laserov´e tisk´arny a fotografick´ ym osvitem? Jak´ y? Jak by bylo moˇzn´e u ´tok detekovat a kter´ y z obr´azk˚ u ke pro detekci obt´ıˇznˇejˇs´ı?
Z´ avˇ er Blahopˇrejeme, pr´avˇe jste naimplementovali v´ yznamnou ˇc´ast syst´emu pro rozpozn´av´an´ı duhovky. Vyzkouˇseli jste, co obn´aˇs´ı pˇredzpracov´an´ı a segmentace a prozkoumali r˚ uzn´e vlastnosti porovn´av´an´ı pomoc´ı normovan´e Hammingovy vzd´alenosti. Zobrazili jste histogramy pro porovn´an´ı mezi obr´azky stejn´ ych a r˚ uzn´ ych oˇc´ı a zhodnotili statisticky kvality Vaˇseho syst´emu. Ten funguje obdobnˇe, jako syst´emy po cel´em svˇetˇe, pouˇz´ıvan´e na letiˇst´ıch a bezpeˇcnostn´ıch kontrol´ach. Nav´ıc douf´ame, ˇze aˇz si budete cht´ıt vzpomenout, ”jak jsem to vlastnˇe dˇelal”, pom˚ uˇze v´am v´ ysledn´ y protokol.
Podˇ ekov´ an´ı ˇ Vytvoˇren´ı t´eto u ´lohy bylo podpoˇreno Ministerstvem Skolstv´ ı, Ml´adeˇze a ˇ 2529/2012. Tˇelov´ ychovy grantem FRVS
6
Pˇ r´ıloha: Struˇ cn´ y pˇ rehled Iris Toolboxu • Pˇredstavu o funkci toolboxu si udˇel´ate spuˇstˇen´ım iris demo.m. Pˇri spuˇstˇen´ı dema se zobraz´ı hodnoty pˇredem pˇredpoˇc´ıtan´e a uloˇzen´e v cache. • Hlavn´ı funkc´ı, zodpovˇednou za extrakci pˇr´ıznak˚ u, je createiristemplate.m • Pro nastaven´ı parametr˚ u a pˇrid´an´ı adres´aˇr˚ u do PATH matlabu slouˇz´ı iris init.m. Zde lze nastavit mj. hodnotu prahu pro vlastn´ı obr´azky duhovky. • Kostry funkc´ı, kter´e m´ate za u ´kol naimplementovat, najdete v adres´aˇri ToDo. Sem ukl´adejte veˇsker´e k´ody, kter´e bˇehem pr´ace na u ´loze vytvoˇr´ıte. • V´am zadan´e obr´azky naleznete v adres´aˇri Images.
Struktura dat Zak´odovan´e obr´azky a pˇr´ısluˇsn´e masky se nach´azej´ı v souboru database.mat, obsahuj´ıc´ım stejnojmenn´e pole struktur - celkem 30 pro 30 osob, uloˇzen´ ych v datab´azi. Kaˇzd´a osoba pak obsahuje pole struktur R a L s r˚ uzn´ ym poˇctem uloˇzen´ ych k´od˚ u. Ty jsou v pol´ıch template, pˇr´ısluˇsn´e ˇsumov´e masky v poli mask. Pˇr´ıklad: k iris k´odu, odpov´ıdaj´ıc´ımu 3. obr´azku pro lev´e oko osoby ˇc. 12 se dostanete pˇres database(12).R(3).template, k pˇr´ısluˇsn´e masce pak pˇres database(12).R(3).mask. Proch´azen´ı datab´aze je pro v´as vˇsak pˇripraveno ve funkci walkDatabase.m
7