tehnici pentru recunoasterea fetei

97
Cuprins 1. Introducere............................................3 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...................................6 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................11 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......................13 5.3.Egalarile de histograma.............................14 5.4.Segmentarea culorii de baza.........................15 5.5. Transformarea morfologica..........................15 6. Segmentarea...........................................17 6.1. Primul pas. Culoarea bazata pe regiuni selectate...18 6.2 Prelucrarea anticipata a formei fetei...............21 1

Upload: digeimomo

Post on 05-Jul-2015

1.231 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Tehnici Pentru Recunoasterea Fetei

Cuprins

1. Introducere.......................................................................................................................32. Recunoasterea fetei (vedere de ansamblu)......................................................................4

2.1. Aplicatii....................................................................................................................42.2.Solutii.........................................................................................................................5

2.2.1. Analiza Karrhunen-Loeve (Eigenfaces)............................................................52.2.2.Metodele de baza de caracateristica vectoriala...................................................52.2.3. Modele deformabile...........................................................................................52.2.4. Machete bazate pe vederi multiple....................................................................52.2.5. Unduieli.............................................................................................................52.2.6. Alte Programe....................................................................................................6

2.3. Rezultate...................................................................................................................63. Faze ale recunoasterii fetei..............................................................................................6

3.1. Achizitia de imagine.................................................................................................63.2. Prelucrarea caracteristicilor......................................................................................63.3. Segmenatrea..............................................................................................................63.4. Extractia caracteristica..............................................................................................73.5. Cautare in baza de date.............................................................................................7

4. Achizitia de imagine........................................................................................................74.1. Dispozitiv de captura................................................................................................74.2. Conditii esentiale ambientale....................................................................................8

5. Prelucrarea imaginii.........................................................................................................95.1. Filtre de netezire.......................................................................................................9

5.1.1.Filtru mediu........................................................................................................95.1.2.Filtru median.....................................................................................................105.1.3.Segmentarea Reddi...........................................................................................115.1.4.Generalizarea segmentatiei Reddi....................................................................11

5.2. Detectarea de muchie..............................................................................................125.2.1.Detectarea de muchie Prewitt...........................................................................125.2.2.Detectarea de muchie Sobel..............................................................................135.2.3.Detectarea de muchie SUSAN..........................................................................13

5.3.Egalarile de histograma...........................................................................................145.4.Segmentarea culorii de baza....................................................................................155.5. Transformarea morfologica....................................................................................15

6. Segmentarea...................................................................................................................176.1. Primul pas. Culoarea bazata pe regiuni selectate....................................................186.2 Prelucrarea anticipata a formei fetei........................................................................21

6.2.1 Selecteaza mai complet umplutura regiuniei,...................................................216.2.2 Minimalizarea regiuni de interes......................................................................27

6.3 Sporirea bazata pe intensitati ale conturului fetei....................................................296.3.1 Aproximarea fetei.............................................................................................306.3.2 Producerea celei de a doua fete........................................................................316.3.3 Concluzii ale acestei abordari...........................................................................33

6.4 Largirea conturului fetei bazata pe profilul lateral..................................................34

1

Page 2: Tehnici Pentru Recunoasterea Fetei

6.4.1 Aflarea profilului lateral folosind metoda SUSAN..........................................346.4.2 Selectarea regiuni..............................................................................................386.4.3 Netezirea conturului..........................................................................................40

7. Extragerea caracteristicilor............................................................................................437.1. Caracteristici în funcţie de distanţă şi raţie.............................................................43

7.1.1 Detectarea sprâncenelor....................................................................................437.1.2 Detectarea ochilor.............................................................................................437.1.3 Detectarea nasului.............................................................................................447.1.3 Detectarea gurii.................................................................................................447.1.5 Modelarea conturului feţei................................................................................44

7.2. Alte caracteristici....................................................................................................457.2.1. Proprietăţi geometrice......................................................................................457.2.2. Transformări Fourier şi transformări Fourier discrete.....................................487.2.3. Transformările Cosine discrete........................................................................49

7.3. Decompresie wavelet a imaginilor feţei.................................................................517.4. Probleme în extragerea caracteristicilor.................................................................52

8. Căutarea în baza de date................................................................................................538.1. Abordări pentru căutarea feţelor.............................................................................538.2. Identificare folosind distanţele de caracteristici.....................................................54

9. Ghidul de aplicaţie segmentat........................................................................................559.1. Detalii ale implementării........................................................................................55

9.1.1. Interfaţa utilizator............................................................................................569.1.2 Capturarea video...............................................................................................569.1.3. Rutine de procesare a imaginii........................................................................56

9.2. Mini Ghidul utilizator.............................................................................................5710. Concluzii şi îmbunătăţiri ulterioare.............................................................................58Referinţe............................................................................................................................61Anexa A - Algoritmi Matlab..............................................................................................63Anexa B - Iniţializarea DirectX.........................................................................................68

2

Page 3: Tehnici Pentru Recunoasterea Fetei

1. Introducere

Recunoasterea automata a fetei umane este o problema foarte complexa rezolvata de oameni cu o pereche de senzori foarte complex- ochii, si cu procesorul lor principal creierul.Rezultatul de recunoastere a identitatii folosind sisteme automate este un process foarte complex, deoarece mecanismele folosite de creierul nostru pentru a le rezolva sunt inca insufficient cunoscute.

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

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

3

Page 4: Tehnici Pentru Recunoasterea Fetei

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.

Aceasta munca infatiseaza rezultatul obtinut in ultimul an. Cea mai importanta parte este focalizarea fetei, separatea acesteia de imaginea fundalului si alegera rezultatului correct dar pe scurt infatisarea intregului process de recunoastere a fetei de la imaginea capturata, prin la extragerea caracteristicilor corespunzatoare figurii pana la identificarea subiectului.

Urmatoarele capitole sunt structurate dupa cum urmeaza: Capitolul 1 prezinta introducerea cititorului la recunoasterea fetei si prezinta cateva din solutiile prezentului. Capitolul 2 pe scurt prezinta fazele recunoasterii. Fiecare capitol de la 3 la 7 prezinta una din fazele: Achizitia de imagine, procesarea, localizarea fatei cu segmentare de imagine, extragerea caracteristicilor si cautarea in baza de date. Capitolul 8 prezinta aplicatia ce a fost scrisa sa testeze fazele descoperite si prezentarea in fazale anterioare, in special segmentarea. Si in cele din urma capitolul 9 ce contine concluziile luate.

2. Recunoasterea fetei (vedere de ansamblu)

2.1. AplicatiiRecunoasterea fetei este o aplicatie potrivita in multe inca nerezolvate sau

nerezolvate optim probleme. Aplicatia de baza a acesteia se regaseste in camprile urmatoare:

Jurnalul de logare sistemelor:Multe corporatii si institutii vor sa verifice activitatea angajatilor. Aceasta de

obicei se face manual sau folosind carduri magnetice bazat pe un sistem cand angajatul ajunge sau paraseste zona de lucru. Aceasta este o solutie viabila, dar are lipsurile ei: procesul de logare poate fi uitat, poate fi inselat si are nevoie de materiale extra pentru a fi facut (carduri magnetice personalizate, carte pentru logare – ce sa planifice). Aceasta logare poate fi integrata cu un sistem de detectie a fetei, care, fara nici o nevoie externa si cu o reducere consistenta de vulnerabilitate poate determina cine intra sau iasa din spatiul supravegheat folosind o singura camera, ce probabil este deja instalata pentru scopul propus.

Identificarea persoanelor disparate sau a criminalilorSistemul de recunoastere a fetei poate fi instalat intr-un spatiu public, pentru a

identifica oameni disparuti sau cautati.Desi la ora actuala nu lucreaza foarte bine, exista deja doua sisteme pentru aceasta propunere in orasul de noapte Ybor City la Tampla (Fl.) si la Oceanfront din Virginia Beach.

Securitatea cladirilorRecunoasterea fetei poate fi folosita(si a fost deja incercata la aeroportul

international Palm Beach ) pentru verificare de siguranta: la personalul angajat si la pasagerii din aeroporturi acestia pot fi verificati, in armata sau guvern se pot verifica persoanele care vor sa intre.

Cautarea bazei de date existenteRegistrul prezent si bazele de date de recunoastere de fete umane ar trebui sa fie

4

Page 5: Tehnici Pentru Recunoasterea Fetei

in intregime automatizate.Securitatea ATMSolutiile multor banci, ATM-urile si altor aplicatii critice de siguranta ar putea

cere recunoasterea fetei in masura in care acum se cer parole.Interfata om/computerStatiile de lucru ar trebui sa poata sa recunoasca utilizatorii sau ar trebui sa

captureze infatisarea utilizatorului, eliminand nevoia de lucru manual de calitate precisa.

2.2.SolutiiSolutiile problemelor de mai sus sunt prezentate in multe moduri partiale. Acestea

se schimba de la constrangeri la constrangeri. Nu exista o metoda generala aplicabila. Una dintre modurile folosite sau propuse sunt prezentate in urmare.

2.2.1. Analiza Karrhunen-Loeve (Eigenfaces)Modul eigenfaces este o metoda des folosita si devreme implementata. Este bazat

pe analiza fetei intr-o baza de figuri, calculata de la imaginile bazei de date. Figura necunoscuta este scrisa ca suma importanta de baza a imaginilor. Importanta va caracteriza figura din imagine.

LILU98 propune o analiza de nivel al doilea. Scopul lor este sa imbunatateasca recunoasterea fetei sub o noua conditie, nu obtinuta prin prototipuri in mod coerent. Ei sugereaza folosirea combinatiei nivelului al doilea al prototipurilor liniare apartinand aceleasi clase de figure, pentru a trata prototipurile coerent.

2.2.2.Metodele de baza de caracateristica vectorialaIn LIAO00 doua filtre Gabor bazate pe caracteristica vectorilor sunt prezentate

modurile. Dupa ce fetele au fost localizate tranformarile Gabor sunt aplicate regiunilor caracteristice.

2.2.3. Modele deformabileModelele deformabile sunt construite de mana de la curbe parametrice cu contur

caracteristic. Un process de minimizare a functiilor energetice da valoarea parametriilor, caracterizand fata.

2.2.4. Machete bazate pe vederi multipleBEYM93 prezinta o fata cu machete de la modelul vederilor multiple care

acopera poze diferite ale sferei. Poza fetei detectata foloseste un mod piramidal de nivel 5. Fiecare nivel da o aproximatie mai buna caracteristicilor pozitiei. Dupa ce poza este evaluata, fetele pereche sunt determinate comparand transformarea de afin – conformand poza – regiunilor relevante ale imaginii.

2.2.5. UnduieliIn MENG00 un mod bazat pe unduieli este prezent. Vectorii extrasi sunt

clasificati intr-un model Hidden Markov. Este demonstrate ca rezultatele sunt unduieli fata de metodele conventionale ale machetei.

In GARC99b si GARC00 este prezenta o metoda care extrage saisprezece unde

5

Page 6: Tehnici Pentru Recunoasterea Fetei

intr-o descompunere de nivel doi. Trasaturile fetei sunt localizate utilizand aceste unde. Vectorul fetei este obtinut de la valorile regiunilor statistice.

2.2.6. Alte ProgrameIn o poza este prezentata o apreciere FANS00. Prelucrarea fetei se incheie dupa

ce fata si trasaturile sunt localizate si informatia este folosita pentru a evalua poza.Un sistem de retea neuronal este prezentat in ROWL99. Sistemele de neuron

incearca sa simuleze procesele competente ale creierului uman. Deoarece procesul de competenta complexa este dificil de simulate.

Un mod statistic cu clase separabile este prezentat in NAGA00.In ZHAO00 autorii folosesc informatia conturului extrasa din umbre si simetria

fetei in scop de recunoastere.

2.3. RezultateSolutiile existente functioneaza in circumstante limitate. Exista relatate 80% -

90% succese recunoscute. Desi este un procentaj mare, niciuna dintre metodele cunoscute este acceptata ca o solutie viabila si generala. Putinele aplicatii functionabile in viata reala prezinta greseli mari, rezultatele lor sunt nesemnificative.

3. Faze ale recunoasterii feteiComplexitatea problemei de recunoastere a fetei inseamna ca trebuie sa fie

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

3.1. Achizitia de imagineAceasta faza capteaza ilustratiile folosind dispozitive de capturare periferice.

Imaginea poate fi obtinuta din mai multe surse.Exista moduri evidente pentru a obtine imagini digitale: scanarea unei poze facuta

de un aparat de fotografiat, imaginile dinamice sau statice salvate de web-cam, fotografierea cu camera de filmat de inalta calitate, sau folosind alte surse (ex: zgarieturi manuale, imagini vopsite si rezultatele de la alte imagini digitale).

3.2. Prelucrarea caracteristicilorDupa ce o imagine este disponibila, cativa pasi de prelucrare sunt bine veniti.

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

3.3. SegmenatreaIn recunoasterea fetei, dar si in alte imagini sunt probleme de prelucrare, este

importanta segmentarea imaginilor in complementarea regiunilor si in fundal, sau pentru a separa imaginea in obiecte cunoscute si examinate. Segmenatrea este o faza importanta,

6

Page 7: Tehnici Pentru Recunoasterea Fetei

deoarece poate sa hotarasca daca informatia utila este extrasa sau este ignorata: fazele urmatoare pot fi compromise cu usurinta daca acest pas nu face treaba exacta. Dar folosirea acestui pas poate reduce la extreme urmatoarele faze prelucrate cu effort.

3.4. Extractia caracteristicaCaracteristicile imaginii sunt un set de valori statistice determinate de valori de

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

3.5. Cautare in baza de dateAcest pas este principalul scop al prelucrarii. Aceasta depinde de model, dar de

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

4. Achizitia de imagine

4.1. Dispozitiv de capturaAchizitia de imagine este primul pas al procedurii prelucrarii imaginii. Fotografia

de intrare trebuie sa fie de format digital, care poate fi obtinuta din mai multe surse.Cel mai simplu si ieftin mod de a obtine o imagine digitala este de a scana poza

unui aparat de fotografiat normal cu hartia de scaner ieftina si de calitate din zilele noastre. Aceasta metoda este simpla, ieftina si rezulta o imagine digitala de calitate buna, dar principalul dezavantaj este timpul prelucrarii pozelor extrem de mult pana ajunge la imagine digitala.

Dezavantajul timpului lung al capturarii poate fi inlaturat folosind echipament capabil de a obtine fotografii in format electronic. Dispozitivul cel mai des folosit de aceasta categorie este camera web. Aceasta poate capta in format digital ori fotografii sau filme (succesiuni de fotografii). Rezolutia camerelor web este de obicei mai rea decat a fotografiilor scanate. Calitatea imaginii (semnal/marja de eroare, acuratetea culoriilor) este in general rea, deoarece senzorii CMOS ieftini care sunt folositi inautrul acestor aparate de fotografiat – desi exista niste aparate de fotografiat CCD capabile pentru a captura imagini de calitate buna, dar totusi rezolutia lor este mica.

Avansarile tehnicii in echipamente digitale permit folosirea eficienta a dispozitivelor video. Aparatele analogice de fotografiat mai vechi, cu un card care obtine o imagine video de calitate buna permite o viteza de capturare mai mare (de obicei

7

Page 8: Tehnici Pentru Recunoasterea Fetei

standard PAL 25Hz sau NTSC 29.999Hz TV semnal cadre/secunda ) si o calitate buna a fotografiei. Noile camere complet digitale permit o viteza superioara si performanta de calitate. Senzorii CMOS- cu calitate medie- sau CCD –cu calitate mai buna- captureaza imaginile reale direct in format digital. Dispozitivele pot stoca imaginea in format digital, sau o pot transfera prin o largime de banda inalta la alt echipament digital (ca un computer personal).

Deoarece noi credem ca o calitate buna a imaginii imbunatateste rezultatul in aceasta lucrare folosind pentru captura camera digitala cu rezolutia standard 720x576 PAL.

Aparatele de fotografiat digitale sunt o tehnologie noua si au o dezvoltare rapida a dispozitivelor de capturare. Acestea difera in rezolutia dispozitivelor pentru generarea semnalelor – senzorii lor sunt CCD, camera cu senzori CMOS sunt considerate echivalente cu cele din categoria camerelor web. Aparatele de fotografiat bune sunt considerate cele care au peste 3 mega-pixeli. Acestea pot fi folosite pentru capturarea fotografiilor, in sistem digital, daca au o interfata corespunzatoare. Acest lucru este satisfacut de 99% dintre aparatele de fotografiat: au cel putin unul in serie, fire-wire, analogic (compozita), sau cea mai frecventa interfata USB.

4.2. Conditii esentiale ambientaleConditia ambientala a achizitii de imagine au multe influente asupra algoritmilor

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

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

8

Page 9: Tehnici Pentru Recunoasterea Fetei

In aceasta lucrare am stabilt sa cerem conditii diferite, mai putine constrangeri, mai simplu de realizat si ma bine definite. Conditiile sunt urmatoarele:

- Fata este descoperita- Fata acopera mai mult de 40% din poza- Aparatul de fotografiat este- Subiectul identificat are tenul deschis la culoare (alb, galben sau masliniu)- Existenta sau absenta parului nu conteaza- Fata persoanei este fara barba- Mustata este posibila- Va fi luata in considerare cea mai mare fata- Capul este drept in pozitia verticala normala, cu ochii fixati la aparatul de

fotografiat- Aparatul de fotografiat este la nivelul ochiilor- Sursa luminii este in spatele si deasupra capului, in linie cu capul si aparatul

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

5. Prelucrarea imaginiiPasul prelucrarii include operatiuni simple, care aplica operatii aritmetice simple

la fiecare pixel al imaginii, rezultand o imagine cu caracteristici sporite. Aceste operatii variaza de la lumina simpla si culori intense la mucdie de detectare complexa si algoritmi de segmentare. In cele ce vor urma vor fi prezente filtre frecvent folosite.

5.1. Filtre de netezireAceste filtre reduc semnalul de eroare al imaginii. Daca dispozitivul de capturare

are calitate slaba sau conditile ambiante nu sunt favorabile, apoi imaginea capturata trebuie sa fie sporita inainte ca alt process sa poata fi aplicat.

5.1.1.Filtru mediuAcest filtru netezeste valorile pixelilor, efectuand non-important sau de

importanta medie a valorilor pixelilor vecini. Miezurile pot fi de mai multe tipuri, unele dintre

1 1 1 1 11 1 1 1 10 1 0 1 1 11 2 1 1, 1 ⋅1 1 1, 1 ⋅2 4 2, 1 ⋅Ele sunt : ⋅1 1 116 25 1 1 1 1 1.951 1 1 1 10 1 0 1 1 11 2 1 1 1 1 1 1

9

Page 10: Tehnici Pentru Recunoasterea Fetei

2 3 6 7 8

3 4 5 8 9

6 6 9 5 6

7 4 2 3 4

8 2 3 2 2

Figura 3. Exemplu de matrice Figura 4. Rezulta cu a-2-a kernel

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

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

5.1.2.Filtru medianAcest filtru este foarte util cand sunt erori prezente. Aceasta eroare modifica cu

distribuirea intamplatoare unii pixeli ai imaginii. Acesti pixeli particulari au o intensitate de valoare mai mult sau mai putin decat ceilalti din imprejurimile lor.

Filtrul median aplica la fiecare pixel: (2N + 1)*(2N + 1) o matrice de masca larga. Intensitatea valorii pexelilor din matrice sunt sortate in crestere (2N+ 1)*(2N+ 1) in functie de ordinea sortarii. Rezultatul filtrului este luat de la 2 valori.

Aceasta triere este foarte utila pentru a elimina pixelii cu valori care sa aiba o diferenta mare intre ei si valorile vecinilor. De exemplu in cazul unei matrice de 3 x 3 (N=3) daca pixeli vecini ai valorii 9 sunt aceiasi ca in Figura 6. Rezultatul sortarii este 2, 2, 3, 3, 4, 3, 6, 8, 9 si acesta este rezultatul valorii pixelului current care va schimba din 9 in 4. Dupa cum este prezentat in Figura 7 unii pixeli pot sa fie schimbati, depinzand de pixelul vecin.

Figura 6 Figura 7

x xxx x

x 4.8 5.8 7.8 x

x 5.2 5.1 5.6 x

x 2.0 1.0 4.0 x

x xxx x

10

Page 11: Tehnici Pentru Recunoasterea Fetei

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

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

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

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

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

11

Page 12: Tehnici Pentru Recunoasterea Fetei

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

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

5.2. Detectarea de muchieExista multi algoritmi utili pentru detectarea muchiei. Unii dintre ei au fost inventati

de 10-20 de ani, altii sunt mai noi si difera de la cei mai vechi cu imbunatatiri mai putine sau mai multe.

5.2.1.Detectarea de muchie PrewittDetectarea de muchie Prewitt este unul dintre cei mai simpli, vechi si rapizi algoritmi.

Principiul lui este bazat pe derivarea imaginii bidimensionale. Derivarea este realizata[1 0]

folosind rasucirea cu Kernel. Derivarea foloseste numai 0 1/ valorile a doi pixeli vecini.

Muchia este detectata daca valoarea derivatei este mai mare decat o valoare specificata – de obicei determinate din intregul set de valori derivate

1 1 1 1 1

1 1 1 1 3

2 2 2 2 2

8 8 7 7 7

12

Page 13: Tehnici Pentru Recunoasterea Fetei

7 8 7 7 7

Figura 11. Figura 12.

5.2.2.Detectarea de muchie Sobel

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

Derivate si pentru directia lui X si derivate D. Valoarea finala a derivatei

este sau cu o similara, dar cu o forma calculate si salvata:

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

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

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

5.2.3.Detectarea de muchie SUSANDe la algoritmul detectarii de muchie de baza la alti algoritmi mai mult sau mai

putin similari au fost derivarati. Forma unica [FLEC94] prezinta un algoritm de valoare pentru textura mai multa a imaginii. Fata are textura mai putina a imaginii, asa ca accesul tine cont ca aceasta este mai valoroasa. Cea care face acest lucru este detectarea de muchie SUSAN.

0 0 0 -2 X

-1 -1 -1 -1 x

-6 -5 -5 -5 X

0 1 0 0 X

x x x x x

13

Page 14: Tehnici Pentru Recunoasterea Fetei

Principiul SUSAN a fost prezentat in [SMIT95a]. O masca circulara (avand un pixel de centru cunoscut ca “nucleu”) este prezentat ca cinci pozitii de imagini. Daca luminozitatea fiecarui pixel dinauntrul mastii este comparat cu luminozitatea mastii nucleului dupa aceea o suprafata a mastii poate fi precizata care are aceasi (sau similara) luminozitate ca a nucleului. Aceasta suprafata a mastii este cunoscuta ca “USAN”, Univalue Segment Assimilating Nucleus.

Acest concept ca fiecare punct din imagine avand asociat cu el o suprafata cu luminozitate similara este baza principiului SUSAN. Suprafata sau USAN contine multe informatii despre structura imaginii. Aceasta este efectiv regiunea descoperita la scara mica.

Algoritmul de detectare a muchiei foloseste o fereastra predeterminata centrata pe fiecare pixel din imagine. Muchia detectorului de masca SUSAN poate fi rotunda sau rectangulara. Cele mai bune rezultate pot fi obtinute cu mai multe masti complexe circulare. Razele de cerc propuse sunt [SMIT95] de 3.4 pixeli (dand o masca de 37 pixeli). Masca este situata la fiecare punct din imagine si pentru fiecare dintre ele luminozitatea fiecarui pixel dinauntrul mastii este comparata cu acesta in centrul punctului. La inceput o ecuatie simpla determina comparatia:

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

Apoi, n este comparat cu un prag de sensibilitate fix g, care este stability la

3nmax/4, unde nmax este valoarea maxima pe care o poate lua n. Raspunsul de muchie initial este atunci crea folosind regula:

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

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

14

Page 15: Tehnici Pentru Recunoasterea Fetei

5.3.Egalarile de histogramaEgalarile de histograma au incercat adesea sa mareasca o imagine [SHAP01].

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

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

5.4.Segmentarea culorii de bazaSegmentarea culorii de baza foloseste informatia imagini color. Aceasta poate

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

15

Page 16: Tehnici Pentru Recunoasterea Fetei

5.5. Transformarea morfologicaOperatiile de morfologie binara transforma o imagine de intrare binara B folosind

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

Figura 17. Elemente de structura

Eroziunea imaginii binare B structurand elementul S este definit ca

Dilatarea imaginii binare B structurand elementul S este definit ca

Deschiderea unei imagini binare B structurand elementul S este definit ca

Inchiderea unei imagini binare B structurand elementul S este definit ca

Eroziunea, dilatarea, deschiderea si inchiderea exemplului aplicat matricei binare de la Figura 18 poate fi vazuta la Figura 19.

Figura 18. Exemplu de matrice

16

Page 17: Tehnici Pentru Recunoasterea Fetei

Eroziunea Dilatarea

Deschiderea Inchiderea

Figura 19. Transformari morfologice

6. SegmentareaIn acest capitol este prezentat algoritmul segmentarii. Problema segmentarii este

definite ca: este data arbitraroimagine color, fata gasita in imagine trebuie sa fie gasita si separate de fundal. Pentru oameni aceasta este usor de facut diferenta dintre culorile specifice ale fetei si ale fundalului, folosind vederea tridimensionala si cunoscand conturul specific si tiparul fetei. In viziunea computerului doar ocazional este disponibila picture 3D, asa ca aceasta metoda poate fi folosita rar. Tiparele fetei si conturul fetei specific sunt caracteristici complexe, pot fi reprezentate doar de modele complexe, care sunt mai putin eficiente pentru suprafete mari – acestea vor fi aplicate regiunilor fetei detectate si vor fi folosite in algoritmul detectarii fetei.

Multe lucrari se ocupa cu segmentarea imaginii. Unele dintre ele ([AMIT98]) trateaza cazuri mai generale, altele incearca sa extraga regiuni si obiecte specifice.

Conceptii diferite sunt prezentate in literature. In [WUHU00] autorii folosesc 6-D RGB si suprafata de culoare HSV utilizeaza tehnici de analiza discriminatorii multiple si metode probabilistice.

17

Page 18: Tehnici Pentru Recunoasterea Fetei

Textura bazata pe segmentare [GUOL00] poate fi o alternativa potrivita. Fata are texturi particulare in zone specifice. Pielea, parul, ochii, gura, nasul pot fi identificate bazate pe textural lor si locatia corelata a acestor caracteristici poate fi sursa localizarii fetei in imagini arbitrare.

In urmatoarele vor fi prezentate urmatoarele moduri: in primulpas folosirea informatiei culorii imaginii regiunile satisfacatoare ale fetei sunt selectate si in pasul doi pentru regiunea cea mai probabila este facuca o aproximatie pentru a mari precizia gasirii fetei. Pentru pasul al doilea sunt date doua alternative.

6.1. Primul pas. Culoarea bazata pe regiuni selectateIn primul pas folosin informatia culorii a fiecarui pixel, posibilele regiuni ale fetei

sunt selectate. Multe cercetari au fost facute pe aceasta problema.In [GARC99a], [GARC99b] si [FLEC96] autorii au propus diferite sortimente ale

culorii componentelor(in spatiile de culoare diferite) care caracterizeaza fata. Alta histograma bazata pe metode este prezentata in [SHAP01]. Dup ace toate aceste au fost incercate, a fost aleasa una similara cu fata, restrictiile culorilor prezentate in [FLEC96].

Principala problema a culorii bazata pe segmentare este variatia valorii culorilor depinzand de luminozitatea imaginii. Dupa ce mai multe moduri au fost incercate, una mixta a fost aleasa. In acest mod am folosit logaritmul RGB suprafata de culoare: aceasta suprafata de culoare comparat cu RGB, HSI sau suprafata HSV spatiile sunt mult mai stabile la variatiile luminii.

Mai intai, pentru a inlatura influenta luminozitatii imaginii, intensitatea minima a fost gasita in fiecare zona colorata (R, G, B) si aceasta valoare este scazuta de la fiecare valoare a culorii.

Pe luminozitate vectorul normalizat operatia log10 este aplicata. Dispozitivul de capturare are erori, pentru a compensa acestea, o valoare aleatoare intre 0 si 1 este adaugata inainte de operatia logarithm, introducand un comportament automat nedeterminat al algoritmului care egaleaza cu niste culori inconstante ale apratatului de fotografiat:

Unde LogValue(Value) este:

Coeficientul 105 este folosit doar pentru a obtine rezultatul in domeniul

Un pixel al imaginii este declarat de a fi pixelul posibil al fetei daca multumeste urmatoarele conditii:

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

18

Page 19: Tehnici Pentru Recunoasterea Fetei

Conditile de mai sus au fost determinate bazandu-se pe [FLEC96] si pe studiile experimentate ale seturilor de imagini disponibile. Inca o conditie a fost folosita in versiunea Matlab cu algoritmul bazat pe [FLEC96]: pentru a calcula a amploarea texturii, intensitatea imaginii este netezita cu un filtru median si rezultatul este scazut din imaginea originala, apoi valoarea completa al acestor diferente sunt parcurse de un al doilea filtru median:

Texturile corespunzatoare fetei sunt zone ale imaginii putin texturate, astfel conditia corespunzatoare pentru textura este:(d)Texture < 1

Intersectia lui (a) … (d) conditiile determina posibili pixeli ai fetei. Conditile de mai sus sunt facute pentru a fi conditii slabe, pentru a garanta ca majoritatea fetei este selectata.

Codul sursei din Matlab al intregului algoritm este prezentat in Appendix A.Rezultate al algoritmului extragerii culorii sunt prezentate in Figura 20, Figura 21,

Figura 22 si Figura 23.

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

19

Page 20: Tehnici Pentru Recunoasterea Fetei

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

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

20

Page 21: Tehnici Pentru Recunoasterea Fetei

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

In aceasta parte a algoritmului putem duce la niste concluzii1. Culorile diferite logaritmice sunt standarde bune in extragerea culorii

asemanatoare fetei.2. Texturarea imaginilor poate fi folositoare in observarea regiunilor netezite ale

fetei, dar folosirea lor nu este intotdeauna obligatorie si efortul lor calculat, data de filtrarea mediana poate fi superioara ca performanta rezultatului.

3. Conditile Rg si By sunt folositoare pentru selectarea punctelor fetei, dar au unele deficiente: doar culorile deschise ale fetei sunt selectata (fara ochi, sprancene sau par) si detecteaza alte regiuni care au culori similare cu ale fetei, deasemenea.

4. Conditile (a)…(d) detecteaza nu numai zona fetei, dar si alte regiuni colorate ca ale fetei.

Concluzia finala este ca aceasta culoare bazat pe detectare este buna, dar nu destul pentru gasirea fetei in imagine.

6.2 Prelucrarea anticipata a formei feteiDupă 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.

6.2.1 Selecteaza mai complet umplutura regiuniei,Urmand pasul anterior am obtinut o imagine in care regiunea cea mai mare este

zona fetei design aceasta prin cele trei conditii anticipate (expuse in g3.1) Mai este necesara o observatie dupa cum se poate vedea in figura 20, figura 21,

figura 22 si figura 23 parte din fata poate contine zone negre (unde gura, ochii spacenele

21

Page 22: Tehnici Pentru Recunoasterea Fetei

si fruntea au o culoare diferita de restul fetei). Aceste zone neselectate trebuie sa constitue parte a regiunii invecinate. Cel mai usor de realizat aceasta este aplicand algoritmul de umplere in cascada, astfel umplandu-se zonele care nu se invecineaza. Se poate aplica apoi metoda de realizare pas-cu-pas a unei regiuni.

Aceasta metoda de exprimare este buna dar nu optima deoarece necesita doua faze. Daca ceai doi algoritmi ar lucra in tr-o singura faza atunci cel de performanta ar fi O(n ?m) unde n si m sunt dimensiuni ale imaginii. De accea s-a utilizat un nou algoritm combinat. Acest algoritm a fost gandit pentru a face toate calculele deoadatautilizand structuri de date suplimentare.

84844848

Figure 24. Vecinatatea Pixelului

Inainte ca algoritmi sa fie descrisi in amanunt trebuie sa explicam diferenta intre 4 si 8, cei 4 vecini de legaruta al unui pixel sunt cei 4 pixeli din dreapta, stanga,deasupra si dedesuptul pixelului curent ; cei 8 vecini de legatura ai unui pixel sunt cei 8 pixeli inconjoara. Algoritmul urmator va lua in calcul doi pixeli parte a unei singure zone daca au o cale de 8 pixeli de legatura intre ei. Daca avem campul din fata o legatura de 8 apoi parte complementara a imaginii trebuie sa fie o legatura de 4 pe verso. Aceasta este o observatie importanta care este folosita in tratarea pixelilor din prim plan si de pe fundal(din umbra)

Partea principala a algoritmului este o scanare secventiala de sus in jos si de la stanga la dreapta aimaginii. Pentru fiecare pixel se determina culoarea. Culoarea pixelului inseamna grupul de numere caruia ii apartine. Toti pixelii care formeaza o regiune au acceasi culoare, in acest algoritm fiecare pixel primeste un cod format dintr-o valoare numerica. Sunt trei variante (figura 25)

Daca pixelul este de mascare culoarea sa este codata numar intreg pozitiv. In exemple ei sunt marcati cu numere pozitive in celule gri.

Daca pixelul este de fundal de bordare atunci culoare lui este 0. pixelii de bordare sunt pixeli de fundal care se afla pe marginea imaginii ori au vecini de margine de legarura 4. in exemple ei sunt marcari cu 0-uri in celule de culoare alba.

Daca pixelul este de interior atunci culoare primeste codificare cu numere intregi negative.Pixelii de interior au conoscut pana de curand la recentele prelucrari vecini numai

pixeli de mascare sau de interiorse va schimba in unul de margine numai daca se cunoaste ca are vecinii de bordurare.

In exemple ei sunt marcati cu nume intregi subliniate in celule de culoare alba.In exemple semnul ? este folosit numai daca culoarea pixelului nu este cunoscuta.

In momentul cand pixelul este iontarit (bolded) atunci cand culoarea pixelului din centru este in procesul de cautare.

22

Page 23: Tehnici Pentru Recunoasterea Fetei

Operatiile facute depind de fiecare faza de felul pixelului , daca-i de mascare ori fundal :

a.) Pentru pixeli de mascare : Se cauta culoarea pixeluilui superior(de sus) si a celui de sus-

dreapta(N_NE)si a celui din stanga si stanga sus. Aceaste grupari sunt facute deoarece daca scanarea sus-jos stanga-dreapta anunta ca culorile combinate sunt de mascare atunci ele vor avea acceasi culoare. Daca NE_N si W_NW sunt puncte de masurare si ele sunt egale(de ex fig.26a) vecinul pixelului este o zona numai astfel culoarea pixelului va fi data de culoarea vecinatatii.

Daca NE_N si W_NW sunt pixeli de fundal(fig 26 b) atunci culoarea pixelului este una noua.

Acest pixel va fi primul pixel al unei noi regiuni. Daca N-NE sau W-WE sunt pixeli de fundal (fig 26 c) atunci culoarea pixelului nu este de fundal. Dac N-NE si W-WE sunt puncte de mascare si nu sunt egale (fig 26 d)atunci inseamna ca cele doua regiuni considerate doua regiuni diferite sunt de fapt o singura regiune unita de un pixel. In acest caz cele doua zone trebuie unite iar culoarea pixelului va fi culoarea vecinatatii. Dupa unificare culoarea dominanta se va transforma in culoarea mai slaba. Numerele pixelului celor doua zone se vor insuma. Daca W-NW este mai mare decat N-NE atunci culoarea culoarea pixelilor ramasi pe pozitie se schimba pentru a ne asigura ca pe linia urmatoare pixelii vor folosi culoarea corecta a pixelului superior. Nu este ceva strict dar da posibilitatea realizarii algoritmului in cele din urma ne vom da seamna sin ce culoare se va schimba culoarea dominanta.

b.) Pentru pixelii de fundalIntru cat umplutura de legatura 8 este realizata, vom verifica numai vecinii

supriori si cei din stanga pixelului de fundal. In functie de valorile lor sunt 4 variante :

23

Page 24: Tehnici Pentru Recunoasterea Fetei

Daca unul din vecini este un pixel de bordurare (fig27a) atunci si acest pixel este de bordurare.

In acest caz daca este un pixel de bordurare numai de interior este mascata acela este de bordura. Acesta se va pastra pentru toti pixelii de pe un rand, dand astfel posibilitatea stabilirii valorilor de bordurare.

Daca numai unul din vecini este punct de interior(fig27b) sau cei doi vecini sunt de interior si au aceeasi culoare atunci pixelul curent este punctul de interior al aceleaiasi regiuni.

Daca vecinii sunt de interior dar au culori diferite(fig 27d) atunci cele doua culori sunt unite in acelasi mod cum s-a facut cu pixelii de mascare. Daca cei doi vecini sunt puncte de mascare(fig27e) atunci o noua zona interna va debuta.

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

Functionalitatea algoritmului este exemplificata in fig 29. Figura 28 prezinta rezultatul selectiei aplicate la rezultatul selectiei de culoare.

Versiunea matematica de laborator a algoritmului este prezentata in Anexa A.

24

Page 25: Tehnici Pentru Recunoasterea Fetei

25

Page 26: Tehnici Pentru Recunoasterea Fetei

26

Page 27: Tehnici Pentru Recunoasterea Fetei

6.2.2 Minimalizarea regiuni de interesMiscarile care au aparut din implementarea pasului anterior nu sunt intotdeauna

corecte. Se intampal de multe ori sa se selecteze mai mult decat o fata sau sa nu se selecteze intreaga fata, ci numai o parte. Aceasta mascare poate sa nu fie rezultatul final dar da informatii utile pentru urmatorii pasi. Deci folosind aceasta mascare se obtine imaginea definita.

Sus/jos sau stanga/dreapta deci selectam marginea sunt similare. Mai intai se va proceda la selectarea stanga/dreapta.

Pentru aceasta se determina pixelul cel mai de sus si respectiv cel mai de jos rezultand mobilul de jos si de sus al mascarii(a,b) si diferenta (fig30c). Numarul de pixeli in fiecare coloana este o informatie utila, deasemenea. Marginea (distanta) din stanga respectiv din dreapta se selecteaza in acelasi mod. Pornind de la coloana cu numar mai mare de pixeli fiecare coloana din stanga dreapta va fiverificata pentru a ne convinge ca:

diferenta sus-jos este mai mare decat pragul T1 unde T1 este 40% din diferenta sus-jos ;

numarul total de pixeli din coloana din stanga sa fie mai mic decat acelasi din dreapta sau unul dintre ei sa fie mai mare decat pragul T2. T2 este 40% din maximumul numarului de pixeli al coloanei.

27

Page 28: Tehnici Pentru Recunoasterea Fetei

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

28

Page 29: Tehnici Pentru Recunoasterea Fetei

6.3 Sporirea bazata pe intensitati ale conturului fetei.S-a incercat sporirea marirea a doua imaginii de contur.prima este mai mult

bazata pe diferenta de culoare iar a adoua pe definirea muchiei. Amandoua au dat rezultate bune dar nici una 100%.Prima incercare a prezentat trei faze, care au scris in relief fata :

Fata este aproximata folosind nuante de culoare saturata si paramentri de valoare. O a doua incercare selecteaza zona fetei in final. Muchiile din stanga si din dreapta sunt intense si corectate pentru a inlatura

poziile care nu sunt tip[ice fetei.

29

Page 30: Tehnici Pentru Recunoasterea Fetei

6.3.1 Aproximarea fetei.Aceasta faza foloseste imaginea prin metoda culoare-spatiu HSV se verifica mai

intai compunerea valorii: valoarea medie M se determina se construiesc in pasi de 0,02 imaginii de mascare pentru σ ∈0.1 ; 0.325 care

au componenta se alege valoarea minima σ a coeficientului.Observatie : ecuatia de mai sus are doua componente de valoare in zona M −σ ; M

σ regiunea maxim umpluta(vezi 6.2.1) fiind selectata si urmatorii parametri verificati : daca suprafata regiuni este mai mica de 70% din intreaga fata. Altfel regiunea

selectata va fi mai mare decat fata. Daca raportul inaltime/latime este in relatia 1.1; 1.6]care este de fapt

proportia dimensiunilor standard ale fetei. Pentru zonele care satisfac conditiile de mai sus se calculeaza un coeficient de

probabilitate bazat pe P adica suprafata zonei O si unghiul dintre aza X si axa majora principala a elipsei care are aceleasi momente secndare ca si regiunea :

se alege valoarea minima a coefinientului CoefObservatie :ecuatia de mai sus are doua componente de valoare in zona M −σ ; M

σ regiunea maxim umpluta(vezi 6.2.1)ambele generand valori in gama 0 ;1 cu 0 indicand o alegere mai buna. Prima genereaza O daca orientarea este 90% insemnand ca regiunea corespunde unei fete orientate vertical. Al doilea component genereaza O daca zona are forma de cerc sau de elipsa. Acest component va incerca sa selecteze zona sub forma de elipsa fara alte concavitati.

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

30

Page 31: Tehnici Pentru Recunoasterea Fetei

C) de tedermina mediul M si derivata standard a saturatiei pixelilor selectati.D) Mulajul final (fig34e) rezulta din aplicarea formulei S S M −σ M ∨S S M σ M mask (Fig 34d) la forma mulajului (b) si umpland complet spatiile din interior

6.3.2 Producerea celei de a doua fete.In aceasta faza se elimina regiunile neportivite, daca ele fusesera introduce in faza

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

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

31

Page 32: Tehnici Pentru Recunoasterea Fetei

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

32

Page 33: Tehnici Pentru Recunoasterea Fetei

6.3.3 Concluzii ale acestei abordari.Rezultatele acestei abordari au fost bune(fig38). Dintr-un set de 252 de imagini 9

fete au fost nedetectate in fazele initiale din cauza acuratetei slaba a culorii si doua fete au avut parti cu zone incorect scoase in relief.

33

Page 34: Tehnici Pentru Recunoasterea Fetei

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

Page 35: Tehnici Pentru Recunoasterea Fetei

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

Page 36: Tehnici Pentru Recunoasterea Fetei

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 veciniid.) daca θ mai mare de 30 de grade si θ mai mic de 60 de grade iar |3-7|=|1-

9| 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

Page 37: Tehnici Pentru Recunoasterea Fetei

Apoi se procedeaza la separarea profilelor laterale se vor folosi pragurile T1=Rmax/2 si T2= Rmax/4 daca un pixel are R mai mare decat T1 el va fi considerat punct de pornire al profilului si se va continua pe profil( in directia tangentei la profil) pana ce valoarea urmaorilor pixeli scade sub praful T2. Toate profilele cu lungimea mai mare de 5 sunt depozitate, celelalte fiind considerate p[rea scurte. Profilele separate sunt prezentate in figura 44.

Profilele separate nu sunt continue. Pasul urmator va face sa crestem fiecare profil de la capatul sau pan ace intaneste alt profil. Cresterea va fi pixel cu pixel in directia tangentiala profilului Algoritmul este mult mai complex decat o pot face cateva randuri de exprimare, dar se scoate evidenta ideea princiala. Profilele gasite pot fi vizualizate in fig 45. Profilele gasite delimiteaza suprafata fetei care in pasul urmator va fi selectata sau nu.

37

Page 38: Tehnici Pentru Recunoasterea Fetei

6.4.2 Selectarea regiuni.Regiunile gasite in imagine vor fi caracterizate ca regiuni fata sau fundal. Este

foarte important dar cel mai important si mai putin formulat subiect . In continuare prezentam abordarea acestui subiect. Ea este aflata pe bara experimentala si a fost dezvoltata pe baza de cunoastre sei observatie a structurilor si proprietatilor fetei.

Aceasta faza incepe cu identificarea regiunii. Fiecarei regiuni I se aloca un identificator unic explicandu-i-se un algoritm de culoare liniar. Regiunea care poseda un pixel in stanga sus va fi considerata speciala, adica regiunea fundal. Aceasta zona, rezultata din aflarea profilului unde pixeli de margine 5 nu sunt marcati cu toate ca ei sunt puncte ale profilului inconjoara toate celelalte regiuni.

casuta de legatura a regiunilor ; valorile medii ale componentelor R, G si B ale regiunii ; centrul aglomerat al regiunii suprafata regiuni daca suprafata este mai mare sau nu decat pragul suprafetei ales(de 75 pixeli) daca culoarea regiuniieste mai mult culoare pura 85% sau mai mult este data de

componentele R G sau B cresterea fiind aratata in fig 47. Cresterea este formata de restrangere care foarfeca regiunile care au vecinii mai mult neselecati.Se vor determina de asemnea fiecare regiune invecinata si numarul de pixeli de

granita pentru regiuni. Dca suprafata unei regiouni este prea mica zona va fi unita cu o regiune invecinata a carei culoare nu difera prea mult de accea a regiunii de baza iar suprafata este mai mare decat suprafata zonei de baza si pixelul invecinat comun este valoare maxima intre regiunile invecinate disponibile. Regiunile mic si selectate sunt

38

Page 39: Tehnici Pentru Recunoasterea Fetei

unite si li se dermina proprietatile iar vecinii sunt combinati. Centrul algorimului zonei care nu-i fundal se considera centrul fetei. Raza cea mai dintai a fetei este data de jumatatea partii exteriora cea mai centala a regiunilor daca raza rezultata este de mai putin de 30 pixeli atunci raza este considerata de 30.

Intensitatea minima a regiunilor ce pot fi selectate se obtine calculand 80% din media suprafetei sumei componentelor R, G si B care se va imparti la 3 si se va retine aceasta operatie deoarece daca nu tinem seama, trebuie sa foloim pe fiecare data formula altfel pierdem.

Apoi centrul masei este recalculat drept centru zonelor cu intensitati mai mari decat minimumul calculat.

Dupa ce determinam acest centru mult mai exact recal ;culam din nou centru regiunilor cu internsitate corecta si centru cel mai aprorpait de raza maxima, dupa care raza este recalculata la valoarea minima, drept minimumul distantei dintre centrul zonei de margine si se va corecta ca in primul caz.

Aceata faza este urmata de faza selectiei regiunii. Fiecare zona cu centru mai apropiat de centru determinat de cat de raza este selectat dreot regiunea fetei(fig 46) daca inensitatea este mai mare decat minimumul intensitatii zonei atunci culoarea regiunii este luata in calcul pentru determinarea culorii medii a zonelor selectate. Pe curba de selctie se calculeaza casuta de legatura a fetei.

Se reda in continuare cresterea regiunii initiale. Acest algoritm anexeaza regiunile de selectia curenta pana cand vor fi adaugate

mai multe zone.Rezultatul selectiei de regiuni este aratat in figura 48.

39

Page 40: Tehnici Pentru Recunoasterea Fetei

6.4.3 Netezirea conturului.Mulajul rezultat candva contine regiuni neinsemnate care in mod nevoit au fost

sterse sau adaugate fetei.Astfel, in faza finala conturul fetei poate fi marit. Exagerarea prezinta urmatorii pasi:

a.) profilele interioare sunt umplute

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

40

Page 41: Tehnici Pentru Recunoasterea Fetei

De aici rezulta MAX_PI= 1256, rotunjit MAX_PI=1250 Valorile Ri sunt recalulate drept valoarea radiara une mulajul se schimba in fundal

sub unchiul θ i

Daca masca are concavitati pot exista valori multiple ale Ri, in acest caz avand de ales valoarea cea mai apropiata mediei Ri calculate anterior

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

41

Page 42: Tehnici Pentru Recunoasterea Fetei

d.)Acesti pasi sunt urmati de o mediana de 31 de pasi lata si o filtrare medie lata de 101 pasi. Filtrul median netezeste gaurile din contur si filteaza marile adancituri si ridicaturi de pe contur.

e.)Conturul este tot atat de bine realizat pe cat este de apropiat profilurilor fetei. Iata de ce pasul urmator inlocuieste Ri cu o valoare gama Ri+-5 pixeli cu valoarea ce maximizeaza prezentarea n din valoarea de filtru Susan la pixelul tintei.

f.) in fine acest rezultat este filtrat din nou printr-o filtrare mediana de 31 de pasi lata si una de 100 pasi lata.

g.) apoi Ri regenreaza conturul imaginii(fig 52) si de pe conturul masti rezultand imaginea finala(fig 53)

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

42

Page 43: Tehnici Pentru Recunoasterea Fetei

7. Extragerea caracteristicilorŢinta imaginii segmentate regăseşte faţa în imagine. În faza de extragere a

caracteristicilor această regiune va fi verificată pentru a se găsi caracteristici. Dacă se găsesc mai multe caracteristici căutarea feţei va fi mai uşoară si mai exactă.

Principalul scop al acestei etape esă extragă cât mai multe caracteristici ale feţei. Mai întâi sunt prezentate câteva caracteristici care au fost identificate şi extrasee în proiectul DALT.2.4/2001 şi apoi sunt prezentate alte metode posibile.

7.1. Caracteristici în funcţie de distanţă şi raţieMai întâi am încercat să extragem cele mai importante caracteristici, apoi am

încercat algoritmi de design pentru găsirea poziţiei lor. Fiecare algoritm are o zonă specifică de interes (ROI) care defineşte aria de căutare pentru rezultatul algoritmului. ROI este determinată în funcţie de parametrii deja calculaţi.

7.1.1 Detectarea sprâncenelorUn filtru Reddi cu trei praguri este aplicat în ROI-ul sprâncenelor (fig. 54).

Scanând de sus în jos, Aeye –ul mediu este format peste 5 linii orizontale. 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. Ca rezultat, se obţine coordonata y_eyebrows.

Fig 54 Exemplu de ROI al sprâncenelor, segmnetat cu un filtru Reddi modificat

7.1.2 Detectarea ochilorRegiunea de interes pentru localizarea ochilor se află chiar sub sprâncene. Poziţia

verticală a ochiului (y_eye) este următorul maxim al Aeye, calculat în pasul anterior.

43

Page 44: Tehnici Pentru Recunoasterea Fetei

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].

Aceste două coordinate preliminare ale ochilor sunt folosite în continuare pentru a detecta colţul ochiului. Pentru a minimiza erorile de detecţie generate de o iluminare neuniformă a feţei, am definit regiuni separate de interes pentru segmentarea Reddi (fig 55). Pixeli cei mai întunecaţi şi cei mai spre dreapta şi stânga sunt colţii ochilor (x_left_eye_right, x_left_eye_left, y_left_eye_up, y_left_eye_down, x_right_eye_right, x_right_eye_left, y_right_eye_up, y_right_eye_down)

Fig 55 Exemplu de segmente Reddi ale ochilor

7.1.3 Detectarea nasuluiLocaţia orizontală a nasului este definită de axa de simetrie a feţei [AASK98],

[BRUN93]. 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ă. Folosind aceleaşi tehnici de segmentare Reddi, poziţia verticală a nasului e apoi calibrată. Ca rezultat, noua poziţie verticală a nasului (y_nose) e calculată ca linia ce separă zonele negre ale găurilor nasului în două regiuni simetrice. Mai apoi, marginile nasului (x_nose_left, x_nose_right) sunt găsite căutând în ROI sfârşitul zonei negre a găurilor nasului (vezi fig. 56).

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

7.1.3 Detectarea guriiProcedura de detectare a gurii este similară cu cea pentru nas. Mai întâi se

localizează poziţia verticală (y_mouth), printr-o scanare sus-jos a ROI, pentru regiunea întunecată a buzelor. Poziţia orizontală a gurii şi implicit dimensiunea ei, se află împărţind gura în două regiuni, stânga şi dreapta ROI, precum în figura 57.

Fig. 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, x_mouth_right).

Procedura presupune că forma gurii este aproximativ orizontală. Imagini ale gurii precum cea din fig 57 dreapta produc rezultate eronate.

44

Page 45: Tehnici Pentru Recunoasterea Fetei

7.1.5 Modelarea conturului feţei Pentru o caracterizare mai bună a feţei, pentru a creşte gradul de individualitate a

modelelor feţelor, am introdus coordonate suplimentare pentru detectarea grosimii feţei: la ochi (x_right_at_eyes, x_left_at_eyes), la nas (x_right_at_nose, x_left_at_nose) şi la gură (x_right_at_mouth, x_left_at_mouth).

Procesul e o reducere simplă a căutării marginii feţei în imaginea Sobel la nivelele corespunzătoare.

7.2. Alte caracteristiciŞi alte caracteristici pot fi extrase din faţă. Acestea pot rezulta din calcule locale

sau globale. Caracteristici locale sunt: centrul masei, aria, perimetru, orientare, momente, cutie de restrângere. Transformările Fourier, DCT şi wavelet pot fi aplicate zonelor locale şi globale, de asemenea.

7.2.1. Proprietăţi geometrice

Fig 58. Imaginea originală a centroid-ului. Imaginea din stânga este o imagine alb negru cu o singură regiune. Această imagine va fi folosită pentru exemplificarea

proprietăţilor prezentate în paragraf. În imaginea din dreapta ete o cruce care marchează centrul imaginii. Aria regiunii este 5692.

În paragraful următor vor fi prezentate proprietăţile geometrice ale regiunii R. Se presupune că pixeli sunt de formă pătratică.Aria lui R este:

sau numărul de pixeli din regiune.

Centroid-ul este locaţia medie a pixelilor în setul R. Deşi x şi y sunt întregi şi

sunt numere reale:

45

Page 46: Tehnici Pentru Recunoasterea Fetei

Lungimea perimetrului P a unei regiuni este o altă proprietate. O simplă definire a unui perimetru a unei regiuni fără găuri este setul pixelilor graniţei interioare. 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, setul rezultat de pixeli de perimetru este 4-conectat. Când se foloseşte 4-conectivitatea pentru a determina dacă un pixel din regiune este conectat cu un pixel din afara regiuni, setul rezultat de pixeli de perimetru este 8-conectat. Aceasta este motivaţia definiţiei perimetrului 4 şi 8 –conectivităţii:

Fig. 59. Perimetrii. În dreapta este perimetrul de 4-conectivitate a unei regiuni cu lungime, iar în stânga este perimetrul de 4-conectivitate a unei regiume cu lungime

Lungimea calculată |P| a perimetrului P, pixeli din P trebuie ordonaţi într-o secvenţă P={(y0,x0),…,(yk-1,xk-1)}, fiecare pereche de pixeli succesivi din secvenţă fiind vecini, inclusiv primul si ultimul. Apoi lungimea perimetru |P| este definită ca:

Cu aria A si perimetrul P definite, o 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. Un concept folositor este cutia de restrângeri, care e un dreptunghi cu părţi orizontale şi verticale care îngrădesc regiunea si ating cele mai extreme puncte de sus, jos, stânga şi dreapta.

46

Page 47: Tehnici Pentru Recunoasterea Fetei

Fig. 60 Cutie de încadrare

Momente spaţiale sunt adesea folosite pentru a descrie forma unei regiune. Există trei momentele spaţiale de ordinul al doilea al unei regiune. Ele sunt definite după cum urmează:

Momentul de ordinul al doilea de verticală.

Momentul de ordinul al doilea orizontal.

Momentul de ordinul al doilea amestecat

Deci µyy măsoară variaţia orizontală, µxx măsoară variaţia orizontală, iar µyx măsoară variaţia orizontală şi verticală.

Aceste valori sunt adesea folosite ca descriptori de formă, deoarece sunt invariabili la traziţie şi schimbare de scală a unei forme 2D.

Momentele spaţiale secunde au valoarea şi importanţă pentru regiunea de oricare formă.

Dacă regiunea este o elipsă, axa minoră şi majoră şi orientarea axei de majore (în mod clar orientarea axei minore) poate fi determinată după cum urmează:

Dacă µyx=0 şi µyy> µxx , atunci axa majoră este orientată la un unghi de 90ş în

sens invers ceasornic faţă de axa orizontală şi are o lungime de . Axa

minoră are o lungime de Dacă µyx=0 şi µyy<= µxx, atunci axa majoră este orientată la un unghi de 0ş în

sens invers ceasornic faţă de axa orizontală şi are o lungime de . Axa

minoră are o lungime de

47

Page 48: Tehnici Pentru Recunoasterea Fetei

Dacă µyx!=0 şi µyy> µxx, atunci axa majoră este orientată la un unghi de

în sens invers ceasornic faţă de axa orizontală şi

are o lungime de . Axa minoră are o lungime de

Dacă µyx!=0 şi µyy<= µxx, atunci axa majoră este orientată la un unghi de

în sens invers ceasornic faţă de axa orizontală şi

are o lungime de . Axa minoră are o lungime de

Fig. 61 Elipsa înconjurătoare

În [TIAN00] sunt prezentate câteva metode pentru detectarea caracteristicilor şi extragerea lor. Aceşti algoritmi sunt creaţi pentru analiza expresiilor, 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]. Reţeaua wavelet detectează forma dintr-o faţă necunoscută, folosind un set de feţe cunoscute, care deja au semne pentru toate caracteristicile detectabile.

7.2.2. Transformări Fourier şi transformări Fourier discreteTransformările sunt ustensile de extragere a caracteristicilor foarte eficiente.

Acestea vor fi prezentate pe scurt, pe baza documentaţiei Matlab.Transformarea Fourier are un rol important în zona aplicaţiilor de procesare a

imaginilor, inclusiv analiză, restaurare, mărire şi compresare. Transformata Fourier este definită de ecuaţia (10).

48

Page 49: Tehnici Pentru Recunoasterea Fetei

(10)Variabilele ω1 şi ω2 sunt variabile de frecvenţă. Unităţile lor sunt radiani/sample.

F(ω1,ω2) este des numită reprezentarea domeniului de frecvenţă a f(m,n).F(ω1,ω2) este o funcţie de valoare complexă care este periodica atât în ω1 cât şi în

ω2, de perioadă 2π. Din această cauză, de obicei e afişată doar în acest interval.Lucrul cu transformata Fourier pe calculator implică de obicei o formă a

trasformatei cunoscută sub numele de transformata Fourier discretă (DFT). Sunt 2 motive pt. folosirea acestei forme:

Intrarea şi ieşirea DFT sunt discrete, cea ce e bine pt. manipularea pe calculator. Există un algoritm rapid pentru calcularea DFT cunoscut ca Transformarea

Fourier Rapidă (FFT).DFT este de obicei definit pentru o funcţie discretă f(m,n) care e nonzero doar pe intervalul finit 0 ≤m ≤ M −1 şi 0 ≤n ≤ N −1. relaţia bidimensională M-N a DFT e dată de ecuaţia (11).

(11).

Valorile sunt coeficienţii DFT F( p, q ) ai f(m,n). în particular, valoarea F(0,0) este numită coeficientul DC.

Coeficienţii rezultaţi din DFT nu pot fi folosiţi pentru a caracteriza proprietăţile regiunii. În figura 62 sunt câteva imagini şi transformata Fourier corespunzătoare cu M=N=152.

49

Page 50: Tehnici Pentru Recunoasterea Fetei

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

7.2.3. Transformările Cosine discreteDCT are proprietatea că, pentru o imagine tipică, majoritatea informaţiei

semnificative este concentrată în doar câţiva coeficienţi ai DCT. Din acest motiv este folosită în aplicaţii de compresie a imaginilor. DCT este la baza algoritmului de compresare internaţional a imaginilor cunoscut sub nule de JPEG.DCT bidimensional a unei matrice A de dimensiuni M-N este definită astfel:

(12)unde 0<=p<=M-1 şi 0<=q<=N-1.

Valorile Bpq sunt numite coeficienţii DCT a lui A.DCT este o transformare inversabilă, iar inversa sa este:

50

Page 51: Tehnici Pentru Recunoasterea Fetei

unde αp , αq sunt aceleaşi ca în ecuaţia (12).

Inversa DCT poate fi interpretată că orice matrice AMN poate fi scrisă ca o sumă de M*N funcţii de forma

(13).Aceste funcţii sunt numite funcţii de bază a DCT. Coeficientul DCT Bpq, poate fi

considerat ca greutatea aplicată fiecărei funcţii de bază.Figura 63 prezintă un exemplu, a proprietăţilor de compresie a DCT. Figura arată

imaginile reconstruite folosind 1,2,3,4 şi 5 coeficienţi DCT.

Fig. 63. Imagini reconstruite cu DCT. Se poate observa că ultima imagine (5 coeficienţii) este aproape identică cu originalul.

Tabelul 1 prezintă nevoile de stocare a imaginii dacă informaţia gri este înlocuită cu coeficienţi DCT. În procente este exprimată raţia elementelor diferite de 0 a coeficienţilor 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, aşa că raţia de compresie este de 2,4 sau 8 ori mia mică (procentul este mai mare) decât valorile din tabelul 1.

Tabelul 1 Evaluare a compresiei imaginii cu coeficienţi DCT

7.3. Decompresie wavelet a imaginilor feţeiÎn [GARC00] autorii folosesc decompresia wavelet a feţei. Ei aplică o

decompresie arbore quad pe 2 nivele a imaginii, rezultând 16 wavelets a imaginii.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. Pentru a-l n -lea nivel semnanul este decompresat conform (14), (15), (16) şi (17).

51

Page 52: Tehnici Pentru Recunoasterea Fetei

Pentru imagini reale rezultatul este redat în figura 64.

Fig 64. Wavelets ale feţeiCaracteristicile pot fi extrase din aproximaţie, calculând diferite calcule statistice [GARC00]. Pe deasupra wavelets pot fi folosite şi pentru detectarea feţei, similar ca în [MICE02].

52

Page 53: Tehnici Pentru Recunoasterea Fetei

7.4. Probleme în extragerea caracteristicilorCaracteristicile 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.Cele mai importante puncte sunt:

Variaţii determinate de poziţia capului. Diferenţe de rotaţie, chiar dacă sunt foarte mici, pot cauză disimilarităţi în caracteristicile determinate. Această problemă poate fi rezolvată prin normalizarea poziţiei feţei, efectuând o rotaţie înapoi la poziţia normală.

Metode de normalizare scalară trebuie folosite dacă faţa se află la distanţe diferite de dispozitiv. O dimensiune (înălţime, Lăţimea, sau distanţa dintre ochi) este distanţa de normalizare, care trebuie să fie de lungime standard, şi restul imaginii va fi scalată păstrând raţia. (vezi fig. 65)

Fig 65 Scalarea feţei

În [MICE02] am folosit caracteristicile normalizate după ce au fost extrase, 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. Căutarea în baza de date.Siguranţa căutării depinde în special de:

precizia caracteristicile extrase: caracteristicile trebuie să fie bine identificate, formă cu stabilă şi invariabilă pentru o persoană dată. Condiţii exterioare ambiante (iluminare, mustaţă, barbă, vârstă) să nu ar trebui să altereze caracteristica extrasă. A lua totul în considerare este aproape imposibil, dar noi trebuie să facem progresele în această direcţie.

Caracteristicile folosite pentru căutare ar trebui să fie cele care au cantitatea de informaţie maximă. Caracteristici ca diametrul pupilei, forma liniei spectrale de margine de păr nu sunt semnificative. Dacă ele se întrebuinţează, atunci trebuie să aibă o greutate în decizie foarte joasă comparată cu alte caracteristici. Pe de altă parte, forma feţei, forma nasului, dimensiunile feţei sunt specifice pentru o persoană dată

Există multe abordări pentru procesul de identificare. Nu există o soluţie bună; Ele au abordări diferite, au avantajele diferite şi dezavantaje diferite. În paragraful următor sunteţi prezent mai multe abordări.

53

Page 54: Tehnici Pentru Recunoasterea Fetei

8.1. Abordări pentru căutarea feţelorÎndrumările de bază pentru măsurarea asemănările sunt prezente în [DASK91],

dar există o varietate largă pentru a le măsura.Primele şi cele mai folosite s-au bazat pe calculele statistice. Ele definesc o clasă

a caracteristicilor pentru fiecare persoană din baza de date. Dacă caracteristicile nu sunt precise atunci setul de parametri poate varia în domenii foarte mari ce va decurge la intersecţia nedorită de clasele diferite, însemnând că identitatea nu va fi detectată. Abordările statistice au fost de încredere, eliminând valorile ce sunt afară din variaţia de parametri acceptată.

Metoda prezentată în [MICE02] se bazează pe combinaţiile distanţei liniare minime. 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ă, măsura fiind definită ca distanţa Euclidiană de la interogare la combinaţia liniară ce mai apropiată de vectorul interogare.

Metoda celei mai apropiate linie de caracteristici ( [Stan98a], [STAN00]) este o altă abordare. Orice două puncte de caracteristici ale aceleaşi persoane sunt generalizate de linia de caracteristici traversând cele două puncte. 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. Clasificarea se bazează pe distanţa minimă de la caracteristica de interogare la fiecare linie de caracteristică.

Recent a fost încercări de folosire a reţelelor neuronale şi modele ascunse Markov ([NEFI99]) din care au decurs rezultatele bune, dar chiar şi aceste abordări nu dau rezultate 100%.

8.2. Identificare folosind distanţele de caracteristiciDistanţele între caracteristicile detectate au fost folosite în [MICE02]. După ce

caracteristicile au fost detectate toate caracteristici de distanţă necesare pot fi extrase pentru o figura de intrare necunoscută. Ca pasul următor, un model al feţei este construit (un „vector de figură”). E compus din din15 valori, precum e descris în Tabelul 2.

Nr. Descrierea valorii Formula1 Lăţimea feţei la nivelul de ochi x_right_at_eyes – x_left_at_eyes2 Distanţa bărbie-sprânceana y_bottom – y_eyebrows3 Lăţime feţei. x_right_edge –x_left_edge4 Lăţimea la nivelul de nas. x_right_at_nose – x_left_at_nose5 Lăţimea feţei la nivelul de gură. x_right_at_mouth – x_left_at_mouth6 Distanţă între ochi. x_eye_right – x_eye_left7 Lăţimea ochiului stânga x_left_eye_right – x_left_eye_left8 Lăţimea ochiului drept x_right_eye_right- x_right_eye_left9 Lăţimea gurii. x_mouth_right –x_mouth_left10 Lăţimea nasului. x_nose_right – x_nose_left11 Distanţă verticală între ochi şi

sprâncene.y_eyes – y_eyebrows

12 Distanţă verticală între ochi şi gură.

y_mouth – y_eyes

54

Page 55: Tehnici Pentru Recunoasterea Fetei

13 Distanţă verticală între gură şi nas. y_mouth – y_noes14 Distanţă verticală între gură şi

sprâncene.y_mouth – y_eyebrows

15 Distanţă verticală între nas şi sprâncene

y_noes – y_eyebrows

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ă, 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.

După ce căutarea e terminată, primele două valori minime ale εi sunt stoacate ca să calculeze probabilitatea de identificare ca identitate cu eroarea pătratică minimă:

(11)

9. Ghidul de aplicaţie segmentatAcest capitolul prezintă aplicaţia realizată. Ţinta acestei aplicaţii e să

implementeze într-un limbaj de programare algoritmii dezvoltaţi în mediul Matlab. Au existat mai multe probleme care au necesitat completare:

Problema cea mai simplă a fost transpunerea codului înregistrat Matlab în codul de C.

A fost o nevoie pentru a implementa în C algoritmii interni şi optimizaţi ai Matlab.

O interfaţă utilizator Windows a fost necesară ca să interacţioneze cu utilizatorul. O soluţie de captare video a fost necesară pentru a achiziţiona imaginea.

În paragraful următor implementarea detaliilor va fi dată, urmat de un paragraf explicând utilizarea aplicaţiei din punctul de vere a utilizatorului.

9.1. Detalii ale implementăriiŢinta proiectului a fost să realizeze o aplicaţie DSP. La implementarea acestei

aplicaţii acest lucru a fost luat în considerare. Aplicaţia a fost luată în consideraţie ca o versiune prototip pentru PC, o ustensilă de testare a algoritmilor. Deşi MS VC++ permite un stil de programare orientată obiect foarte organizat şi de structură, acesta nu a fost folosit la implementarea metodelor de procesare a imaginilor. Algoritmii au fost 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, altfel fiecare algoritm va trebui să fie tradus în limbajul de asamblare al DSP

55

Page 56: Tehnici Pentru Recunoasterea Fetei

Nevoile de memorie pentru stocarea imaginii sunt mari, a fost nevoie de compacta cât mai zonele de memorie folosite. Dacă algoritmii ar fi fost împărţiţi în obiectele interactive atunci trecerea parametrilor ar fi ocupat foarte multă memorie.Pentru realizarea unei performanţe mai bune, principiul de încapsulare a

programării structurate e spart: parametrul care trece între metodele de prelucrare foloseşte variabile globale, în care se stochează după fiecare fază rezultatul fiecărei faze.

Aceasta a fost compromisul acceptabil pentru nu copia rezultatele de unul pas la intrarea pasului următor. În acelaşi stil, o altă variabilă globală s-a întrebuinţat pentru salvarea calculelor matricei SUSAN folosită în detectarea Susan Edge în partea de finisare a conturului.

9.1.1. Interfaţa utilizator Interfaţa utilizator a fost construită în stilul cel mai simplu, bazat pe Clasele

Microsoft Framework( MFC). Este o aplicaţie de dialog singular cu clase de stil standard provenite din CWinApp (CFaceDetectApp) şi CWinApp (CFaceDetectApp). CFaceDetectDlg iniţializează dispozitivul de captură, Directshow captează graficele şi manipulează evenimentele aplicaţiei. Programarea cadrelor a fost făcută într-un stil simplu şi standard.

9.1.2 Capturarea videoCapturarea video e realizată folosind Directshow API şi cadrele Directx. Directx

este o tehnologie bazată COM, care dă un API la dispozitivele multimedia. Interfeţele COM permit să folosirea independentă din limbajul de programare.

Folosind API-ul dat de Directshow cel mai multe probleme de capturare sunt rezolvate de Directshow şi de adaptoarele multimedia ale Windows. Aplicaţia trebuie doar să construiască un grafic de filtru corespunzător (termen introdus de Directshow: la set bloc, interconectat într-o ordine secvenţială, fiecare bloc având o captură specifică, funcţie de procesare sau afişare). Graficul de filtru include un filtru SamplerGraber, care transmite fiecare capturată umplută la obiectul Samplergraber COM definit care implementează interfaţa ISampleGrabberCB. CSamplerGraber copiază imaginea capturată la o zonă de buffer şi o transmite la rutinele de prelucrare.

Partea cea mai multă importantă de această fază, codul de iniţializare de grafic de filtru este prezent în Appendix B şi el este făcut bazându-se pe exemplele Directx SDK.

9.1.3. Rutine de procesare a imaginiiRutinele de căutare a feţei în imaginea capturată, sunteţi încapsulate în obiectul CFaceProcessing. Metoda DoProcessing(), a pornit de la lansările de obiect CSamplerGraber la rând cu celelalte metode de procesare. Acestea corespund paşii descrişi în amănunţime în Capitolul 6 şi sunt:

ColorExtraction () - selectează zonele care au culorile asemănătoare cu ale feţei (vedeţi §6. 1.)

SelectMaximumFilled () - a selectat regiunea de suprafaţă maxim umplută (vedeţi §6. 2.)

FaceCrop() - restrânge zona de figură, reducând suprafaţa de prelucrat (vedeţi §6. 2.)

56

Page 57: Tehnici Pentru Recunoasterea Fetei

SelectHue() - calculează valoarea de nuanţă rea şi regiunea aproape de aceasta (vedeţi §6. 4.)

Susan1() – detectarea marginii zonei pe baza Susan. Include restrângerea marginii şi lărgirea marginii (vedeţi §6. 4.)

Susan2()— Selectează de la zonele delimitate cu muchiile Susan, care formează figura (vedeţi §6. 4.)

ConturSmoothing()— sporeşte conturul feţei (vedeţi §6. 4.)

9.2. Mini Ghidul utilizator.Independent de modul realizării, în modulul dinamic şi static, aplicaţia înfăţişează

aceeaşi interfaţă, diferenţa este că în modul static, nu există imagini capturate, fereastra camerei este goală, şi butoanele de comandă ale camerei sunt dezactivate (Figura 66).

Fig 66. Interfaţa cu utilizatorul. În dreapta în modulul de timp real iar în stânga în modulul static, de testare

În continuare, comportamentul aplicaţiei va fi prezentă în modul în timp real. Modulul de testare este o versiune limitată a modului real.

După ce utilizatorul porneşte aplicaţia, dialogul principal apare şi imaginea camerei online va fi afişată înăuntrul ferestrei Camera. Dacă nu există dispozitive de capturare ataşate, atunci Camera şi ferestrele celelalte rămân goale, până când dispozitivului funcţionabil va fi va ataşat la PC. Aplicaţia detectează conexiunea unui dispozitivul de video nou, şi dacă el este capabil pentru a captura se va întrebuinţa ca sursa (Figura 67) şi capturarea va începe instantaneu.

Fig. 67 Detectarea unui dispozitiv de capturare. După detectare dispozitivul va aproviziona aplicaţia cu imagini.

57

Page 58: Tehnici Pentru Recunoasterea Fetei

Ferestrele de rezultat afişează să urmeze rezultatele (de sus în jos, stânga sau drepta):

Imaginea statică care a fost capturată. Această imagine este intrarea paşilor de prelucrare. În fiecare 10 secunde, dacă procesele anterioare s-au terminat o imagine nouă este capturată.

Suprafaţa selectată cu culoare aproape de culoarea feţei. Regiuni maxim umplute, aceasta este figura şi alte regiuni care au o conexiune la

figura, şi au culorile asemănătoare. Rezultatul de selectare Susan. Rezultat final după calificarea conturului

Utilizatorul poate să selecteze cu butonul de selectare imaginile, care din ele să fie afişate înăuntru ferestrei mari din stânga.

Utilizatorul poate să controleze procesul de capturare cu butoanele din subsolul ferestrelor:

Capturare să poată să fie oprite cu butonul Pasuse. Dacă capturarea a fost oprită, după aceea ea poate să fie repornită cu butonul

Start. Capturare să poată să fie făcută cadrul cu cadru la momente când utilizatorul

apasă butonul Step.Cu butonul Stave oricare imagine de rezultat afişată în dialog să poată să fie

salvată într-un fişier bmp.Caseta Status information informează utilizatorul ce ar trebui să facă ca să

primească un rezultat corect dacă prelucrarea nu poate să fie făcută. 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ă. La aceste mesaje de obicei este adăugat mesajul de voce asemănător.

10. Concluzii şi îmbunătăţiri ulterioareAceastă lucrare prezintă o abordare realizabilă pentru recunoaşterea feţei. A fost

prezentă de la prima fază de achiziţie a imaginii la identificarea feţei, până la determinarea identităţii. Au fost folosite una sau mai multe abordări, metode sau algoritmii pentru fiecare fază. Fiecare pas a fost tratat cu mai multe sau mai puţine detalii. Cel mai mult descris a fost pasul de segmentare şi prezentarea de algoritmi folosiţi. El a fost studiat şi s-au încercat mai multe abordări şi algoritmi decât au fost prezenţi în această lucrare, dar aceştia au fost scoşi din prezentare, deoarece se pare că ei nu duc la soluţiile bune.

Ideea de pornire a segmentării bazate pe culoare a fost dată de disponibilitatea imaginilor color. Deşi în domeniile industriale şi camerele alb-negru sunt mai mult folosite, datorită preţurilor, în prezent de doar camerele color au fost disponibile pentru pe noi să folosim pentru proiect. Pentru a transforma imaginea de culoare capturată să într-una alb-negru (ce a fost făcut în anul anterior) a părut să fie o pierdere de informaţie nedorită.

Mai mulţi autori studiaţi afirmă că există regiunile de spaţiu de culoare de figură specifice, şi cu ele o figură poate să fie să găsească bine într-o o imagine color. După un studiu de o lungă perioadă concluzia care a fost luată e că acele regiuni ori nu sunt

58

Page 59: Tehnici Pentru Recunoasterea Fetei

universal valabile, autorii nu au specificat în mod corect toată informaţie necesară, sau informaţia a fost interpretată greşit.

Segmentarea bazată pe culoare nu lucrează numai singură pentru mai multe motive:

Camera a capturat culorile incorecte, deoarece:o calităţii mediocre a senzoruluio 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ţă.

Noi putem încerca să minimalizăm deficienţa anterioare strâmtând domeniul culorii selecte. Această pe altă mână duce la regiuni ale feţei detaşate: pierderea ochilor, nasului, zonele de frunte.Abordarea luată a fost combinarea segmentării de culoare uşor restricţionată cu o

aproximaţie de faţă de nivel al doilea, care dă aproximaţia de faţă mai bună şi finală. Aceste două abordări au fost prezente. Prima dă un rezultat foarte stabil, 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. Aceasta face algoritmul foarte vulnerabil pentru schimbările ambiante, în special pentru variaţiile fulger.

A doua abordare detectează muchiile într-o regiune a imaginii reduse, şi regiunile delimitate cu aceste muchii sunt clasificate ca regiuni ale feţei sau de fundal. Acesta este un proces de clasificare complex. Această clasificare este partea cea mai multă vulnerabilă. Ea trebuie să fie foarte bine reglată în viitor pentru a da rezultate foarte bune, pentru a depăşi în calitate prima abordare.

Platformele ţintă ale algoritmilor sunt procesoarele de semnal digitale. Deşi îndeplinirea prezentă este pe sistemul PC, designul ales pentru implementare este cât mai simplu cu putinţă. 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.

Problema cea mai mare care apare rezultă din nevoile mari de memorie ale algoritmului. Implemetarea actuală are nevoie de 40 MB de memorie.

Observaţii Slăbiciuni Puncte forteSegmentarea bazată pe culoare e folositoare la detectarea obiectelor de culoarea feţei.

X

Întăririle bazate pe muchii delimitează bine zonele fetei. XSelectarea regiunilor de feţei sunt greu de realizat, depind de multe constante, care nu sunt destul de precise.

X

A fost proiectat un algoritm de umplere combinată şi selectare de suprafaţă maximă.

X

Uni dintre algoritmii arii de suprafaţă maxime nu sunt optimizaţi.

X

Nevoile de memorie mari X

Tabelul 3 Puncte forte şi slăbiciuni

59

Page 60: Tehnici Pentru Recunoasterea Fetei

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, nevoile de

memorie vor fi dinamic determinate de la parametrii obţinuţi în paşii anteriori (ex. 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.4 Dezvoltare fazei de detectare de caracteristici. 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. În repetate rânduri este foarte greu să reuşeşti ceea ce îţi propui, dar bucuria e mare când ceva nou rezultă din munca ta. De asemenea există multe secrete neexplorate care fac acest domeniu unul foarte interesant.

60

Page 61: Tehnici Pentru Recunoasterea Fetei

Referinţe

CRET02 CretuAASK98K. Aas, ""Detection and Recognition of Faces in Video Sequences"", Proceedings of the NOBIM, Oslo, June 1998.

AMIT998 Y. Amit, D. Geman, "A Computational Model for Visual Selection", Neural Computation, vol. 11, pp. 1691-1715, 1998

BEYM93 D.J. Beymer, "Face Recognition Under Varying Pose", Technical Report, MIT AI Lab, AI memo 1461, December 1993MIT technical report AI.1461, CBCL. 89, 1993

BRUN93 R. Brunelli and T. Poggio, "Face Recognition vs Templates", IEEE Trans. on Pattern Analysis and Mach Intelligence, Vol. 15, pp. 1042 -1052, 1993.

CRET92 V. Cretu, "Structuri de date si tehnici de programare avansata", UTT lithography, Timisoara, pp. 52-60, 1992

DASK91 Th.N.Daskalakis, C.N. Daskalakis, "Similarity Measures for Content Retrieval of Images", Digital Signal Processing, Elsevier Science Publisher, 1991

FANS00 L. Fan, K.K. Sung, "A Combined Feature-Texture Similarity Measure for Face Alignment Under Varying Pose", IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'00), Vol.1, pp. 1308-1315, May 2000

FERI02R.S. Feris, J.Gemmell, K. Toyama, V. Krüger, "Facial Feature Detection Using a Hierarchical Wavelet Face Databases", Microsoft Research Technical Report, Redmond, 2002

FLEC94 M.M. Fleck, "Practical Edge Finding with a Robust Estimator", IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'94), pp. 649-653, 1994

FLEC96 M.M. Fleck, D.A. Forsyth, "Finding Naked People", Proc. European Conf. on Computer Vision , pp. 593-602, Germany: Springer-Verlag, 1996

GARC98 C.Garcia, G. Zikos, G.Tziritas, "Wavelet Packet Analysis for Face Recognition", Image and Vision Computing, Vol. 18, No. 4, pp.289-297, Feb. 2000

GARC99a C.Garcia, G.Tziritas, "Face Detection Using Quantized Skin Color Regions Merging and Wavelet Packet Analysis", IEEE trans. On Multimedia, vol.1, September, 1999

GARC99b C.Garcia, G. Zikos, G.Tziritas, "Face Detection in Color Images using Wavelet Packet Analysis", IEEE Int. Conf. on Multimedia Computing and Systems, 1999

GUOL00 G. Guo, S.Z. Li, K.L. Chan, H. Pan, "Texture Image Segmentation using Reduced Gabor Filter Set and Mean Shift Clustering", Fourth Asian Conference on Computer Vision, ACCV2000, pp.198-203, 2000.

LIAO00R. Liao, S.Z. Li, "Face Recognition Based on Multiple Facial Features", In Proc.IEEE Conf. on Automatic Face and Gesture Recognition, pp.239-244, 2000

61

Page 62: Tehnici Pentru Recunoasterea Fetei

LILU98 S.Z. Li, J. Lu, K.L. Chan, J. Liu, L. Wang, “Hierarchical Linear Combinnantions for Face Recognition”, Proc. of ICPR'98, Vol.2, pp. 1191–1193, Australia, 1998

MENG00 L. Meng, T.Q. Nguyen, D.A Castnon, “An Image-based Bayesian Framework for Face Detection”, IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'00), Vol.1, pp. 1302–1307, May 2000

MICE02 M.V. Micea, V. Cretu, L. Prodan, Z. Husz, “Face Recognition Techniques for Embedded Systems”, submitted to Tran. on IEEE Signal and Image@@

NAGA00 Nagao, “Face Recognition by Distribution Specific Feature Extraction”, IEEE Proc. on Computer Vision and Pattern Recognition (CVPR’00), Vol.1, pp. 1278–1285, May 2000

NEFI99A.V. Nefian, M.H. Hayes III., “Face Recognition Using an Embedded HMM”, IEEE International Conference Audio Video Biometric based Person Authentication, March 1999, p. 19-24.

OTSU79 N. Otsu, "A Threshold Selection Method from Gray-Level Histograms", IEEE Trans.actions on Systems, Man, and Cybernetics, Vol. 9, pp. 62 - 66, 1979.

REDD84 S.S. Reddi, S.F. Rudin and H.R. Keshavan, "An Optimal Threshold Scheme for image Segmentation", IEEE Trans.actions on Systems, Man, and Cybernetics, Vol. 14, pp. 661- 665, July/August 1984.

ROWL99 H.A. Rowley, “Neutral Network Based Face Detection”, PhD thesis, CMU, Pittsburg, 1999SHAP01 L.G. Shapiro, G.C. Stockman, “Computer Vision”, Prentice Hall, New Jersey,

2001SMITH95a S.M. SMITH, J.M. Brady, “SUSAN – A New Approach to Low Level Image

Processing”, Int. Journal of Computer Vision, 23(1):45–78, May 1997SMITH95b S.M. SMITH, “Edge Thinning Used in the SUSAN Edge Detector”,

Technical Report TR95SMS5, 1995STAN00 S.Z. Li, J. Lu, “Face Recognition Using the Nearest Feature Line Method”,

IEEE Trans. on Speech and Audio Processing, Vol.10, pp.439–443, September 2000

STAN98a S.Z. Li, “Face Recognition Based on Nearest Linear Combinations”, In Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, pp. 839–844,. June 23–25, 1998.

STAN98b S.Z. Li, J. Lu, “Generalizing Capacity of Face Database For Face Recognition”, In. Proceedings of the Third IEEE International Conference on Automatic Face and Gesture Recognition. pp. 402–405., April 14–16, 1998

TIAN00Y.Tian, T. Kanade, J. Cohn, “Recognizing Upper Face Action Units for Facial Expression Analysis”, Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR’00), Vol. 1, June, 2000, pp. 294–301.

WUHU00 Y.Wu, T.S. Huang, “Color Tracking by Transductive Learning”, In Proc. IEEE Conf. on Computer Vision and Pattern Recognition (CVPR’00), Vol.II, pp.222–227, Hilton Head Island, SC, June, 2000IEEE ??????, 2000

ZHAO00 W.Y. Zhao, R. Chellappa, “Illumination-Insensitive Face Recognition Using Symmetric Shape-form-Shading”, IEEE Proc. on Computer Vision and Pattern Recognition (CVPR'00), Vol.1, pp. 1278–1286, May 2000

62

Page 63: Tehnici Pentru Recunoasterea Fetei

Anexa A - Algoritmi Matlab

Extragerea culorii

Acest algoritm face o selecţie rapidă pentru imaginea iniţială. E foarte simplu dar are slăbiciuni.

function Output = ColorExtraction(Image)% using the color information this function creates a binary mask for% the imput image. First a intensiti normalization is done. Then the% logaritmic values are calcutated. The texture matrix is calculated too.% these 4 informations are used to determine the posible zones of the face%% Inputs : Image - RGB color% Outputs : Output - logic mask of the face (binary)

Minval= min(min(min(Image)));MinArray = double(Minval) * ones(size(Image(:,:,1)));

%logaritmic valuesLR = LogValue(double(Image(:,:,1)) - MinArray);LG = LogValue(double(Image(:,:,2)) - MinArray);LB = LogValue(double(Image(:,:,3)) - MinArray);

I = LG;Rg = LR - LG;By = LB - ( LG + LR ) / 2;

%color information extractionI_Mask = I > 200 & I<240;Rg_Mask = Rg > 5 & Rg < 32;By_Mask = (By > -28 & By < -7) | (By > -1 & By < 5);

%texture calculationsTexture = medfilt2 ( abs ( I - medfilt2 (I , [5 5] )), [ 7 7 ]);TextureMask = Texture < 1;Output = I_Mask & Rg_Mask & By_Mask; & TextureMask;

function Output = LogValue(Value)% calculates and returns the logatimic (with 10 base)% value of the Value parameter% this function applies a random [0,1] correction, to enable better% adaption for the skin color% the 105 factor stands for good scaling the resulting value% in zone witch cana better handled

63

Page 64: Tehnici Pentru Recunoasterea Fetei

%% Inputs : Value - parameter what to be logaritmated% Outputs : Output - logaritmic valueOutput = 105 *log10( Value + 1 + random('unif', 0, 1, size(Value)));

Selectarea ariei umplute la maximAceastă funcţie efectuează umplerea combinată ci selectarea ariilor de regiune maxime

function Output = SelectMaximumFilled(InputMask);% Fill the interrrior holes and selects from the resulting zones the biggest%% Inputs : ImageMask - Mask with holes(binary)% Outputs : Output- The selected maximim zone (binary)%%

MAXCOLORS=5000;Size= size(InputMask);InputMask(1,:) = 0;InputMask(:,1) = 0;InputMask(Size(1), :) = 0;InputMask(: ,Size(2)) = 0;

%global variable, to be available to the function’s subroutinesglobal C;global L;global N;global Colors;global invert;C = zeros(Size);L=cell(MAXCOLORS,1);N=cell(MAXCOLORS,1);Colors(1:MAXCOLORS) = 0;invert=[1:MAXCOLORS];NextColor = 0;

for y = 2 : Size(1)for x = 2 : Size(2) if InputMask(y,x) == 1

W_NW = SelectNon0( C(y, x-1), C(y-1, x-1) );N_NE =SelectNon0( C(y-1, x), C(y-1, x+1) );

if W_NW >0 & N_NE >0if W_NW == N_NE

C(y,x) = invrec(W_NW); else C(y,x)= join(W_NW, N_NE, y, x, 0); end

elseif W_NW>0 C(y,x) = invert(W_NW);elseif N_NE >0 C(y,x) = invert(N_NE);else NextColor = NextColor + 1; L{NextColor} = [NextColor]; C(y,x) = NextColor;end Colors(C(y,x))= Colors(C(y,x)) + 1;else %% if InputMask(y,x) == 0if C(y, x-1) == 0 | C(y-1, x) == 0

%% this pixel has exit to margin C(y,x) = 0;

64

Page 65: Tehnici Pentru Recunoasterea Fetei

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

65

Page 66: Tehnici Pentru Recunoasterea Fetei

Output = B; end;

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

66

Page 67: Tehnici Pentru Recunoasterea Fetei

Output = n; function join_at_end(c1, c2) %subroutine of SelectMaximumFilled %join to colors at the final phase global L; global Colors;

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

67

Page 68: Tehnici Pentru Recunoasterea Fetei

Anexa B - Iniţializarea DirectXÎn această anexă e prezentă iniţializarea capturii DirectShow. E considerată valoaroasă deoarece programarea COM are nevoie de cunoaşterea multor interfeţe iar alegerea celei mai bune poate lua mult timp.

Codul care apelează iniţializarea e (din metoda OnDialogInit()):

HRESULT hr; hr = InitStillGraph( ); if (FAILED(hr)) { Error( TEXT("Failed to initialize StillGraph !")); EndDialog(IDABORT ); return FALSE; } // Modify the window style of the capture and still windows // to prevent excessive repainting m_CameraScreen.ModifyStyle(0, WS_CLIPCHILDREN); m_FaceScreen.ModifyStyle(0, WS_CLIPCHILDREN); // Register for device add/remove notifications. DEV_BROADCAST_DEVICEINTERFACE filterData; ZeroMemory(&filterData, sizeof(DEV_BROADCAST_DEVICEINTERFACE)); filterData.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); filterData.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; filterData.dbcc_classguid = AM_KSCATEGORY_CAPTURE;

68

Page 69: Tehnici Pentru Recunoasterea Fetei

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

Iar acesta e codul care urmează iniţializării:

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

69

Page 70: Tehnici Pentru Recunoasterea Fetei

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

70

Page 71: Tehnici Pentru Recunoasterea Fetei

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

71

Page 72: Tehnici Pentru Recunoasterea Fetei

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

72

Page 73: Tehnici Pentru Recunoasterea Fetei

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

73

Page 74: Tehnici Pentru Recunoasterea Fetei

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

74