Sunteți pe pagina 1din 74

Cuprins 1. Introducere.......................................................................................................................2 2. Recunoasterea fetei (vedere de ansamblu).......................................................................4 2.1. Aplicatii.....................................................................................................................4 2.2.Solutii.........................................................................................................................5 2.2.1. Analiza Karrhunen-Loeve (Eigenfaces)............................................................5 2.2.2.

Metodele de baza de caracateristica vectoriala...................................................5 2.2.3. Modele deformabile...........................................................................................5 2.2.4. Machete bazate pe vederi multiple....................................................................5 2.2.5. Unduieli..............................................................................................................5 2.2.6. Alte Programe....................................................................................................5 2.3. Rezultate...................................................................................................................6 3. Faze ale recunoasterii fetei...............................................................................................6 3.1. Achizitia de imagine.................................................................................................6 3.2. Prelucrarea caracteristicilor......................................................................................6 3.3. Segmenatrea..............................................................................................................6 3.4. Extractia caracteristica..............................................................................................7 3.5. Cautare in baza de date.............................................................................................7 4. Achizitia de imagine........................................................................................................7 4.1. Dispozitiv de captura................................................................................................7 4.2. Conditii esentiale ambientale...................................................................................8 5. Prelucrarea imaginii.........................................................................................................9 5.1. Filtre de netezire.......................................................................................................9 5.1.1.Filtru mediu........................................................................................................9 5.1.2.Filtru median.....................................................................................................10 5.1.3.Segmentarea Reddi...........................................................................................11 5.1.4.Generalizarea segmentatiei Reddi ...................................................................12 5.2. Detectarea de muchie..............................................................................................12 5.2.1.Detectarea de muchie Prewitt...........................................................................12 5.2.2.Detectarea de muchie Sobel..............................................................................13 5.2.3.Detectarea de muchie SUSAN..........................................................................14 5.3.Egalarile de histograma............................................................................................15 5.4.Segmentarea culorii de baza....................................................................................16 5.5. Transformarea morfologica....................................................................................16 6. Segmentarea...................................................................................................................18 6.1. Primul pas. Culoarea bazata pe regiuni selectate....................................................18 6.2 Prelucrarea anticipata a formei fetei........................................................................22 6.2.1 Selecteaza mai complet umplutura regiuniei,...................................................22 6.2.2 Minimalizarea regiuni de interes......................................................................27 6.3 Sporirea bazata pe intensitati ale conturului fetei....................................................29 6.3.1 Aproximarea fetei.............................................................................................30 6.3.2 Producerea celei de a doua fete.........................................................................31 6.4.3 Netezirea conturului..........................................................................................40 7. Extragerea caracteristicilor............................................................................................43

7.1. Caracteristici n funcie de distan i raie.............................................................43 7.1.1 Detectarea sprncenelor....................................................................................43 7.1.2 Detectarea ochilor.............................................................................................43 7.1.3 Detectarea nasului.............................................................................................44 7.1.3 Detectarea gurii.................................................................................................44 7.1.5 Modelarea conturului feei ...............................................................................45 7.2. Alte caracteristici....................................................................................................45 7.2.1. Proprieti geometrice......................................................................................45 7.2.2. Transformri Fourier i transformri Fourier discrete.....................................48 7.2.3. Transformrile Cosine discrete........................................................................50 7.3. Decompresie wavelet a imaginilor feei.................................................................51 7.4. Probleme n extragerea caracteristicilor..................................................................53 8. Cutarea n baza de date................................................................................................53 8.1. Abordri pentru cutarea feelor.............................................................................54 8.2. Identificare folosind distanele de caracteristici.....................................................54 9. Ghidul de aplicaie segmentat........................................................................................55 9.1. Detalii ale implementrii.........................................................................................55 9.1.1. Interfaa utilizator.............................................................................................56 9.1.2 Capturarea video...............................................................................................56 9.1.3. Rutine de procesare a imaginii.........................................................................56 9.2. Mini Ghidul utilizator.............................................................................................57 10. Concluzii i mbuntiri ulterioare.............................................................................58 Referine.............................................................................................................................61 Anexa A - Algoritmi Matlab..............................................................................................63 Anexa B - Iniializarea DirectX.........................................................................................68

1. Introducere
Recunoasterea automata a fetei umane este o problema foarte complexa rezolvata de oameni cu o pereche de senzori foarte complex- ochii, si cu procesorul lor principal

creierul.Rezultatul de recunoastere a identitatii folosind sisteme automate este un process foarte complex, deoarece mecanismele folosite de creierul nostru pentru a le rezolva sunt inca insufficient cunoscute. Proiectul de recunoastere a fetei in care eu sunt implicat a fost inceput in Martie 2001, ca proiect oferit de Motorola Inc. (DALT. 2.4/2001) Membrii echipei au fost s.1. ing. Mihai V. Micea, prof. dr. ing.Vladimir Cretu, assist. Lucian Prodan si eu. Proiectul a inceput ca o cerceare referitoare la recunoasterea fetei umane. Dupa patru luni de cercetare si munca noi am dezvoltat o aplicatie Pc-based si un raport tehnic reprezentand rezultatele. Aplicatia a fost un prototip avand principala propunere de a testa algoritmi de recunoastere umana cu ajutorul fetei. Aplicatia foloseste o imagine de la camera web; de la preluarea imaginii el a extras caracteristicile figurii, si acestea le-a comparat cu vectorii caracteristici memorati in baza de date a aplicatiei. Rezultatul aplicatiei este imaginea capturata, marcata de pozitia caracteristicilor fetei (Figura 1) si recunoasterea identitatii persoanei in cazul in care caracteristicile sunt correct detectate. Aplicatia presupune un fundal monocrom si unele schimbari in conditiile ambientale.

Figura 1. Aplicatie test a proiectului DALT.2.4/2001

Rezultatele aplicatiei au fost acceptabile: tastand intr-o baza de date cu 10-20 oameni, raportul de recunoastere a fost aproximativ de 80-90%. Noi am identificat niste probleme pe care ne-am propus sa le eliminam in viitor. Aceste probleme sunt: dependenta de mediul inconjurator, calitatea modesta a fotografiei capturata, algoritmi precari pentru detectia unor caracteristici si nevoia de fundal monocrom. 3

Aceasta munca infatiseaza rezultatul obtinut in ultimul an. Cea mai importanta parte este focalizarea fetei, separatea acesteia de imaginea fundalului si alegera rezultatului correct dar pe scurt infatisarea intregului process de recunoastere a fetei de la imaginea capturata, prin la extragerea caracteristicilor corespunzatoare figurii pana la identificarea subiectului. Urmatoarele capitole sunt structurate dupa cum urmeaza: Capitolul 1 prezinta introducerea cititorului la recunoasterea fetei si prezinta cateva din solutiile prezentului. Capitolul 2 pe scurt prezinta fazele recunoasterii. Fiecare capitol de la 3 la 7 prezinta una din fazele: Achizitia de imagine, procesarea, localizarea fatei cu segmentare de imagine, extragerea caracteristicilor si cautarea in baza de date. Capitolul 8 prezinta aplicatia ce a fost scrisa sa testeze fazele descoperite si prezentarea in fazale anterioare, in special segmentarea. Si in cele din urma capitolul 9 ce contine concluziile luate.

2. Recunoasterea fetei (vedere de ansamblu)


2.1. Aplicatii
Recunoasterea fetei este o aplicatie potrivita in multe inca nerezolvate sau nerezolvate optim probleme. Aplicatia de baza a acesteia se regaseste in camprile urmatoare: Jurnalul de logare sistemelor: Multe corporatii si institutii vor sa verifice activitatea angajatilor. Aceasta de obicei se face manual sau folosind carduri magnetice bazat pe un sistem cand angajatul ajunge sau paraseste zona de lucru. Aceasta este o solutie viabila, dar are lipsurile ei: procesul de logare poate fi uitat, poate fi inselat si are nevoie de materiale extra pentru a fi facut (carduri magnetice personalizate, carte pentru logare ce sa planifice). Aceasta logare poate fi integrata cu un sistem de detectie a fetei, care, fara nici o nevoie externa si cu o reducere consistenta de vulnerabilitate poate determina cine intra sau iasa din spatiul supravegheat folosind o singura camera, ce probabil este deja instalata pentru scopul propus. Identificarea persoanelor disparate sau a criminalilor Sistemul de recunoastere a fetei poate fi instalat intr-un spatiu public, pentru a identifica oameni disparuti sau cautati.Desi la ora actuala nu lucreaza foarte bine, exista deja doua sisteme pentru aceasta propunere in orasul de noapte Ybor City la Tampla (Fl.) si
la Oceanfront din Virginia Beach.

Securitatea cladirilor Recunoasterea fetei poate fi folosita(si a fost deja incercata la aeroportul international Palm Beach ) pentru verificare de siguranta: la personalul angajat si la pasagerii din aeroporturi acestia pot fi verificati, in armata sau guvern se pot verifica persoanele care vor sa intre. Cautarea bazei de date existente Registrul prezent si bazele de date de recunoastere de fete umane ar trebui sa fie in intregime automatizate. Securitatea ATM Solutiile multor banci, ATM-urile si altor aplicatii critice de siguranta ar putea cere recunoasterea fetei in masura in care acum se cer parole. Interfata om/computer

Statiile de lucru ar trebui sa poata sa recunoasca utilizatorii sau ar trebui sa captureze infatisarea utilizatorului, eliminand nevoia de lucru manual de calitate precisa.

2.2.Solutii
Solutiile problemelor de mai sus sunt prezentate in multe moduri partiale. Acestea se schimba de la constrangeri la constrangeri. Nu exista o metoda generala aplicabila. Una dintre modurile folosite sau propuse sunt prezentate in urmare.

2.2.1. Analiza Karrhunen-Loeve (Eigenfaces)


Modul eigenfaces este o metoda des folosita si devreme implementata. Este bazat pe analiza fetei intr-o baza de figuri, calculata de la imaginile bazei de date. Figura necunoscuta este scrisa ca suma importanta de baza a imaginilor. Importanta va caracteriza figura din imagine. LILU98 propune o analiza de nivel al doilea. Scopul lor este sa imbunatateasca recunoasterea fetei sub o noua conditie, nu obtinuta prin prototipuri in mod coerent. Ei sugereaza folosirea combinatiei nivelului al doilea al prototipurilor liniare apartinand aceleasi clase de figure, pentru a trata prototipurile coerent.

2.2.2.Metodele de baza de caracateristica vectoriala


In LIAO00 doua filtre Gabor bazate pe caracteristica vectorilor sunt prezentate modurile. Dupa ce fetele au fost localizate tranformarile Gabor sunt aplicate regiunilor caracteristice.

2.2.3. Modele deformabile


Modelele deformabile sunt construite de mana de la curbe parametrice cu contur caracteristic. Un process de minimizare a functiilor energetice da valoarea parametriilor, caracterizand fata.

2.2.4. Machete bazate pe vederi multiple


BEYM93 prezinta o fata cu machete de la modelul vederilor multiple care acopera poze diferite ale sferei. Poza fetei detectata foloseste un mod piramidal de nivel 5. Fiecare nivel da o aproximatie mai buna caracteristicilor pozitiei. Dupa ce poza este evaluata, fetele pereche sunt determinate comparand transformarea de afin conformand poza regiunilor relevante ale imaginii.

2.2.5. Unduieli
In MENG00 un mod bazat pe unduieli este prezent. Vectorii extrasi sunt clasificati intr-un model Hidden Markov. Este demonstrate ca rezultatele sunt unduieli fata de metodele conventionale ale machetei. In GARC99b si GARC00 este prezenta o metoda care extrage saisprezece unde intr-o descompunere de nivel doi. Trasaturile fetei sunt localizate utilizand aceste unde. Vectorul fetei este obtinut de la valorile regiunilor statistice.

2.2.6. Alte Programe


In o poza este prezentata o apreciere FANS00. Prelucrarea fetei se incheie dupa

ce fata si trasaturile sunt localizate si informatia este folosita pentru a evalua poza. Un sistem de retea neuronal este prezentat in ROWL99. Sistemele de neuron incearca sa simuleze procesele competente ale creierului uman. Deoarece procesul de competenta complexa este dificil de simulate. Un mod statistic cu clase separabile este prezentat in NAGA00. In ZHAO00 autorii folosesc informatia conturului extrasa din umbre si simetria fetei in scop de recunoastere.

2.3. Rezultate
Solutiile existente functioneaza in circumstante limitate. Exista relatate 80% 90% succese recunoscute. Desi este un procentaj mare, niciuna dintre metodele cunoscute este acceptata ca o solutie viabila si generala. Putinele aplicatii functionabile in viata reala prezinta greseli mari, rezultatele lor sunt nesemnificative.

3. Faze ale recunoasterii fetei


Complexitatea problemei de recunoastere a fetei inseamna ca trebuie sa fie divizata in mai multe faze simple. Aceste faze sunt studiate impartite, si rezultatul lor este unit la punctual de intalnire dintre ele. Fiecare faza contine una sau mai multe informatii prelucrand pasi, care transforma faza de intrare in rezultatul dorit, daca transfromarea poate fi realizata.

3.1. Achizitia de imagine


Aceasta faza capteaza ilustratiile folosind dispozitive de capturare periferice. Imaginea poate fi obtinuta din mai multe surse. Exista moduri evidente pentru a obtine imagini digitale: scanarea unei poze facuta de un aparat de fotografiat, imaginile dinamice sau statice salvate de web-cam, fotografierea cu camera de filmat de inalta calitate, sau folosind alte surse (ex: zgarieturi manuale, imagini vopsite si rezultatele de la alte imagini digitale).

3.2. Prelucrarea caracteristicilor


Dupa ce o imagine este disponibila, cativa pasi de prelucrare sunt bine veniti. Acesti pasi garanteaza o prelucrare mai simpla in fazele urmatoare. Prelucrarea caracteristicilor reduce de obicei erorile imaginilor, ei aplica culoarea si histograma prelucrata. Rezultatul imaginilor interpretate usor de catre oameni ori sunt prelucrate simplu in urmatorii pasi automati pregatiti.

3.3. Segmenatrea
In recunoasterea fetei, dar si in alte imagini sunt probleme de prelucrare, este importanta segmentarea imaginilor in complementarea regiunilor si in fundal, sau pentru a separa imaginea in obiecte cunoscute si examinate. Segmenatrea este o faza importanta, deoarece poate sa hotarasca daca informatia utila este extrasa sau este ignorata: fazele urmatoare pot fi compromise cu usurinta daca acest pas nu face treaba exacta. Dar folosirea acestui pas poate reduce la extreme urmatoarele faze prelucrate cu effort.

3.4. Extractia caracteristica


Caracteristicile imaginii sunt un set de valori statistice determinate de valori de stil. Caracteristicile pot fi distantate intre doua puncte, suprafetele regiunilor, lungimile perimetrelor, centrul masei, momentele, regiuni limitate, etc, sau pot fi rezultate din altele, parametrii transformati aplicati local sau global. Este importanta alegerea caracteristicilor deoarece sunt folosite in clasificarea proceselor: un rezultat rau rezulta o identificare rea si un rezultat bun determina o metoda usora, simpla si exacta de identificat. Dupa ce sunt extrase caracteristicile, acestea trebuie sa fie ordonate intr-o forma coerenta, ce poate descrie cu precizie o figura, poate compara parametrul stability pentru a determina daca reprezinta aceasi persoana sau daca nu este aceasi persoana, sau poate determina daca fata este in baza de date existenta.

3.5. Cautare in baza de date


Acest pas este principalul scop al prelucrarii. Aceasta depinde de model, dar de obicei este o verificare secventiala a fetelor pentru fiecare persoana disponibila din baza de date, urmata de alegerea identitatii celei mai similare cu imaginea interesata. Daca setul ales are o asemanare mai mare dacat minimul pragului atunci imaginea corespunde imaginii alese din aza de date. Daca similaritatea ii sub prag , rezulta ca imaginea curenta nu corespunde nici unei identitati cunoscute din baza de date.

4. Achizitia de imagine
4.1. Dispozitiv de captura
Achizitia de imagine este primul pas al procedurii prelucrarii imaginii. Fotografia de intrare trebuie sa fie de format digital, care poate fi obtinuta din mai multe surse. Cel mai simplu si ieftin mod de a obtine o imagine digitala este de a scana poza unui aparat de fotografiat normal cu hartia de scaner ieftina si de calitate din zilele noastre. Aceasta metoda este simpla, ieftina si rezulta o imagine digitala de calitate buna, dar principalul dezavantaj este timpul prelucrarii pozelor extrem de mult pana ajunge la imagine digitala. Dezavantajul timpului lung al capturarii poate fi inlaturat folosind echipament capabil de a obtine fotografii in format electronic. Dispozitivul cel mai des folosit de aceasta categorie este camera web. Aceasta poate capta in format digital ori fotografii sau filme (succesiuni de fotografii). Rezolutia camerelor web este de obicei mai rea decat a fotografiilor scanate. Calitatea imaginii (semnal/marja de eroare, acuratetea culoriilor) este in general rea, deoarece senzorii CMOS ieftini care sunt folositi inautrul acestor aparate de fotografiat desi exista niste aparate de fotografiat CCD capabile pentru a captura imagini de calitate buna, dar totusi rezolutia lor este mica. Avansarile tehnicii in echipamente digitale permit folosirea eficienta a dispozitivelor video. Aparatele analogice de fotografiat mai vechi, cu un card care obtine o imagine video de calitate buna permite o viteza de capturare mai mare (de obicei standard PAL 25Hz sau NTSC 29.999Hz TV semnal cadre/secunda ) si o calitate buna a fotografiei. Noile camere complet digitale permit o viteza superioara si performanta de calitate. Senzorii CMOS- cu calitate medie- sau CCD cu calitate mai buna- captureaza imaginile reale direct in format digital. Dispozitivele pot stoca imaginea in format digital,

sau o pot transfera prin o largime de banda inalta la alt echipament digital (ca un computer personal). Deoarece noi credem ca o calitate buna a imaginii imbunatateste rezultatul in aceasta lucrare folosind pentru captura camera digitala cu rezolutia standard 720x576 PAL. Aparatele de fotografiat digitale sunt o tehnologie noua si au o dezvoltare rapida a dispozitivelor de capturare. Acestea difera in rezolutia dispozitivelor pentru generarea semnalelor senzorii lor sunt CCD, camera cu senzori CMOS sunt considerate echivalente cu cele din categoria camerelor web. Aparatele de fotografiat bune sunt considerate cele care au peste 3 mega-pixeli. Acestea pot fi folosite pentru capturarea fotografiilor, in sistem digital, daca au o interfata corespunzatoare. Acest lucru este satisfacut de 99% dintre aparatele de fotografiat: au cel putin unul in serie, fire-wire, analogic (compozita), sau cea mai frecventa interfata USB.

4.2. Conditii esentiale ambientale


Conditia ambientala a achizitii de imagine au multe influente asupra algoritmilor folositi in pasii urmatori. Daca nu asigura conditiile satisfacator, atunci imaginea capturata poate fi inutilizabila (ultima poza de la Figura 2 este prea intunecoasa). Algoritmii aplicati au unele nevoi, mai mult, pot functiona numai in conditii limitate, care trebuie sa fie bine definite. Modul nostru de anul trecut implica o imagine cu fundal uniform. Aceasta conditie esentiala a facut posibila folosirea unor algoritmi simpli pentru a gasi o fata intr-o poza. Alta conditie este lumina. Presupunem ca lumina cade in spatele si deasupra fetei.

Figura 2. Schimbarea luminii. In mediu ambiental intunecos, aparatul de fotografiat nu poate executa o poza de calitate buna. Daca imaginea capturata nu este marita, apoi nu poate fi folosita

In aceasta lucrare am stabilt sa cerem conditii diferite, mai putine constrangeri, mai simplu de realizat si ma bine definite. Conditiile sunt urmatoarele: - Fata este descoperita - Fata acopera mai mult de 40% din poza 8

Aparatul de fotografiat este Subiectul identificat are tenul deschis la culoare (alb, galben sau masliniu) Existenta sau absenta parului nu conteaza Fata persoanei este fara barba Mustata este posibila Va fi luata in considerare cea mai mare fata Capul este drept in pozitia verticala normala, cu ochii fixati la aparatul de fotografiat Aparatul de fotografiat este la nivelul ochiilor Sursa luminii este in spatele si deasupra capului, in linie cu capul si aparatul

Consecintele conditiei se intrebuinteaza in diferiti pasi ai prelucrarii si sunt luati in considerare ca asigurare pentru ambianta. Daca ambianta este insuficienta pentru aceste conditii, atunci rezultatul va fi necunoscut.

5. Prelucrarea imaginii
Pasul prelucrarii include operatiuni simple, care aplica operatii aritmetice simple la fiecare pixel al imaginii, rezultand o imagine cu caracteristici sporite. Aceste operatii variaza de la lumina simpla si culori intense la mucdie de detectare complexa si algoritmi de segmentare. In cele ce vor urma vor fi prezente filtre frecvent folosite.

5.1. Filtre de netezire


Aceste filtre reduc semnalul de eroare al imaginii. Daca dispozitivul de capturare are calitate slaba sau conditile ambiante nu sunt favorabile, apoi imaginea capturata trebuie sa fie sporita inainte ca alt process sa poata fi aplicat.

5.1.1.Filtru mediu
Acest filtru netezeste valorile pixelilor, efectuand non-important sau de importanta medie a valorilor pixelilor vecini. Miezurile pot fi de mai multe tipuri, unele dintre
1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 11 2 1 1 Ele sunt : 1 1 1 0 1 1 11 2 1 1 1 1 1 1 16 25 1 1 1 1 1 .951 1 1 1 10 1 , 1 1 1 1 , 1 2 4 2 , 1

3 6 7 8

4 6 4 2

5 9 2 3

8 5 3 2

9 6 4 2

x x x x x

xxx 4.8 5.2 2.0 xxx

5.8 5.1 1.0

7.8 5.6 4.0

x x x x x

Figura 3. Exemplu de matrice

Figura 4. Rezulta cu a-2-a kernel

Filtrul mediu este folositor cand eroarea este distribuita uniform in imagine. Daca ei sunt distribuiti la intamplare, atunci vor fi prezenti deasemenea in rezultat. Alta lipsa al filtrului este ca netezeste nu numai erorile, dar si detaliile folositoare, deasemenea. O muchie ascutita dupa ce filtrul este aplicat va face imaginea rezultata cenusie.

Figura 5. Filtru mediu. Imaginea cu erori este in stanga. Rezultatul de 3x3 a filtrului mediu non-important este in dreapta

5.1.2.Filtru median
Acest filtru este foarte util cand sunt erori prezente. Aceasta eroare modifica cu distribuirea intamplatoare unii pixeli ai imaginii. Acesti pixeli particulari au o intensitate de valoare mai mult sau mai putin decat ceilalti din imprejurimile lor. Filtrul median aplica la fiecare pixel: (2N + 1)*(2N + 1) o matrice de masca larga. Intensitatea valorii pexelilor din matrice sunt sortate in crestere (2N+ 1)*(2N+ 1) in functie de ordinea sortarii. Rezultatul filtrului este luat de la 2 valori. Aceasta triere este foarte utila pentru a elimina pixelii cu valori care sa aiba o diferenta mare intre ei si valorile vecinilor. De exemplu in cazul unei matrice de 3 x 3 (N=3) daca pixeli vecini ai valorii 9 sunt aceiasi ca in Figura 6. Rezultatul sortarii este 2, 2, 3, 3, 4, 3, 6, 8, 9 si acesta este rezultatul valorii pixelului current care va schimba din 9 in 4. Dupa cum este prezentat in Figura 7 unii pixeli pot sa fie schimbati, depinzand de pixelul vecin.

10

Figura 6

Figura 7

Pentru o imagine reala, originalul si imaginile rezultate arata ca in Figura 8.

Figura 8. Filtru Median. Imagine cu erori de tip sare si piper in stanga. Rezultatul imaginii filtrate in dreapta. Se poate vedea foarte bine ca filtrul fereste muchiile obiectelor.

5.1.3.Segmentarea Reddi
Algoritmul original Reddi a aparut in [REDD84]. Autorii prezinta cum ei pot generalizeze algoritmul de segmentare Otsu [OTSU79] pentru a segmenta o imagine cu un obiect real in trei regiuni gri: regiunile obiectului stralucitor, regiunea umbrei de mijloc si regiunea intunecoasa pentru fundal.Algoritmul interativ rezolva (1),rezultand doua praguri de sensibilitate pentru lumina, mijloc si regiunile stralucitoare [OTSU79]

Figura 9. Filtrarea Reddi. Imaginea originala se afla in stanga, urmand imaginile intunecate, umbrite si de mijloc.

11

5.1.4.Generalizarea segmentatiei Reddi


In [MICE02] noi am generat algoritmul de segmentare Reddi. Algoritmul generalizat determina precum multe preguri de sensibilitate sunt necesare folosind (2)

Pragurile de sensibilitate ale segmentului ki in imaginea originala a zonei n+2, care poate fi sursa de informatie de calitate extrasa din imagine. Aceasi imagine pentru Figura 9, segmentata in 5 regiuni este prezentata in Figura 10.

Figura 10. Generalizarea segmentarii Reddi. Regiunile intunecoase pana la cele luminoase sunt prezentate de la stanga la dreapta

5.2. Detectarea de muchie


Exista multi algoritmi utili pentru detectarea muchiei. Unii dintre ei au fost inventati de 10-20 de ani, altii sunt mai noi si difera de la cei mai vechi cu imbunatatiri mai putine sau mai multe.

5.2.1.Detectarea de muchie Prewitt


Detectarea de muchie Prewitt este unul dintre cei mai simpli, vechi si rapizi algoritmi. Principiul lui este bazat pe derivarea imaginii bidimensionale. Derivarea este realizata [1 0] folosind rasucirea cu Kernel. Derivarea foloseste numai 0 1/ valorile a doi pixeli vecini. Muchia este detectata daca valoarea derivatei este mai mare decat o valoare specificata de obicei determinate din intregul set de valori derivate

12

1 1 2 8 7

1 1 2 8 8

1 1 2 7 7

1 1 2 7 7 0 -1 -6 0 x

1 3 2 7 7 0 -1 -5 1 x 0 -1 -5 0 x
Figura 12.

-2 -1 -5 0 x

X x X X x

Figura 11.

5.2.2.Detectarea de muchie Sobel


Detecatarea de muchie Sobel foloseste Kernel / 000 / determinand Y directia D

Derivate si este

pentru directia lui X si derivate D. Valoarea finala a derivatei sau cu o similara, dar cu o forma calculate si salvata:

Pentru matricea de la Figura 11, rezultatul Filtrului Sobel este prezentat in figura 13. Poate fi vazut derivatul maxim care corespunde muchiei.

Figura 13. Rezultatele filtrului Sobel. Derivatele Y si X si suma celor doua derivate sunt prezentate de la stanga la dreapta

13

Figura 14. Filtrul Sobel: imaginea originala, derivate orizontala, derivate verticala, suma a doua directii derivate, suma pragului de sensibilitate(valoarea maxima 7*), imagine dupa ce sa aplicat reducerea muchiei

5.2.3.Detectarea de muchie SUSAN


De la algoritmul detectarii de muchie de baza la alti algoritmi mai mult sau mai putin similari au fost derivarati. Forma unica [FLEC94] prezinta un algoritm de valoare pentru textura mai multa a imaginii. Fata are textura mai putina a imaginii, asa ca accesul tine cont ca aceasta este mai valoroasa. Cea care face acest lucru este detectarea de muchie SUSAN. Principiul SUSAN a fost prezentat in [SMIT95a]. O masca circulara (avand un pixel de centru cunoscut ca nucleu) este prezentat ca cinci pozitii de imagini. Daca luminozitatea fiecarui pixel dinauntrul mastii este comparat cu luminozitatea mastii nucleului dupa aceea o suprafata a mastii poate fi precizata care are aceasi (sau similara) luminozitate ca a nucleului. Aceasta suprafata a mastii este cunoscuta ca USAN, Univalue Segment Assimilating Nucleus. Acest concept ca fiecare punct din imagine avand asociat cu el o suprafata cu luminozitate similara este baza principiului SUSAN. Suprafata sau USAN contine multe informatii despre structura imaginii. Aceasta este efectiv regiunea descoperita la scara mica. Algoritmul de detectare a muchiei foloseste o fereastra predeterminata centrata pe fiecare pixel din imagine. Muchia detectorului de masca SUSAN poate fi rotunda sau rectangulara. Cele mai bune rezultate pot fi obtinute cu mai multe masti complexe circulare. Razele de cerc propuse sunt [SMIT95] de 3.4 pixeli (dand o masca de 37 pixeli). Masca este situata la fiecare punct din imagine si pentru fiecare dintre ele luminozitatea fiecarui pixel dinauntrul mastii este comparata cu acesta in centrul punctului. La inceput o ecuatie simpla determina comparatia:

(3) De la c(y,y0) rezulta importanta valoare n pentru fiecare pixel:

Apoi, n este comparat cu un prag de sensibilitate fix g, care este stability la 3nmax/4, unde nmax este valoarea maxima pe care o poate lua n. Raspunsul de muchie initial este atunci crea folosind regula:

14

Figura 15. Detectarea de muchie SUSAN. N, matricile R si imaginea pragului de sensibilitate R

Acest pas urmat de reducerea algoritmilor ca [SMITH95b], rezultand un contur bun de imagine.

5.3.Egalarile de histograma
Egalarile de histograma au incercat adesea sa mareasca o imagine [SHAP01]. Cele doua conditii pe operator sunt: imaginea rezultata ar trebui sa foloseasca toate nivelele disponibilesi rezultatul are aproximativ acelasi numar de pixeli la fiecare nivel gri. Harta de nivele gri nu schimba vederea de ansamblu a imaginii, doar face niste regiuni mai vizibile. Pragurile de sensibilitate tk al egalarii sunt definite folosind histograma H(i) a imaginii de ecuatia (6) si (7).

15

Figura 16. Egalarea de histograma. Imaginea originala si histograma de sus, imaginea netezita ultima de jos

5.4.Segmentarea culorii de baza


Segmentarea culorii de baza foloseste informatia imagini color. Aceasta poate folosi una sau mai multe spatii de culori disponibile (RGB, HSV, HIS, CMY, YIQ si YUV). Frecventele culorilor au diferite histograme construite [SHAP01] sau domeniile color stiute anterior sunt aplicate sa obtina regiune dorita. Segmentarea culorii este folosita pentru detectarea fetelor. Acest subiect este tratat detaliat in sectiunea 6.1.

5.5. Transformarea morfologica


Operatiile de morfologie binara transforma o imagine de intrare binara B folosind o structura a unui element S, care este alta, dar o mult mai mica imagine binara. Structura elementului reprezinta o forma; poate sa aiba orice marime sis a aiba structura arbitrara [SHAP01]. Unele elemente de structura sunt prezentate in figura 17.

Figura 17. Elemente de structura

Eroziunea imaginii binare B structurand elementul S este definit ca Dilatarea imaginii binare B structurand elementul S este definit ca Deschiderea unei imagini binare B structurand elementul S este definit ca Inchiderea unei imagini binare B structurand elementul S este definit ca Eroziunea, dilatarea, deschiderea si inchiderea exemplului aplicat matricei binare de la Figura 18 poate fi vazuta la Figura 19.

16

Figura 18. Exemplu de matrice

Eroziunea

Dilatarea

Deschiderea

Inchiderea
Figura 19. Transformari morfologice

17

6. Segmentarea
In acest capitol este prezentat algoritmul segmentarii. Problema segmentarii este definite ca: este data arbitraroimagine color, fata gasita in imagine trebuie sa fie gasita si separate de fundal. Pentru oameni aceasta este usor de facut diferenta dintre culorile specifice ale fetei si ale fundalului, folosind vederea tridimensionala si cunoscand conturul specific si tiparul fetei. In viziunea computerului doar ocazional este disponibila picture 3D, asa ca aceasta metoda poate fi folosita rar. Tiparele fetei si conturul fetei specific sunt caracteristici complexe, pot fi reprezentate doar de modele complexe, care sunt mai putin eficiente pentru suprafete mari acestea vor fi aplicate regiunilor fetei detectate si vor fi folosite in algoritmul detectarii fetei. Multe lucrari se ocupa cu segmentarea imaginii. Unele dintre ele ([AMIT98]) trateaza cazuri mai generale, altele incearca sa extraga regiuni si obiecte specifice. Conceptii diferite sunt prezentate in literature. In [WUHU00] autorii folosesc 6-D RGB si suprafata de culoare HSV utilizeaza tehnici de analiza discriminatorii multiple si metode probabilistice. Textura bazata pe segmentare [GUOL00] poate fi o alternativa potrivita. Fata are texturi particulare in zone specifice. Pielea, parul, ochii, gura, nasul pot fi identificate bazate pe textural lor si locatia corelata a acestor caracteristici poate fi sursa localizarii fetei in imagini arbitrare. In urmatoarele vor fi prezentate urmatoarele moduri: in primulpas folosirea informatiei culorii imaginii regiunile satisfacatoare ale fetei sunt selectate si in pasul doi pentru regiunea cea mai probabila este facuca o aproximatie pentru a mari precizia gasirii fetei. Pentru pasul al doilea sunt date doua alternative.

6.1. Primul pas. Culoarea bazata pe regiuni selectate


In primul pas folosin informatia culorii a fiecarui pixel, posibilele regiuni ale fetei sunt selectate. Multe cercetari au fost facute pe aceasta problema. In [GARC99a], [GARC99b] si [FLEC96] autorii au propus diferite sortimente ale culorii componentelor(in spatiile de culoare diferite) care caracterizeaza fata. Alta histograma bazata pe metode este prezentata in [SHAP01]. Dup ace toate aceste au fost incercate, a fost aleasa una similara cu fata, restrictiile culorilor prezentate in [FLEC96]. Principala problema a culorii bazata pe segmentare este variatia valorii culorilor depinzand de luminozitatea imaginii. Dupa ce mai multe moduri au fost incercate, una mixta a fost aleasa. In acest mod am folosit logaritmul RGB suprafata de culoare: aceasta suprafata de culoare comparat cu RGB, HSI sau suprafata HSV spatiile sunt mult mai stabile la variatiile luminii. Mai intai, pentru a inlatura influenta luminozitatii imaginii, intensitatea minima a fost gasita in fiecare zona colorata (R, G, B) si aceasta valoare este scazuta de la fiecare valoare a culorii. Pe luminozitate vectorul normalizat operatia log10 este aplicata. Dispozitivul de capturare are erori, pentru a compensa acestea, o valoare aleatoare intre 0 si 1 este adaugata inainte de operatia logarithm, introducand un comportament automat nedeterminat al algoritmului care egaleaza cu niste culori inconstante ale apratatului de fotografiat:

18

Unde LogValue(Value) este: Coeficientul 105 este folosit doar pentru a obtine rezultatul in domeniul Un pixel al imaginii este declarat de a fi pixelul posibil al fetei daca multumeste urmatoarele conditii:

Unde am caracterizat intensitatea imaginii si este egala cu LG; Rg este diferenta lui LR si LG, si By este diferenta intre LB si media dintre LG si LR:

Conditile de mai sus au fost determinate bazandu-se pe [FLEC96] si pe studiile experimentate ale seturilor de imagini disponibile. Inca o conditie a fost folosita in versiunea Matlab cu algoritmul bazat pe [FLEC96]: pentru a calcula a amploarea texturii, intensitatea imaginii este netezita cu un filtru median si rezultatul este scazut din imaginea originala, apoi valoarea completa al acestor diferente sunt parcurse de un al doilea filtru median: Texturile corespunzatoare fetei sunt zone ale imaginii putin texturate, astfel conditia corespunzatoare pentru textura este: (d)Texture < 1 Intersectia lui (a) (d) conditiile determina posibili pixeli ai fetei. Conditile de mai sus sunt facute pentru a fi conditii slabe, pentru a garanta ca majoritatea fetei este selectata. Codul sursei din Matlab al intregului algoritm este prezentat in Appendix A. Rezultate al algoritmului extragerii culorii sunt prezentate in Figura 20, Figura 21, Figura 22 si Figura 23.

19

Figura 20. Extragerea culorii. Imaginea originala, Masca I, Masca Rg, Masca By, Masca de textura, imaginea rezultata dupa aplicarea mastii imaginii originale de la stanga la dreapta, de sus in jos

Figura 21. Extragerea culorii. . Imaginea originala, Masca I, Masca Rg, Masca By, Masca de textura, imaginea rezultata dupa aplicarea mastii imaginii originale de la stanga la dreapta, de sus in jos

20

Figura 22. Extragerea culorii. . Imaginea originala, Masca I, Masca Rg, Masca By, Masca de textura, imaginea rezultata dupa aplicarea mastii imaginii originale de la stanga la dreapta, de sus in jos

Figura 23. Extragerea culorii. . Imaginea originala, Masca I, Masca Rg, Masca By, Masca de textura, imaginea rezultata dupa aplicarea mastii imaginii originale de la stanga la dreapta, de sus in jos

In aceasta parte a algoritmului putem duce la niste concluzii 1. Culorile diferite logaritmice sunt standarde bune in extragerea culorii asemanatoare fetei.

21

2. Texturarea imaginilor poate fi folositoare in observarea regiunilor netezite ale fetei, dar folosirea lor nu este intotdeauna obligatorie si efortul lor calculat, data de filtrarea mediana poate fi superioara ca performanta rezultatului. 3. Conditile Rg si By sunt folositoare pentru selectarea punctelor fetei, dar au unele deficiente: doar culorile deschise ale fetei sunt selectata (fara ochi, sprancene sau par) si detecteaza alte regiuni care au culori similare cu ale fetei, deasemenea. 4. Conditile (a)(d) detecteaza nu numai zona fetei, dar si alte regiuni colorate ca ale fetei. Concluzia finala este ca aceasta culoare bazat pe detectare este buna, dar nu destul pentru gasirea fetei in imagine.

6.2 Prelucrarea anticipata a formei fetei


Dup ce regiuni posibile ale formei fetei sunt aflate urmeaz doi pai: selecteaz zona cea mai mare si alege din zona selectata pe accea care formeaza o imagine completa.

6.2.1 Selecteaza mai complet umplutura regiuniei,


Urmand pasul anterior am obtinut o imagine in care regiunea cea mai mare este zona fetei design aceasta prin cele trei conditii anticipate (expuse in g3.1) Mai este necesara o observatie dupa cum se poate vedea in figura 20, figura 21, figura 22 si figura 23 parte din fata poate contine zone negre (unde gura, ochii spacenele si fruntea au o culoare diferita de restul fetei). Aceste zone neselectate trebuie sa constitue parte a regiunii invecinate. Cel mai usor de realizat aceasta este aplicand algoritmul de umplere in cascada, astfel umplandu-se zonele care nu se invecineaza. Se poate aplica apoi metoda de realizare pas-cu-pas a unei regiuni. Aceasta metoda de exprimare este buna dar nu optima deoarece necesita doua faze. Daca ceai doi algoritmi ar lucra in tr-o singura faza atunci cel de performanta ar fi O(n ?m) unde n si m sunt dimensiuni ale imaginii. De accea s-a utilizat un nou algoritm combinat. Acest algoritm a fost gandit pentru a face toate calculele deoadatautilizand structuri de date suplimentare.
848 44 848

Figure 24. Vecinatatea Pixelului

Inainte ca algoritmi sa fie descrisi in amanunt trebuie sa explicam diferenta intre 4 si 8, cei 4 vecini de legaruta al unui pixel sunt cei 4 pixeli din dreapta, stanga,deasupra si dedesuptul pixelului curent ; cei 8 vecini de legatura ai unui pixel sunt cei 8 pixeli inconjoara. Algoritmul urmator va lua in calcul doi pixeli parte a unei singure zone daca au o cale de 8 pixeli de legatura intre ei. Daca avem campul din fata o legatura de 8 apoi parte complementara a imaginii trebuie sa fie o legatura de 4 pe verso. Aceasta este o observatie importanta care este folosita in tratarea pixelilor din prim plan si de pe fundal(din umbra) Partea principala a algoritmului este o scanare secventiala de sus in jos si de la stanga la dreapta aimaginii. Pentru fiecare pixel se determina culoarea. Culoarea pixelului inseamna grupul de numere caruia ii apartine. Toti pixelii care formeaza o regiune au acceasi culoare, in acest algoritm fiecare pixel primeste un cod format dintr-o valoare 22

numerica. Sunt trei variante (figura 25) Daca pixelul este de mascare culoarea sa este codata numar intreg pozitiv. In exemple ei sunt marcati cu numere pozitive in celule gri. Daca pixelul este de fundal de bordare atunci culoare lui este 0. pixelii de bordare sunt pixeli de fundal care se afla pe marginea imaginii ori au vecini de margine de legarura 4. in exemple ei sunt marcari cu 0-uri in celule de culoare alba. Daca pixelul este de interior atunci culoare primeste codificare cu numere intregi negative. Pixelii de interior au conoscut pana de curand la recentele prelucrari vecini numai pixeli de mascare sau de interiorse va schimba in unul de margine numai daca se cunoaste ca are vecinii de bordurare. In exemple ei sunt marcati cu nume intregi subliniate in celule de culoare alba. In exemple semnul ? este folosit numai daca culoarea pixelului nu este cunoscuta. In momentul cand pixelul este iontarit (bolded) atunci cand culoarea pixelului din centru este in procesul de cautare.

Operatiile facute depind de fiecare faza de felul pixelului , daca-i de mascare ori fundal : a.) Pentru pixeli de mascare : Se cauta culoarea pixeluilui superior(de sus) si a celui de susdreapta(N_NE)si a celui din stanga si stanga sus. Aceaste grupari sunt facute deoarece daca scanarea sus-jos stanga-dreapta anunta ca culorile combinate sunt de mascare atunci ele vor avea acceasi culoare. Daca NE_N si W_NW sunt puncte de masurare si ele sunt egale(de ex fig.26a) vecinul pixelului este o zona numai astfel culoarea pixelului va fi data de culoarea vecinatatii. Daca NE_N si W_NW sunt pixeli de fundal(fig 26 b) atunci culoarea pixelului este una noua. Acest pixel va fi primul pixel al unei noi regiuni. Daca N-NE sau W-WE sunt pixeli de fundal (fig 26 c) atunci culoarea pixelului nu este de fundal. Dac N-NE si WWE sunt puncte de mascare si nu sunt egale (fig 26 d)atunci inseamna ca cele doua regiuni considerate doua regiuni diferite sunt de fapt o singura regiune unita de un pixel. In acest caz cele doua zone trebuie unite iar culoarea pixelului va fi culoarea vecinatatii. Dupa unificare culoarea dominanta se va transforma in culoarea mai slaba. Numerele pixelului celor doua zone se vor insuma. Daca W-NW este mai mare decat N-NE atunci culoarea culoarea pixelilor ramasi pe pozitie se schimba pentru a ne asigura ca pe linia

23

urmatoare pixelii vor folosi culoarea corecta a pixelului superior. Nu este ceva strict dar da posibilitatea realizarii algoritmului in cele din urma ne vom da seamna sin ce culoare se va schimba culoarea dominanta.

b.) Pentru pixelii de fundal Intru cat umplutura de legatura 8 este realizata, vom verifica numai vecinii supriori si cei din stanga pixelului de fundal. In functie de valorile lor sunt 4 variante : Daca unul din vecini este un pixel de bordurare (fig27a) atunci si acest pixel este de bordurare. In acest caz daca este un pixel de bordurare numai de interior este mascata acela este de bordura. Acesta se va pastra pentru toti pixelii de pe un rand, dand astfel posibilitatea stabilirii valorilor de bordurare. Daca numai unul din vecini este punct de interior(fig27b) sau cei doi vecini sunt de interior si au aceeasi culoare atunci pixelul curent este punctul de interior al aceleaiasi regiuni. Daca vecinii sunt de interior dar au culori diferite(fig 27d) atunci cele doua culori sunt unite in acelasi mod cum s-a facut cu pixelii de mascare. Daca cei doi vecini sunt puncte de mascare(fig27e) atunci o noua zona interna va debuta.

Pentru ultimele trei variante mai este necesara o operatiune : pentru fiecare pixel de inerior se stocheaza intr-o structura de set vecini de mascare de culoarea celor de interior. Dupa acest pas de marcare pixelii sunt inconjurati de regiuni de mascare inconjuratoare. Acest pas poate produce o unire a zonelor de mascare respectiv o regiune de mascare inconjoara o regiune interna care inconjoara o alta zona de mascare. Eficienta algoritmului este ( n m ) 1 unde 1 reprezinta complexitatea setului add, unify(adaugare unifica) aceste informatii pot fi implementate cu o structura de datede stabilire folosind pointerul de stabilire parentala [CRET92]. Acest algoritm are o prformanta de inserare de ( 1) .cercetarea din structura de stabilire are nevoie de o performanta intre ( 1) si n 2 dar aceasta operatie fiind aplicata numai in stadiul fina, unde este determinat rezultatul mascariisi foloseste algoritmul de restrangere a caii ea este considerata aproximativ ( 1) astfel ( n m ) aliniamntul crescand cu

24

marimea imaginii. Trebue sa ne reducem la : nevoia unui rand suplimentar de date de stabilire necesaul total este sub 2 n m . Functionalitatea algoritmului este exemplificata in fig 29. Figura 28 prezinta rezultatul selectiei aplicate la rezultatul selectiei de culoare. Versiunea matematica de laborator a algoritmului este prezentata in Anexa A.

25

26

6.2.2 Minimalizarea regiuni de interes


Miscarile care au aparut din implementarea pasului anterior nu sunt intotdeauna corecte. Se intampal de multe ori sa se selecteze mai mult decat o fata sau sa nu se selecteze intreaga fata, ci numai o parte. Aceasta mascare poate sa nu fie rezultatul final dar da informatii utile pentru urmatorii pasi. Deci folosind aceasta mascare se obtine imaginea definita. Sus/jos sau stanga/dreapta deci selectam marginea sunt similare. Mai intai se va proceda la selectarea stanga/dreapta. Pentru aceasta se determina pixelul cel mai de sus si respectiv cel mai de jos rezultand mobilul de jos si de sus al mascarii(a,b) si diferenta (fig30c). Numarul de pixeli in fiecare coloana este o informatie utila, deasemenea. Marginea (distanta) din stanga respectiv din dreapta se selecteaza in acelasi mod. Pornind de la coloana cu numar mai mare de pixeli fiecare coloana din stanga dreapta va fiverificata pentru a ne convinge ca: diferenta sus-jos este mai mare decat pragul T1 unde T1 este 40% din diferenta sus-jos ; numarul total de pixeli din coloana din stanga sa fie mai mic decat acelasi din dreapta sau unul dintre ei sa fie mai mare decat pragul T2. T2 este 40% din maximumul numarului de pixeli al coloanei. 27

la acest punct unde conditiile nu se potrivesc exista distante laterale primare aratate in fig30 cu linii de interior. Aceste marginii cand mascarea nu este indeajuns de buna elimina parti ale fetei iata de ce aceste distante laterale sunt marite cu ajutorul unei zone tampon. Marimile sunt marcate cu linii exterioare. Distantele de deaspura si de dedesupt sunt aflate intr-un mod asemanator.profilele da stanga dreapta diferenata stanga dreapta si numarul de pixeli pe verticala sunt aratate in fig 31.

28

6.3 Sporirea bazata pe intensitati ale conturului fetei.


S-a incercat sporirea marirea a doua imaginii de contur.prima este mai mult bazata pe diferenta de culoare iar a adoua pe definirea muchiei. Amandoua au dat rezultate bune dar nici una 100%. Prima incercare a prezentat trei faze, care au scris in relief fata : Fata este aproximata folosind nuante de culoare saturata si paramentri de valoare. O a doua incercare selecteaza zona fetei in final. Muchiile din stanga si din dreapta sunt intense si corectate pentru a inlatura poziile care nu sunt tip[ice fetei.

29

6.3.1 Aproximarea fetei.


Aceasta faza foloseste imaginea prin metoda culoare-spatiu HSV se verifica mai intai compunerea valorii: valoarea medie M se determina se construiesc in pasi de 0,02 imaginii de mascare pentru [0.1 ; 0.325] care au componenta se alege valoarea minima a coeficientului. Observatie : ecuatia de mai sus are doua componente de valoare in zona [M ; M + ] regiunea maxim umpluta(vezi 6.2.1) fiind selectata si urmatorii parametri verificati : daca suprafata regiuni este mai mica de 70% din intreaga fata. Altfel regiunea selectata va fi mai mare decat fata. Daca raportul inaltime/latime este in relatia [1.1; 1.6]] care este de fapt proportia dimensiunilor standard ale fetei. Pentru zonele care satisfac conditiile de mai sus se calculeaza un coeficient de probabilitate bazat pe P adica suprafata zonei O si unghiul dintre aza X si axa majora principala a elipsei care are aceleasi momente secndare ca si regiunea :

se alege valoarea minima a coefinientului Coef Observatie :ecuatia de mai sus are doua componente de valoare in zona [M ; M + ] regiunea maxim umpluta(vezi 6.2.1)ambele generand valori in gama 0 ;1 cu 0 indicand o alegere mai buna. Prima genereaza O daca orientarea este 90% insemnand ca regiunea corespunde unei fete orientate vertical. Al doilea component genereaza O daca zona are forma de cerc sau de elipsa. Acest component va incerca sa selecteze zona sub forma de elipsa fara alte concavitati.

Se poate observa ca se analizeaza mai mult decat fata. Astfel este necesar sa facem referire la o serie de alti pasi si mulaje : A ) mulajul rezultand din ecuatia S > 0.15 S < 0.70 2 (vezi fig 34a) si H < 0.30 H > 0.8 3 (vezi Fig 34b) produce doua mulaje, care rezultat reduce selectia V . 30

B) suprafata maxim umplutura se determina pentru mulajul care rezulta (fig 34c). C) de tedermina mediul M si derivata standard a saturatiei pixelilor selectati. D) Mulajul final (fig34e) rezulta din aplicarea formulei S > S M M S < S M + M mask (Fig 34d) la forma mulajului (b) si umpland complet spatiile din interior

6.3.2 Producerea celei de a doua fete.


In aceasta faza se elimina regiunile neportivite, daca ele fusesera introduce in faza anterioara. Partile laterale stanga si dreapta sunt selectate ca in primul caz. Selectarea degajarilor superioara si inferioara se simplifica; marginile sunt constituite din ultimele randuri cu pixeli de mascare. In unele cazuri noul mulaj contine concavitati cu suisuri si coborajuri. Figura 35 arata un caz unde un ochi lipseste de pe fata.

Algoritmul de netezire este urmatorul : se determina media histogramelor, care este de fapt centrul fetei. Adanciturile sunt in mod liniar interpuse : se determina minimumul histogramei, daca ascendenta monotona de pe pereti este intrerupta, atunci alinierea dintre ultimul punct descrescator si urmatorul punct mai mic, este interpolata liniar folosind cele doua puncte de margine (fig 37a). 31

Profilul este netezit cu un filtru lat de 10 pixeli (fig 37b). Pentru a obtine un rezultat mai bun pe lateralul fetei valoarea profilului se modifica cu maximum 3 pixeli pentru a corespunde pixelului cu valoarea sobel maxima (fig37c) filtrul sobel poate da rezultat cu valori nestabile langa punctul dat : profilul care rezulta are multe gauri care pot fi eliminate cu un al doilea filtru mediu (fig37d). Aceeasi pasi sunt parcursi cu profilul din dreapta, urmand sa unim cele doua profile dand forma finala a mulajului (fig 36).

32

6.3.3 Concluzii ale acestei abordari.


Rezultatele acestei abordari au fost bune(fig38). Dintr-un set de 252 de imagini 9 fete au fost nedetectate in fazele initiale din cauza acuratetei slaba a culorii si doua fete au avut parti cu zone incorect scoase in relief.

33

6.4 Largirea conturului fetei bazata pe profilul lateral.


Prima tratare a fost buna dar ea a folosit numai culoarea fetei, informatii despre intensitati si forma fetei. Informatii suplimentare care ar mai putea fi folosite sunt cele privitoare la profilul lateral. Sunt algoritmi diversi care ar putea da profilul; ei difera in precizie prelucrare pe calculator si o caracteristica importanta: ce caracteristici locale ar putea fi luate in consideratie Dupa ce au fost incercati mai multi algoritmi abordarea SUSAN (prezentata in lucrarea SMITH95a si intr-o mica prezentare in 5.2.3) a fost aleasa pentru detectarea profilului. Acest algoritm a fost ales deoarece el foloseste pentru detectarea profilului informatii despre similaritate intr-o zona local comparata cu alte metode care se bazeaza pe variatia nivelului pixelilor imaginii. In cele ce urmeaza regiunile fetei cu culori similare delimitate de profile laterale sunt dezvaluite. O selectare corecta a acestor regiuni va forma imaginea formei fetei. Pasul cheie este selectarea regiunilor: ea poate forma correct fata daca se lucreaza bine sau daca nu deoarece poate da locuri goale pe imagine poate mai multe decat fata selectata. Dupa ce fata a foat selectata se va face o mica ajustare care netezeste conturul fetei. 6.4.1 Aflarea profilului lateral folosind metoda SUSAN. Dupa ce fata a fost detasata de imagine facand ce se scrie in 6.2.2 se aplica algoritmul SUSAN. Mai intai imaginea n (fig 39) este determinata cu ecuatiile (3 si 4) folosind un mulaj USAN lat de 11x11. valorile USAN astfel determinate vor caracteriza profilele laterale a fetei. Apoi pragul indicat de 3n max / 4 se aplica rezulatnd (vezi ecuatia 5) imaginea R (fig 40). Primele profile laterale (fig 42) sunt date de combinatia R>0 si un mulaj nuantat (fig41). 34

Mulajul nuantat este necesar deoarece raspunsul profilului poate contine raspunsuri superioare in unele regiuni care mai mult ca sigur nu sunt regiuni ale fetei. Masca nuantata este generata din mulajul de fata produs : se determina valoarea medie a nuantari ; variatia de la medie este determinata folosind (9) conditia pusa in aceasta exprimare este argumentata de rotunjirea mantiei : valoarea 1 este echivalenta lui 0si distanta dintre 0.2 si 0.8 nu este 0.8 0.2 , dar ( 1 0.8) 0.2 . Formulei de mai jos i se va atentie pentru a obtine valorile corecte.

35

Apoi profilelor laterale se va aplica. Se vor determina pixeli vecini tangentiali profilului lateral pentru fiecare pixel al profilului lateral initial calculand mai intai directia profilului ca in formula este unchiul luat ca directie iar y si x se caracterizeaza variabila in vecinatatea de 3x3 apixelului conform modalitati urmatoare.

Unchiul poate fi de 30 sau 60 grade. Vecinii tangentiali sunt determinati dupa cum urmeaza : a.) daca este mai mic de 30 de grade atunci 2 si 8 sunt vecinii ; b.) daca mai mare de 30 de grade atunci 4 si 6 sunt vecinii; c.) daca mai mare de 30 de grade si mai mic de 60 de grade iar |3-7|>|1-9| atunci 1 si 9 sunt vecinii d.) daca mai mare de 30 de grade si mai mic de 60 de grade iar |3-7|=|19| atunci 3 si 7 sunt vecinii.

e.) Intrucat cat functia aratam este momentan crescatoare se poate ca pentru implementarea algoritmului sa fie eliminatacomparand proportia cu Tan(30)=0.5774 si tan(60)=1.773. Subtierea profilului ne va da o imagine in care profilele laterale se vor putea usor diatinge de ochiul omenes, dar este necesara mai multa munca pentru calcularea automata(fig43).

36

Apoi se procedeaza la separarea profilelor laterale se vor folosi pragurile T1=Rmax/2 si T2= Rmax/4 daca un pixel are R mai mare decat T1 el va fi considerat punct de pornire al profilului si se va continua pe profil( in directia tangentei la profil) pana ce valoarea urmaorilor pixeli scade sub praful T2. Toate profilele cu lungimea mai mare de 5 sunt depozitate, celelalte fiind considerate p[rea scurte. Profilele separate sunt prezentate in figura 44. Profilele separate nu sunt continue. Pasul urmator va face sa crestem fiecare profil de la capatul sau pan ace intaneste alt profil. Cresterea va fi pixel cu pixel in directia tangentiala profilului Algoritmul este mult mai complex decat o pot face cateva randuri de exprimare, dar se scoate evidenta ideea princiala. Profilele gasite pot fi vizualizate in fig 45. Profilele gasite delimiteaza suprafata fetei care in pasul urmator va fi selectata sau nu.

37

6.4.2 Selectarea regiuni.


Regiunile gasite in imagine vor fi caracterizate ca regiuni fata sau fundal. Este foarte important dar cel mai important si mai putin formulat subiect . In continuare prezentam abordarea acestui subiect. Ea este aflata pe bara experimentala si a fost dezvoltata pe baza de cunoastre sei observatie a structurilor si proprietatilor fetei. Aceasta faza incepe cu identificarea regiunii. Fiecarei regiuni I se aloca un identificator unic explicandu-i-se un algoritm de culoare liniar. Regiunea care poseda un pixel in stanga sus va fi considerata speciala, adica regiunea fundal. Aceasta zona, rezultata din aflarea profilului unde pixeli de margine 5 nu sunt marcati cu toate ca ei sunt puncte ale profilului inconjoara toate celelalte regiuni. casuta de legatura a regiunilor ; valorile medii ale componentelor R, G si B ale regiunii ; centrul aglomerat al regiunii suprafata regiuni daca suprafata este mai mare sau nu decat pragul suprafetei ales(de 75 pixeli) daca culoarea regiuniieste mai mult culoare pura 85% sau mai mult este data de componentele R G sau B cresterea fiind aratata in fig 47. Cresterea este formata de restrangere care foarfeca regiunile care au vecinii mai mult neselecati. Se vor determina de asemnea fiecare regiune invecinata si numarul de pixeli de granita pentru regiuni. Dca suprafata unei regiouni este prea mica zona va fi unita cu o regiune invecinata a carei culoare nu difera prea mult de accea a regiunii de baza iar suprafata este mai mare decat suprafata zonei de baza si pixelul invecinat comun este

38

valoare maxima intre regiunile invecinate disponibile. Regiunile mic si selectate sunt unite si li se dermina proprietatile iar vecinii sunt combinati. Centrul algorimului zonei care nu-i fundal se considera centrul fetei. Raza cea mai dintai a fetei este data de jumatatea partii exteriora cea mai centala a regiunilor daca raza rezultata este de mai putin de 30 pixeli atunci raza este considerata de 30. Intensitatea minima a regiunilor ce pot fi selectate se obtine calculand 80% din media suprafetei sumei componentelor R, G si B care se va imparti la 3 si se va retine aceasta operatie deoarece daca nu tinem seama, trebuie sa foloim pe fiecare data formula altfel pierdem. Apoi centrul masei este recalculat drept centru zonelor cu intensitati mai mari decat minimumul calculat. Dupa ce determinam acest centru mult mai exact recal ;culam din nou centru regiunilor cu internsitate corecta si centru cel mai aprorpait de raza maxima, dupa care raza este recalculata la valoarea minima, drept minimumul distantei dintre centrul zonei de margine si se va corecta ca in primul caz. Aceata faza este urmata de faza selectiei regiunii. Fiecare zona cu centru mai apropiat de centru determinat de cat de raza este selectat dreot regiunea fetei(fig 46) daca inensitatea este mai mare decat minimumul intensitatii zonei atunci culoarea regiunii este luata in calcul pentru determinarea culorii medii a zonelor selectate. Pe curba de selctie se calculeaza casuta de legatura a fetei.

Se reda in continuare cresterea regiunii initiale. Acest algoritm anexeaza regiunile de selectia curenta pana cand vor fi adaugate mai multe zone. Rezultatul selectiei de regiuni este aratat in figura 48.

39

6.4.3 Netezirea conturului.


Mulajul rezultat candva contine regiuni neinsemnate care in mod nevoit au fost sterse sau adaugate fetei. Astfel, in faza finala conturul fetei poate fi marit. Exagerarea prezinta urmatorii pasi: a.) profilele interioare sunt umplute

b.) conturul mulajului se determina ca distanta dintre punctul de contur pana la centrul masti(mulajului). Distanmta va fi retinuta pe un vector de lungime MAX_PI unde elementul i inmagazineaza distanta de contur din i. Lungimea minima a centrului vector Max_PI pana la unghiul i = 2 este importanta deoarece rezolutiei lui i daca este prea mare mai mare decat conturul inmagazinat in Ri valoarea MAX_PI se deremina astfel ca rezolutiei sa fie capabila sa descrie cel mai extrem raza este cea mai mare considerata raza maxima, adica Rmax=200 si distanta care urmeaza este de un pixel(caz aratat in figura 49) Astfel si MAX_PI se deremina dupa cum urmeaza :

40

De aici rezulta MAX_PI= 1256, rotunjit MAX_PI=1250 Valorile Ri sunt recalulate drept valoarea radiara une mulajul se schimba in fundal sub unchiul i Daca masca are concavitati pot exista valori multiple ale Ri, in acest caz avand de ales valoarea cea mai apropiata mediei Ri calculate anterior

c.)Pentru unele valori Ri poate fi nemodificat daca conturul este foarte varialbil aceste valori sunt interpretate liniar folosind primii vecini cunoscuti stanga dreapta. O chestiune care trebuie luata in calcul arata ca Ri este un tampon circular (deoarece contulul este o curba inchisa) : daca prima valoare a lui Ri este nedefinita atunci vecinul din dreapta trebuie cautat la capatul lui Ri si in acelasi mod daca ultima valoare Ri este nedefinita atunci vecinul ei din dreapta trebuie cautat la inceputul vectorului (fig 51)

41

d.)Acesti pasi sunt urmati de o mediana de 31 de pasi lata si o filtrare medie lata de 101 pasi. Filtrul median netezeste gaurile din contur si filteaza marile adancituri si ridicaturi de pe contur. e.)Conturul este tot atat de bine realizat pe cat este de apropiat profilurilor fetei. Iata de ce pasul urmator inlocuieste Ri cu o valoare gama Ri+-5 pixeli cu valoarea ce maximizeaza prezentarea n din valoarea de filtru Susan la pixelul tintei. f.) in fine acest rezultat este filtrat din nou printr-o filtrare mediana de 31 de pasi lata si una de 100 pasi lata. g.) apoi Ri regenreaza conturul imaginii(fig 52) si de pe conturul masti rezultand imaginea finala(fig 53)

Figura 68,70 si fig 71 in anexa D arata secventa de pasi din profilul susan. Imagionile contin (de sus in jos de la stnga la dreapta zonele de delimitare ale profilelor laterale, culorile lor medii, zona centrala initiala rezultatele cresterii, descresterii, conturului si fata rezultata.

42

7. Extragerea caracteristicilor
inta imaginii segmentate regsete faa n imagine. n faza de extragere a caracteristicilor aceast regiune va fi verificat pentru a se gsi caracteristici. Dac se gsesc mai multe caracteristici cutarea feei va fi mai uoar si mai exact. Principalul scop al acestei etape es extrag ct mai multe caracteristici ale feei. Mai nti sunt prezentate cteva caracteristici care au fost identificate i extrasee n proiectul DALT.2.4/2001 i apoi sunt prezentate alte metode posibile.

7.1. Caracteristici n funcie de distan i raie


Mai nti am ncercat s extragem cele mai importante caracteristici, apoi am ncercat algoritmi de design pentru gsirea poziiei lor. Fiecare algoritm are o zon specific de interes (ROI) care definete aria de cutare pentru rezultatul algoritmului. ROI este determinat n funcie de parametrii deja calculai.

7.1.1 Detectarea sprncenelor


Un filtru Reddi cu trei praguri este aplicat n ROI-ul sprncenelor (fig. 54). Scannd de sus n jos, Aeye ul mediu este format peste 5 linii orizontale. Maximul acestei medii este calculat localiznd poziia liniei verticale a sprncenelor. Aceast poziie se gsete cutnd n sus o variaie de mai puin de 85% din maximul precedent. Ca rezultat, se obine coordonata y_eyebrows.

Fig 54 Exemplu de ROI al sprncenelor, segmnetat cu un filtru Reddi modificat

7.1.2 Detectarea ochilor


Regiunea de interes pentru localizarea ochilor se afl chiar sub sprncene. Poziia vertical a ochiului (y_eye) este urmtorul maxim al Aeye, calculat n pasul anterior.

43

Poziia orizontal a centrului ochilor (x_eye_left i x_eye_rigth) precum i axa de simetrie a feei (x_symmetry) sunt detectate precum n [ASK98]. Aceste dou coordinate preliminare ale ochilor sunt folosite n continuare pentru a detecta colul ochiului. Pentru a minimiza erorile de detecie generate de o iluminare neuniform a feei, am definit regiuni separate de interes pentru segmentarea Reddi (fig 55). Pixeli cei mai ntunecai i cei mai spre dreapta i stnga sunt colii ochilor (x_left_eye_right, x_left_eye_left, y_left_eye_up, y_left_eye_down, x_right_eye_right, x_right_eye_left, y_right_eye_up, y_right_eye_down)

Fig 55 Exemplu de segmente Reddi ale ochilor

7.1.3 Detectarea nasului


Locaia orizontal a nasului este definit de axa de simetrie a feei [AASK98], [BRUN93]. Poziia vertical a nasului (y_nose') se afl selectnd numrul maxim de pixeli ntunecai pentru fiecare linie orizontal n imaginea filtrat Sobel a feei: nasul formeaz o margine bine conturat. Folosind aceleai tehnici de segmentare Reddi, poziia vertical a nasului e apoi calibrat. Ca rezultat, noua poziie vertical a nasului (y_nose) e calculat ca linia ce separ zonele negre ale gurilor nasului n dou regiuni simetrice. Mai apoi, marginile nasului (x_nose_left, x_nose_right) sunt gsite cutnd n ROI sfritul zonei negre a gurilor nasului (vezi fig. 56).

Fig. 56 ROI segmentate Reddi pentru determinarea caracteristicilor orizontatele ale nasului

7.1.3 Detectarea gurii


Procedura de detectare a gurii este similar cu cea pentru nas. Mai nti se localizeaz poziia vertical (y_mouth), printr-o scanare sus-jos a ROI, pentru regiunea ntunecat a buzelor. Poziia orizontal a gurii i implicit dimensiunea ei, se afl mprind gura n dou regiuni, stnga i dreapta ROI, precum n figura 57.

Fig. 57 ROI segmentate Reddi ale gurii Cutnd poziia cea mai din dreapta i cea mai din stnga a pixelilor ntunecai ntr-o band ngust n jurul poziie verticale gsite pentru gur se gsesc coordonatele colurilor gurii (x_mouth_left, x_mouth_right). Procedura presupune c forma gurii este aproximativ orizontal. Imagini ale gurii precum cea din fig 57 dreapta produc rezultate eronate.

44

7.1.5 Modelarea conturului feei


Pentru o caracterizare mai bun a feei, pentru a crete gradul de individualitate a modelelor feelor, am introdus coordonate suplimentare pentru detectarea grosimii feei: la ochi (x_right_at_eyes, x_left_at_eyes), la nas (x_right_at_nose, x_left_at_nose) i la gur (x_right_at_mouth, x_left_at_mouth). Procesul e o reducere simpl a cutrii marginii feei n imaginea Sobel la nivelele corespunztoare.

7.2. Alte caracteristici


i alte caracteristici pot fi extrase din fa. Acestea pot rezulta din calcule locale sau globale. Caracteristici locale sunt: centrul masei, aria, perimetru, orientare, momente, cutie de restrngere. Transformrile Fourier, DCT i wavelet pot fi aplicate zonelor locale i globale, de asemenea.

7.2.1. Proprieti geometrice

Fig 58. Imaginea original a centroid-ului. Imaginea din stnga este o imagine alb negru cu o singur regiune. Aceast imagine va fi folosit pentru exemplificarea proprietilor prezentate n paragraf. n imaginea din dreapta ete o cruce care marcheaz centrul imaginii. Aria regiunii este 5692. n paragraful urmtor vor fi prezentate proprietile geometrice ale regiunii R. Se presupune c pixeli sunt de form ptratic. Aria lui R este:

sau numrul de pixeli din regiune. Centroid-ul este locaia medie a pixelilor n setul R. Dei x i y sunt ntregi i

sunt numere reale:

45

Lungimea perimetrului P a unei regiuni este o alt proprietate. O simpl definire a unui perimetru a unei regiuni fr guri este setul pixelilor graniei interioare. Un pixel al unei regiuni este un pixel de grani dac are civa pixeli vecini care sunt n afara regiuni. Cnd se folosete 8-conectivitatea pentru a determina dac un pixel din regiune este conectat cu un pixel din afara regiuni, setul rezultat de pixeli de perimetru este 4conectat. Cnd se folosete 4-conectivitatea pentru a determina dac un pixel din regiune este conectat cu un pixel din afara regiuni, setul rezultat de pixeli de perimetru este 8conectat. Aceasta este motivaia definiiei perimetrului 4 i 8 conectivitii:

Fig. 59. Perimetrii. n dreapta este perimetrul de 4-conectivitate a unei regiuni cu lungime, iar n stnga este perimetrul de 4-conectivitate a unei regiume cu lungime Lungimea calculat |P| a perimetrului P, pixeli din P trebuie ordonai ntr-o secven P={(y0,x0),,(yk-1,xk-1)}, fiecare pereche de pixeli succesivi din secven fiind vecini, inclusiv primul si ultimul. Apoi lungimea perimetru |P| este definit ca: Cu aria A si perimetrul P definite, o msur comun a circularitii regiunii este lungimea perimetrului la ptrat mprit la arie:

E de folos s ai idee unde se afl regiunea ntr-o imagine. Un concept folositor este cutia de restrngeri, care e un dreptunghi cu pri orizontale i verticale care ngrdesc regiunea si ating cele mai extreme puncte de sus, jos, stnga i dreapta.

46

Fig. 60 Cutie de ncadrare Momente spaiale sunt adesea folosite pentru a descrie forma unei regiune. Exist trei momentele spaiale de ordinul al doilea al unei regiune. Ele sunt definite dup cum urmeaz: Momentul de ordinul al doilea de vertical.

Momentul de ordinul al doilea orizontal.

Momentul de ordinul al doilea amestecat

Deci yy msoar variaia orizontal, xx msoar variaia orizontal, iar yx msoar variaia orizontal i vertical. Aceste valori sunt adesea folosite ca descriptori de form, deoarece sunt invariabili la traziie i schimbare de scal a unei forme 2D. Momentele spaiale secunde au valoarea i importan pentru regiunea de oricare form. Dac regiunea este o elips, axa minor i major i orientarea axei de majore (n mod clar orientarea axei minore) poate fi determinat dup cum urmeaz: Dac yx=0 i yy> xx , atunci axa major este orientat la un unghi de 90 n sens invers ceasornic fa de axa orizontal i are o lungime de . Axa

minor are o lungime de Dac yx=0 i yy<= xx, atunci axa major este orientat la un unghi de 0 n sens invers ceasornic fa de axa orizontal i are o lungime de minor are o lungime de . Axa

47

Dac yx!=0 i yy> xx, atunci axa major este orientat la un unghi de n sens invers ceasornic fa de axa orizontal i are o lungime de . Axa minor are o lungime de

Dac yx!=0 i yy<= xx, atunci axa major este orientat la un unghi de n sens invers ceasornic fa de axa orizontal i are o lungime de . Axa minor are o lungime de

Fig. 61 Elipsa nconjurtoare n [TIAN00] sunt prezentate cteva metode pentru detectarea caracteristicilor i extragerea lor. Aceti algoritmi sunt creai pentru analiza expresiilor, dar informaia formelor caracteristicilor feei poate fi folosit foarte uor ca proprietate global a feei. Pentru detectarea unui proprieti locale se poate folosi reeaua wavelet precum n [FERI02]. Reeaua wavelet detecteaz forma dintr-o fa necunoscut, folosind un set de fee cunoscute, care deja au semne pentru toate caracteristicile detectabile.

7.2.2. Transformri Fourier i transformri Fourier discrete


Transformrile sunt ustensile de extragere a caracteristicilor foarte eficiente. Acestea vor fi prezentate pe scurt, pe baza documentaiei Matlab. Transformarea Fourier are un rol important n zona aplicaiilor de procesare a imaginilor, inclusiv analiz, restaurare, mrire i compresare. Transformata Fourier este definit de ecuaia (10).

48

(10) Variabilele 1 i 2 sunt variabile de frecven. Unitile lor sunt radiani/sample. F(1,2) este des numit reprezentarea domeniului de frecven a f(m,n). F(1,2) este o funcie de valoare complex care este periodica att n 1 ct i n 2, de perioad 2. Din aceast cauz, de obicei e afiat doar n acest interval. Lucrul cu transformata Fourier pe calculator implic de obicei o form a trasformatei cunoscut sub numele de transformata Fourier discret (DFT). Sunt 2 motive pt. folosirea acestei forme: Intrarea i ieirea DFT sunt discrete, cea ce e bine pt. manipularea pe calculator. Exist un algoritm rapid pentru calcularea DFT cunoscut ca Transformarea Fourier Rapid (FFT). DFT este de obicei definit pentru o funcie discret f(m,n) care e nonzero doar pe intervalul finit 0 m M 1 i 0 n N 1. relaia bidimensional M-N a DFT e dat de ecuaia (11).

(11). Valorile sunt coeficienii DFT F( p, q ) ai f(m,n). n particular, valoarea F(0,0) este numit coeficientul DC. Coeficienii rezultai din DFT nu pot fi folosii pentru a caracteriza proprietile regiunii. n figura 62 sunt cteva imagini i transformata Fourier corespunztoare cu M=N=152.

49

Fig 62. Imagini DFT. Sunt prezentate 5 imagini si transformata Fourier de 512x512

7.2.3. Transformrile Cosine discrete


DCT are proprietatea c, pentru o imagine tipic, majoritatea informaiei semnificative este concentrat n doar civa coeficieni ai DCT. Din acest motiv este folosit n aplicaii de compresie a imaginilor. DCT este la baza algoritmului de compresare internaional a imaginilor cunoscut sub nule de JPEG. DCT bidimensional a unei matrice A de dimensiuni M-N este definit astfel:

(12) unde 0<=p<=M-1 i 0<=q<=N-1. Valorile Bpq sunt numite coeficienii DCT a lui A. DCT este o transformare inversabil, iar inversa sa este:

50

unde p , q sunt aceleai ca n ecuaia (12). Inversa DCT poate fi interpretat c orice matrice AMN poate fi scris ca o sum de M*N funcii de forma

(13). Aceste funcii sunt numite funcii de baz a DCT. Coeficientul DCT Bpq, poate fi considerat ca greutatea aplicat fiecrei funcii de baz. Figura 63 prezint un exemplu, a proprietilor de compresie a DCT. Figura arat imaginile reconstruite folosind 1,2,3,4 i 5 coeficieni DCT.

Fig. 63. Imagini reconstruite cu DCT. Se poate observa c ultima imagine (5 coeficienii) este aproape identic cu originalul. Tabelul 1 prezint nevoile de stocare a imaginii dac informaia gri este nlocuit cu coeficieni DCT. n procente este exprimat raia elementelor diferite de 0 a coeficienilor DCT. Aceasta nu e o raie de compresare real deoarece coeficienii sunt numere reale iar informaia gri este un ntreg ntre 0 i 255, aa c raia de compresie este de 2,4 sau 8 ori mia mic (procentul este mai mare) dect valorile din tabelul 1.

Tabelul 1 Evaluare a compresiei imaginii cu coeficieni DCT

7.3. Decompresie wavelet a imaginilor feei


n [GARC00] autorii folosesc decompresia wavelet a feei. Ei aplic o decompresie arbore quad pe 2 nivele a imaginii, rezultnd 16 wavelets a imaginii. Punctul de pornire e decompresia wavelet clasic: imaginea e mprit ntr-o aproximaie i imagini detaliate. Aproximaie e apoi mprit ntr-o aproximaie de nivel 2 i detalii. Pentru a-l n -lea nivel semnanul este decompresat conform (14), (15), (16) i (17).

51

Pentru imagini reale rezultatul este redat n figura 64.

Fig 64. Wavelets ale feei Caracteristicile pot fi extrase din aproximaie, calculnd diferite calcule statistice [GARC00]. Pe deasupra wavelets pot fi folosite i pentru detectarea feei, similar ca n [MICE02].

52

7.4. Probleme n extragerea caracteristicilor


Caracteristicile extrase pot fi alterate de multe elemente externe sau interne ceea ce e o mare problem a parii de identifica din procesul de detectarea a feei. Cele mai importante puncte sunt: Variaii determinate de poziia capului. Diferene de rotaie, chiar dac sunt foarte mici, pot cauz disimilariti n caracteristicile determinate. Aceast problem poate fi rezolvat prin normalizarea poziiei feei, efectund o rotaie napoi la poziia normal. Metode de normalizare scalar trebuie folosite dac faa se afl la distane diferite de dispozitiv. O dimensiune (nlime, Limea, sau distana dintre ochi) este distana de normalizare, care trebuie s fie de lungime standard, i restul imaginii va fi scalat pstrnd raia. (vezi fig. 65)

Fig 65 Scalarea feei n [MICE02] am folosit caracteristicile normalizate dup ce au fost extrase, am folosit raii de normalizare diferite pentru caracteristici orizontale si verticale: Caracteristicile orizontale sunt scalate cu Limeaa feei la ochi Caracteristicile verticale sunt scalate cu distana brbie-sprncene

8. Cutarea n baza de date.


Sigurana cutrii depinde n special de: precizia caracteristicile extrase: caracteristicile trebuie s fie bine identificate, form cu stabil i invariabil pentru o persoan dat. Condiii exterioare ambiante (iluminare, musta, barb, vrst) s nu ar trebui s altereze caracteristica extras. A lua totul n considerare este aproape imposibil, dar noi trebuie s facem progresele n aceast direcie. Caracteristicile folosite pentru cutare ar trebui s fie cele care au cantitatea de informaie maxim. Caracteristici ca diametrul pupilei, forma liniei spectrale de margine de pr nu sunt semnificative. Dac ele se ntrebuineaz, atunci trebuie s aib o greutate n decizie foarte joas comparat cu alte caracteristici. Pe de alt parte, forma feei, forma nasului, dimensiunile feei sunt specifice pentru o persoan dat Exist multe abordri pentru procesul de identificare. Nu exist o soluie bun; Ele au abordri diferite, au avantajele diferite i dezavantaje diferite. n paragraful urmtor suntei prezent mai multe abordri. 53

8.1. Abordri pentru cutarea feelor


ndrumrile de baz pentru msurarea asemnrile sunt prezente n [DASK91], dar exist o varietate larg pentru a le msura. Primele i cele mai folosite s-au bazat pe calculele statistice. Ele definesc o clas a caracteristicilor pentru fiecare persoan din baza de date. Dac caracteristicile nu sunt precise atunci setul de parametri poate varia n domenii foarte mari ce va decurge la intersecia nedorit de clasele diferite, nsemnnd c identitatea nu va fi detectat. Abordrile statistice au fost de ncredere, eliminnd valorile ce sunt afar din variaia de parametri acceptat. Metoda prezentat n [MICE02] se bazeaz pe combinaiile distanei liniare minime. O combinaie liniar de vectorii prototipici aparinnd unei clase de fee este folosit ca s defineasc o msur de distan de la vectorul interogare la clas, msura fiind definit ca distana Euclidian de la interogare la combinaia liniar ce mai apropiat de vectorul interogare. Metoda celei mai apropiate linie de caracteristici ( [Stan98a], [STAN00]) este o alt abordare. Orice dou puncte de caracteristici ale aceleai persoane sunt generalizate de linia de caracteristici traversnd cele dou puncte. Linia caracteristica derivat poate s captureze mai mult variai ale imaginii feei dect punctul original i astfel extinznd capacitatea bazei de date disponibile. Clasificarea se bazeaz pe distana minim de la caracteristica de interogare la fiecare linie de caracteristic. Recent a fost ncercri de folosire a reelelor neuronale i modele ascunse Markov ([NEFI99]) din care au decurs rezultatele bune, dar chiar i aceste abordri nu dau rezultate 100%.

8.2. Identificare folosind distanele de caracteristici


Distanele ntre caracteristicile detectate au fost folosite n [MICE02]. Dup ce caracteristicile au fost detectate toate caracteristici de distan necesare pot fi extrase pentru o figura de intrare necunoscut. Ca pasul urmtor, un model al feei este construit (un vector de figur). E compus din din15 valori, precum e descris n Tabelul 2. Nr. 1 2 3 4 5 6 7 8 9 10 11 12 Descrierea valorii Limea feei la nivelul de ochi Distana brbie-sprnceana Lime feei. Limea la nivelul de nas. Limea feei la nivelul de gur. Distan ntre ochi. Limea ochiului stnga Limea ochiului drept Limea gurii. Limea nasului. Distan vertical ntre ochi i sprncene. Distan vertical ntre ochi i gur. Formula x_right_at_eyes x_left_at_eyes y_bottom y_eyebrows x_right_edge x_left_edge x_right_at_nose x_left_at_nose x_right_at_mouth x_left_at_mouth x_eye_right x_eye_left x_left_eye_right x_left_eye_left x_right_eye_right- x_right_eye_left x_mouth_right x_mouth_left x_nose_right x_nose_left y_eyes y_eyebrows y_mouth y_eyes

54

13 14 15

Distan vertical ntre gur i nas. y_mouth y_noes Distan vertical ntre gur i y_mouth y_eyebrows sprncene. Distan vertical ntre nas i y_noes y_eyebrows sprncene Tabelul 2 Valori ale vectorului feei

Pentru a identifica o persoan nregistrat din baza de date noi am folosit metric ptratic de eroare minim, definit precum:

(10) Att vectorul de fee (xk) ct i modelul feei pentru intrarea n baza de date (mki) sunt scalai. Dup ce cutarea e terminat, primele dou valori minime ale i sunt stoacate ca s calculeze probabilitatea de identificare ca identitate cu eroarea ptratic minim:

(11)

9. Ghidul de aplicaie segmentat


Acest capitolul prezint aplicaia realizat. inta acestei aplicaii e s implementeze ntr-un limbaj de programare algoritmii dezvoltai n mediul Matlab. Au existat mai multe probleme care au necesitat completare: Problema cea mai simpl a fost transpunerea codului nregistrat Matlab n codul de C. A fost o nevoie pentru a implementa n C algoritmii interni i optimizai ai Matlab. O interfa utilizator Windows a fost necesar ca s interacioneze cu utilizatorul. O soluie de captare video a fost necesar pentru a achiziiona imaginea. n paragraful urmtor implementarea detaliilor va fi dat, urmat de un paragraf explicnd utilizarea aplicaiei din punctul de vere a utilizatorului.

9.1. Detalii ale implementrii


inta proiectului a fost s realizeze o aplicaie DSP. La implementarea acestei aplicaii acest lucru a fost luat n considerare. Aplicaia a fost luat n consideraie ca o versiune prototip pentru PC, o ustensil de testare a algoritmilor. Dei MS VC++ permite un stil de programare orientat obiect foarte organizat i de structur, acesta nu a fost folosit la implementarea metodelor de procesare a imaginilor. Algoritmii au fost scrii stilul de limbaj procedural i structurat, deoarece: Dac algoritmii vor fi vor transpui n DSP, atunci numai n cazul cel mai bun va fi compilatoarele C disponibile, altfel fiecare algoritm va trebui s fie tradus n limbajul de asamblare al DSP 55

Nevoile de memorie pentru stocarea imaginii sunt mari, a fost nevoie de compacta ct mai zonele de memorie folosite. Dac algoritmii ar fi fost mprii n obiectele interactive atunci trecerea parametrilor ar fi ocupat foarte mult memorie. Pentru realizarea unei performane mai bune, principiul de ncapsulare a programrii structurate e spart: parametrul care trece ntre metodele de prelucrare folosete variabile globale, n care se stocheaz dup fiecare faz rezultatul fiecrei faze. Aceasta a fost compromisul acceptabil pentru nu copia rezultatele de unul pas la intrarea pasului urmtor. n acelai stil, o alt variabil global s-a ntrebuinat pentru salvarea calculelor matricei SUSAN folosit n detectarea Susan Edge n partea de finisare a conturului.

9.1.1. Interfaa utilizator


Interfaa utilizator a fost construit n stilul cel mai simplu, bazat pe Clasele Microsoft Framework( MFC). Este o aplicaie de dialog singular cu clase de stil standard provenite din CWinApp (CFaceDetectApp) i CWinApp (CFaceDetectApp). CFaceDetectDlg iniializeaz dispozitivul de captur, Directshow capteaz graficele i manipuleaz evenimentele aplicaiei. Programarea cadrelor a fost fcut ntr-un stil simplu i standard.

9.1.2 Capturarea video


Capturarea video e realizat folosind Directshow API i cadrele Directx. Directx este o tehnologie bazat COM, care d un API la dispozitivele multimedia. Interfeele COM permit s folosirea independent din limbajul de programare. Folosind API-ul dat de Directshow cel mai multe probleme de capturare sunt rezolvate de Directshow i de adaptoarele multimedia ale Windows. Aplicaia trebuie doar s construiasc un grafic de filtru corespunztor (termen introdus de Directshow: la set bloc, interconectat ntr-o ordine secvenial, fiecare bloc avnd o captur specific, funcie de procesare sau afiare). Graficul de filtru include un filtru SamplerGraber, care transmite fiecare capturat umplut la obiectul Samplergraber COM definit care implementeaz interfaa ISampleGrabberCB. CSamplerGraber copiaz imaginea capturat la o zon de buffer i o transmite la rutinele de prelucrare. Partea cea mai mult important de aceast faz, codul de iniializare de grafic de filtru este prezent n Appendix B i el este fcut bazndu-se pe exemplele Directx SDK.

9.1.3. Rutine de procesare a imaginii


Rutinele de cutare a feei n imaginea capturat, suntei ncapsulate n obiectul CFaceProcessing. Metoda DoProcessing(), a pornit de la lansrile de obiect CSamplerGraber la rnd cu celelalte metode de procesare. Acestea corespund paii descrii n amnunime n Capitolul 6 i sunt: ColorExtraction () - selecteaz zonele care au culorile asemntoare cu ale feei (vedei 6. 1.) SelectMaximumFilled () - a selectat regiunea de suprafa maxim umplut (vedei 6. 2.) FaceCrop() - restrnge zona de figur, reducnd suprafaa de prelucrat (vedei 6. 2.)

56

SelectHue() - calculeaz valoarea de nuan rea i regiunea aproape de aceasta (vedei 6. 4.) Susan1() detectarea marginii zonei pe baza Susan. Include restrngerea marginii i lrgirea marginii (vedei 6. 4.) Susan2() Selecteaz de la zonele delimitate cu muchiile Susan, care formeaz figura (vedei 6. 4.) ConturSmoothing() sporete conturul feei (vedei 6. 4.)

9.2. Mini Ghidul utilizator.


Independent de modul realizrii, n modulul dinamic i static, aplicaia nfieaz aceeai interfa, diferena este c n modul static, nu exist imagini capturate, fereastra camerei este goal, i butoanele de comand ale camerei sunt dezactivate (Figura 66).

Fig 66. Interfaa cu utilizatorul. n dreapta n modulul de timp real iar n stnga n modulul static, de testare n continuare, comportamentul aplicaiei va fi prezent n modul n timp real. Modulul de testare este o versiune limitat a modului real. Dup ce utilizatorul pornete aplicaia, dialogul principal apare i imaginea camerei online va fi afiat nuntrul ferestrei Camera. Dac nu exist dispozitive de capturare ataate, atunci Camera i ferestrele celelalte rmn goale, pn cnd dispozitivului funcionabil va fi va ataat la PC. Aplicaia detecteaz conexiunea unui dispozitivul de video nou, i dac el este capabil pentru a captura se va ntrebuina ca sursa (Figura 67) i capturarea va ncepe instantaneu.

Fig. 67 Detectarea unui dispozitiv de capturare. Dup detectare dispozitivul va aproviziona aplicaia cu imagini. 57

Ferestrele de rezultat afieaz s urmeze rezultatele (de sus n jos, stnga sau drepta): Imaginea static care a fost capturat. Aceast imagine este intrarea pailor de prelucrare. n fiecare 10 secunde, dac procesele anterioare s-au terminat o imagine nou este capturat. Suprafaa selectat cu culoare aproape de culoarea feei. Regiuni maxim umplute, aceasta este figura i alte regiuni care au o conexiune la figura, i au culorile asemntoare. Rezultatul de selectare Susan. Rezultat final dup calificarea conturului Utilizatorul poate s selecteze cu butonul de selectare imaginile, care din ele s fie afiate nuntru ferestrei mari din stnga. Utilizatorul poate s controleze procesul de capturare cu butoanele din subsolul ferestrelor: Capturare s poat s fie oprite cu butonul Pasuse. Dac capturarea a fost oprit, dup aceea ea poate s fie repornit cu butonul Start. Capturare s poat s fie fcut cadrul cu cadru la momente cnd utilizatorul apas butonul Step. Cu butonul Stave oricare imagine de rezultat afiat n dialog s poat s fie salvat ntr-un fiier bmp. Caseta Status information informeaz utilizatorul ce ar trebui s fac ca s primeasc un rezultat corect dac prelucrarea nu poate s fie fcut. Aplicaia poate s sugereze utilizatorului s se apropie sau s se ndeprteze de camer sau s regleze expunerea camerei sau balana alb. La aceste mesaje de obicei este adugat mesajul de voce asemntor.

10. Concluzii i mbuntiri ulterioare


Aceast lucrare prezint o abordare realizabil pentru recunoaterea feei. A fost prezent de la prima faz de achiziie a imaginii la identificarea feei, pn la determinarea identitii. Au fost folosite una sau mai multe abordri, metode sau algoritmii pentru fiecare faz. Fiecare pas a fost tratat cu mai multe sau mai puine detalii. Cel mai mult descris a fost pasul de segmentare i prezentarea de algoritmi folosii. El a fost studiat i s-au ncercat mai multe abordri i algoritmi dect au fost prezeni n aceast lucrare, dar acetia au fost scoi din prezentare, deoarece se pare c ei nu duc la soluiile bune. Ideea de pornire a segmentrii bazate pe culoare a fost dat de disponibilitatea imaginilor color. Dei n domeniile industriale i camerele alb-negru sunt mai mult folosite, datorit preurilor, n prezent de doar camerele color au fost disponibile pentru pe noi s folosim pentru proiect. Pentru a transforma imaginea de culoare capturat s ntr-una alb-negru (ce a fost fcut n anul anterior) a prut s fie o pierdere de informaie nedorit. Mai muli autori studiai afirm c exist regiunile de spaiu de culoare de figur specifice, i cu ele o figur poate s fie s gseasc bine ntr-o o imagine color. Dup un

58

studiu de o lung perioad concluzia care a fost luat e c acele regiuni ori nu sunt universal valabile, autorii nu au specificat n mod corect toat informaie necesar, sau informaia a fost interpretat greit. Segmentarea bazat pe culoare nu lucreaz numai singur pentru mai multe motive: Camera a capturat culorile incorecte, deoarece: o calitii mediocre a senzorului o iluminare slab o colori nebalansate (balana alb a fost nu a fcut) Se poate s fie mai mult obiecte colorate n faa camerei i suprafaa acestor obiecte s fie detectate ca o fa. Noi putem ncerca s minimalizm deficiena anterioare strmtnd domeniul culorii selecte. Aceast pe alt mn duce la regiuni ale feei detaate: pierderea ochilor, nasului, zonele de frunte. Abordarea luat a fost combinarea segmentrii de culoare uor restricionat cu o aproximaie de fa de nivel al doilea, care d aproximaia de fa mai bun i final. Aceste dou abordri au fost prezente. Prima d un rezultat foarte stabil, dar el nu este atent la informaia de muchie a feei i folosete n special culoarea i informaia de intensitate imaginii. Aceasta face algoritmul foarte vulnerabil pentru schimbrile ambiante, n special pentru variaiile fulger. A doua abordare detecteaz muchiile ntr-o regiune a imaginii reduse, i regiunile delimitate cu aceste muchii sunt clasificate ca regiuni ale feei sau de fundal. Acesta este un proces de clasificare complex. Aceast clasificare este partea cea mai mult vulnerabil. Ea trebuie s fie foarte bine reglat n viitor pentru a da rezultate foarte bune, pentru a depi n calitate prima abordare. Platformele int ale algoritmilor sunt procesoarele de semnal digitale. Dei ndeplinirea prezent este pe sistemul PC, designul ales pentru implementare este ct mai simplu cu putin. El permite uor transportarea codului la un procesor DSP cu o simpl migraia de cod C sau o transformare de la C la cod de asamblare. Problema cea mai mare care apare rezult din nevoile mari de memorie ale algoritmului. Implemetarea actual are nevoie de 40 MB de memorie. Observaii Segmentarea bazat pe culoare e folositoare la detectarea obiectelor de culoarea feei. ntririle bazate pe muchii delimiteaz bine zonele fetei. Selectarea regiunilor de feei sunt greu de realizat, depind de multe constante, care nu sunt destul de precise. A fost proiectat un algoritm de umplere combinat i selectare de suprafa maxim. Uni dintre algoritmii arii de suprafa maxime nu sunt optimizai. Nevoile de memorie mari Slbiciuni Puncte forte X X X X X X

Tabelul 3 Puncte forte i slbiciuni 59

Eliminarea slbiciunilor din Tabelul 3 este scopul dezvoltrile viitoare: Structurile de informaie ale algoritmului de umplere vor fi mbuntite pentru o vitez mai bun Constantele specifice ale algoritmului vor fi studiate i se vor alege valorile lor optime Alocrile de memorie pentru structurile interne se vor reduce, nevoile de memorie vor fi dinamic determinate de la parametrii obinui n paii anteriori (ex. Pentru detectarea muchiei SUSAN de numrul muchiilor depinde de dimensiunea de imaginii) Alte dezvoltri aflate n plan: Integrare rutinelor n aplicaia proiectului DALT 2.4 Dezvoltare fazei de detectare de caracteristici. Transportarea aplicaiei la un sistem bazat pe DSP Concluzia final dup aceast lucrare e c cmpurile de procesare a imaginii sunt domenii foarte importante ale tehnologiei informaiei. n repetate rnduri este foarte greu s reueti ceea ce i propui, dar bucuria e mare cnd ceva nou rezult din munca ta. De asemenea exist multe secrete neexplorate care fac acest domeniu unul foarte interesant.

60

Referine
CRET02 CretuAASK98K. Aas, ""Detection and Recognition of Faces in Video Sequences"", Proceedings of the NOBIM, Oslo, June 1998. AMIT998 Y. Amit, D. Geman, "A Computational Model for Visual Selection", Neural Computation, vol. 11, pp. 1691-1715, 1998 BEYM93 D.J. Beymer, "Face Recognition Under Varying Pose", Technical Report, MIT AI Lab, AI memo 1461, December 1993MIT technical report AI.1461, CBCL. 89, 1993 BRUN93 R. Brunelli and T. Poggio, "Face Recognition vs Templates", IEEE Trans. on Pattern Analysis and Mach Intelligence, Vol. 15, pp. 1042 -1052, 1993. CRET92 V. Cretu, "Structuri de date si tehnici de programare avansata", UTT lithography, Timisoara, pp. 52-60, 1992 DASK91 Th.N.Daskalakis, C.N. Daskalakis, "Similarity Measures for Content Retrieval of Images", Digital Signal Processing, Elsevier Science Publisher, 1991 FANS00 L. Fan, K.K. Sung, "A Combined Feature-Texture Similarity Measure for Face Alignment Under Varying Pose", IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'00), Vol.1, pp. 1308-1315, May 2000 FERI02R.S. Feris, J.Gemmell, K. Toyama, V. Krger, "Facial Feature Detection Using a Hierarchical Wavelet Face Databases", Microsoft Research Technical Report, Redmond, 2002 FLEC94 M.M. Fleck, "Practical Edge Finding with a Robust Estimator", IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'94), pp. 649-653, 1994 FLEC96 M.M. Fleck, D.A. Forsyth, "Finding Naked People", Proc. European Conf. on Computer Vision , pp. 593-602, Germany: Springer-Verlag, 1996 GARC98 C.Garcia, G. Zikos, G.Tziritas, "Wavelet Packet Analysis for Face Recognition", Image and Vision Computing, Vol. 18, No. 4, pp.289-297, Feb. 2000 GARC99a C.Garcia, G.Tziritas, "Face Detection Using Quantized Skin Color Regions Merging and Wavelet Packet Analysis", IEEE trans. On Multimedia, vol.1, September, 1999 GARC99b C.Garcia, G. Zikos, G.Tziritas, "Face Detection in Color Images using Wavelet Packet Analysis", IEEE Int. Conf. on Multimedia Computing and Systems, 1999 GUOL00 G. Guo, S.Z. Li, K.L. Chan, H. Pan, "Texture Image Segmentation using Reduced Gabor Filter Set and Mean Shift Clustering", Fourth Asian Conference on Computer Vision, ACCV2000, pp.198-203, 2000. LIAO00R. Liao, S.Z. Li, "Face Recognition Based on Multiple Facial Features", In Proc.

61

IEEE Conf. on Automatic Face and Gesture Recognition, pp.239-244, 2000 LILU98 S.Z. Li, J. Lu, K.L. Chan, J. Liu, L. Wang, Hierarchical Linear Combinnantions for Face Recognition, Proc. of ICPR'98, Vol.2, pp. 11911193, Australia, 1998 MENG00 L. Meng, T.Q. Nguyen, D.A Castnon, An Image-based Bayesian Framework for Face Detection, IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'00), Vol.1, pp. 13021307, May 2000 MICE02 M.V. Micea, V. Cretu, L. Prodan, Z. Husz, Face Recognition Techniques for Embedded Systems, submitted to Tran. on IEEE Signal and Image@@ NAGA00 Nagao, Face Recognition by Distribution Specific Feature Extraction, IEEE Proc. on Computer Vision and Pattern Recognition (CVPR00), Vol.1, pp. 12781285, May 2000 NEFI99A.V. Nefian, M.H. Hayes III., Face Recognition Using an Embedded HMM, IEEE International Conference Audio Video Biometric based Person Authentication, March 1999, p. 19-24. OTSU79 N. Otsu, "A Threshold Selection Method from Gray-Level Histograms", IEEE Trans.actions on Systems, Man, and Cybernetics, Vol. 9, pp. 62 - 66, 1979. REDD84 S.S. Reddi, S.F. Rudin and H.R. Keshavan, "An Optimal Threshold Scheme for image Segmentation", IEEE Trans.actions on Systems, Man, and Cybernetics, Vol. 14, pp. 661- 665, July/August 1984. ROWL99 H.A. Rowley, Neutral Network Based Face Detection, PhD thesis, CMU, Pittsburg, 1999 SHAP01 L.G. Shapiro, G.C. Stockman, Computer Vision, Prentice Hall, New Jersey, 2001 SMITH95a S.M. SMITH, J.M. Brady, SUSAN A New Approach to Low Level Image Processing, Int. Journal of Computer Vision, 23(1):4578, May 1997 SMITH95b S.M. SMITH, Edge Thinning Used in the SUSAN Edge Detector, Technical Report TR95SMS5, 1995 STAN00 S.Z. Li, J. Lu, Face Recognition Using the Nearest Feature Line Method, IEEE Trans. on Speech and Audio Processing, Vol.10, pp.439443, September 2000 STAN98a S.Z. Li, Face Recognition Based on Nearest Linear Combinations, In Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, pp. 839844,. June 2325, 1998. STAN98b S.Z. Li, J. Lu, Generalizing Capacity of Face Database For Face Recognition, In. Proceedings of the Third IEEE International Conference on Automatic Face and Gesture Recognition. pp. 402405., April 1416, 1998 TIAN00Y.Tian, T. Kanade, J. Cohn, Recognizing Upper Face Action Units for Facial Expression Analysis, Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR00), Vol. 1, June, 2000, pp. 294301. WUHU00 Y.Wu, T.S. Huang, Color Tracking by Transductive Learning, In Proc. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR00), Vol.II, pp.222227, Hilton Head Island, SC, June, 2000IEEE ??????, 2000 ZHAO00 W.Y. Zhao, R. Chellappa, Illumination-Insensitive Face Recognition Using Symmetric Shape-form-Shading, IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'00), Vol.1, pp. 12781286, May 2000

62

Anexa A - Algoritmi Matlab


Extragerea culorii
Acest algoritm face o selecie rapid pentru imaginea iniial. E foarte simplu dar are slbiciuni.
function Output = ColorExtraction(Image) % using the color information this function creates a binary mask for % the imput image. First a intensiti normalization is done. Then the % logaritmic values are calcutated. The texture matrix is calculated too. % these 4 informations are used to determine the posible zones of the face % % Inputs : Image - RGB color % Outputs : Output - logic mask of the face (binary) Minval= min(min(min(Image))); MinArray = double(Minval) * ones(size(Image(:,:,1))); %logaritmic values LR = LogValue(double(Image(:,:,1)) - MinArray); LG = LogValue(double(Image(:,:,2)) - MinArray); LB = LogValue(double(Image(:,:,3)) - MinArray); I = LG; Rg = LR - LG; By = LB - ( LG + LR ) / 2; %color information extraction I_Mask = I > 200 & I<240; Rg_Mask = Rg > 5 & Rg < 32; By_Mask = (By > -28 & By < -7) | (By > -1 & By < 5); %texture calculations Texture = medfilt2 ( abs ( I - medfilt2 (I , [5 5] )), [ 7 7 ]); TextureMask = Texture < 1; Output = I_Mask & Rg_Mask & By_Mask; & TextureMask; function Output = LogValue(Value) % calculates and returns the logatimic (with 10 base) % value of the Value parameter % this function applies a random [0,1] correction, to enable better % adaption for the skin color % the 105 factor stands for good scaling the resulting value

63

% in zone witch cana better handled % % Inputs : Value - parameter what to be logaritmated % Outputs : Output - logaritmic value Output = 105 *log10( Value + 1 + random('unif', 0, 1, size(Value)));

Selectarea ariei umplute la maxim


Aceast funcie efectueaz umplerea combinat ci selectarea ariilor de regiune maxime
function Output = SelectMaximumFilled(InputMask); % Fill the interrrior holes and selects from the resulting zones the biggest % % Inputs : ImageMask - Mask with holes(binary) % Outputs : Output- The selected maximim zone (binary) % % MAXCOLORS=5000; Size= size(InputMask); InputMask(1,:) = 0; InputMask(:,1) = 0; InputMask(Size(1), :) = 0; InputMask(: ,Size(2)) = 0; %global variable, to be available to the functions subroutines global C; global L; global N; global Colors; global invert; C = zeros(Size); L=cell(MAXCOLORS,1); N=cell(MAXCOLORS,1); Colors(1:MAXCOLORS) = 0; invert=[1:MAXCOLORS]; NextColor = 0; for y = 2 : Size(1) for x = 2 : Size(2) if InputMask(y,x) == 1 W_NW = SelectNon0( C(y, x-1), C(y-1, x-1) ); N_NE =SelectNon0( C(y-1, x), C(y-1, x+1) ); if W_NW >0 & N_NE >0 if W_NW == N_NE C(y,x) = invrec(W_NW); else C(y,x)= join(W_NW, N_NE, y, x, 0); end elseif W_NW>0 C(y,x) = invert(W_NW); elseif N_NE >0 C(y,x) = invert(N_NE); else NextColor = NextColor + 1; L{NextColor} = [NextColor]; C(y,x) = NextColor; end Colors(C(y,x))= Colors(C(y,x)) + 1; else %% if InputMask(y,x) == 0 if C(y, x-1) == 0 | C(y-1, x) == 0

64

%% this pixel has exit to margin C(y,x) = 0; if C(y,x-1) < 0 nullrow(-C(y,x-1), y, x); end if C(y-1,x) < 0 nullabove(-C(y-1,x)); end else if C(y, x-1)<0 | C(y-1,x)<0 %% continues a 0 zone if C(y, x-1) < 0 & C(y-1, x) < 0 C(y,x) = -join( C(y, x-1), C(y-1, x), y, x, 1); elseif C(y-1, x) < 0 C(y,x) = -invrec(-C(y-1, x)); %%adds the other as neighbour Add0Neighbour(-C(y, x), C(y,x-1)); C(y,x) = -invert(-C(y, x-1)); %%add the other as neighbour Add0Neighbour(-C(y, x), C(y-1,x)); else NextColor = NextColor + 1; C(y,x) = -NextColor; Add0Neighbour(NextColor, C(y-1,x)); L{NextColor} = [NextColor]; end Colors(-C(y,x))= Colors(-C(y,x)) + 1; end end %% if end %%for x end %%for y InputMask(y,x) = TRUE

%finalize the join for i = NextColor:-1:1 if ~isempty(N{i}) & Colors(i)>0 T=invrec(N{i}(1)); join_at_end(T, i); for j=2 : size(N{i},2) join_at_end(T, N{i}(j)); end end end [Max Pos]= max(Colors); C=abs(C); %generate result image Output = ismember(C,L{Pos}); clear clear clear clear clear Colors; N; L; C; invert;

function Output = SelectNon0(A,B) %subroutine of SelectMaximumFilled %selects from A and B whis is greater then zero if (A > 0)

65

Output = A; else Output = B; end; function Output= join (C1, C2, y, x, Negative) %subroutine of SelectMaximumFilled %joins C1,C2 backgorund of foreground regions if Negative == 1 C1 = -C1; C2 = -C2; end if C1 < C2 c1 = C1; c2 = C2; else c1 = C2; c2 = C1; end global global global global Colors; L; N; C;

if Colors(c2) > 0 Colors(c1) = Colors(c1) + Colors(c2); Colors(c2) = 0; L{c1} = unique([L{c1} c2 L{c2}]); if Negative==1 N{c1} = unique([N{c1} N{c2}]); end end if C2<C1 % update row % if C1>C2 do updates needed if Negative==1 C1 = -C1; C2 = -C2; end for X=1:x-1 if C(y,X)==C1 C(y,X)=C2; end end end invert(c2) = c1; Output = c1; function Add0Neighbour(Col, Color) %subroutine of SelectMaximumFilled %adds Color to the neighbours of the Col non-foreground color global N; if Color>0 N{Col}=union(N{Col}, [Color]); end function Output=invrec(n) %subroutine of SelectMaximumFilled %findes recursive the color into wich to color was changed global invert; while n ~= invert(n)

66

n = invert(n); end; Output = n; function join_at_end(c1, c2) %subroutine of SelectMaximumFilled %join to colors at the final phase global L; global Colors; if Colors(c2)>0 Colors(c1) = Colors(c1) + Colors(c2); Colors(c2) = 0; L{c1} = unique([L{c1} c2 L{c2}]); end function nullrow(Color, y, x); %subroutine of SelectMaximumFilled % %updets a row when a non-backgorund pixel is found to be backgound global C; nullabove(Color); for x2 = 1 : x if C(y, x2) == -Color C(y, x2)=0; end end function nullabove(Color) %subroutine of SelectMaximumFilled % %updets the when a non-backgorund pixel is found to be backgound global Colors; Colors(Color) = 0;

67

Anexa B - Iniializarea DirectX


n aceast anex e prezent iniializarea capturii DirectShow. E considerat valoaroas deoarece programarea COM are nevoie de cunoaterea multor interfee iar alegerea celei mai bune poate lua mult timp. Codul care apeleaz iniializarea e (din metoda OnDialogInit()):
HRESULT hr; hr = InitStillGraph( ); if (FAILED(hr)) { Error( TEXT("Failed to initialize StillGraph !")); EndDialog(IDABORT ); return FALSE; } // Modify the window style of the capture and still windows // to prevent excessive repainting m_CameraScreen.ModifyStyle(0, WS_CLIPCHILDREN); m_FaceScreen.ModifyStyle(0, WS_CLIPCHILDREN); // Register for device add/remove notifications. DEV_BROADCAST_DEVICEINTERFACE filterData; ZeroMemory(&filterData, sizeof(DEV_BROADCAST_DEVICEINTERFACE)); filterData.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); filterData.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;

68

filterData.dbcc_classguid = AM_KSCATEGORY_CAPTURE; m_hDevNotify = RegisterDeviceNotification(mCB.m_hwndOwner, &filterData, DEVICE_NOTIFY_WINDOW_HANDLE); ASSERT(m_hDevNotify != NULL);

Iar acesta e codul care urmeaz iniializrii:


/// Initializes the still image capturing graph HRESULT CFaceDetectDlg::InitStillGraph( ) { HRESULT hr; // creates a filter graph, if does not exists yet // if (!m_pGraph) { hr = m_pGraph.CoCreateInstance( CLSID_FilterGraph ); if( !m_pGraph ) { Error( TEXT("Could not create filter graph") ); return E_FAIL; }

// get whatever capture device exists // CComPtr< IBaseFilter > pCap; GetDefaultCapDevice( &pCap ); if( !pCap ) { Error( TEXT("No video capture device was detected on your system.\r\n\r\n") TEXT("This sample requires a functional video capture device, such\r\n") TEXT("as a USB web camera.") ); //do not generate error: when a new device will be detected, // that it will retry to constuct the graph return S_OK; } // add the capture filter to the graph // hr = m_pGraph->AddFilter( pCap, L"Cap" ); if( FAILED( hr ) ) { Error( TEXT("Could not put capture device in graph")); return E_FAIL; } // create a sample grabber // hr = m_pGrabber.CoCreateInstance( CLSID_SampleGrabber ); if( !m_pGrabber ) { Error( TEXT("Could not create SampleGrabber (is qedit.dll registered?)"));

69

return hr; } CComQIPtr< IBaseFilter, &IID_IBaseFilter > pGrabBase( m_pGrabber ); // force it to connect to video, 24 bit // CMediaType VideoType; VideoType.SetType( &MEDIATYPE_Video ); VideoType.SetSubtype( &MEDIASUBTYPE_RGB24 ); hr = m_pGrabber->SetMediaType( &VideoType ); // shouldn't fail if( FAILED( hr ) ) { Error( TEXT("Could not set media type")); return hr; } // add the grabber to the graph // hr = m_pGraph->AddFilter( pGrabBase, L"Grabber" ); if( FAILED( hr ) ) { Error( TEXT("Could not put sample grabber in graph")); return hr; } // find the two pins and connect them // IPin * pCapOut = GetOutPin( pCap, 0 ); IPin * pGrabIn = GetInPin( pGrabBase, 0 ); hr = m_pGraph->Connect( pCapOut, pGrabIn ); if( FAILED( hr ) ) { Error( TEXT("Could not connect capture pin #0 to grabber.\r\n") TEXT("Is the capture device being used by another application?")); return hr; } // render the sample grabber output pin, so we get a preview window // // IPin * pGrabOut = GetOutPin( pGrabBase, 0 ); // hr = m_pGraph->Render( pGrabOut ); CComPtr< ICaptureGraphBuilder2 > pCapture; hr = CoCreateInstance (CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_INPROC, IID_ICaptureGraphBuilder2, (void **) &pCapture); if( FAILED( hr ) ) { Error( TEXT("Could not created caputure builder.")); return hr; } hr = pCapture->SetFiltergraph(m_pGraph); if( FAILED( hr ) ) { Error( TEXT("Could not set caputure builder graph."));

70

return hr; } hr = pCapture ->RenderStream (NULL, NULL, pGrabBase, NULL, NULL); if( FAILED( hr ) ) { Error( TEXT("Could not render sample grabber output pin")); return hr; } // set the selected quality for every filter { CComPtr< IEnumFilters > pEnum; hr = m_pGraph -> EnumFilters(&pEnum); if (!FAILED( hr ) && pEnum) { pEnum -> Reset(); ULONG ulFetched; while (1) { CComPtr< IBaseFilter > pFilter; hr = pEnum -> Next(1, &pFilter, &ulFetched); if ( hr != S_OK ) break; CComQIPtr< IIPDVDec, &IID_IIPDVDec > pDVDec( pFilter ); if (pDVDec) { pDVDec -> put_IPDisplay(DVRESOLUTION_SELECTED); }

} }

} // ask for the connection media type so we know how big // it is, so we can write out bitmaps // AM_MEDIA_TYPE mt; hr = m_pGrabber->GetConnectedMediaType( &mt ); if ( FAILED( hr) ) { Error( TEXT("Could not read the connected media type")); return hr; } VIDEOINFOHEADER * vih = (VIDEOINFOHEADER*) mt.pbFormat; mCB.lWidth = vih->bmiHeader.biWidth; mCB.lHeight = vih->bmiHeader.biHeight; FreeMediaType( mt ); // don't buffer the samples as they pass through // m_pGrabber->SetBufferSamples( FALSE ); // only grab one at a time, stop stream after // grabbing one sample // m_pGrabber->SetOneShot( FALSE );

71

// set the callback, so we can grab the one sample // m_pGrabber->SetCallback( &mCB, 1 ); // obtain media position interface // CComQIPtr< IVideoWindow, &IID_IVideoWindow > pWindow = m_pGraph; if( !pWindow ) { Error( TEXT("Could not get video window interface")); return E_FAIL; } // set up the preview window to be in our dialog // instead of floating popup // HWND hwndCamera = NULL; GetDlgItem( IDC_STATIC_CAMERA, &hwndCamera ); RECT rc; ::GetWindowRect( hwndCamera, &rc ); pWindow->put_Owner( (OAHWND) hwndCamera ); pWindow->put_Left( 0 ); pWindow->put_Top( 0 ); pWindow->put_Width( rc.right - rc.left ); pWindow->put_Height( rc.bottom - rc.top ); pWindow->put_Visible( OATRUE ); pWindow->put_WindowStyle( WS_CHILD | WS_CLIPSIBLINGS ); // // #ifdef hr if { } #endif //set frame rate { CComQIPtr< IAMStreamConfig, &IID_IAMStreamConfig > pVSC ( pCapOut ); if(pVSC) { AM_MEDIA_TYPE *pmt; hr = pVSC->GetFormat(&pmt); // DV capture does not use a VIDEOINFOHEADER if(hr == NOERROR) { if(pmt->formattype == FORMAT_VideoInfo) { VIDEOINFOHEADER *pvi = (VIDEOINFOHEADER *)pmt>pbFormat; pvi->AvgTimePerFrame =LONGLONG)DELAY_BETWEEN_FRAMES*10000000; hr = pVSC->SetFormat(pmt); if(hr != S_OK) Add our graph to the running object table, which will allow the GraphEdit application to "spy" on our graph REGISTER_FILTERGRAPH = AddGraphToRot(m_pGraph, &m_dwGraphRegister); (FAILED(hr)) Error(TEXT("Failed to register filter graph with ROT!")); m_dwGraphRegister = 0;

72

//ErrMsg(TEXT("%x: Cannot set new frame rate"), hr); Error( TEXT("Cannot set frame rate")); } DeleteMediaType(pmt); } } // run the graph // CComQIPtr< IMediaControl, &IID_IMediaControl > pControl = m_pGraph; hr = pControl->Run( ); if( FAILED( hr ) ) { Error( TEXT("Could not run graph")); return hr; } m_eState = Run; return 0; }

/// Determines the filter for capturing void CFaceDetectDlg::GetDefaultCapDevice( IBaseFilter ** ppCap ) { HRESULT hr; *ppCap = NULL; // create an enumerator // CComPtr< ICreateDevEnum > pCreateDevEnum; pCreateDevEnum.CoCreateInstance( CLSID_SystemDeviceEnum ); if( !pCreateDevEnum ) return; // enumerate video capture devices // CComPtr< IEnumMoniker > pEm; pCreateDevEnum->CreateClassEnumerator( CLSID_VideoInputDeviceCategory, &pEm, 0 ); if( !pEm ) return; pEm->Reset( ); // go through and find first video capture device // while( 1 ) { ULONG ulFetched = 0; CComPtr< IMoniker > pM; hr = pEm->Next( 1, &pM, &ulFetched ); if( hr != S_OK ) break; // get the property bag interface from the moniker //

73

CComPtr< IPropertyBag > pBag; hr = pM->BindToStorage( 0, 0, IID_IPropertyBag, (void**) &pBag ); if( hr != S_OK ) continue; // ask for the english-readable name // CComVariant var; var.vt = VT_BSTR; hr = pBag->Read( L"FriendlyName", &var, NULL ); if( hr != S_OK ) continue; // ask for the actual filter // hr = pM->BindToObject( 0, 0, IID_IBaseFilter, (void**) ppCap ); if( *ppCap ) break;

} return;

void CFaceDetectDlg::ClearGraphs( ) { // Destroy capture graph if( m_pGraph ) { // have to wait for the graphs to stop first // CComQIPtr< IMediaControl, &IID_IMediaControl > pControl = m_pGraph; if( pControl ) pControl->Stop( ); // make the window go away before we release graph // or we'll leak memory/resources // CComQIPtr< IVideoWindow, &IID_IVideoWindow > pWindow = m_pGraph; if( pWindow ) { pWindow->put_Visible( OAFALSE ); pWindow->put_Owner( NULL ); } #ifdef REGISTER_FILTERGRAPH // Remove filter graph from the running object table if (m_dwGraphRegister) RemoveGraphFromRot(m_dwGraphRegister); m_dwGraphRegister = 0; #endif m_pGraph.Release( ); m_pGrabber.Release( ); m_eState = NotInitialized; } }

74