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

1

7.1. Caracteristici în funcţie de distanţă şi raţie.............................................................43 7.1.1 Detectarea sprâncenelor....................................................................................43 7.1.2 Detectarea ochilor.............................................................................................43 7.1.3 Detectarea nasului.............................................................................................44 7.1.3 Detectarea gurii.................................................................................................44 7.1.5 Modelarea conturului feţei ...............................................................................45 7.2. Alte caracteristici....................................................................................................45 7.2.1. Proprietăţi geometrice......................................................................................45 7.2.2. Transformări Fourier şi transformări Fourier discrete.....................................48 7.2.3. Transformările Cosine discrete........................................................................50 7.3. Decompresie wavelet a imaginilor feţei.................................................................51 7.4. Probleme în extragerea caracteristicilor..................................................................53 8. Căutarea în baza de date................................................................................................53 8.1. Abordări pentru căutarea feţelor.............................................................................54 8.2. Identificare folosind distanţele de caracteristici.....................................................54 9. Ghidul de aplicaţie segmentat........................................................................................55 9.1. Detalii ale implementării.........................................................................................55 9.1.1. Interfaţa 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 îmbunătăţiri ulterioare.............................................................................58 Referinţe.............................................................................................................................61 Anexa A - Algoritmi Matlab..............................................................................................63 Anexa B - Iniţializarea 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

2

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

dar are lipsurile ei: procesul de logare poate fi uitat. Fiecare capitol de la 3 la 7 prezinta una din fazele: Achizitia de imagine. Aplicatia de baza a acesteia se regaseste in camprile urmatoare: Jurnalul de logare sistemelor: Multe corporatii si institutii vor sa verifice activitatea angajatilor. exista deja doua sisteme pentru aceasta propunere in orasul de noapte Ybor City la Tampla (Fl. Si in cele din urma capitolul 9 ce contine concluziile luate. carte pentru logare – ce sa planifice). prin la extragerea caracteristicilor corespunzatoare figurii pana la identificarea subiectului. Identificarea persoanelor disparate sau a criminalilor Sistemul de recunoastere a fetei poate fi instalat intr-un spatiu public. ce probabil este deja instalata pentru scopul propus. in special segmentarea. Cea mai importanta parte este focalizarea fetei. Securitatea ATM Solutiile multor banci. Aceasta logare poate fi integrata cu un sistem de detectie a fetei. separatea acesteia de imaginea fundalului si alegera rezultatului correct dar pe scurt infatisarea intregului process de recunoastere a fetei de la imaginea capturata.) si la Oceanfront din Virginia Beach. pentru a identifica oameni disparuti sau cautati. Recunoasterea fetei (vedere de ansamblu) 2. in armata sau guvern se pot verifica persoanele care vor sa intre. 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. Aceasta de obicei se face manual sau folosind carduri magnetice bazat pe un sistem cand angajatul ajunge sau paraseste zona de lucru. 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. Capitolul 2 pe scurt prezinta fazele recunoasterii. 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. ATM-urile si altor aplicatii critice de siguranta ar putea cere recunoasterea fetei in masura in care acum se cer parole.1. care. localizarea fatei cu segmentare de imagine. Aplicatii Recunoasterea fetei este o aplicatie potrivita in multe inca nerezolvate sau nerezolvate optim probleme. Cautarea bazei de date existente Registrul prezent si bazele de date de recunoastere de fete umane ar trebui sa fie in intregime automatizate. Interfata om/computer 4 .Aceasta munca infatiseaza rezultatul obtinut in ultimul an. Aceasta este o solutie viabila.Desi la ora actuala nu lucreaza foarte bine. poate fi inselat si are nevoie de materiale extra pentru a fi facut (carduri magnetice personalizate. Urmatoarele capitole sunt structurate dupa cum urmeaza: Capitolul 1 prezinta introducerea cititorului la recunoasterea fetei si prezinta cateva din solutiile prezentului. 2. procesarea.

2. LILU98 propune o analiza de nivel al doilea. nu obtinuta prin prototipuri in mod coerent.1. Analiza Karrhunen-Loeve (Eigenfaces) Modul eigenfaces este o metoda des folosita si devreme implementata. Ei sugereaza folosirea combinatiei nivelului al doilea al prototipurilor liniare apartinand aceleasi clase de figure. Machete bazate pe vederi multiple BEYM93 prezinta o fata cu machete de la modelul vederilor multiple care acopera poze diferite ale sferei.6.2. 2. 2. Figura necunoscuta este scrisa ca suma importanta de baza a imaginilor.Metodele de baza de caracateristica vectoriala In LIAO00 doua filtre Gabor bazate pe caracteristica vectorilor sunt prezentate modurile.2. Una dintre modurile folosite sau propuse sunt prezentate in urmare.Solutii Solutiile problemelor de mai sus sunt prezentate in multe moduri partiale. Fiecare nivel da o aproximatie mai buna caracteristicilor pozitiei.2. 2.4. Prelucrarea fetei se incheie dupa 5 . Vectorul fetei este obtinut de la valorile regiunilor statistice. Importanta va caracteriza figura din imagine. Vectorii extrasi sunt clasificati intr-un model Hidden Markov. caracterizand fata.2.2. Un process de minimizare a functiilor energetice da valoarea parametriilor. Scopul lor este sa imbunatateasca recunoasterea fetei sub o noua conditie. 2.Statiile de lucru ar trebui sa poata sa recunoasca utilizatorii sau ar trebui sa captureze infatisarea utilizatorului.5. pentru a trata prototipurile coerent. Poza fetei detectata foloseste un mod piramidal de nivel 5.2.2. Unduieli In MENG00 un mod bazat pe unduieli este prezent. Dupa ce poza este evaluata. Dupa ce fetele au fost localizate tranformarile Gabor sunt aplicate regiunilor caracteristice. 2.3. Nu exista o metoda generala aplicabila. calculata de la imaginile bazei de date. In GARC99b si GARC00 este prezenta o metoda care extrage saisprezece unde intr-o descompunere de nivel doi. Este demonstrate ca rezultatele sunt unduieli fata de metodele conventionale ale machetei. 2. fetele pereche sunt determinate comparand transformarea de afin – conformand poza – regiunilor relevante ale imaginii. Este bazat pe analiza fetei intr-o baza de figuri. Trasaturile fetei sunt localizate utilizand aceste unde. Alte Programe In o poza este prezentata o apreciere FANS00. Acestea se schimba de la constrangeri la constrangeri.2. Modele deformabile Modelele deformabile sunt construite de mana de la curbe parametrice cu contur caracteristic. eliminand nevoia de lucru manual de calitate precisa.

Aceste faze sunt studiate impartite. este importanta segmentarea imaginilor in complementarea regiunilor si in fundal. Desi este un procentaj mare.2. si rezultatul lor este unit la punctual de intalnire dintre ele. 3. cativa pasi de prelucrare sunt bine veniti. imagini vopsite si rezultatele de la alte imagini digitale). Un sistem de retea neuronal este prezentat in ROWL99. 2. Putinele aplicatii functionabile in viata reala prezinta greseli mari. dar si in alte imagini sunt probleme de prelucrare. Fiecare faza contine una sau mai multe informatii prelucrand pasi. Sistemele de neuron incearca sa simuleze procesele competente ale creierului uman. imaginile dinamice sau statice salvate de web-cam. Segmenatrea este o faza importanta. Achizitia de imagine Aceasta faza capteaza ilustratiile folosind dispozitive de capturare periferice. Prelucrarea caracteristicilor Dupa ce o imagine este disponibila. Prelucrarea caracteristicilor reduce de obicei erorile imaginilor. Faze ale recunoasterii fetei Complexitatea problemei de recunoastere a fetei inseamna ca trebuie sa fie divizata in mai multe faze simple.1. Rezultatul imaginilor interpretate usor de catre oameni ori sunt prelucrate simplu in urmatorii pasi automati pregatiti. Deoarece procesul de competenta complexa este dificil de simulate. Rezultate Solutiile existente functioneaza in circumstante limitate. 3. 3. Un mod statistic cu clase separabile este prezentat in NAGA00. rezultatele lor sunt nesemnificative.3. Exista moduri evidente pentru a obtine imagini digitale: scanarea unei poze facuta de un aparat de fotografiat. In ZHAO00 autorii folosesc informatia conturului extrasa din umbre si simetria fetei in scop de recunoastere. Dar folosirea acestui pas poate reduce la extreme urmatoarele faze prelucrate cu effort. Imaginea poate fi obtinuta din mai multe surse. 6 . fotografierea cu camera de filmat de inalta calitate. 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. Acesti pasi garanteaza o prelucrare mai simpla in fazele urmatoare. niciuna dintre metodele cunoscute este acceptata ca o solutie viabila si generala. sau pentru a separa imaginea in obiecte cunoscute si examinate.3. care transforma faza de intrare in rezultatul dorit. Segmenatrea In recunoasterea fetei.ce fata si trasaturile sunt localizate si informatia este folosita pentru a evalua poza. 3. sau folosind alte surse (ex: zgarieturi manuale. ei aplica culoarea si histograma prelucrata. daca transfromarea poate fi realizata. Exista relatate 80% 90% succese recunoscute.

1. sau poate determina daca fata este in baza de date existenta. Cautare in baza de date Acest pas este principalul scop al prelucrarii. Noile camere complet digitale permit o viteza superioara si performanta de calitate. lungimile perimetrelor.cu calitate medie. Dispozitivul cel mai des folosit de aceasta categorie este camera web. Dispozitivele pot stoca imaginea in format digital. Rezolutia camerelor web este de obicei mai rea decat a fotografiilor scanate. acuratetea culoriilor) este in general rea. Senzorii CMOS. momentele. 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.sau CCD –cu calitate mai buna. simpla si exacta de identificat. etc. 7 .999Hz TV semnal cadre/secunda ) si o calitate buna a fotografiei. poate compara parametrul stability pentru a determina daca reprezinta aceasi persoana sau daca nu este aceasi persoana. Daca setul ales are o asemanare mai mare dacat minimul pragului atunci imaginea corespunde imaginii alese din aza de date. suprafetele regiunilor.5. 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. dar totusi rezolutia lor este mica. Aparatele analogice de fotografiat mai vechi. rezulta ca imaginea curenta nu corespunde nici unei identitati cunoscute din baza de date. acestea trebuie sa fie ordonate intr-o forma coerenta. centrul masei. Daca similaritatea ii sub prag . 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. Achizitia de imagine 4. Aceasta metoda este simpla. Dupa ce sunt extrase caracteristicile. dar de obicei este o verificare secventiala a fetelor pentru fiecare persoana disponibila din baza de date. 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. 4. Avansarile tehnicii in echipamente digitale permit folosirea eficienta a dispozitivelor video.3. dar principalul dezavantaj este timpul prelucrarii pozelor extrem de mult pana ajunge la imagine digitala. 3. parametrii transformati aplicati local sau global.4. Aceasta depinde de model. sau pot fi rezultate din altele.captureaza imaginile reale direct in format digital. Extractia caracteristica Caracteristicile imaginii sunt un set de valori statistice determinate de valori de stil. Caracteristicile pot fi distantate intre doua puncte. Aceasta poate capta in format digital ori fotografii sau filme (succesiuni de fotografii). care poate fi obtinuta din mai multe surse. Fotografia de intrare trebuie sa fie de format digital. urmata de alegerea identitatii celei mai similare cu imaginea interesata. regiuni limitate. ieftina si rezulta o imagine digitala de calitate buna. Calitatea imaginii (semnal/marja de eroare. Dezavantajul timpului lung al capturarii poate fi inlaturat folosind echipament capabil de a obtine fotografii in format electronic. ce poate descrie cu precizie o figura. Dispozitiv de captura Achizitia de imagine este primul pas al procedurii prelucrarii imaginii.

In mediu ambiental intunecos. Acestea difera in rezolutia dispozitivelor pentru generarea semnalelor – senzorii lor sunt CCD. daca au o interfata corespunzatoare.2. Acestea pot fi folosite pentru capturarea fotografiilor. pot functiona numai in conditii limitate. Alta conditie este lumina. fire-wire. camera cu senzori CMOS sunt considerate echivalente cu cele din categoria camerelor web. sau cea mai frecventa interfata USB. 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. analogic (compozita). aparatul de fotografiat nu poate executa o poza de calitate buna. Presupunem ca lumina cade in spatele si deasupra fetei. Conditiile sunt urmatoarele: . 4. Aparatele de fotografiat bune sunt considerate cele care au peste 3 mega-pixeli.Fata este descoperita .sau o pot transfera prin o largime de banda inalta la alt echipament digital (ca un computer personal). mai simplu de realizat si ma bine definite.Fata acopera mai mult de 40% din poza 8 . atunci imaginea capturata poate fi inutilizabila (ultima poza de la Figura 2 este prea intunecoasa). Schimbarea luminii. Algoritmii aplicati au unele nevoi. apoi nu poate fi folosita In aceasta lucrare am stabilt sa cerem conditii diferite. in sistem digital. mai putine constrangeri. Daca imaginea capturata nu este marita. Conditii esentiale ambientale Conditia ambientala a achizitii de imagine au multe influente asupra algoritmilor folositi in pasii urmatori. mai mult. Deoarece noi credem ca o calitate buna a imaginii imbunatateste rezultatul in aceasta lucrare folosind pentru captura camera digitala cu rezolutia standard 720x576 PAL. Figura 2. care trebuie sa fie bine definite. Acest lucru este satisfacut de 99% dintre aparatele de fotografiat: au cel putin unul in serie. Aparatele de fotografiat digitale sunt o tehnologie noua si au o dezvoltare rapida a dispozitivelor de capturare. Daca nu asigura conditiile satisfacator.

951 1 1 1 10 1 .1. Daca dispozitivul de capturare are calitate slaba sau conditile ambiante nu sunt favorabile. Aceste operatii variaza de la lumina simpla si culori intense la mucdie de detectare complexa si algoritmi de segmentare. apoi imaginea capturata trebuie sa fie sporita inainte ca alt process sa poata fi aplicat.1.Filtru mediu Acest filtru netezeste valorile pixelilor. Miezurile pot fi de mai multe tipuri. 1 ⋅  2 3 6 7 8 9 . 1 ⋅ 1 1 1 . unele dintre 1 1 1 1 1  1 1 1 1 1 0 1 0  1 1 11 2 1   1  Ele sunt : ⋅  1 1 1  0 1 1 11 2 1    1 1 1 1 1 16  25 1 1 1 1 1 . efectuand non-important sau de importanta medie a valorilor pixelilor vecini. 1 ⋅  2 4 2 . Daca ambianta este insuficienta pentru aceste conditii. Prelucrarea imaginii Pasul prelucrarii include operatiuni simple.1. care aplica operatii aritmetice simple la fiecare pixel al imaginii. Filtre de netezire Aceste filtre reduc semnalul de eroare al imaginii.- Aparatul de fotografiat este Subiectul identificat are tenul deschis la culoare (alb. 5. In cele ce vor urma vor fi prezente filtre frecvent folosite. 5. atunci rezultatul va fi necunoscut. rezultand o imagine cu caracteristici sporite. 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. 5. 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.

Filtru median Acest filtru este foarte util cand sunt erori prezente. Acesti pixeli particulari au o intensitate de valoare mai mult sau mai putin decat ceilalti din imprejurimile lor. 8. Filtru mediu.0 7. depinzand de pixelul vecin. 4.1 1. deasemenea. Rezultatul de 3x3 a filtrului mediu non-important este in dreapta 5.2. Intensitatea valorii pexelilor din matrice sunt sortate in crestere (2N+ 1)*(2N+ 1) in functie de ordinea sortarii.0 xxx 5. Alta lipsa al filtrului este ca netezeste nu numai erorile.2 2. Aceasta eroare modifica cu distribuirea intamplatoare unii pixeli ai imaginii. Exemplu de matrice Figura 4. Aceasta triere este foarte utila pentru a elimina pixelii cu valori care sa aiba o diferenta mare intre ei si valorile vecinilor.1. 3. 10 . O muchie ascutita dupa ce filtrul este aplicat va face imaginea rezultata cenusie. atunci vor fi prezenti deasemenea in rezultat. Figura 5. Rezultatul filtrului este luat de la 2 valori. Rezulta cu a-2-a kernel Filtrul mediu este folositor cand eroarea este distribuita uniform in imagine. Dupa cum este prezentat in Figura 7 unii pixeli pot sa fie schimbati. 3. Daca ei sunt distribuiti la intamplare.8 5. De exemplu in cazul unei matrice de 3 x 3 (N=3) daca pixeli vecini ai valorii 9 sunt aceiasi ca in Figura 6. 3. 6. 9 si acesta este rezultatul valorii pixelului current care va schimba din 9 in 4. Rezultatul sortarii este 2. 2.8 5.8 5. dar si detaliile folositoare.0 x x x x x Figura 3.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.6 4. Filtrul median aplica la fiecare pixel: (2N + 1)*(2N + 1) o matrice de masca larga. Imaginea cu erori este in stanga.

Algoritmul interativ rezolva (1).Figura 6 Figura 7 Pentru o imagine reala. Rezultatul imaginii filtrate in dreapta. regiunea umbrei de mijloc si regiunea intunecoasa pentru fundal. Filtru Median.Segmentarea Reddi Algoritmul original Reddi a aparut in [REDD84]. Imaginea originala se afla in stanga.1. originalul si imaginile rezultate arata ca in Figura 8. 5. Imagine cu erori de tip sare si piper in stanga. 11 . 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. umbrite si de mijloc.3. Filtrarea Reddi. Figura 8. Se poate vedea foarte bine ca filtrul fereste muchiile obiectelor. urmand imaginile intunecate.rezultand doua praguri de sensibilitate pentru lumina. mijloc si regiunile stralucitoare [OTSU79] Figura 9.

Detectarea de muchie Exista multi algoritmi utili pentru detectarea muchiei. care poate fi sursa de informatie de calitate extrasa din imagine.1. 5. Aceasi imagine pentru Figura 9. Derivarea este realizata [1 0] folosind rasucirea cu Kernel. Unii dintre ei au fost inventati de 10-20 de ani.Detectarea de muchie Prewitt Detectarea de muchie Prewitt este unul dintre cei mai simpli. Generalizarea segmentarii Reddi.5.Generalizarea segmentatiei Reddi In [MICE02] noi am generat algoritmul de segmentare Reddi.2.4. 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. Principiul lui este bazat pe derivarea imaginii bidimensionale.2. segmentata in 5 regiuni este prezentata in Figura 10. Derivarea foloseste numai 0 1/ valorile a doi pixeli vecini. vechi si rapizi algoritmi. Muchia este detectata daca valoarea derivatei este mai mare decat o valoare specificata – de obicei determinate din intregul set de valori derivate 12 . Regiunile intunecoase pana la cele luminoase sunt prezentate de la stanga la dreapta 5.1. altii sunt mai noi si difera de la cei mai vechi cu imbunatatiri mai putine sau mai multe. Figura 10.

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. Valoarea finala a derivatei sau cu o similara. Figura 13. -2 -1 -5 0 x X x X X x Figura 11. Poate fi vazut derivatul maxim care corespunde muchiei. Derivatele Y si X si suma celor doua derivate sunt prezentate de la stanga la dreapta 13 . 5.2.2. Rezultatele filtrului Sobel.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. rezultatul Filtrului Sobel este prezentat in figura 13. dar cu o forma calculate si salvata: Pentru matricea de la Figura 11.

derivate verticala. Fata are textura mai putina a imaginii.Detectarea de muchie SUSAN De la algoritmul detectarii de muchie de baza la alti algoritmi mai mult sau mai putin similari au fost derivarati. n este comparat cu un prag de sensibilitate fix g.Figura 14. 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. Muchia detectorului de masca SUSAN poate fi rotunda sau rectangulara. O masca circulara (avand un pixel de centru cunoscut ca “nucleu”) este prezentat ca cinci pozitii de imagini. Suprafata sau USAN contine multe informatii despre structura imaginii.y0) rezulta importanta valoare n pentru fiecare pixel: Apoi. care este stability la 3nmax/4. 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. Principiul SUSAN a fost prezentat in [SMIT95a]. Raspunsul de muchie initial este atunci crea folosind regula: 14 . Forma unica [FLEC94] prezinta un algoritm de valoare pentru textura mai multa a imaginii. Acest concept ca fiecare punct din imagine avand asociat cu el o suprafata cu luminozitate similara este baza principiului SUSAN. Cele mai bune rezultate pot fi obtinute cu mai multe masti complexe circulare. suma a doua directii derivate.3. Aceasta este efectiv regiunea descoperita la scara mica.4 pixeli (dand o masca de 37 pixeli). Razele de cerc propuse sunt [SMIT95] de 3. Univalue Segment Assimilating Nucleus. Filtrul Sobel: imaginea originala. La inceput o ecuatie simpla determina comparatia: (3) De la c(y. imagine dupa ce sa aplicat reducerea muchiei 5. Algoritmul de detectare a muchiei foloseste o fereastra predeterminata centrata pe fiecare pixel din imagine. Aceasta suprafata a mastii este cunoscuta ca “USAN”. derivate orizontala. unde nmax este valoarea maxima pe care o poate lua n.2. asa ca accesul tine cont ca aceasta este mai valoroasa. Cea care face acest lucru este detectarea de muchie SUSAN. suma pragului de sensibilitate(valoarea maxima 7*).

Detectarea de muchie SUSAN. N. 5. Harta de nivele gri nu schimba vederea de ansamblu a imaginii. rezultand un contur bun de imagine. 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).3. matricile R si imaginea pragului de sensibilitate R Acest pas urmat de reducerea algoritmilor ca [SMITH95b].Figura 15.Egalarile de histograma Egalarile de histograma au incercat adesea sa mareasca o imagine [SHAP01]. 15 . 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.

imaginea netezita ultima de jos 5. Transformarea morfologica Operatiile de morfologie binara transforma o imagine de intrare binara B folosind o structura a unui element S.5.1. dar o mult mai mica imagine binara. Frecventele culorilor au diferite histograme construite [SHAP01] sau domeniile color stiute anterior sunt aplicate sa obtina regiune dorita. deschiderea si inchiderea exemplului aplicat matricei binare de la Figura 18 poate fi vazuta la Figura 19.4. care este alta. 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. HIS. Structura elementului reprezinta o forma. CMY.Segmentarea culorii de baza Segmentarea culorii de baza foloseste informatia imagini color. Figura 17. Unele elemente de structura sunt prezentate in figura 17. Imaginea originala si histograma de sus. Aceasta poate folosi una sau mai multe spatii de culori disponibile (RGB.Figura 16. YIQ si YUV). Segmentarea culorii este folosita pentru detectarea fetelor. HSV. poate sa aiba orice marime sis a aiba structura arbitrara [SHAP01]. Egalarea de histograma. 5. dilatarea. 16 . Acest subiect este tratat detaliat in sectiunea 6.

Transformari morfologice 17 .Figura 18. Exemplu de matrice Eroziunea Dilatarea Deschiderea Inchiderea Figura 19.

Dup ace toate aceste au fost incercate. o valoare aleatoare intre 0 si 1 este adaugata inainte de operatia logarithm. pentru a inlatura influenta luminozitatii imaginii. Textura bazata pe segmentare [GUOL00] poate fi o alternativa potrivita. B) si aceasta valoare este scazuta de la fiecare valoare a culorii. Mai intai. Alta histograma bazata pe metode este prezentata in [SHAP01]. HSI sau suprafata HSV spatiile sunt mult mai stabile la variatiile luminii.1. G. altele incearca sa extraga regiuni si obiecte specifice. Pentru pasul al doilea sunt date doua alternative. pot fi reprezentate doar de modele complexe. Problema segmentarii este definite ca: este data arbitraroimagine color. parul. ochii. In viziunea computerului doar ocazional este disponibila picture 3D. Primul pas. Principala problema a culorii bazata pe segmentare este variatia valorii culorilor depinzand de luminozitatea imaginii. posibilele regiuni ale fetei sunt selectate. care sunt mai putin eficiente pentru suprafete mari – acestea vor fi aplicate regiunilor fetei detectate si vor fi folosite in algoritmul detectarii fetei.6. restrictiile culorilor prezentate in [FLEC96]. 6. Multe cercetari au fost facute pe aceasta problema. Pentru oameni aceasta este usor de facut diferenta dintre culorile specifice ale fetei si ale fundalului. Tiparele fetei si conturul fetei specific sunt caracteristici complexe. Conceptii diferite sunt prezentate in literature. Unele dintre ele ([AMIT98]) trateaza cazuri mai generale. Dispozitivul de capturare are erori. [GARC99b] si [FLEC96] autorii au propus diferite sortimente ale culorii componentelor(in spatiile de culoare diferite) care caracterizeaza fata. In [GARC99a]. Multe lucrari se ocupa cu segmentarea imaginii. In acest mod am folosit logaritmul RGB suprafata de culoare: aceasta suprafata de culoare comparat cu RGB. fata gasita in imagine trebuie sa fie gasita si separate de fundal. asa ca aceasta metoda poate fi folosita rar. Segmentarea In acest capitol este prezentat algoritmul segmentarii. folosind vederea tridimensionala si cunoscand conturul specific si tiparul fetei. intensitatea minima a fost gasita in fiecare zona colorata (R. a fost aleasa una similara cu fata. Culoarea bazata pe regiuni selectate In primul pas folosin informatia culorii a fiecarui pixel. una mixta a fost aleasa. Fata are texturi particulare in zone specifice. introducand un comportament automat nedeterminat al algoritmului care egaleaza cu niste culori inconstante ale apratatului de fotografiat: 18 . Dupa ce mai multe moduri au fost incercate. Pe luminozitate vectorul normalizat operatia log10 este aplicata. Pielea. nasul pot fi identificate bazate pe textural lor si locatia corelata a acestor caracteristici poate fi sursa localizarii fetei in imagini arbitrare. pentru a compensa acestea. In [WUHU00] autorii folosesc 6-D RGB si suprafata de culoare HSV utilizeaza tehnici de analiza discriminatorii multiple si metode probabilistice. gura. 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.

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. Codul sursei din Matlab al intregului algoritm este prezentat in Appendix A. Conditile de mai sus sunt facute pentru a fi conditii slabe.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. astfel conditia corespunzatoare pentru textura este: (d)Texture < 1 Intersectia lui (a) … (d) conditiile determina posibili pixeli ai fetei. Rg este diferenta lui LR si LG. Figura 21. pentru a garanta ca majoritatea fetei este selectata. 19 . 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. Rezultate al algoritmului extragerii culorii sunt prezentate in Figura 20. Figura 22 si Figura 23.

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

Masca de textura. Masca Rg. Masca I. imaginea rezultata dupa aplicarea mastii imaginii originale de la stanga la dreapta. Masca de textura. Masca By. imaginea rezultata dupa aplicarea mastii imaginii originale de la stanga la dreapta. 21 . . Culorile diferite logaritmice sunt standarde bune in extragerea culorii asemanatoare fetei. Imaginea originala. Masca By. Imaginea originala. Extragerea culorii. Masca Rg. . Extragerea culorii. Masca I. de sus in jos Figura 23.Figura 22. de sus in jos In aceasta parte a algoritmului putem duce la niste concluzii 1.

data de filtrarea mediana poate fi superioara ca performanta rezultatului. in acest algoritm fiecare pixel primeste un cod format dintr-o valoare 22 .2.2 Prelucrarea anticipata a formei fetei După ce regiuni posibile ale formei fetei sunt aflate urmează doi paşi: selectează zona cea mai mare si alege din zona selectata pe accea care formeaza o imagine completa. figura 21. Vecinatatea Pixelului Inainte ca algoritmi sa fie descrisi in amanunt trebuie sa explicam diferenta intre 4 si 8. stanga. Algoritmul urmator va lua in calcul doi pixeli parte a unei singure zone daca au o cale de 8 pixeli de legatura intre ei. 4.deasupra si dedesuptul pixelului curent . Aceste zone neselectate trebuie sa constitue parte a regiunii invecinate. astfel umplandu-se zonele care nu se invecineaza. ochii spacenele si fruntea au o culoare diferita de restul fetei). dar si alte regiuni colorate ca ale fetei. 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.2. dar folosirea lor nu este intotdeauna obligatorie si efortul lor calculat. dar nu destul pentru gasirea fetei in imagine. figura 22 si figura 23 parte din fata poate contine zone negre (unde gura. cei 4 vecini de legaruta al unui pixel sunt cei 4 pixeli din dreapta. Concluzia finala este ca aceasta culoare bazat pe detectare este buna. Pentru fiecare pixel se determina culoarea. Conditile (a)…(d) detecteaza nu numai zona fetei. Daca avem campul din fata o legatura de 8 apoi parte complementara a imaginii trebuie sa fie o legatura de 4 pe verso. cei 8 vecini de legatura ai unui pixel sunt cei 8 pixeli inconjoara. Conditile Rg si By sunt folositoare pentru selectarea punctelor fetei. De accea s-a utilizat un nou algoritm combinat. 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. 6.1 Selecteaza mai complet umplutura regiuniei. Culoarea pixelului inseamna grupul de numere caruia ii apartine. dar au unele deficiente: doar culorile deschise ale fetei sunt selectata (fara ochi. 848 44 848 Figure 24. Texturarea imaginilor poate fi folositoare in observarea regiunilor netezite ale fetei.1) Mai este necesara o observatie dupa cum se poate vedea in figura 20. sprancene sau par) si detecteaza alte regiuni care au culori similare cu ale fetei. Toti pixelii care formeaza o regiune au acceasi culoare. 6. Se poate aplica apoi metoda de realizare pas-cu-pas a unei regiuni. Cel mai usor de realizat aceasta este aplicand algoritmul de umplere in cascada. 3. Acest algoritm a fost gandit pentru a face toate calculele deoadatautilizand structuri de date suplimentare. 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. deasemenea. Aceasta metoda de exprimare este buna dar nu optima deoarece necesita doua faze.

pixelii de bordare sunt pixeli de fundal care se afla pe marginea imaginii ori au vecini de margine de legarura 4. Dupa unificare culoarea dominanta se va transforma in culoarea mai slaba. 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-i de mascare ori fundal : a. Numerele pixelului celor doua zone se vor insuma. Operatiile facute depind de fiecare faza de felul pixelului . in exemple ei sunt marcari cu 0-uri in celule de culoare alba. Daca NE_N si W_NW sunt pixeli de fundal(fig 26 b) atunci culoarea pixelului este una noua. Sunt trei variante (figura 25) • Daca pixelul este de mascare culoarea sa este codata numar intreg pozitiv.numerica. In exemple semnul ? este folosit numai daca culoarea pixelului nu este cunoscuta. In acest caz cele doua zone trebuie unite iar culoarea pixelului va fi culoarea vecinatatii. In momentul cand pixelul este iontarit (bolded) atunci cand culoarea pixelului din centru este in procesul de cautare. Daca N-NE sau W-WE sunt pixeli de fundal (fig 26 c) atunci culoarea pixelului nu este de fundal. Acest pixel va fi primul pixel al unei noi regiuni. 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. 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 . • Daca pixelul este de fundal de bordare atunci culoare lui este 0. 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 exemple ei sunt marcati cu numere pozitive in celule gri.) 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. • Daca pixelul este de interior atunci culoare primeste codificare cu numere intregi negative.

Acesta se va pastra pentru toti pixelii de pe un rand. Eficienta algoritmului este ∪( n ⋅ m ) ⋅ ∉ 1 unde ∉1 reprezinta complexitatea setului add. 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. 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. Dupa acest pas de marcare pixelii sunt inconjurati de regiuni de mascare inconjuratoare.) Pentru pixelii de fundal Intru cat umplutura de legatura 8 este realizata.cercetarea din structura de stabilire are nevoie de o performanta intre ∪ ( 1) si ∪ n 2 dar aceasta operatie fiind aplicata numai in stadiul fina. dand astfel posibilitatea stabilirii valorilor de bordurare. 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. vom verifica numai vecinii supriori si cei din stanga pixelului de fundal. unde este determinat rezultatul mascariisi foloseste algoritmul de restrangere a caii ea este considerata aproximativ ∪ ( 1) astfel ∪( n ⋅ m ) aliniamntul crescand cu 24 . b. Daca cei doi vecini sunt puncte de mascare(fig27e) atunci o noua zona interna va debuta. unify(adaugare unifica) aceste informatii pot fi implementate cu o structura de datede stabilire folosind pointerul de stabilire parentala [CRET92]. 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. In acest caz daca este un pixel de bordurare numai de interior este mascata acela este de bordura. 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. 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.urmatoare pixelii vor folosi culoarea corecta a pixelului superior. Acest algoritm are o prformanta de inserare de ∪ ( 1) .

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. 25 .marimea imaginii. Versiunea matematica de laborator a algoritmului este prezentata in Anexa A.

26 .

Numarul de pixeli in fiecare coloana este o informatie utila. Se intampal de multe ori sa se selecteze mai mult decat o fata sau sa nu se selecteze intreaga fata. deasemenea. Deci folosind aceasta mascare se obtine imaginea definita. ci numai o parte. • 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.b) si diferenta (fig30c). 27 .6. Aceasta mascare poate sa nu fie rezultatul final dar da informatii utile pentru urmatorii pasi. 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. Mai intai se va proceda la selectarea stanga/dreapta. T2 este 40% din maximumul numarului de pixeli al coloanei.2 Minimalizarea regiuni de interes Miscarile care au aparut din implementarea pasului anterior nu sunt intotdeauna corecte.2. 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 . Sus/jos sau stanga/dreapta deci selectam marginea sunt similare.

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.la acest punct unde conditiile nu se potrivesc exista distante laterale primare aratate in fig30 cu linii de interior. 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 .

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

1.1)ambele generand valori in gama 0 . Acest component va incerca sa selecteze zona sub forma de elipsa fara alte concavitati.6]] care este de fapt proportia dimensiunilor standard ale fetei.8 3 (vezi Fig 34b) produce doua mulaje. 30 .15 ∧ S < 0. • 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 − σ .325] care au componenta • se alege valoarea minima σ a coeficientului.30 ∨ H > 0. • Daca raportul inaltime/latime este in relatia [1.2. Se poate observa ca se analizeaza mai mult decat fata. M + σ ] regiunea maxim umpluta(vezi 6. Al doilea component genereaza O daca zona are forma de cerc sau de elipsa. Altfel regiunea selectata va fi mai mare decat fata. 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. care rezultat reduce selectia V .6.2. Prima genereaza O daca orientarea este 90% insemnand ca regiunea corespunde unei fete orientate vertical.3.1 Aproximarea fetei. 1. M + σ ] regiunea maxim umpluta(vezi 6.1 cu 0 indicand o alegere mai buna.1 . Observatie : ecuatia de mai sus are doua componente de valoare in zona [M − σ .1) fiind selectata si urmatorii parametri verificati : • daca suprafata regiuni este mai mica de 70% din intreaga fata. 0.70 2 (vezi fig 34a) si H < 0.02 imaginii de mascare pentru σ ∈ [0. Astfel este necesar sa facem referire la o serie de alti pasi si mulaje : A ) mulajul rezultand din ecuatia S > 0.

In aceasta faza se elimina regiunile neportivite. marginile sunt constituite din ultimele randuri cu pixeli de mascare. 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. daca ascendenta monotona de pe pereti este intrerupta. In unele cazuri noul mulaj contine concavitati cu suisuri si coborajuri. 31 . este interpolata liniar folosind cele doua puncte de margine (fig 37a). C) de tedermina mediul M si derivata standard a saturatiei pixelilor selectati.3. Algoritmul de netezire este urmatorul : se determina media histogramelor. atunci alinierea dintre ultimul punct descrescator si urmatorul punct mai mic. care este de fapt centrul fetei. Selectarea degajarilor superioara si inferioara se simplifica. Figura 35 arata un caz unde un ochi lipseste de pe fata.B) suprafata maxim umplutura se determina pentru mulajul care rezulta (fig 34c). daca ele fusesera introduce in faza anterioara. Adanciturile sunt in mod liniar interpuse : se determina minimumul histogramei. Partile laterale stanga si dreapta sunt selectate ca in primul caz.2 Producerea celei de a doua fete.

urmand sa unim cele doua profile dand forma finala a mulajului (fig 36). 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).Profilul este netezit cu un filtru lat de 10 pixeli (fig 37b). 32 . Aceeasi pasi sunt parcursi cu profilul din dreapta.

6.3 Concluzii ale acestei abordari.3. 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 . Rezultatele acestei abordari au fost bune(fig38).

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

Profilele separate nu sunt continue. Profilele separate sunt prezentate in figura 44. Pasul urmator va face sa crestem fiecare profil de la capatul sau pan ace intaneste alt profil. 37 .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. Profilele gasite delimiteaza suprafata fetei care in pasul urmator va fi selectata sau nu. celelalte fiind considerate p[rea scurte. Cresterea va fi pixel cu pixel in directia tangentiala profilului Algoritmul este mult mai complex decat o pot face cateva randuri de exprimare. Profilele gasite pot fi vizualizate in fig 45. dar se scoate evidenta ideea princiala. Toate profilele cu lungimea mai mare de 5 sunt depozitate.

• casuta de legatura a regiunilor . Este foarte important dar cel mai important si mai putin formulat subiect . Ea este aflata pe bara experimentala si a fost dezvoltata pe baza de cunoastre sei observatie a structurilor si proprietatilor fetei. Cresterea este formata de restrangere care foarfeca regiunile care au vecinii mai mult neselecati. • valorile medii ale componentelor R. Se vor determina de asemnea fiecare regiune invecinata si numarul de pixeli de granita pentru regiuni.6. In continuare prezentam abordarea acestui subiect. adica regiunea fundal. rezultata din aflarea profilului unde pixeli de margine 5 nu sunt marcati cu toate ca ei sunt puncte ale profilului inconjoara toate celelalte regiuni. Regiunile gasite in imagine vor fi caracterizate ca regiuni fata sau fundal.4. Regiunea care poseda un pixel in stanga sus va fi considerata speciala.2 Selectarea regiuni. Aceasta zona. 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 . • 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. Fiecarei regiuni I se aloca un identificator unic explicandu-i-se un algoritm de culoare liniar. G si B ale regiunii . Aceasta faza incepe cu identificarea regiunii.

Dupa ce determinam acest centru mult mai exact recal . 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. 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. Pe curba de selctie se calculeaza casuta de legatura a fetei.culam din nou centru regiunilor cu internsitate corecta si centru cel mai aprorpait de raza maxima.valoare maxima intre regiunile invecinate disponibile. Acest algoritm anexeaza regiunile de selectia curenta pana cand vor fi adaugate mai multe zone. Apoi centrul masei este recalculat drept centru zonelor cu intensitati mai mari decat minimumul calculat. drept minimumul distantei dintre centrul zonei de margine si se va corecta ca in primul caz. Se reda in continuare cresterea regiunii initiale. trebuie sa foloim pe fiecare data formula altfel pierdem. 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. Regiunile mic si selectate sunt unite si li se dermina proprietatile iar vecinii sunt combinati. dupa care raza este recalculata la valoarea minima. Rezultatul selectiei de regiuni este aratat in figura 48. 39 . Aceata faza este urmata de faza selectiei regiunii.

3 Netezirea conturului. Astfel. 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. Exagerarea prezinta urmatorii pasi: a. Mulajul rezultat candva contine regiuni neinsemnate care in mod nevoit au fost sterse sau adaugate fetei.6.) conturul mulajului se determina ca distanta dintre punctul de contur pana la centrul masti(mulajului).) profilele interioare sunt umplute b. in faza finala conturul fetei poate fi marit. Distanmta va fi retinuta pe un vector de lungime MAX_PI unde elementul i inmagazineaza distanta de contur din i. 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 .4.

)Pentru unele valori θ Ri poate fi nemodificat daca conturul este foarte varialbil aceste valori sunt interpretate liniar folosind primii vecini cunoscuti stanga dreapta. in acest caz avand de ales valoarea cea mai apropiata mediei Ri calculate anterior c.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. 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 .

42 . e.)Acesti pasi sunt urmati de o mediana de 31 de pasi lata si o filtrare medie lata de 101 pasi.) apoi Ri regenreaza conturul imaginii(fig 52) si de pe conturul masti rezultand imaginea finala(fig 53) Figura 68. conturului si fata rezultata. Filtrul median netezeste gaurile din contur si filteaza marile adancituri si ridicaturi de pe contur. f. culorile lor medii.d. zona centrala initiala rezultatele cresterii. descresterii.70 si fig 71 in anexa D arata secventa de pasi din profilul susan.)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.) in fine acest rezultat este filtrat din nou printr-o filtrare mediana de 31 de pasi lata si una de 100 pasi lata. g. Imagionile contin (de sus in jos de la stnga la dreapta zonele de delimitare ale profilelor laterale.

Fiecare algoritm are o zonă specifică de interes (ROI) care defineşte aria de căutare pentru rezultatul algoritmului.2 Detectarea ochilor Regiunea de interes pentru localizarea ochilor se află chiar sub sprâncene. Dacă se găsesc mai multe caracteristici căutarea feţei va fi mai uşoară si mai exactă. Fig 54 Exemplu de ROI al sprâncenelor. apoi am încercat algoritmi de design pentru găsirea poziţiei lor. segmnetat cu un filtru Reddi modificat 7. Mai întâi sunt prezentate câteva caracteristici care au fost identificate şi extrasee în proiectul DALT. Poziţia verticală a ochiului (y_eye) este următorul maxim al Aeye. Caracteristici în funcţie de distanţă şi raţie Mai întâi am încercat să extragem cele mai importante caracteristici.4/2001 şi apoi sunt prezentate alte metode posibile. 7.1.1. 7.1 Detectarea sprâncenelor Un filtru Reddi cu trei praguri este aplicat în ROI-ul sprâncenelor (fig. calculat în pasul anterior. Extragerea caracteristicilor Ţinta imaginii segmentate regăseşte faţa în imagine. 43 . ROI este determinată în funcţie de parametrii deja calculaţi. Scanând de sus în jos. Ca rezultat. În faza de extragere a caracteristicilor această regiune va fi verificată pentru a se găsi caracteristici.1.7. se obţine coordonata y_eyebrows.2. Maximul acestei medii este calculat localizând poziţia liniei verticale a sprâncenelor. Această poziţie se găseşte căutând în sus o variaţie de mai puţin de 85% din maximul precedent. Principalul scop al acestei etape esă extragă cât mai multe caracteristici ale feţei. 54). Aeye –ul mediu este format peste 5 linii orizontale.

stânga şi dreapta ROI. Folosind aceleaşi tehnici de segmentare Reddi.1. 57 ROI segmentate Reddi ale gurii Căutând poziţia cea mai din dreapta şi cea mai din stânga a pixelilor întunecaţi într-o bandă îngustă în jurul poziţie verticale găsite pentru gură se găsesc coordonatele colţurilor gurii (x_mouth_left. Imagini ale gurii precum cea din fig 57 dreapta produc rezultate eronate. y_left_eye_down. x_left_eye_left. Poziţia verticală a nasului (y_nose') se află selectând numărul maxim de pixeli întunecaţi pentru fiecare linie orizontală în imaginea filtrată Sobel a feţei: nasul formează o margine bine conturată. Pixeli cei mai întunecaţi şi cei mai spre dreapta şi stânga sunt colţii ochilor (x_left_eye_right. marginile nasului (x_nose_left. x_right_eye_left. x_nose_right) sunt găsite căutând în ROI sfârşitul zonei negre a găurilor nasului (vezi fig. x_right_eye_right. 56 ROI segmentate Reddi pentru determinarea caracteristicilor orizontatele ale nasului 7. poziţia verticală a nasului e apoi calibrată. 44 . pentru regiunea întunecată a buzelor. Pentru a minimiza erorile de detecţie generate de o iluminare neuniformă a feţei. x_mouth_right). Fig. Fig. printr-o scanare sus-jos a ROI. y_right_eye_up.Poziţia orizontală a centrului ochilor (x_eye_left şi x_eye_rigth) precum şi axa de simetrie a feţei (x_symmetry) sunt detectate precum în [ASK98]. 56).3 Detectarea nasului Locaţia orizontală a nasului este definită de axa de simetrie a feţei [AASK98].1. [BRUN93]. se află împărţind gura în două regiuni. Aceste două coordinate preliminare ale ochilor sunt folosite în continuare pentru a detecta colţul ochiului. Ca rezultat. Procedura presupune că forma gurii este aproximativ orizontală. am definit regiuni separate de interes pentru segmentarea Reddi (fig 55). Mai întâi se localizează poziţia verticală (y_mouth). y_right_eye_down) Fig 55 Exemplu de segmente Reddi ale ochilor 7. precum în figura 57.3 Detectarea gurii Procedura de detectare a gurii este similară cu cea pentru nas. Poziţia orizontală a gurii şi implicit dimensiunea ei. Mai apoi. y_left_eye_up. noua poziţie verticală a nasului (y_nose) e calculată ca linia ce separă zonele negre ale găurilor nasului în două regiuni simetrice.

x_left_at_eyes). Aria regiunii este 5692. Centroid-ul este locaţia medie a pixelilor în setul R.2. cutie de restrângere. Acestea pot rezulta din calcule locale sau globale. Această imagine va fi folosită pentru exemplificarea proprietăţilor prezentate în paragraf. x_left_at_mouth). momente. Alte caracteristici Şi alte caracteristici pot fi extrase din faţă. la nas (x_right_at_nose. 7.7. DCT şi wavelet pot fi aplicate zonelor locale şi globale. Deşi x şi y sunt întregi şi sunt numere reale: 45 .2. Imaginea din stânga este o imagine alb negru cu o singură regiune. perimetru. aria.1. x_left_at_nose) şi la gură (x_right_at_mouth. 7. am introdus coordonate suplimentare pentru detectarea grosimii feţei: la ochi (x_right_at_eyes. Imaginea originală a centroid-ului.5 Modelarea conturului feţei Pentru o caracterizare mai bună a feţei. pentru a creşte gradul de individualitate a modelelor feţelor. Se presupune că pixeli sunt de formă pătratică. În imaginea din dreapta ete o cruce care marchează centrul imaginii. Transformările Fourier. Caracteristici locale sunt: centrul masei. orientare. Procesul e o reducere simplă a căutării marginii feţei în imaginea Sobel la nivelele corespunzătoare.1. de asemenea. Aria lui R este: sau numărul de pixeli din regiune. În paragraful următor vor fi prezentate proprietăţile geometrice ale regiunii R. Proprietăţi geometrice Fig 58.

setul rezultat de pixeli de perimetru este 8conectat.(yk-1. inclusiv primul si ultimul. Când se foloseşte 4-conectivitatea pentru a determina dacă un pixel din regiune este conectat cu un pixel din afara regiuni. Un pixel al unei regiuni este un pixel de graniţă dacă are câţiva pixeli vecini care sunt în afara regiuni. Când se foloseşte 8-conectivitatea pentru a determina dacă un pixel din regiune este conectat cu un pixel din afara regiuni. Apoi lungimea perimetru |P| este definită ca: Cu aria A si perimetrul P definite. În dreapta este perimetrul de 4-conectivitate a unei regiuni cu lungime.….x0). O simplă definire a unui perimetru a unei regiuni fără găuri este setul pixelilor graniţei interioare. iar în stânga este perimetrul de 4-conectivitate a unei regiume cu lungime Lungimea calculată |P| a perimetrului P. o măsură comună a circularităţii regiunii este lungimea perimetrului la pătrat împărţită la arie: E de folos să ai idee unde se află regiunea într-o imagine.xk-1)}. jos. Perimetrii. Aceasta este motivaţia definiţiei perimetrului 4 şi 8 –conectivităţii: Fig. 59. setul rezultat de pixeli de perimetru este 4conectat. care e un dreptunghi cu părţi orizontale şi verticale care îngrădesc regiunea si ating cele mai extreme puncte de sus. pixeli din P trebuie ordonaţi într-o secvenţă P={(y0. stânga şi dreapta. Un concept folositor este cutia de restrângeri. fiecare pereche de pixeli succesivi din secvenţă fiind vecini.Lungimea perimetrului P a unei regiuni este o altă proprietate. 46 .

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 0ş în sens invers ceasornic faţă de axa orizontală şi are o lungime de minoră are o lungime de . 60 Cutie de încadrare Momente spaţiale sunt adesea folosite pentru a descrie forma unei regiune.Fig. µxx măsoară variaţia orizontală. • Momentul de ordinul al doilea orizontal. Ele sunt definite după cum urmează: • Momentul de ordinul al doilea de verticală. atunci axa majoră este orientată la un unghi de 90ş în sens invers ceasornic faţă de axa orizontală şi are o lungime de • . Dacă regiunea este o elipsă. Axa minoră are o lungime de Dacă µyx=0 şi µyy<= µxx. iar µyx măsoară variaţia orizontală şi verticală. Axa 47 . Momentele spaţiale secunde au valoarea şi importanţă pentru regiunea de oricare formă. deoarece sunt invariabili la traziţie şi schimbare de scală a unei forme 2D. • Momentul de ordinul al doilea amestecat Deci µyy măsoară variaţia orizontală. Aceste valori sunt adesea folosite ca descriptori de formă. Există trei momentele spaţiale de ordinul al doilea al unei regiune.

care deja au semne pentru toate caracteristicile detectabile. Transformarea Fourier are un rol important în zona aplicaţiilor de procesare a imaginilor. Reţeaua wavelet detectează forma dintr-o faţă necunoscută. mărire şi compresare.2. folosind un set de feţe cunoscute. Transformata Fourier este definită de ecuaţia (10). Aceşti algoritmi sunt creaţi pentru analiza expresiilor. Axa minoră are o lungime de • Dacă µyx!=0 şi µyy<= µxx.2. atunci axa majoră este orientată la un unghi de în sens invers ceasornic faţă de axa orizontală şi are o lungime de . inclusiv analiză. restaurare. atunci axa majoră este orientată la un unghi de în sens invers ceasornic faţă de axa orizontală şi are o lungime de . 48 . 7. Transformări Fourier şi transformări Fourier discrete Transformările sunt ustensile de extragere a caracteristicilor foarte eficiente. pe baza documentaţiei Matlab. dar informaţia formelor caracteristicilor feţei poate fi folosită foarte uşor caă proprietate globală a feţei. Pentru detectarea unui proprietăţi locale se poate folosi reţeaua wavelet precum în [FERI02]. Axa minoră are o lungime de Fig.• Dacă µyx!=0 şi µyy> µxx. 61 Elipsa înconjurătoare În [TIAN00] sunt prezentate câteva metode pentru detectarea caracteristicilor şi extragerea lor. Acestea vor fi prezentate pe scurt.

Lucrul cu transformata Fourier pe calculator implică de obicei o formă a trasformatei cunoscută sub numele de transformata Fourier discretă (DFT). F(ω1. valoarea F(0. F(ω1. de obicei e afişată doar în acest interval.n). (11).0) este numită coeficientul DC. Unităţile lor sunt radiani/sample. Valorile sunt coeficienţii DFT F( p. • Există un algoritm rapid pentru calcularea DFT cunoscut ca Transformarea Fourier Rapidă (FFT). În figura 62 sunt câteva imagini şi transformata Fourier corespunzătoare cu M=N=152.n). 49 .(10) Variabilele ω1 şi ω2 sunt variabile de frecvenţă. q ) ai f(m. DFT este de obicei definit pentru o funcţie discretă f(m. relaţia bidimensională M-N a DFT e dată de ecuaţia (11). în particular.n) care e nonzero doar pe intervalul finit 0 ≤m ≤ M −1 şi 0 ≤n ≤ N −1. de perioadă 2π. Coeficienţii rezultaţi din DFT nu pot fi folosiţi pentru a caracteriza proprietăţile regiunii. folosirea acestei forme: • Intrarea şi ieşirea DFT sunt discrete.ω2) este des numită reprezentarea domeniului de frecvenţă a f(m. manipularea pe calculator. Din această cauză.ω2) este o funcţie de valoare complexă care este periodica atât în ω1 cât şi în ω2. cea ce e bine pt. Sunt 2 motive pt.

2. majoritatea informaţiei semnificative este concentrată în doar câţiva coeficienţi ai DCT. Transformările Cosine discrete DCT are proprietatea că. DCT bidimensional a unei matrice A de dimensiuni M-N este definită astfel: (12) unde 0<=p<=M-1 şi 0<=q<=N-1.3. pentru o imagine tipică. DCT este la baza algoritmului de compresare internaţional a imaginilor cunoscut sub nule de JPEG. Sunt prezentate 5 imagini si transformata Fourier de 512x512 7. Imagini DFT. iar inversa sa este: 50 . Din acest motiv este folosită în aplicaţii de compresie a imaginilor. DCT este o transformare inversabilă. Valorile Bpq sunt numite coeficienţii DCT a lui A.Fig 62.

unde αp .4 şi 5 coeficienţi DCT. Ei aplică o decompresie arbore quad pe 2 nivele a imaginii. Tabelul 1 prezintă nevoile de stocare a imaginii dacă informaţia gri este înlocuită cu coeficienţi DCT. aşa că raţia de compresie este de 2. Aceste funcţii sunt numite funcţii de bază a DCT. Decompresie wavelet a imaginilor feţei În [GARC00] autorii folosesc decompresia wavelet a feţei. αq sunt aceleaşi ca în ecuaţia (12). Tabelul 1 Evaluare a compresiei imaginii cu coeficienţi DCT 7. Figura arată imaginile reconstruite folosind 1. Coeficientul DCT Bpq.4 sau 8 ori mia mică (procentul este mai mare) decât valorile din tabelul 1. Figura 63 prezintă un exemplu. Se poate observa că ultima imagine (5 coeficienţii) este aproape identică cu originalul.3. 63. Inversa DCT poate fi interpretată că orice matrice AMN poate fi scrisă ca o sumă de M*N funcţii de forma (13). 51 . (15). În procente este exprimată raţia elementelor diferite de 0 a coeficienţilor DCT. Punctul de pornire e decompresia wavelet clasică: imaginea e împărţită într-o aproximaţie şi imagini detaliate. Aproximaţie e apoi împărţită într-o aproximaţie de nivel 2 şi detalii. rezultând 16 wavelets a imaginii. Pentru a-l n -lea nivel semnanul este decompresat conform (14).2. (16) şi (17). a proprietăţilor de compresie a DCT. Aceasta nu e o raţie de compresare reală deoarece coeficienţii sunt numere reale iar informaţia gri este un întreg între 0 şi 255. Fig. Imagini reconstruite cu DCT.3. poate fi considerat ca greutatea aplicată fiecărei funcţii de bază.

similar ca în [MICE02].Pentru imagini reale rezultatul este redat în figura 64. Pe deasupra wavelets pot fi folosite şi pentru detectarea feţei. Fig 64. calculând diferite calcule statistice [GARC00]. 52 . Wavelets ale feţei Caracteristicile pot fi extrase din aproximaţie.

formă cu stabilă şi invariabilă pentru o persoană dată. care trebuie să fie de lungime standard. dimensiunile feţei sunt specifice pentru o persoană dată • Există multe abordări pentru procesul de identificare.4. atunci trebuie să aibă o greutate în decizie foarte joasă comparată cu alte caracteristici. Diferenţe de rotaţie. mustaţă. Nu există o soluţie bună. În paragraful următor sunteţi prezent mai multe abordări. forma feţei. Căutarea în baza de date. dar noi trebuie să facem progresele în această direcţie. am folosit raţii de normalizare diferite pentru caracteristici orizontale si verticale: • Caracteristicile orizontale sunt scalate cu „Lăţimeaa feţei la ochi” • Caracteristicile verticale sunt scalate cu „distanţa bărbie-sprâncene” 8. chiar dacă sunt foarte mici. • Metode de normalizare scalară trebuie folosite dacă faţa se află la distanţe diferite de dispozitiv. pot cauză disimilarităţi în caracteristicile determinate. şi restul imaginii va fi scalată păstrând raţia. Caracteristici ca diametrul pupilei.7. vârstă) să nu ar trebui să altereze caracteristica extrasă. Această problemă poate fi rezolvată prin normalizarea poziţiei feţei. Condiţii exterioare ambiante (iluminare. 65) Fig 65 Scalarea feţei În [MICE02] am folosit caracteristicile normalizate după ce au fost extrase. Dacă ele se întrebuinţează. Cele mai importante puncte sunt: • Variaţii determinate de poziţia capului. O dimensiune (înălţime. forma liniei spectrale de margine de păr nu sunt semnificative. Pe de altă parte. efectuând o rotaţie înapoi la poziţia normală. Lăţimea. • Caracteristicile folosite pentru căutare ar trebui să fie cele care au cantitatea de informaţie maximă. sau distanţa dintre ochi) este distanţa de normalizare. A lua totul în considerare este aproape imposibil. Siguranţa căutării depinde în special de: • precizia caracteristicile extrase: caracteristicile trebuie să fie bine identificate. 53 . (vezi fig. barbă. forma nasului. au avantajele diferite şi dezavantaje diferite. Ele au abordări diferite. Probleme în extragerea caracteristicilor Caracteristicile extrase pot fi alterate de multe elemente externe sau interne ceea ce e o mare problemă a parţii de identifica din procesul de detectarea a feţei.

8. Nr. Metoda prezentată în [MICE02] se bazează pe combinaţiile distanţei liniare minime. dar chiar şi aceste abordări nu dau rezultate 100%. Lăţimea ochiului stânga Lăţimea ochiului drept Lăţimea gurii. O combinaţie liniară de vectorii prototipici aparţinând unei clase de feţe este folosită ca să definească o măsură de distanţă de la vectorul interogare la clasă. Metoda celei mai apropiate linie de caracteristici ( [Stan98a]. Primele şi cele mai folosite s-au bazat pe calculele statistice. Abordări pentru căutarea feţelor Îndrumările de bază pentru măsurarea asemănările sunt prezente în [DASK91]. Clasificarea se bazează pe distanţa minimă de la caracteristica de interogare la fiecare linie de caracteristică. Distanţă verticală între ochi şi sprâncene. Lăţimea feţei la nivelul de gură. Linia caracteristica derivată poate să captureze mai mult variaţi ale imaginii feţei decât punctul original şi astfel extinzând capacitatea bazei de date disponibile. Ele definesc o clasă a caracteristicilor pentru fiecare persoană din baza de date. 8. un model al feţei este construit (un „vector de figură”).1. Orice două puncte de caracteristici ale aceleaşi persoane sunt generalizate de linia de caracteristici traversând cele două puncte. însemnând că identitatea nu va fi detectată.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 . După ce caracteristicile au fost detectate toate caracteristici de distanţă necesare pot fi extrase pentru o figura de intrare necunoscută. Dacă caracteristicile nu sunt precise atunci setul de parametri poate varia în domenii foarte mari ce va decurge la intersecţia nedorită de clasele diferite. precum e descris în Tabelul 2. Distanţă verticală între ochi şi gură. Identificare folosind distanţele de caracteristici Distanţele între caracteristicile detectate au fost folosite în [MICE02]. 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. Recent a fost încercări de folosire a reţelelor neuronale şi modele ascunse Markov ([NEFI99]) din care au decurs rezultatele bune. Ca pasul următor. Distanţă între ochi. Abordările statistice au fost de încredere. dar există o varietate largă pentru a le măsura. eliminând valorile ce sunt afară din variaţia de parametri acceptată.2. Lăţimea la nivelul de nas. [STAN00]) este o altă abordare. 1 2 3 4 5 6 7 8 9 10 11 12 Descrierea valorii Lăţimea feţei la nivelul de ochi Distanţa bărbie-sprânceana Lăţime feţei. Lăţimea nasului. măsura fiind definită ca distanţa Euclidiană de la interogare la combinaţia liniară ce mai apropiată de vectorul interogare. E compus din din15 valori.

Detalii ale implementării Ţinta proiectului a fost să realizeze o aplicaţie DSP. primele două valori minime ale εi sunt stoacate ca să calculeze probabilitatea de identificare ca identitate cu eroarea pătratică minimă: (11) 9. La implementarea acestei aplicaţii acest lucru a fost luat în considerare. Ţinta acestei aplicaţii e să implementeze într-un limbaj de programare algoritmii dezvoltaţi în mediul Matlab. altfel fiecare algoritm va trebui să fie tradus în limbajul de asamblare al DSP 55 . Au existat mai multe probleme care au necesitat completare: • Problema cea mai simplă a fost transpunerea codului înregistrat Matlab în codul de C. y_mouth – y_noes Distanţă verticală între gură şi y_mouth – y_eyebrows sprâncene.1. • O interfaţă utilizator Windows a fost necesară ca să interacţioneze cu utilizatorul. După ce căutarea e terminată. 9. Algoritmii au fost scrişi stilul de limbaj procedural şi structurat. deoarece: • Dacă algoritmii vor fi vor transpuşi în DSP. atunci numai în cazul cel mai bun va fi compilatoarele C disponibile.13 14 15 Distanţă verticală între gură şi nas. acesta nu a fost folosit la implementarea metodelor de procesare a imaginilor. Ghidul de aplicaţie segmentat Acest capitolul prezintă aplicaţia realizată. Aplicaţia a fost luată în consideraţie ca o versiune prototip pentru PC. urmat de un paragraf explicând utilizarea aplicaţiei din punctul de vere a utilizatorului. Distanţă verticală între nas şi y_noes – y_eyebrows sprâncene Tabelul 2 Valori ale vectorului feţei Pentru a identifica o persoană înregistrată din baza de date noi am folosit metrică pătratică de eroare minimă. • O soluţie de captare video a fost necesară pentru a achiziţiona imaginea. o ustensilă de testare a algoritmilor. În paragraful următor implementarea detaliilor va fi dată. definită precum: (10) Atât vectorul de feţe (xk) cât şi modelul feţei pentru intrarea în baza de date (mki) sunt scalaţi. • A fost o nevoie pentru a implementa în C algoritmii interni şi optimizaţi ai Matlab. Deşi MS VC++ permite un stil de programare orientată obiect foarte organizat şi de structură.

Interfeţele COM permit să folosirea independentă din limbajul de programare. Interfaţa utilizator Interfaţa utilizator a fost construită în stilul cel mai simplu.) • FaceCrop() .restrânge zona de figură.1. Graficul de filtru include un filtru SamplerGraber. funcţie de procesare sau afişare).a selectat regiunea de suprafaţă maxim umplută (vedeţi §6. bazat pe Clasele Microsoft Framework( MFC). Rutine de procesare a imaginii Rutinele de căutare a feţei în imaginea capturată. interconectat într-o ordine secvenţială. o altă variabilă globală s-a întrebuinţat pentru salvarea calculelor matricei SUSAN folosită în detectarea Susan Edge în partea de finisare a conturului.) 56 . Pentru realizarea unei performanţe mai bune. • 9.1. Directshow captează graficele şi manipulează evenimentele aplicaţiei. 2.selectează zonele care au culorile asemănătoare cu ale feţei (vedeţi §6. reducând suprafaţa de prelucrat (vedeţi §6. 9. În acelaşi stil. Aceasta a fost compromisul acceptabil pentru nu copia rezultatele de unul pas la intrarea pasului următor. Directx este o tehnologie bazată COM. fiecare bloc având o captură specifică.Nevoile de memorie pentru stocarea imaginii sunt mari.) • SelectMaximumFilled () .1.1. 1. 9. principiul de încapsulare a programării structurate e spart: parametrul care trece între metodele de prelucrare foloseşte variabile globale. CFaceDetectDlg iniţializează dispozitivul de captură. Acestea corespund paşii descrişi în amănunţime în Capitolul 6 şi sunt: • ColorExtraction () .3. Dacă algoritmii ar fi fost împărţiţi în obiectele interactive atunci trecerea parametrilor ar fi ocupat foarte multă memorie. 2. a pornit de la lansările de obiect CSamplerGraber la rând cu celelalte metode de procesare. care transmite fiecare capturată umplută la obiectul Samplergraber COM definit care implementează interfaţa ISampleGrabberCB. Aplicaţia trebuie doar să construiască un grafic de filtru corespunzător (termen introdus de Directshow: la set bloc.2 Capturarea video Capturarea video e realizată folosind Directshow API şi cadrele Directx. în care se stochează după fiecare fază rezultatul fiecărei faze. Folosind API-ul dat de Directshow cel mai multe probleme de capturare sunt rezolvate de Directshow şi de adaptoarele multimedia ale Windows. codul de iniţializare de grafic de filtru este prezent în Appendix B şi el este făcut bazându-se pe exemplele Directx SDK. Programarea cadrelor a fost făcută într-un stil simplu şi standard. CSamplerGraber copiază imaginea capturată la o zonă de buffer şi o transmite la rutinele de prelucrare. sunteţi încapsulate în obiectul CFaceProcessing. Partea cea mai multă importantă de această fază. Metoda DoProcessing(). Este o aplicaţie de dialog singular cu clase de stil standard provenite din CWinApp (CFaceDetectApp) şi CWinApp (CFaceDetectApp). a fost nevoie de compacta cât mai zonele de memorie folosite. care dă un API la dispozitivele multimedia.

până când dispozitivului funcţionabil va fi va ataşat la PC. Modulul de testare este o versiune limitată a modului real.) ConturSmoothing()— sporeşte conturul feţei (vedeţi §6. dialogul principal apare şi imaginea camerei online va fi afişată înăuntrul ferestrei Camera.) Susan1() – detectarea marginii zonei pe baza Susan. de testare În continuare. După detectare dispozitivul va aproviziona aplicaţia cu imagini. Dacă nu există dispozitive de capturare ataşate. Independent de modul realizării. comportamentul aplicaţiei va fi prezentă în modul în timp real.) Susan2()— Selectează de la zonele delimitate cu muchiile Susan. 4. şi dacă el este capabil pentru a captura se va întrebuinţa ca sursa (Figura 67) şi capturarea va începe instantaneu. Fig 66. 4. 4. aplicaţia înfăţişează aceeaşi interfaţă. nu există imagini capturate. Fig. Mini Ghidul utilizator. care formează figura (vedeţi §6. fereastra camerei este goală. 4. Interfaţa cu utilizatorul. şi butoanele de comandă ale camerei sunt dezactivate (Figura 66). 67 Detectarea unui dispozitiv de capturare. Include restrângerea marginii şi lărgirea marginii (vedeţi §6.2.calculează valoarea de nuanţă rea şi regiunea aproape de aceasta (vedeţi §6. Aplicaţia detectează conexiunea unui dispozitivul de video nou. atunci Camera şi ferestrele celelalte rămân goale. diferenţa este că în modul static. 57 . După ce utilizatorul porneşte aplicaţia.) 9.• • • • SelectHue() . În dreapta în modulul de timp real iar în stânga în modulul static. în modulul dinamic şi static.

Deşi în domeniile industriale şi camerele alb-negru sunt mai mult folosite. • Suprafaţa selectată cu culoare aproape de culoarea feţei. El a fost studiat şi s-au încercat mai multe abordări şi algoritmi decât au fost prezenţi în această lucrare. până la determinarea identităţii. Ideea de pornire a segmentării bazate pe culoare a fost dată de disponibilitatea imaginilor color. • Dacă capturarea a fost oprită. A fost prezentă de la prima fază de achiziţie a imaginii la identificarea feţei. În fiecare 10 secunde. datorită preţurilor. stânga sau drepta): • Imaginea statică care a fost capturată. în prezent de doar camerele color au fost disponibile pentru pe noi să folosim pentru proiect. Caseta Status information informează utilizatorul ce ar trebui să facă ca să primească un rezultat corect dacă prelucrarea nu poate să fie făcută. aceasta este figura şi alte regiuni care au o conexiune la figura. • Capturare să poată să fie făcută cadrul cu cadru la momente când utilizatorul apasă butonul Step. care din ele să fie afişate înăuntru ferestrei mari din stânga. după aceea ea poate să fie repornită cu butonul Start. Această imagine este intrarea paşilor de prelucrare. Aplicaţia poate să sugereze utilizatorului să se apropie sau să se îndepărteze de cameră sau să regleze expunerea camerei sau balanţa albă.Ferestrele de rezultat afişează să urmeze rezultatele (de sus în jos. deoarece se pare că ei nu duc la soluţiile bune. Au fost folosite una sau mai multe abordări. Utilizatorul poate să controleze procesul de capturare cu butoanele din subsolul ferestrelor: • Capturare să poată să fie oprite cu butonul Pasuse. Cel mai mult descris a fost pasul de segmentare şi prezentarea de algoritmi folosiţi. dacă procesele anterioare s-au terminat o imagine nouă este capturată. 10. Cu butonul Stave oricare imagine de rezultat afişată în dialog să poată să fie salvată într-un fişier bmp. La aceste mesaje de obicei este adăugat mesajul de voce asemănător. • Rezultatul de selectare Susan. Pentru a transforma imaginea de culoare capturată să într-una alb-negru (ce a fost făcut în anul anterior) a părut să fie o pierdere de informaţie nedorită. şi cu ele o figură poate să fie să găsească bine într-o o imagine color. Mai mulţi autori studiaţi afirmă că există regiunile de spaţiu de culoare de figură specifice. dar aceştia au fost scoşi din prezentare. După un 58 . metode sau algoritmii pentru fiecare fază. Concluzii şi îmbunătăţiri ulterioare Această lucrare prezintă o abordare realizabilă pentru recunoaşterea feţei. • Rezultat final după calificarea conturului Utilizatorul poate să selecteze cu butonul de selectare imaginile. şi au culorile asemănătoare. • Regiuni maxim umplute. Fiecare pas a fost tratat cu mai multe sau mai puţine detalii.

Platformele ţintă ale algoritmilor sunt procesoarele de semnal digitale. Întăririle bazate pe muchii delimitează bine zonele fetei. Problema cea mai mare care apare rezultă din nevoile mari de memorie ale algoritmului. Nevoile de memorie mari Slăbiciuni Puncte forte X X X X X X Tabelul 3 Puncte forte şi slăbiciuni 59 . în special pentru variaţiile fulger. Abordarea luată a fost combinarea segmentării de culoare uşor restricţionată cu o aproximaţie de faţă de nivel al doilea. Selectarea regiunilor de feţei sunt greu de realizat. Ea trebuie să fie foarte bine reglată în viitor pentru a da rezultate foarte bune. Această pe altă mână duce la regiuni ale feţei detaşate: pierderea ochilor. A doua abordare detectează muchiile într-o regiune a imaginii reduse. nasului. Segmentarea bazată pe culoare nu lucrează numai singură pentru mai multe motive: • Camera a capturat culorile incorecte. El permite uşor transportarea codului la un procesor DSP cu o simplă migraţia de cod C sau o transformare de la C la cod de asamblare. A fost proiectat un algoritm de umplere combinată şi selectare de suprafaţă maximă. sau informaţia a fost interpretată greşit. deoarece: o calităţii mediocre a senzorului o iluminare slabă o colori nebalansate (balanţa albă a fost nu a făcută) • Se poate să fie mai mult obiecte colorate în faţa camerei şi suprafaţa acestor obiecte să fie detectate ca o faţă. care nu sunt destul de precise. Aceasta face algoritmul foarte vulnerabil pentru schimbările ambiante. zonele de frunte. pentru a depăşi în calitate prima abordare. Deşi îndeplinirea prezentă este pe sistemul PC. Implemetarea actuală are nevoie de 40 MB de memorie. autorii nu au specificat în mod corect toată informaţie necesară. Uni dintre algoritmii arii de suprafaţă maxime nu sunt optimizaţi. care dă aproximaţia de faţă mai bună şi finală. şi regiunile delimitate cu aceste muchii sunt clasificate ca regiuni ale feţei sau de fundal. Acesta este un proces de clasificare complex. Prima dă un rezultat foarte stabil. Aceste două abordări au fost prezente. Această clasificare este partea cea mai multă vulnerabilă. depind de multe constante.studiu de o lungă perioadă concluzia care a fost luată e că acele regiuni ori nu sunt universal valabile. • Noi putem încerca să minimalizăm deficienţa anterioare strâmtând domeniul culorii selecte. designul ales pentru implementare este cât mai simplu cu putinţă. Observaţii Segmentarea bazată pe culoare e folositoare la detectarea obiectelor de culoarea feţei. dar el nu este atent la informaţia de muchie a feţei şi foloseşte în special culoarea şi informaţia de intensitate imaginii.

În repetate rânduri este foarte greu să reuşeşti ceea ce îţi propui.4 • Dezvoltare fazei de detectare de caracteristici. De asemenea există multe secrete neexplorate care fac acest domeniu unul foarte interesant. Pentru detectarea muchiei SUSAN de numărul muchiilor depinde de dimensiunea de imaginii) Alte dezvoltări aflate în plan: • Integrare rutinelor în aplicaţia proiectului DALT 2. nevoile de memorie vor fi dinamic determinate de la parametrii obţinuţi în paşii anteriori (ex. • Transportarea aplicaţiei la un sistem bazat pe DSP Concluzia finală după această lucrare e că câmpurile de procesare a imaginii sunt domenii foarte importante ale tehnologiei informaţiei. dar bucuria e mare când ceva nou rezultă din munca ta.Eliminarea slăbiciunilor din Tabelul 3 este scopul dezvoltările viitoare: • Structurile de informaţie ale algoritmului de umplere vor fi îmbunătăţite pentru o viteză mai bună • Constantele specifice ale algoritmului vor fi studiate şi se vor alege valorile lor optime • Alocările de memorie pentru structurile interne se vor reduce. 60 .

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

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

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

global invert. x+1) ). Selectarea ariei umplute la maxim Această funcţie efectuează umplerea combinată ci selectarea ariilor de regiune maxime function Output = SelectMaximumFilled(InputMask). x). end elseif W_NW>0 C(y.x) = invert(W_NW).x) = NextColor. invert=[1:MAXCOLORS]. L{NextColor} = [NextColor]. else %% if InputMask(y.% in zone witch cana better handled % % Inputs : Value .x) == 1 W_NW = SelectNon0( C(y. x-1) ).1) = 0. InputMask(:. to be available to the function’s subroutines global C. Size= size(InputMask).Size(2)) = 0. % Fill the interrrior holes and selects from the resulting zones the biggest % % Inputs : ImageMask . x-1).:) = 0. NextColor = 0. InputMask(Size(1).x))= Colors(C(y. N_NE.x) = invert(N_NE). N_NE =SelectNon0( C(y-1. global L. Colors(1:MAXCOLORS) = 0.The selected maximim zone (binary) % % MAXCOLORS=5000. :) = 0. size(Value))). elseif N_NE >0 C(y. N=cell(MAXCOLORS. global N.1). global Colors. else C(y.x)) + 1.x) == 0 if C(y. 1.logaritmic value Output = 105 *log10( Value + 1 + random('unif'. C(y.parameter what to be logaritmated % Outputs : Output . C(y-1. end Colors(C(y.Mask with holes(binary) % Outputs : Output. 0). if W_NW >0 & N_NE >0 if W_NW == N_NE C(y. %global variable. InputMask(1. x) == 0 64 . x. C = zeros(Size).x) = invrec(W_NW). 0. InputMask(: . C(y-1. for y = 2 : Size(1) for x = 2 : Size(2) if InputMask(y.x)= join(W_NW. else NextColor = NextColor + 1. L=cell(MAXCOLORS. y. x-1) == 0 | C(y-1.1).

L{NextColor} = [NextColor].x) = -NextColor.x) = 0.x-1) < 0 nullrow(-C(y. C=abs(C). for j=2 : size(N{i}. end if C(y-1. end end %% if end %%for x end %%for y InputMask(y.x)). C(y. %generate result image Output = ismember(C.x)) + 1. clear clear clear clear clear Colors. join_at_end(T.x-1). Add0Neighbour(NextColor. L.x-1)). end Colors(-C(y.x)). %%adds the other as neighbour Add0Neighbour(-C(y. %%add the other as neighbour Add0Neighbour(-C(y.2) join_at_end(T. C(y.x) < 0 nullabove(-C(y-1. x-1)<0 | C(y-1. x-1)). x) < 0 C(y.x))= Colors(-C(y.%% this pixel has exit to margin C(y.L{Pos}). if C(y.x) = -invert(-C(y. y. N. invert. function Output = SelectNon0(A.x)<0 %% continues a 0 zone if C(y. i). 1). end else if C(y. x) < 0 C(y. C. x). x). x-1) < 0 & C(y-1. C(y-1. end end end [Max Pos]= max(Colors). N{i}(j)). x. x-1).x) = TRUE %finalize the join for i = NextColor:-1:1 if ~isempty(N{i}) & Colors(i)>0 T=invrec(N{i}(1)). C(y-1. x). x). C(y-1. elseif C(y-1. y. x)). else NextColor = NextColor + 1.x)).x) = -invrec(-C(y-1.B) %subroutine of SelectMaximumFilled %selects from A and B whis is greater then zero if (A > 0) 65 . C(y.x) = -join( C(y.

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

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

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

} // create a sample grabber // hr = m_pGrabber. 69 . Iar acesta e codul care urmează iniţializării: /// Initializes the still image capturing graph HRESULT CFaceDetectDlg::InitStillGraph( ) { HRESULT hr.dbcc_classguid = AM_KSCATEGORY_CAPTURE.dll registered?)")). L"Cap" ). // creates a filter graph. GetDefaultCapDevice( &pCap ). if( !pCap ) { Error( TEXT("No video capture device was detected on your system. } } // get whatever capture device exists // CComPtr< IBaseFilter > pCap.filterData.CoCreateInstance( CLSID_FilterGraph ). //do not generate error: when a new device will be detected. // that it will retry to constuct the graph return S_OK. m_hDevNotify = RegisterDeviceNotification(mCB. if( !m_pGraph ) { Error( TEXT("Could not create filter graph") ). &filterData.m_hwndOwner. if does not exists yet // if (!m_pGraph) { hr = m_pGraph. } // add the capture filter to the graph // hr = m_pGraph->AddFilter( pCap.CoCreateInstance( CLSID_SampleGrabber ).\r\n\r\n") TEXT("This sample requires a functional video capture device. return E_FAIL. DEVICE_NOTIFY_WINDOW_HANDLE). ASSERT(m_hDevNotify != NULL). such\r\n") TEXT("as a USB web camera. if( FAILED( hr ) ) { Error( TEXT("Could not put capture device in graph")). if( !m_pGrabber ) { Error( TEXT("Could not create SampleGrabber (is qedit. return E_FAIL.") ).

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

biWidth. // only grab one at a time. mCB. &IID_IIPDVDec > pDVDec( pFilter ). hr = m_pGraph -> EnumFilters(&pEnum). NULL. if (pDVDec) { pDVDec -> put_IPDisplay(DVRESOLUTION_SELECTED).lHeight = vih->bmiHeader. } hr = pCapture ->RenderStream (NULL. ULONG ulFetched. // don't buffer the samples as they pass through // m_pGrabber->SetBufferSamples( FALSE ). 71 . if ( hr != S_OK ) break. } // set the selected quality for every filter { CComPtr< IEnumFilters > pEnum. return hr.lWidth = vih->bmiHeader. return hr. NULL).biHeight. &ulFetched). if ( FAILED( hr) ) { Error( TEXT("Could not read the connected media type")).return hr. so we can write out bitmaps // AM_MEDIA_TYPE mt. if (!FAILED( hr ) && pEnum) { pEnum -> Reset(). stop stream after // grabbing one sample // m_pGrabber->SetOneShot( FALSE ). hr = pEnum -> Next(1. } VIDEOINFOHEADER * vih = (VIDEOINFOHEADER*) mt. NULL. if( FAILED( hr ) ) { Error( TEXT("Could not render sample grabber output pin")). FreeMediaType( mt ). mCB. hr = m_pGrabber->GetConnectedMediaType( &mt ). pGrabBase. } } } } // ask for the connection media type so we know how big // it is.pbFormat. CComQIPtr< IIPDVDec. while (1) { CComPtr< IBaseFilter > pFilter. &pFilter.

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

} } /// Determines the filter for capturing void CFaceDetectDlg::GetDefaultCapDevice( IBaseFilter ** ppCap ) { HRESULT hr. } m_eState = Run. &ulFetched ). CComPtr< IMoniker > pM. if( hr != S_OK ) break. // go through and find first video capture device // while( 1 ) { ULONG ulFetched = 0. *ppCap = NULL. pCreateDevEnum. Error( TEXT("Cannot set frame rate")). pCreateDevEnum->CreateClassEnumerator( CLSID_VideoInputDeviceCategory. // enumerate video capture devices // CComPtr< IEnumMoniker > pEm. return 0. &pEm. hr = pControl->Run( ). // get the property bag interface from the moniker // 73 .CoCreateInstance( CLSID_SystemDeviceEnum ). hr = pEm->Next( 1. } DeleteMediaType(pmt). } } // run the graph // CComQIPtr< IMediaControl. if( !pEm ) return. // create an enumerator // CComPtr< ICreateDevEnum > pCreateDevEnum. return hr. &pM. &IID_IMediaControl > pControl = m_pGraph.//ErrMsg(TEXT("%x: Cannot set new frame rate"). pEm->Reset( ). 0 ). hr). if( !pCreateDevEnum ) return. if( FAILED( hr ) ) { Error( TEXT("Could not run graph")).

if( pControl ) pControl->Stop( ).Release( ). 0. pWindow->put_Owner( NULL ).Release( ). (void**) &pBag ). // make the window go away before we release graph // or we'll leak memory/resources // CComQIPtr< IVideoWindow. if( hr != S_OK ) continue. #endif m_pGraph. (void**) ppCap ). m_dwGraphRegister = 0. void CFaceDetectDlg::ClearGraphs( ) { // Destroy capture graph if( m_pGraph ) { // have to wait for the graphs to stop first // CComQIPtr< IMediaControl. } } 74 . NULL ). var.vt = VT_BSTR. // ask for the actual filter // hr = pM->BindToObject( 0. m_pGrabber. &IID_IMediaControl > pControl = m_pGraph. m_eState = NotInitialized. hr = pM->BindToStorage( 0. &var.CComPtr< IPropertyBag > pBag. IID_IPropertyBag. 0. if( pWindow ) { pWindow->put_Visible( OAFALSE ). if( *ppCap ) break. hr = pBag->Read( L"FriendlyName". if( hr != S_OK ) continue. // ask for the english-readable name // CComVariant var. IID_IBaseFilter. } } return. &IID_IVideoWindow > pWindow = m_pGraph. } #ifdef REGISTER_FILTERGRAPH // Remove filter graph from the running object table if (m_dwGraphRegister) RemoveGraphFromRot(m_dwGraphRegister).

Sign up to vote on this title
UsefulNot useful