Sunteți pe pagina 1din 68

MINISTERUL EDUCAȚIEI AL REPUBLICII MOLDOVA

Universitatea Liberă Internațională din Moldova


Facultatea Informatică și Inginerie
Catedra Tehnologii Informaționale și Inginerie

Admis la susținere Admis la susținere


Decanul Facultății Șef Catedră
Dubcovețchi Iurie
Dr. Conf. Univ.
________________________ _______________________
“_____”_________________ “_____”_________________

TEZA DE LICENȚĂ

CORELATORUL NUMERIC ADOPTAT PENTRU APLICAȚII DE

RECUNOAȘTERE FACIALĂ

Executant
Nogai Sergiu
Studentul grupei IA-33

Conducătorul tezei
Perju Veaceslav
Dr. Hab., acad.

Chișinău 2014
© Sergiu Nogai, 2014

CUPRINS
2
S A R C I N A.................................................................................................................................................................4
ADNOTĂRI...................................................................................................................................................................5
LISTA ABRIVIERILOR..............................................................................................................................................8
INTRODUCERE..........................................................................................................................................................9
1. ANALIZA SISTEMELOR DE RECUNOAȘERE FACIALĂ............................................................................10
1.1. ALGORITMI DE RECUNOAȘTERE FACIALĂ..........................................................................................................10
1.2. APLICAŢII ALE ALGORITMILOR DE RECUNOAŞTERE A FEŢELOR........................................................................14
1.3. CONCLUZII LA CAPITOLUL 1.............................................................................................................................27
2. CORELATORUL NUMERIC ADOPTAT PENTRU REALIZAREA SOFTULUI DE RECUNOAȘTERE
FACIALĂ....................................................................................................................................................................28
2.1. UTILIZAREA CORELAŢIEI NUMERICE ÎN RECUNOAȘTEREA FACIALĂ..................................................................28
2.2. MEDIUL DE IMPLEMENTARE A RECUNOAȘTEREI FACIALE..................................................................................33
2.4. REZULTATELE CERCETĂRII................................................................................................................................38
2.5. CONCLUZII LA CAPITOLUL 2.............................................................................................................................41
3.DOCUMENTAȚIA TEHNICĂ PRIVIND SISTEMUL DE SIMULARE..........................................................42
3.3. CONCLUZII PENTRU CAPITOLUL III...................................................................................................................47
CONCLUZII GENERALE........................................................................................................................................48
BIBLIOGRAFIE.........................................................................................................................................................49
ANEXE........................................................................................................................................................................51
ANEXA 1. PRELUCRAREA IN IPS IMAGINEA 1......................................................................................................51
ANNEXA 2. PRELUCRAREA IN IPS IMAGINEA 2.....................................................................................................53
ANNEXA 3. PRELUCRAREA IN IPS IMAGINEA 3.....................................................................................................55
ANNEXA 4. PRELUCRAREA IN IPS IMAGINEA 4....................................................................................................57
ANNEXA 5. PRELUCRAREA IN IPS IMAGINEA 5.....................................................................................................59
ANNEXA 6 . LISTINGUL SOFTULUI.........................................................................................................................61
DECLARAȚIE............................................................................................................................................................66
CIRCULUM VITTAE................................................................................................................................................67
DATE PRIVIND CONTROLUL TEHNIC AL TEZEI...........................................................................................68

Sarcina pentru teza


3
Aprob
Şef Catedră
Dubcovețchii Iuri, Dr. Conf. Univ.
_________________________
”___” ________________ 2014

SAR C INA
pentru teza de licenţă a studentului grupei IA-33
Sergiu Nogai

Tema: „Corelatorul numeric adaptat pentru aplicații de recunoaștere facială”


aprobată prin ordinul nr____ din ”___” _____________ 2014

Conţinutul notei explicative 1. Analiza algoritmilor, metodelor şi sistemelor existente de


recunoaştere facială; 2. Elaborarea, realizarea şi cercetarea unui algoritm nou de recunoaştere
facială; 3. Elaborarea şi cercetarea sistemului de recunoaştere facială.

Lista materialului grafic 1. Clasificarea algoritmilor, metodelor şi sistemelor existente de


recunoaştere facială; 2. Structura algoritmului nou de recunoaştere facială; 3. Schema-bloc a
softului elaborat de recunoaştere facială; 4. Rezultatele cercetărilor algoritmului de recunoaştere
faclială; 5. Structura sistemului de recunoaştere faclială 6. Rezultatele cercetărilor sistemului de
recunoaştere faclială.

Data înmînării sarcinii: ”___” _____________ 2014

Executant
Sergiu Nogai,
Studentul grupei IA-33

Conducătorul tezei
Perju Veaceaslav
Dr.hab. Academicia

ADNOTARE

4
Nogai Sergiu, ,,Corelatorul numeric adoptat pentru aplicații de recunoaștere facială”, teză de
licență la specialitatea Tehnologii Informaționale, Chișinău, 2014.

Teza cuprinde introducerea, trei capitole, concluzii cu recomandări, bibliografia din 82


titluri, 23 figuri, 9 anexe, 50 de text de bază.

Cuvintele cheie: detecţia feţelor, urmărirea feţelor, vedere artificială, analiză de imagini.

Domeniul de studii: prelucrarea semnalelor.

Scopul si obiectivele lucrării: în acest context, s-a imaginat, proiectat şi implementat un


scenariu, o metodă şi un algoritm de detecţie şi urmărire (tracking) a fiecărei feţe statice sau în
mişcare identificate ca atare în cadrele respective, prin etichetarea / indexarea acesteia şi cu
calcularea poziţiilor viitoare posibile. Au fost elaborate soluţii pentru etichetarea / indexarea
corectă a feţelor în cadrele succesive inclusiv în situaţiile de posibile ambiguităţi în identificarea
corectă a acestora în cazul „pierderii” lor temporare din cadre şi reapariţiei ulterioare.

Noutatea și originalitatea: crearea unui sistem experimental pentru detectarea fețelor


umane în imagini statice.

Semnificația teoretică: constă în elaborarea algoritmului si regulilor de recunoaștere


facială.

Valoarea aplicativă: crearea unui soft ce pune în calcul metoda de recunoaștere facială.

ANNOTATION

5
Nogai Sergiu, ,, Adapted all-numerical correlator for face
recognition applications”, thesis specialty Information Technologies
Chisinau, 2014.

The thesis consists of the introduction, three chapters, conclusions, recommendations,


bibliography of 82 titles, 23 figures and 9 annexes, 50 of the main text.

Keywords: face detection, face tracking, artificial vision, image analysis.

Field of study: signal processing.

The purpose of the work objectives: in this context, there have been imagined, designed
and implemented a scenario, a method and an algorithm for detecting and tracking each static or
moving face thus identified in the respective frames, by tagging (indexing) it and computing its
future possible positions. There have been provided solutions for correctly tagging / indexing the
faces in successive frames including those possible situations of ambiguity in their correct
identification in the case of temporarily „loosing” them from some frames and further
reappearence.

Novelty and originality: the creation of an experimental system for detecting human faces
in still images.

Theoretical significance: is the development of facial recognition algorithms and rules.

Applied value: creating a soft computing method puts in facial recognition.

АННОТАЦИЯ

6
Ногай Сергей, ,, Числовой коррелято принят для приложений распознавания лиц
"дипломная работа по специальности Информационные Технологии, Кишинев, 2014.

Диссертация состоит из вступление, три главы, заключения, рекомендации,


библиография из 82 наименований, 23 рисунков и 9 приложений, 50 из основного текста.

Ключевые слова: распознавание лиц, отслеживание лиц, искусственное зрение,


анализ изображений.

Область исследования: обработка сигнала.

Цели и задачи: в этом контексте было себе представить, разработан и реализован


сценарий, способ и алгоритм обнаружения и отслеживания (трекинга) с каждой стороны
неподвижных или движущихся тех сотрудников определены в качестве таковых
маркировки / индексации его и вычисления возможное будущее . Решения были
разработаны для маркировки / индексации правильных граней в последовательных кадров
включая ситуации возможных неясностей в определении их правильно, если "потерять" их
временного персонала и последующее повторение.

Новизна и специфика: создание экспериментальной системы для обнаружения


человеческих лиц на фотографиях.

Теоретическая новизна: является развитие правил лицевых алгоритмов


распознавания.

Практическая ценность: создание программы что ставит метод вычислений в


распознавания лиц.

7
LISTA ABRIVIERILOR

IPS - image processing system


DIP - prelucrarea digitală a imaginilor
FAR - rata de falsa acceptare
FRR - rata de falsă respingere
LDA - analiza discriminatorie liniara
PCA - analiza componentelor principale
SVD - singular value decomposition
ICA - analiza pe componente independente
RID - registraţia imaginilor digitale
RIDR - reeşantionarea imaginii digitale registrate
MIB - metoda interpolării biliniare
MCC - metoda convoiuţiei cubice

INTRODUCERE

8
Actualitatea temei. Recunoașterea 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 recunoaștere a identitații folosind sisteme automate este un
process foarte complex, deoarece mecanismele folosite de creierul nostru pentru a le rezolva sunt
inca insufficient cunoscute
Sisteme robuste de recunoaştere a feţei au devenit din ce in ce mai utile in ultima
perioada pentru a ajuta la combaterea criminalităţi, lupta impotriva terorismului, autentificare
pentru accesul utilizatorului în spaţiile fizice şi virtuale pentru a asigura o mai mare securitate a
acestora.
Însă identitatea unei persoane este reprezentată nu de actele oficiale pe care le deţine, ci
de un set extins, complex, variabil în timp şi nu întotdeauna uşor de definit de trăsături
personalizate, de natură anatomică, fiziologică sau comportamentală.
Adesea, aceste condiţii în mare măsură diferite afectează performanţa sistemelor de
recunoaştere a feţei în special atunci când sistemele de recunoaștere trebuie să potrivească
imagini din baze de date de scară mare. Această performanţă scăzută a sistemelor de
recunoaştere a feţei împiedică utilizarea în aplicaţii reale la scară largă(deşi multe sisteme au fost
implementate, utilizarea şi acurateţea lor se limitează la anumite scenarii operaţionale), unde
erorile ca Rata de Falsa Acceptare (FAR) şi Rata de Falsă Respingere (FRR), sunt luate în
considerare în faza de proiectare a sistemului. FAR este probabilitatea ca sistemele să accepte în
mod incorect o persoană neautorizat, în timp ce FRR este probabilitatea ca sistemele sa respinga
în mod eronat o persoană autorizată.
Scopul tezei, constă în cercetarea adaptării corelatorilor numerici pentru aplicațiile
informatice de recunoaștere facială.
În acest sens s-au stabilit următoarele obiective:
1. Analiza studiilor și cercetărilor teoretice și empirice cu privire la corelatorul
numeric adaptat în aplicațiile de recunoaștere facială;
2. Proiectarea aplicației practice de recunoașterea facială;
3. Testarea rezultatelor.
Structura lucrării. În Capitolul 1 se prezinta introducerea în recunoașterea fetei si se redă
cateva din soluțiile prezentului. Capitolul 2 este destinat cu prioritate proiectării sistemului și
minisoftului de recunoaștere facială. În capitolul 3 vom prezenta în detalii ghidul de utilizre a
softului

1. ANALIZA SISTEMELOR DE RECUNOAȘERE FACIALĂ

9
1.1. Algoritmi de recunoaștere facială
Literatura despre prelucrarea digitală a imaginilor (DIP) în limba engleză foloseşte
diferite exprimări, ce se acoperă parţial reciproc, pentru a desemna acest domeniu de interes. Din
perspective diferite, exprimările întâlnite curent sunt: object recognition, pattern recognition,
pattern / template matching, image recognition, pattern / image classification. În limba română
acestor sintagme le corespund următoarele traduceri sau echivalări: recunoaşterea formelor,
recunoaşterea obiectelor, recunoaşterea şi clasificare imaginilor, analiză de imagini, unde
noţiunea de pattern (şablon, model, formă primară) este tradusă mai ales prin cuvîntul cu înţeles
general - formă.
Din punct de vedere al creşterii complexităţii metodelor şi operaţiilor implicate există
următoarea incluziune logică evidentă: forme ⊂ obiecte ⊂ imagini. Dacă vrem să facem
distincţie între termenii de mai sus, ordinea firească de abordare teoretică a lor ar trebui să fie (pe
nivele de complexitate):
1 1. recunoaşterea formelor,
2 2. recunoaşterea obiectelor,
3 3. recunoaşterea / clasificarea imaginilor.
În modelarea matematică a problemei recunoaşterii formelor există şi abordări teoretice
care eludează această ordine logică. De exemplu, abordarea cu metode matematice statistice a
recunoaşterii, face abstracţie de incluziunea structurală a formelor în obiecte (cu forme
complexe) şi a obiectelor în imagini (conţinînd mai multe obiecte). Într-o astfel de modelare
întreg procesul se reduce la un unic nivel al recunoaşterii, ce conţine la modul sintetic cele trei
nivele de mai sus. Un exemplu semnificativ este metoda de recunoaşterea statistică a imaginilor
/obiectelor pe baza conţinutului lor cromatic.
Recunoaşterea formelor şi clasificarea imaginilor – modelare teoretică. Aşa cum am spus
deja, pentru a se face distincţie clară între problema recunoaşterii din perspectiva prelucrării
digitale a imaginilor şi aceeaşi problemă din perspectiva inteligenţei artificiale şi roboticii,
terminologia de specialitate folosită în limba engleză este pattern recognition şi mai puţin object
recognition.
Chiar dacă vom folosi expresii ca recunoaşterea formelor, recunoaşterea obiectelor sau
clasificarea imaginilor, în continuare ne vom referi doar la ceea ce literatura engleză de
specialitate numeşte pattern recognition.
Recunoaşterea formelor şi/sau clasificarea imaginilor este un proces ce are la bază un
model în patru paşi sau etape. Chiar dacă în sistemele automate de recunoaştere şi clasificare
etapele nu apar întotdeauna ca fiind separate, ele vom fi în continuare prezentate distinct.

10
Literatura de specialitate grupează modelele şi metodele generale de recunoaştere şi
clasificare în patru mari categorii sau strategii, denumite abordări (pattern recognition
approaches):
1 A. Recunoaşterea prin potrivirea cea mai bună (template matching approach);
2 B. Recunoaşterea prin metode statistice (statistical approach);
3 C. Recunoaşterea cu ajutorul reţelelor neuronale (neural networks approach);
4 D. Recunoaşterea sintactică sau structurală (syntactic or structural approach);
Algoritmii de recunoaştere a feţei pot fi clasificate în două mari categorii în funcţie
de schemele de extragere a trasaturilor pentru reprezentarea faciala: metode bazate pe extragerea
de trasaturi si metode bazate pe extragerea aspect general?. Proprietăţile şi relaţiile geometrice
cum ar fi zonele, distanţele şi unghiurile dintre puncte de pe fata sunt folosite ca descriptori de
recunoaştere a feţei. Pe de altă parte, metodele bazate pe aspectul ia în considerare proprietăţile
globale ale modelului de intensitate a imaginii fetei.
Algoritmii de recunoaştere a feţei bazati pe aspectul general procedează la calcul
vectorilor de bază, pentru a reprezenta datele fatei cat mai eficient. În etapa următoare,
chipurile sunt proiectate pe aceşti vectori şi coeficienţi lor de proiecţie pot fi
utilizati pentru a reprezentarea imaginile faciale. Algoritmi populari, cum ar fi PCA, LDA,
ICA, LFA, Filtre de corelație, Manifolds şi Tensorfaces se bazează pe aspectul feţei. Abordări
holistice ale recunoaşterii feţei au probleme la prezenta variaţiilor de poziție. Construirea de
„mozaicuri ale imaginilor faciale”, cum ar fi cele din .....a fost a avut ca scop rezolvarea probleei
variaţiei poziției
Eigenfaces(PCA). Eigenfaces, de asemenea, cunoscut sub numele de Analiza
Componentelor Principale (PCA) este, poate, cea mai veche şi mai bine cunoscută dintre
tehnicile de analiză multivariată. Ea este semnalată în diverse lucrări sub numele de “analize
Karhunen-Loeve”, în oceanografie ca „analize EOF” (Empirical Orthogonal Funcțion) iar în
matematică sub denumirea de „analize SVD” (Singular Value Decomposition). Obiectul
principal al metodei este studiul valorilor varianţei şi a corelaţiei fără a construi noi variabile.
Are scopul de a găsi eroarea minima pentru maparea unui spatiu N-dimensional intr-unul M-
dimesional(M<<N).
Analiza Discriminatorie liniara (LDA). Analiza Discriminatorie liniara (LDA) este mai
potrivita pentru gasirea de proiecții care discriminează mai bine diferite clase. Face asta prin
cautarea vectorilor de proiecti optimi care sa maximizeze raportul de distributie intre clase si in
clase.
De obicei atunci când se lucrează cu imagini faciale numărul de
imagini de invatare este mai mic decât numărul de pixeli ai unei imagini,
astfel în clasa împrăştia matrice SW este singular cauzează probleme pentru

11
LDA [23]. La abordeze această problemă [10] realizează pentru prima dată
APC pentru a reduce dimensionalitatea date, în scopul de a depăşi această
problemă, singular-matrice şi apoi se aplică LDA în acest mic-dimensional
APC subspaţiu. Îmbunătăţirea rezultatelor de recunoaştere a fost demonstrat
prin această abordare tradiţională de peste APC.
Există 2 abordări majore pentru a obţine informaţia caracteristică unei
feţe, cu avantaje şi dezavantaje specifice, ce pot fi folosite pentru extragerea
“semnăturilor” de interes atât pentru aplicaţii de recunoaştere cât şi pentru cele de verificare,
diferenţe apărând datorită tipului de clasificator utilizat:

Fig. 1.1. Schema-bloc a unui sistem de recunoaştere/verificare a feţelor

a) algoritmi bazaţi pe analiza statistică a imaginilor disponibile, al căror scop constă în


identificarea unei baze reprezentative în raport cu care să poată fi exprimată orice imagine sub
forma unei combinaţii liniare de vectori ai bazei. Din această categorie fac parte metode precum
Analiza pe Componente Principale (PCA) [24], Analiza Discriminatorie Liniară (LDA) [2] şi
Analiza pe Componente Independente (ICA) [1].
b) algoritmi bazaţi pe măsurarea unor trăsături geometrice referitoare la distanţe între
puncte semnificative de pe suprafaţa feţei. Ca exemple putem enumera metodele Elastic Bunch
Graph Matching [25] şi Local Feature Analysis [19].
Câteva studii recente [9, 28] trec în revistă tendinţele actuale din acest domeniu, printre
care menţionăm:
- extensii de tip nucleu (kernel) ale unor metode clasice de proiecţie pe subspaţii liniare,
care au condus la apariţia algoritmilor de tip Kernel PCA/LDA/ICA
- algoritmi bazaţi pe utilizarea unor reprezentări folosind baze cu bună localizare spaţială,
respectiv metode urmărind descompunerea feţelor în componente distincte (gupate în jurul unor
puncte reprezentative precum ochii, nasul, gura – denumite generic puncte fiduciale)
- analiza imaginilor 3D şi aplicarea tehnicilor de morfism (care urmăresc generarea unor
imagini virtuale ale unei persoane pornind de la un set de imagini captate din unghiuri
neconvenabile)

12
- un număr semnificativ de articole recente au ca element comun abordarea bazată pe
modelarea şi aproximarea distribuţiei spaţiale a imaginilor reprezentând feţe umane sub forma
aşa-numitelor varietăţi matematice (manifolds).
Alte aspecte interesante se referă la asigurarea unei toleranţe sporite în raport cu
numeroasele surse de variabilitate specifice acestor aplicaţii (grad de iluminare variabil, poziţie,
transformări geometrice, acoperire parţială), elaborarea unor metode capabile să ofere
performanţe rezonabile în condiţiile existenţei unor baze de date de dimensiune redusă, detecţia
automată a punctelor fiduciale. Alte aspecte interesante se referă la asigurarea unei toleranţe
sporite în raport cu numeroasele surse de variabilitate specifice acestor aplicaţii (grad de
iluminare variabil, poziţie, transformări geometrice, acoperire parţială), elaborarea unor metode
capabile să ofere performanţe rezonabile în condiţiile existenţei unor baze de date de dimensiune
redusă, detecţia automată a punctelor fiduciale. Înţelegerea profundă a conţinutului informaţiei
despre imaginile care reprezintă feţe umane este o cerinţă fundamentală pentru succesul oricărui
sistem performant de recunoaştere sau verificare şi se poate dovedi folositor şi în alte aplicaţii de
recunoaştere a formelor (pattern recognition). Enumerăm în continuare principalele aspecte
critice referitoare la acest subiect, indicate în Fig. 1.2. prezentându-le ca pe un sumar de întrebări
fundamentale şi indicând soluţiile raportate în literatură.

Fig. 1.2. Aspecte specifice aplicaţiilor de recunoaştere/verificare a feţelor

Dacă transformăm o imagine de dimensiuni NxN pixeli într-un vector de dimensiune N2,
acesta poate fi privit ca un punct într-un spaţiu N2 - dimensional. Imaginile reprezentând feţe
umane ocupă doar un mic subspaţiu al acestui spaţiu multidimensional, cu caracteristici
specifice. Se poate arăta că modificările obişnuite precum translaţia, rotaţia, sau schimbarea
nivelului de iluminare, atunci când au amplitudine mică, definesc simple subregiuni compacte
din “subspaţiul feţelor”.

13
Datorită atributului “non-convex”, metodele de procesare a feţei bazate pe o singură
imagine sunt limitate în performanţă. Apare acum o întrebare interesantă: de câte imagini
bidimensionale (2-D) este nevoie pentru a reprezenta o faţă, indiferent de orientarea acesteia?
Câteva răspunsuri au fost date în literatură, indicând faptul că 4 sau 5 imagini sunt suficiente
pentru a acoperi toate unghiurile de vedere (alegerea lor este dependentă de un set de
constrângeri) [3].

Fig. 1.3. Exemplu indicând non-convexitatea Fig.1.4. Asemănarea dintre imaginea


spaţiului feţelor: imaginea originală, originală a feţei şi versiunea ei transformată
versiunea rotită a aceleeaşi feţe, combinaţie se deteriorează rapid pe măsura creşterii
liniară între feţe valorii parametrilor ce definesc
transformarea: a) translaţie pe axa X; b)
translaţie pe axa Y; c) rotaţie; d) modificarea
scalei

1.2. Aplicaţii ale algoritmilor de recunoaştere a feţelor


Tehnici de preprocesare. Multe dintre tehnicile de recunoaştere a feţelor, în particular
metoda PCA, sunt foarte sensibile la alinierea corectă a imaginilor care formează setul de
antrenare, performanţele degradându-se semnificativ dacă acestea sunt uşor translate sau rotite.
Din acest motiv, multe soluţii folosesc o etapă premergătoare de preprocesare (automată sau
manuală) care are drept rezultat obţinerea unei baze de date formate din imagini având aceeaşi
scală de reprezentare şi neafectate de translaţii relative sau rotaţii în planul imaginii (tipic,
segmentul definit de poziţia ochilor este folosit pentru această etapă de normalizare).
În plus, există argumente teoretice care justifică utilizarea exclusivă a zonei care defineşte
faţa propriu-zisă, eliminându-se influenţa fundalului şi a părului. În acest scop se utilizează
“măşti” de formă ovală, precum se indică în Fig.1.3 în cazul bazei de date AR.

14
Dimensiunile mari ale imaginilor reprezintă de multe ori o problemă majoră, deoarece
volumul de calcul poate deveni excesiv în unele cazuri. Ţinând cont de rezultate care confirmă
degradarea lentă a performanţelor de recunoaştere în raport cu rezoluţia folosită, se pot aplica
proceduri de subeşantionare care să conducă la dimensiuni rezonabile (de exemplu, de ordinul a
1000-2000 de pixeli). În particular, se poate face apel la Transformata Wavelet Discretă
(prezentată pe larg în capitolul următor), care permite reducerea dimensionalităţii simultan cu
asigurarea invarianţei în raport cu expresia feţei.
Metoda PCA şi variantele sale. Metoda PCA (denumită eigenfaces în contextul
aplicaţiilor de recunoaştere a feţelor [24]) reprezintă fără îndoială referinţa în raport cu care se
compară performanţele oricărui algoritm propus în literatură. Deşi simplu de aplicat şi oferind
performanţe rezonabile în condiţii dintre cele mai diverse, metoda este totuşi afectată de unele
limitări precum sensibilitatea în raport cu alinierea imaginilor şi nivelul de iluminare, cerinţa de a
beneficia de o bază de date de dimensiune suficient de mare, dificultatea de a opera on-line (în
sensul de a putea actualiza fără un efort de calcul substanţial valorile vectorilor proprii
semnificativi odată cu apariţia unor date „proaspete” în setul de antrenare). Ca urmare, au apărut
o serie de variante ale algoritmului standard, care încearcă să diminueze aceste neajunsuri.
Astfel, îmbunătăţirea toleranţei în raport cu alinierea imaginilor este sugerată prin metoda
denumită (PC)2A (Projection Combined PCA) [26], care defineşte mai întâi aşa-numitele
proiecţii integrale de-a lungul axei orizontale şi verticale ale unei imagini I(x, y) de dimeniune
MxN prin:

(1.1)
pe baza cărora se defineşte apoi matricea:

(1.2)
În final se obţine o versiune preprocesată a imaginii originale conform relaţiei:

(1.3)
Efectul intuitiv al acestei proceduri constă într-un anumit grad de dezaccentuare a
contururilor ferme ale imaginii originale (blurring), după cum se ilustrează în Fig. 1.4a.
Utilizarea efectivă a metodei presupune aplicarea acestei transformări asupra fiecărei imagini din
baza de date, urmând ca apoi să folosim varianta standard a algoritmului PCA.

15
O altă soluţie îşi propune să atenueze sensibilitatea PCA în raport cu nivelul variabil de
iluminare. Astfel, pornind de la observaţia intuitivă potrivit căreia iluminarea influenţează destul
de puţin contururile unei imagini, metoda eigenhills [27] propune detecţia prealabilă a
contururilor feţelor din baza de date, după care aplică metoda PCA standard. În realitate, pentru a
preîntâmpina dezavantajul conform căruia imaginile reprezentând contururile sunt mult mai
sensibile la translaţii relative şi expresii variabile ale feţei, se aplică asupra contururilor o
operaţie de filtrare trece-jos, astfel încât informaţia este „împrăştiată” oarecum în spaţiu, după
cum se sugerează în Fig.1.5b.

Fig. 1.5. Variante ale algoritmului PCA : a) metoda (PC)2A ; b) metoda eigenhills
Exemple de componente ale bazei rezultate din aplicarea fiecărei variante se prezintă în
Fig. 1.5. Rezultate experimentale comparative între cele 3 metode folosind baza de date Olivetti
sunt indicate în Tabelul 1.1. Au fost efectuate 10 experimente distincte, folosind câte 5 imagini
ale fiecărei persoane în setul de antrenare, respectiv de test.

16
Fig. 1.6. Exemple de componente ale bazelor obţinute prin metoda :
a) PCA standard; b) (PC)2A ; c) eigenhills

Tabelul 1.1. Rezultate experimentale PCA, (PC)2A, eigenhills

Tehnici de procesare locale. În Fig. 1.6. a fost ilustrată posibilitatea de a reprezenta feţele
prin părţi componente sau, mai exact, de a încerca descompunerea unei astfel de imagini în
raport cu o bază particulară, ale cărei componente să fie caracterizate de o bună localizare
spaţială. Drept exemple de algoritmi capabili să conducă la obţinerea unei astfel de baze au fost
menţionate metodele NMF (Non-negative Matrix Factorization), varianta locală a acesteia
LNMF (Local NMF), algoritmul ICA (Independent Components Analysis) şi reţelele neurale
autoasociative cu parametri nenegativi NA (Non-negative Autoassociators), iar exemple de
componente ale acestor baze sunt prezentate în Fig. 1.7.
Utilizând baza de date AR au fost efectuate o serie de experimente care îşi propun să
analizeze comparativ performanţele acestor algoritmi în raport cu diverse surse de variabilitate
precum expresia feţei şi nivelul de iluminare, iar rezultatele se prezintă în Tabelele 1.2. şi 1.3.

17
(parametrul m indică numărul vectorilor care formează baza, adică dimensiunea subspaţiului pe
care se efectuează proiecţia vectorilor care reprezintă imaginile originale). Aceleeaşi metode au
fost utilizate şi pentru studierea performanţelor în situaţiile în care feţele sunt afectate de
acoperire parţială. Rezultatele corespunzătoare bazei AR sunt indicate în Tabelul 1.4,
observându-se o degradare semnificativă a performanţelor (sunt prezentate numai rezultate
referitoare la cazul acoperirii folosind ochelari, deoarece ochii au o importanţă specială în
stabilirea nivelului de performanţă al unui sistem automat de recunoaştere a feţelor). În cazul
bazei de date Olivetti acoperirea a fost modelată prin suprapunerea unor măşti pătrate de
dimensiune variabilă, plasate aleator în planul imaginii, după cum se sugerează în Fig. 1.7, iar
rezultatele sunt prezentate în Fig. 1.8.
Tabelul 1.2. Rate de recunoaştere pentru expresie variabilă (AR)

Tabelul 1.3. Rate de recunoaştere pentru iluminare variabilă (AR)

18
Fig. 1.7. Imagini din baza de date Olivetti acoperite parţial

Tabelul 1.4. Rate de recunoaştere pentru acoperire parţială (AR)

Fig. 1.8. Exemple de componente ale bazelor obţinute prin metoda :


a) PCA standard; b) (PC)2A ; c) eigenhills

19
După cum s-a menţionat anterior, există 2 strategii majore implicate în obţinerea
"semnăturii" feţei, anume:
a) tehnica geometrică, bazată pe extracţia poziţiilor relative şi a altor parametri
dependenţi de puncte particulare precum ochii, colţurile gurii, nasul şi bărbia
b) tehnica bazată pe modele (templates), în care matricele reprezentând valorile de
intensitate luminoasă a pixelilor care alcătuiesc faţa de test şi, respectiv, cea de referinţă sunt
procesate convenabil, urmând ca rezultatele să fie comparate utilizând un anumit tip de măsură a
similitudinii (câteodată sunt folosite mai multe modele pentru fiecare faţă).
Alegerea procedeului specific de extragere a "semnăturii" este dictată de capacitatea
distinctivă a informaţiei rezultate. Din moment ce imaginile feţei sunt reprezentate în mod
obişnuit printr-o matrice de dimensiuni considerabile, se folosesc diverse metode de compresie,
liniare sau neliniare, precum Analiza pe Componente Principale (Principal Components Analysis
– PCA) pentru obţinerea unei reprezentări de dimensiuni mult reduse a imaginii originale, fără o
pierdere semnificativă a calităţii. Mai mult, Analiza Discriminatorie Liniară (Linear
Discriminant Analysis – LDA) este adesea aleasă pentru a identifica direcţiile din “spaţiul
feţelor” de-a lungul cărora separarea „semnăturilor” este maximă.
O abordare originală constă în organizarea spaţiului feţelor în mod ierarhic, partiţionarea
urmând o structură de tip arbore. Merită notat că tipul de codare a imaginilor originale poate fi
de asemenea influenţat de necesitatea de a asigura invarianţa la transformări comune. O direcţie
recentă de cercetare este legată de aşa-numitul "optical flow" [15], bazat pe reprezentarea
variaţiei (gradientului) în intensitate dintre două imagini distincte ale aceleaşi persoane.
Prelucrarea anticipata a formei fetei. După ce regiuni posibile ale formei fetei sunt aflate
urmează doi paşi: selectează zona cea mai mare si alege din zona selectata pe accea care
formează o imagine completa.
Selectează mai complet umplutura regiuniei, Urmând pasul anterior am obținut o imagine
in care regiunea cea mai mare este zona fetei design aceasta prin cele trei condiții anticipate
(expuse in g 1.3.)
Mai este necesară o observație dupa cum se poate vedea in figurile ce urmează, o parte
din față poate conține zone negre (unde gura, ochii spacenele si fruntea au o culoare diferita de
restul fetei). Aceste zone neselectate trebuie sa constitue parte a regiunii invecinate. Cel mai usor
de realizat aceasta este aplicand algoritmul de umplere in cascada, astfel umplandu-se zonele
care nu se invecinează. Se poate aplica apoi metoda de realizare pas-cu-pas a unei regiuni.
Aceasta metoda de exprimare este bună dar nu optimă deoarece necesită două faze. Dacă
cei doi algoritmi ar lucra intr-o singura fază atunci cel de performanță 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.

20
848
44
848

Inainte ca algoritmii sa fie descriși in amănunt trebuie sa explicăm diferența intre 4 si 8,


cei 4 vecini de legarută al unui pixel sunt cei 4 pixeli din dreapta, stanga, deasupra si dedesuptul
pixelului curent; cei 8 vecini de legatură ai unui pixel sunt cei 8 pixeli inconjoară. Algoritmul
urmator va lua in calcul doi pixeli parte a unei singure zone dacă au o cale de 8 pixeli de legatura
intre ei. Dacă avem în câmpul din fata o legatură de 8 apoi partea complementara a imaginii
trebuie sa fie cu o legatură de 4 pe verso. Aceasta este o observație importantă care este folosită
în tratarea pixelilor din prim plan si de pe fundal(din umbra)
Partea principală a algoritmului este o scanare secvențială de sus în jos și de la stânga la
dreapta ai maginii. Pentru fiecare pixel se determină culoarea. Culoarea pixelului inseamna
grupul de numere căruia ii apartine. Toti pixelii care formează o regiune au acceasi culoare, in
acest algoritm fiecare pixel primeste un cod format dintr-o valoare numerică. Sunt trei variante în
Fig. 1.9.
1. Dacă pixelul este de mascare, culoarea sa este codată cu număr întreg pozitiv. În
exemple ei sunt marcați cu numere pozitive in celule gri.
2. Dacă pixelul este de fundal de bordare, atunci culoare lui este 0. Pixelii de bordare sunt
pixeli de fundal care se află pe marginea imaginii ori au vecini de margine de legarura 4.
În exemple ei sunt marcari cu 0-uri in celule de culoare albă.
3. Dacî pixelul este de interior atunci culoarea primește codificare cu numere intregi
negative.
Pixelii de interior au conoscut pana de curand la recentele prelucrări vecini, numai pixelii
de mascare sau de interiore va schimba în unul de margine numai dacă se cunoaște ca are vecinii
de bordurare. În exemple ei sunt marcați cu nume intregi subliniate in celule de culoare albă. În
exemple semnul ? este folosit numai dacă culoarea pixelului nu este cunoscută. În momentul
când pixelul este întărit (bolded) atunci culoarea pixelului din centru este in procesul de căutare.

Fig. 1.9. Clasificarea pixelilor

21
Operațiile făcute depind de fiecare fază de felul pixelului , daca-i de mascare ori fundal
pentru pixeli de mascare .
Se caută culoarea pixelului superior (de sus) si a celui de sus-dreapta (N_NE) și a celui
din stânga și stânga sus. Aceaste grupări sunt făcute deoarece dacă scanarea sus-jos, stanga-
dreapta anunță că culorile combinate sunt de mascare, atunci ele vor avea acceasi culoare. Dacă
NE_N si W_NW sunt puncte de măsurare și ele sunt egale (de ex fig.1.10 a) vecinul pixelului
este o zonă numai astfel culoarea pixelului va fi dată de culoarea vecinătații.
Dacă NE_N si W_NW sunt pixeli de fundal (fig. 1.10 b) atunci culoarea pixelului este
una nouă. Acest pixel va fi primul pixel al unei noi regiuni. Dacă N-NE sau W-WE sunt pixeli de
fundal (fig.1.10 c) atunci culoarea pixelului nu este de fundal. Dacă N-NE și W-WE sunt puncte
de mascare si nu sunt egale (fig.1.10 d) atunci inseamnă că cele două regiuni considerate două
regiuni diferite sunt de fapt o singură regiune unită de un pixel. În acest caz cele două zone
trebuie unite, iar culoarea pixelului va fi culoarea vecinatății. După unificare, culoarea dominantă
se va transforma in culoarea mai slabă. Numerele pixelului celor două zone se vor insuma. Dacă
W-NW este mai mare decât N-NE atunci culoarea culoarea pixelilor rămasi pe poziție se
schimbă, pentru a ne asigura ca pe linia următoare pixelii vor folosi culoarea corectă a pixelului
superior. Nu este ceva strict, dar dă posibilitatea realizării algoritmului, în cele din urmă ne vom
da seama și ce culoare se va schimba, culoarea dominantă.

Fig. 1.10. Patru puncte principale pentru punctul din mască

Pentru pixelii de fundal


Intru cât umplutura de legatură 8 este realizată, vom verifica numai vecinii supriori și cei
din stânga pixelului de fundal. În funcție de valorile lor sunt 4 variante:
1. Dacă unul din vecini este un pixel de bordurare (fig.1.11 a) atunci si acest pixel este
de bordurare. În acest caz dacă este un pixel de bordurare numai de interior este
mascată, acela este de bordură. Acesta se va păstra pentru toți pixelii de pe un rând,
dând astfel posibilitatea stabilirii valorilor de bordurare.
2. Dacă numai unul din vecini este punct de interior (fig.1.11 b) sau cei doi vecini sunt
de interior și au aceeași culoare, atunci pixelul curent este punctul de interior al
aceleaiasi regiuni.

22
3. Dacă vecinii sunt de interior dar au culori diferite (fig.1.11 d) atunci cele două culori
sunt unite in același mod cum s-a facut cu pixelii de mascare.
4. Dacă cei doi vecini sunt puncte de mascare (fig.1.11 e) atunci o nouă zonă internă va
debuta.

Fig. 1.11. Patru scenarii principale pentru punctul din spate.

Pentru ultimele trei variante mai este necesară o operatiune: pentru fiecare pixel de
inerior se stochează intr-o structură de set vecini de mascare de culoarea celor de interior. După
acest pas de marcare pixelii sunt inconjurati de regiuni de mascare inconjuratoare.
Descrierea algoritmului pentru detecția și urmărirea fețelor. În prezenta lucrare, metoda
de recunoaştere a formelor este dezvoltată aplicația pentru recunoașterea facială. Implementarea
acesteia presupune existenţa următoarelor elemente hardware specializate: o bază de date cu
imagini (fețe) ale unor persoane, un calculator pe care este instalat un sistem de operare, placă de
achiziţie imagini. Pachetul software al plăcii conţine utilitare care permit achiziţia, redarea şi
salvarea imaginilor, dar şi unele librării care permit realizarea de programe proprii. Principalele
operaţii efectuate de un sistem de recunoaștere facială sunt cele de descriere simbolică a imaginii
respective. Etapele care se parcurg sunt: achiziţia şi formarea imaginii, pre-procesarea imaginii,
segmentarea imaginii, descrierea, recunoaşterea formelor, interpretarea. Algoritmul presupune
crearea unui set de imagini pe care aplicația sa le identifice si sa le clasifice. Practic, poti alege ce
anume sa faca aplicația in functie de persoana identificata si anume sa deschida sau nu cutia.
În linii mari, algoritmul utilizat pentru detectarea feţelor într-o imagine (într-un cadru
video) este următorul:
1. Crearea vectorului ce va conţine vectorii cu informaţii despre fiecare faţă detectată:
patru coordonate de încadrare plus alte variabile de tip întreg care cuantifică numeric
răspunsurile la următoarele întrebări:
a. A fost afişat dreptunghiul de încadrare pentru faţa respectiv.
b. Care este indexul feţei respective.
c. Care este sensul de mişcare a feţei respective.
d. Care este distanţa parcursă în imaginea video de faţa respectivă.
2. Încărcarea instrumentelor, cum sunt cascadele pentru detectarea feţelor; pornirea
camerei video / web, a unui fişier video sau încărcarea unei imagini din fişier.

23
3. Analiza imaginii sau a fiecărui cadru (frame) video. În această etapă sunt parcurşi
următorii paşi:
a. Preluarea conţinutului efectiv al imaginii într-o matrice;
b. Transformarea acesteia în 256 de nivele de gri (format greyscale);
c. Detectarea feţelor;
d. Numărarea feţelor detectate şi preluarea informaţiilor asociate lor în vectorul creat la
pasul 1.
4. Afişarea rezultatului pe ecranul monitorului, prin desenarea dreptunghiurilor
(pătratelor) de încadrare în jurul feţelor detectate.
În proiectarea şi implementarea scenariului şi algoritmului de urmărire a feţelor în flux
video continuu s-a pornit de la o euristică de tipul: între două cadre video succesive o aceeaşi
faţă nu poate apărea decât cel mult într-o anumită vecinătate nu foarte extinsă faţă de localizarea
iniţială.
Pe baza acestui criteriu, în mod normal, o faţă va fi etichetată, indexată similar, cu aceeaşi
etichetă (acelaşi index) în două cadre succesive dacă centrele geometrice ale dreptunghiurilor de
încadrare în cele două cadre nu sunt mai depărtate decât o anumită distanţă maximă stabilită
empiric. Astfel, pentru fiecare faţă detectată într-un cadru se poate defini o anumită regiune în
care ne putem aştepta ca ea să fie regăsită în cadrul următor, respectiv centrul geometric al
dreptunghiului său de încadrare în acest nou cadru se va regăsi cel mai probabil într-un cerc de
rază egală cu distanţa maximă amintită mai înainte şi centrat în poziţia corespunzătoare centrului
său geometric din cadrul anterior. În cazul mai multor feţe, corespondentul fiecăreia în cadrul
nou va fi dat de distanţa minimă între centrele geometrice respective. Eventuale situaţii de
ambiguitate în cazul mai multor feţe apropiate sunt rezolvate prin găsirea distanţei minime
pentru fiecare dintre acestea la posibilii corespondenţi din celălalt cadru.
a) când persoana mai apropiată de cameră trece prin dreptul unei persoane mai
îndepărtate de cameră. Pentru a se realiza în continuare urmărirea facială corectă în acest caz, în
program se organizează (ordonează) vectorul de vectori cu informaţii asociate feţelor în funcţie
de mărimea dreptunghiului fiecărei feţe descoperite.
b) când o persoană mai îndepărtată de cameră trece prin spatele unei alte persoane sau
obiect aflate mai aproape de cameră. În acest caz se calculează posibile poziţii viitoare ale feţei
ce trece prin spatele alteia, astfel încât, când aceasta va reapărea în video, poziţia sa va fi
comparată cu poziţiile prevăzute, putându-se stabili dacă este vorba despre o persoană nou
apărută, sau este tot cea urmărită anterior.
În cazul urmăririi feţelor într-o secvenţă de cadre video, pasul 3 din algoritmul de detecţie
a feţelor prezentat mai sus se completează cu parcurgerea următorilor paşi şi se repetă ciclic atâta
timp cât există cadre noi (flux video):

24
1. Compararea numărului de feţe descoperite în cadrul actual cu cel din cadrul precedent.
a. În cazul în care numărul de feţe este mai mic decât în cadrul anterior se caută care
dintre feţele găsite anterior nu sunt prezente în cadrul actual şi li se atribuie informaţia
respectivă.
b. În cazul în care numărul de feţe este mai mare decât în cadrul anterior se compară
numărul de feţe găsite cu numărul maxim de feţe găsite până în momentul respectiv şi, după caz,
ori se creşte numărul maxim de feţe găsite, ori se caută posibile feţe găsite anterior ce pot avea
poziţiile viitoare calculate pe locul celor noi găsite şi se rescrie informaţia asociată acestora.
2. Organizarea vectorului de vectori cu informaţii asociate feţelor în funcţie de poziţia
acestora în imagine şi în funcţie de informaţia din care reiese dacă încadrarea acestora a fost sau
nu afişată.
3. Calcularea unor posibile poziţii viitoare ale feţelor detectate.
4. Calcularea şi afişarea sensului de deplasare şi a distanţei parcurse de către feţele
respective.
De asemenea, la pasul 4 al algoritmului de detecţie nu se mai reprezintă în acest caz
numai dreptunghiurile de încadrare ci şi etichetele (indecşii) de identificare pentru fiecare faţă
detectată. Fiecare index de etichetare a feţelor detectate este atribuit secvenţial cronologic, în
funcţie de momentul (cadrul) în care s-a detectat faţa respectivă. În situaţia în care într-un acelaşi
cadru apar mai multe feţe noi, care nu au mai fost detectate anterior, ordinea indexării acestora
este de la stânga la dreapta.

Segmentare Descriere Recunoaștere Interpretare


Achizitie și
pre -
procesare

Sistem de manipulare Analiza și


control

Fig. 1.12. Sistem de analiză a imaginii

Etapele recunoașterii fetei. Complexitatea problemei de recunoaștere 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 informații

25
prelucrand pasi, care transforma faza de intrare in rezultatul dorit, daca transfromarea poate fi
realizata.
Achiziția de imagine. Aceasta faza captează ilustrațiile folosind dispozitive de capturare
periferice. Imaginea poate fi obținuta din mai multe surse.
Exista moduri evidente pentru a obține 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).
Prelucrarea caracteristicilor. După ce o imagine este disponibila, cativa pasi de
prelucrare sunt bine veniti. Acesti pasi garantează 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.
Segmenatrea
In recunoașterea fetei, dar si in alte imagini sunt probleme de prelucrare, este importanta
segmentarea imaginilor in complementarea regiunilor si in fundal, sau pentru a separa imaginea
in obiecte cunoscute si examinate. Segmenatrea este o faza importanta, deoarece poate sa
hotarasca daca informatia utila este extrasa sau este ignorata: fazele urmatoare pot fi compromise
cu usurinta daca acest pas nu face treaba exacta. Dar folosirea acestui pas poate reduce la
extreme urmatoarele faze prelucrate cu effort.
Extractia caracteristica. Caracteristicile imaginii sunt un set de valori statistice
determinate de valori de stil. Caracteristicile pot fi distantate intre doua puncte, suprafetele
regiunilor, lungimile perimetrelor, centrul masei, momentele, regiuni limitate, etc, sau pot fi
rezultate din altele, parametrii transformati aplicați 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.
Cautare in baza de date. Acest pas este principalul scop al prelucrării. Aceasta depinde de
model, dar de obicei este o verificare secventiala a fetelor pentru fiecare persoana disponibila din
baza de date, urmata de alegerea identitații 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.

26
Probleme conexe proiecte
 Localizarea fetei: determinarea poziției unei singure fete intr-o imagine.
 Detectia elementelor faciale componente: prezenta si locatia: ochi, sprancene, nas/nari,
gura, buze, urechi etc.
 Recunoasterea / identificarea fetelor.
 Recunoasterea expresiei faciale.
 Estimarea poziției corpului uman si urmarirea acestuia.

1.3. Concluzii la Capitolul 1.

Pentru a se face distincţie clară între problema recunoaşterii din perspectiva prelucrării
digitale a imaginilor şi aceeaşi problemă din perspectiva inteligenţei artificiale şi roboticii,
terminologia de specialitate folosită în limba engleză este pattern recognition şi mai puţin object
recognition.
În prezenta lucrare, metoda de recunoaştere a formelor este dezvoltată aplicația pentru
recunoașterea facială. Metodele de recunoaştere din imagini digitale folosesc rezultate şi metode
matematice din recunoaşterea formelor şi inteligenţă artificială.
Implementarea acesteia presupune existenţa următoarelor elemente hardware specializate:
o bază de date cu imagini (fețe) ale unor persoane, un calculator pe care este instalat un sistem de
operare, placă de achiziţie imagini.
Imaginea capturată, statică, este descrisă de către o funcţie a cărei valoare este
luminozitatea funcţie de coordonatele imaginii.
Etapele necesare aplicaţiilor privind implementarea vederii artificiale sunt următoarele:
- imaginea este capturată cu ajutorul senzorilor şi digitizată,
- zgomotul este înlăturat şi detaliile se pun în evidenţă cu ajutorul algoritmilor.

27
2. CORELATORUL NUMERIC ADOPTAT PENTRU REALIZAREA SOFTULUI DE
RECUNOAȘTERE FACIALĂ

2.1. Utilizarea corelaţiei numerice în recunoașterea facială


Analizând din punct de vedere statistic structura imaginii digitale a fotogramei putem
spune că aceasta constituie o mulţime (populaţie) de N pixeli cu nuanţe de gri variate, dată fiind
varietatea de acoperiri din zona înregistrată.
Fiecare pixel formează o unitate elementară de imagine definită printr-o funcţie cu trei
variabile F(x, y, g) în care: variabilele x, y definesc poziţia pixelului în planul imaginii digitale,
iar variabilă g caracterizează pixelul din punct de vedere al răspunsului spectral înregistrat şi se
exprimă prin densitate sau nivel de gri. Această variabilă g are o distribuţie aleatoare în câmpul
imaginii digitale.
Variabilele după care pixelii corespondenţi pot fi identificaţi în două imagini digitale sunt
variabilele densităţilor g şi q corespunzătoare acestor pixeli (g - exprimă densitatea, respectiv
valoarea nuanţei de gri a pixelului situat în imaginea digitală a primei fotograme şi q - exprimă
densitatea, respectiv valoarea nuanţei de gri a pixelului corespondent situat în imaginea digitală a
celei de a doua fotograme).
În acest caz spunem că variabilă ce defineşte densitatea (nuanţa de gri) a pixelilor
corespondenţi este o variabilă bidimensională (g, q).
Practic, a determina pixelul corespondent în imaginea celeilalte fotograme presupune a
stabili dependenţa dintre densităţile g şi q ce caracterizează cei doi pixeli corespondenţi. O astfel
de dependenţă dintre densităţile g si q ale celor doi pixeli se poate stabilii pe baza corelaţiei
numerice.
Din punct de vedere statistic această dependenţă poate fi stabilită printr-o analiză de
corelaţie numerică (digitală) a celor două variabile g şi q.
Corelaţia variabilelor bidimensionale. Corelaţia între două variabile aleatoare, conform
teoriei statisticii matematice, este definită ca fiind legea statistică de comportare a fiecăreia dintre
variabile în funcţie de valorile celeilalte variabile şi exprimă măsura dependenţei dintre cele două
variabile considerate.
Variabilă g din câmpul imaginii primei fotograme este o variabilă independentă în timp ce
variabilă q din câmpul imaginii fotogramei a doua este o variabilă dependentă de variabilă g.,
întrucât pentru o valoare determinată discretă a variabilei g variabilă dependentă q ia şi ea o
valoare determinată şi discretă, se poate afirma că între cele doua variabile g si q există o
legătură funcţională dată de relaţia:
<7 =/Gr). (2.1)

28
Dacă fiecărei valori g оi corespunde nu o singură valoare q ci o distribuţie legată (legată
de valoarea lui g) caracterizată fiecare prin câte o medie q legată, avem de-a face cu o legătură
statistică (stochastică), respectiv spunem că există o corelaţie între q şi g.
Astfel, Fixând o valoare variabilei g se poate estima printr-un calcul statistic valoarea
variabilei q.
Dacă vom ataşa fiecărei valori a variabilei g media valorilor corespunzătoare a celeilalte
variabile q se obţine funcţia de regresie, funcţie care exprimă regresia lui q asupra lui g şi se
reprezintă grafic printr-o dreaptă numită dreapta de regresie (aceasta deoarece funcţia de regresie
este liniară). Dreapta de regresie este exprimată prin relaţia:
q i -q-r^-{g i -g)y (2.2)
unde: g şi q - medii aritmetice ale valorilor gi şi q , ;
a şi _ abaterea medie pătratică a valorilor gt şi de la valorile medii notate cugşi q.
Se poate afirma că dacă rezultatul funcţiei de regresie a variabilelor g şi q aproximează o
dreaptă de regresie cele două variabile se află în corelaţie (sunt într- o legătură statistică una faţă
de alta).
Cu cât estimarea dreptei de regresie este mai precisă, cu atât putem spune că între
variabilele g şi q există o corelaţie mai intensă, corelaţie care face ca pixelul cu valoarea
densităţii q din imaginea digitală a fotogramei a doua să fie corespondentul pixelului cu
densitatea g din imaginea digitală a primei fotograme.
Indicatori de corelaţie. Gradul de corelaţie al variabilelor bidimensionale g şi q poate fi
pus în evidenţă prin doi indicatori: covarianţa şi coeficientul de corelaţie. Covarianţa, conform
teoriei statistici matematice, este media aritmetică sau valoarea aşteptată a produsului abaterilor
valorilor a două variabile de la valorile lor medii
Ţinând cont de momentele centrate, covarianţa este momentul centrat mixt de ordinul al
doilea al variabilelor g şi q şi se notează agq. Covarianţa este deci indicatorul ce măsoară gradul
de legătură corelaţională dintre variabilele g şi q.
Coeficientul de corelaţie a două variabile x si y se defineşte ca fund valoarea medie a
produsului abaterilor normate ale acestora sau, altfel spus, este covarianţa variabilelor normate
corespunzătoare.
Conform definiţiei relaţia de calcul a coeficientului de corelaţie utilizat în prelucrarea
corelaţională a imaginilor digitale se exprimă astfel: Coeficientul de corelaţie dat de relaţia de
mai sus se bucură de următoarele proprietăţi:
1) Poate lua valori intre -l si +1, este o mărime adimensională şi caracterizează legătura
dintre variabilele g si q

29
2) Dacă r = ±1, între variabilele g şi q există o legătură liniară (pentru r= 1 fiecărei valori
g оi corespunde o singură valoare q) astfel:
-dacă r = +1 variabilele g şi q sunt corelate perfect pozitiv, ceea ce înseamnă că valorilor
mari ale variabilei g оi corespund valorile mari ale variabilei
-dacă r = -1 variabilele g şi q sunt corelate perfect negativ, ceea ce înseamnă că valorilor
mari ale variabilei g оi corespund valorile mici ale variabilei q sau invers;
-dacă r = 0 variabilele g şi q sunt independente (sunt necorelate), coeficientul de corelaţie,
în valoare absolută, fiind cuprins între valorile 0 şi 1.
3) Cu cât coeficientul de corelaţie ia valori mai apropiate de +1 sau -l, cu atât corelaţia
rectilinie între variabilele studiate este mai puternică. Rezultă că valoarea coeficientului de
corelaţie caracterizează măsura dependenţei liniare dintre variabilele g şi q.
Aceşti indicatori ai corelaţiei, covarianţa şi coeficientul de corelaţie, sunt utilizaţi în
detectarea automată a pixelilor corespondenţi în imaginile digitale a fotogramelor în procesul de
localizare şi măsurare automată a reperelor fotogrammetrice şi în detectarea automată a
schimbărilor produse în două imagini digitale.
În cazul localizării unui reper fotogrammetrie în imaginea digitală, zona din jurul
reperului poartă numele de matrice de căutat sau zona de căutat iar marca reper poartă numele de
matrice ţintă sau zonă ţintă.
Practic, se calculează coeficientul de corelaţie r pentru toate poziţiile posibile ale zonei
ţintă în zona de căutat şi poziţia reperului va fi dată de pixelul cu cea mai mare valoare a
coeficientului de corelaţie. Un astfel de mod de evidenţiere poate fi făcut prin condiţii impuse în
programul de prelucrare a imaginilor digitale.
Corelarea liniilor de contur în imaginile digitale. O astfel de corelare a conţinutului
informaţional al imaginii digitale este justificată a se aplica, deoarece vederea umană se bazează
mai mult pe corelarea liniilor şi contururilor decât pe corelarea densităţilor.
Întrucât calitatea procesului de corelare depinde în mare măsură de structura conţinutului
imaginii digitale, se selectează mai întâi zona de interes din cadrul fotogramei digitale după care,
utilizând diferenţele dintre densităţile vecine, se pot identifica contururile.
Pe fiecare din direcţiile x şi y putem determina diferenţa dintre densitatea pixelului оn
cauză şi densităţile pixelilor vecini anteriori şi posteriori acestuia. In acest caz, pentru fiecare
direcţie se vor determina două diferenţe pe care le vom defini: prima diferenţă şi a doua
diferenţă.
Compararea valorilor acestor diferenţe cu o valoare de prag dinainte stabilită conduce la
posibilitatea clasificării imaginilor digitale în termenii de calitate ai corelării. Aceste diferenţe
sunt utilizate în multe situaţii pentru detectarea elementelor de suprafaţă ce au contur.

30
Considerând pixelul cu densitatea glp relaţiile de calcul a diferenţelor de densitate pot fi
scrise în următoarele forme:
-pentru prima diferenţă în direcţia x:
Si j ~ Si+\ j ~~ S t ] ; ( 2.3)
pentru prima diferenţă în direcţia y:
8 ? =8 , ^ - 8 » ; (2.4.)
pentru a doua diferenţă în direcţia x:
g"x = s!? - g!-ij = + gi-ij ~ 2Sij; (2.5.)

(2.6.)

Adunând relaţiile (2.3.) şi (2.4.) obţinem relaţia finală de calcul în forma (2.5.).
Relaţia (2.5.) exprimă operaţia de convoluţie cea mai utilizată în procesarea imaginilor
digitale. În general, prin convoluţie se înţelege operaţia de obţinere a unei imagini digitale de
ieşire prin înmulţirea tuturor pixelilor din matricea imaginii digitale de intrare оmpreună cu cei
opt vecini ai lor, respectiv cu valorile corespunzătoare filtrului utilizat
Coeficienţii ecuaţiei (2.5) formează elementele unei matrice pătrate de dimensiuni 3x3
numită matrice filtru, matrice exprimată prin relaţia (2.6.) care va acoperi în imaginea digitală o
fereastră de aceleaşi dimensiuni centrată pe pixelul curent al imaginii digitale.
În general, prin convoluţie se înţelege operaţia de obţinere a unei imagini digitale de
ieşire prin înmulţirea tuturor pixelilor din matricea imaginii digitale de intrare оmpreună cu cei
opt vecini ai lor, respectiv cu valorile corespunzătoare filtrului utilizat .
Coeficienţii ecuaţiei formează elementele unei matrice pătrate de dimensiuni 3x3 numită
matrice filtru, matrice exprimată prin relaţia care va acoperi în imaginea digitală o fereastră de
aceleaşi dimensiuni centrată pe pixelul curent al imaginii digitale.
Registraţia imaginilor digitale. Registraţia (suprapunerea) imaginilor digitale este o
tehnică de ajustare (potrivire, aliniere) a imaginilor digitale care au înregistrată aceeaşi suprafaţă
de teren dar sunt provenite de la senzori diferiţi (şi sunt preluate fie concomitent fie la intervale
de timp diferite). Această situaţie apare atunci când avem imagini ale aceluiaşi areal luate la
intervale de timp diferite (deci în alte condiţii) sau imagini multitematice care trebuie tratate
împreună.
Operaţia de registraţie devine mai complexă când arealul survolat de satelit prezintă
variaţii între două treceri consecutive ale satelitului (cum sunt culturile agricole). Operaţia de
registraţie se realizează pe acelaşi principiu ca şi redresarea fotogramelor (pe baza unor puncte

31
de reper comune, a căror imagine este înregistrată pe toate imaginile digitale ce fac obiectul
suprapunerii).
Reeşantionarea imaginii digitale registrate. Operaţiunea de reeşantionare presupune
atribuirea fiecărui pixel registrat valoarea nuanţei de culoare sau a nivelului de gri (valoarea
densităţii de tonalitate) corespunzătoare pixelului corespondent din imaginea sursă (imaginea
digitală neregistrată). Practic se atribuie fiecărui pixel registrat din fişierul de ieşire, nuanţa de
culoare, respectiv nivelul de gri corespunzător pixelului corespondent neregistrat din fişierul
sursă, în acest scop se retransformă cu relaţiile (2.7.) coordonatele pixelului georeferenţiat ce
trebuie reeşantionat, în sistemul de coordonate a imaginii digitale iniţiale neregistrate.
X = A~lXref. (2.7.)
unde: X - vectorul coordonatelor retransformate ale pixelilor în sistemul imaginii
neregistrat; Xref - vectorul coordonatelor pixelilor registraţi; A'1 - inversa matricei de
transformare.
Se extrage apoi valoarea nuanţei de culoare (codul de culoare) sau a nivelului de gri a
pixelului neregistrat din imaginea digitală sursă (neregistrată), identificat prin coordonatele
retransformate, şi se atribuie această nuanţă de culoare, respectiv acest nivel de gri, pixelului
registrat.
Acest proces de determinare a coordonatelor retransformate ale pixelului registrat este
necesar a se aplica obligatoriu imaginilor digitale obţinute cu aparate sau sisteme digitale
montate pe vehicule spaţiale, deoarece obţinerea acestor imagini digitale cu astfel de tehnici se
bazează pe perspectiva centrală şi nu pe proiecţia ortogonală, ele prezentând deformări în poziţia
planimetrică pe imagine a detaliilor topografice şi geografice cauzate de diverşi factori, dintre
care cel mai important factor este diferenţa de nivel a terenului înregistrat. Metoda nu produce
pierderi de informaţii de nivel de gri la registraţie întrucât nu face o mediere a nivelurilor de gri.
Metoda interpolării biliniare constă în interpolarea biliniară şi obţinerea unei valori medii
a nuanţei de culoare sau de gri pentru pixelul registrat, care rezultă din valorile nuanţelor de
culoare sau de gri a 4 pixeli situaţi într-o fereastră de 2x2 pixeli în jurul poziţiei retransformate.
Metoda convoiuţiei cubice constă în interpolarea cu o funcţie cubică a nuanţei de culoare
sau a nivelului de gri a pixelului registrat din 16 pixeli situaţi într-o fereastră de 4x4 în jurul
poziţiei retransformate. Metoda este indicată când dimensiunea pixelilor georeferenţiaţi diferă
mult de dimensiunea pixelilor din imaginea sursă.
Pentru reeşantionarea imaginilor digitale registrate este indicată metoda celui mai
apropiat vecin întrucât este mai rapidă, mai simplă de utilizat şi nu produce pierderi de informaţii
ale nivelului de gri, metodă ce poate fi selectată din meniul software-ului utilizat.

32
2.2. Mediul de implementare a recunoașterei faciale

Pentru implementarea sistemului experimental s-a folosit mediul de dezvoltare integrat


NetBeans împreună cu compilatorul MinGW pentru limbajul de programare C++ şi cu biblioteca
OpenCV.
NetBeans este un mediu de dezvoltare integrat (IDE) pentru dezvoltarea programelor în
oricare din limbajele de programare Java, PHP, C/C++, precum şi HTML5. NetBeans IDE este
creat în limbajul de programare Java şi poate rula pe Windows, OS X, Linux, Solaris şi alte
platforme care suportă o maşină virtuală Java (Java Virtual Machine – JVM) compatibilă.
Platforma NetBeans permite ca aplicaţiile să fie dezvoltate dintr-un set de componente software
modulare (module).
Aplicaţii bazate pe platforma NetBeans (inclusiv NetBeans IDE) pot fi modificate, după
caz, de către terţi dezvoltatori.
MinGW (Minimalist GNU pentru Windows), numit anterior mingw, este o distribuţie a
colecţiei de compilatoare GNU (GCC) si GNU binutils pentru a fi utilizate în elaborarea de
aplicaţii native Microsoft Windows. Ea conţine un set de fişiere antet (header) distribuite şi
distribuibile gratuit şi biblioteci de import statice, pentru a permite utilizarea interfeţei de
programare Windows (Windows API).
OpenCV (Open Source Computer Vision Library) este o bibliotecă, dezvoltată iniţial de
Intel, care conţine funcţii de programare dedicate vederii artificiale, de captură / manipulare,
prelucrare / procesare şi analiză de imagini în timp real. Aceasta poate fi utilizată gratuit, sub
licenţă de tip open source. Biblioteca este de tip multiplatformă (cross-platform).
Pentru a facilita funcţionarea celor trei componente împreună, biblioteca OpenCV a fost
întâi compilată cu programul CMake. Acesta este un program software free, cross-platform,
pentru gestionarea procesului de construcţie a software-ului folosind o metodă de compilator
independent.
Acesta are, de asemenea, dependenţe minime, necesitând doar un compilator de C++ pe
propriul său sistem de build.
Am precizat deja faptul că partea de manipulare şi prelucrare / procesare / analiză de
imagini se face prin funcţionalităţile oferite de biblioteca OpenCV. Aceasta se realizează concret
prin apelarea unor funcţii din anumite DLL-uri ale OpenCV, respectiv:
libopencv_core.dll,
libopencv_highui.dll,
libopncv_imgproc.dll
libopencv_objdetect.dll.
De asemenea, pentru detecţia feţelor sunt folosite următoarele două cascade Haar din
OpenCV:

33
haar_cascade_profileface.xml
haar_cascade_frontalface_alt.xml.
Prima cascadă permite detectarea feţelor din profil, iar cea de-a doua detectarea feţelor în
vedere frontală. Trebuie să facem aici observaţia că, deşi mai există un număr de cascade
implementate în OpenCV pentru detectarea feţelor din profil sau frontale, din experimentele şi
testele efectuate cu sistemul experimental s-a constatat că cele două menţionate mai sus sunt cele
mai eficiente. De exemplu, la testarea unei alte cascade pentru detecţia frontală, numită
haar_cascade_frontalface_default.xml
s-a observat că, pe aceleaşi imagini şi în aceleaşi condiţii, aceasta din urmă are un număr
de erori mai mare. Cu celelalte două menţionate mai înainte, performanţele în ce priveşte rata de
succes şi viteza de calcul sunt remarcabile, cu rare scăpări, explicabile totuşi.
Din DLL-urile OpenCV utilizate şi menţionate mai sus, sistemul experimental apelează
următoarele funcţii / comenzi ce merită să fie amintite aici:
- CascadeClassifier - aceasta este o clasă prin care se creează un obiect pentru
încărcarea unei cascade;
- CvNamedWindow - această comandă creează o fereastră în care vor fi afişate
rezultatele prelucrării imaginilor;
- CvCapture şi CvCaptureProperty - sunt comenzi folosite pentru capturarea
imaginilor din fişiere video sau încărcarea lor din fişiere imagine;
- detectMultiScale - este comanda pentru detectarea feţelor dintr-o imagine /
cadru şi salvarea într-un vector a coordonatelor dreptunghiurilor (pătratelor) de încadrare a
acestora, ce vor fi apoi desenate pe imagine în jurul feţelor detectate.

2.3. Simularea calculatorului a funcției de recunoaștere facială


Programul este o aplicație web. Tehnologii folosite: HTML5 și JavaScript.
Structura programului
Programul constă în fișierul index.html în care este concentrată aspectul intregii aplicatii
si toata logica lui.
Logica programului
Întreaga logică a programului este concentrată în ultimul (și numai) SCRIPT bloc. Acesta
conține în calitate de funcții auxiliare, și funcții direct legate de punerea în aplicare a
algoritmilor.
function clear(elem)
Șterge elementul (umple-l cu alb).
function off(row, col)
Calculează decalajul pixelilor cunoaște rând și coloană ei.
function getReal2d(elem)
34
Returnează un pixel element de tablou bidimensional.
function putReal2d(elem, real2d)
Atrage pixelii de imagine care sunt tablou bidimensional.
function FT2D(real2d)
Bidimensionala transformata Fourier. Intrarea este un tablou bidimensional de numere
reale.
function FT2D_complex2d(complex2d, dir, scale)
Bidimensionala Transformata Fourier (înainte și înapoi). Intrarea este o serie de numere
complexe.
function IFT2D(complex2d)
Transformata Fourier inversa.
function IFT2D_amplitude(complex2d)
Transformata Fourier inversă , se calculeaza amplitudinea.
function real2d_map(real2d, fn)
Afișează un tablou bidimensional de numere reale, pe de altă matrice bidimensională de
aceeași mărime în conformitate cu funcția dată.
function real2d_complex2d(real2d)
Afișează un tablou bidimensional de numere reale pe tablou bidimensional de numere
complexe.
function complex_multiply(a, b)
Înmulțește două numere complexe.
function complex2d_map(complex2d, fn)
Afișează un tablou bidimensional de numere complexe de către un alt de aceeași mărime
în conformitate cu o funcție specifică.
function complex_conj(a)
Calculează conjugatul unui număr complex.
function complex2d_conj(complex2d)
Calculează conjugatul pentru toate rețea bidimensională de numere complexe.
function complex2d_swap(complex2d)
Schimba cu locul cadranele ale matricei de numere complexe.
function complex2d_real2d(complex2d, fn)
Convertește o serie de numere complexe într-o matrice de numere reale, în conformitate
cu o funcție predeterminată.
La initializarea se incarca imaginea img / butterfly.png în ambele domenii
(function () {
var img = new Image();

35
img.src = 'img/butterfly.jpg';
img.onload = function () {
drawImage(img);
};
var img2 = new Image();
img2.src = 'img/butterfly.jpg';
img2.onload = function () {
drawImage(img2, '#canvas2');
};
})();

Când se apasa caseta de dialog Open Image se selecteaza o imagine.


$('#open').click(function () {
$('<input type="file">').change(function () {
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
img.src = event.target.result;
img.onload = function () {
drawImage(img);
};
};
reader.readAsDataURL(this.files[0]);
}
}).click();
$('<input type="file">').change(function () {
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
img.src = event.target.result;
img.onload = function () {
drawImage(img, '#canvas2');
};
};

36
reader.readAsDataURL(this.files[0]);
}
}).click();
});

Întreaga logică a programului este concentrată în următoarele funcții:

$('#apply-filter').click(function () {

// Primeste pixelii la prima imagine


var img1 = real2d_complex2d(getReal2d('#canvas1'));
// Primește pixelii pentru a doua imagine
var img2 = real2d_complex2d(getReal2d('#canvas2'));
// Execută transformarea Fourie pentru prima imagine
var img1_ft = FT2D_complex2d(img1, 1, 1/N/N);
// Execută transformarea Fourie pentru a doua imagine
var img2_ft = FT2D_complex2d(img2, 1, 1/N/N);

// Execută FT{IMG1}*CONJ{FT{IMG2}}
var result = complex2d_map(img1_ft, function (a, orig, row, col) {
return complex_multiply(a, complex_conj(img2_ft[row][col]));
});

// Afișează rezultatele transformării


putReal2d('#canvas3',
complex2d_real2d(complex2d_swap(complex2d_map(result,
function (a) {
return {re: a.re*1.5, im: a.im*1.5};
}))));

// Caută maximul si minimul


var max = null;
var min = null;
real2d_map(complex2d_real2d(FT2D_complex2d(result, -1, 1/N)), function (a) {
if (max === null || max < a) {
max = a;

37
}
if (min === null || min > a) {
min = a;
e1 Imaginea 1 Imaginea 2 Imaginea 3 Imaginea 4 Imaginea 5
90,00 21705,82 20121,50 18591,49 22915,07 23577,98
85,00 26178,98 20121,50 22434,67 26172,20 26353,03
80,00 28481,43 20051,53 23136,67 26986,61 27124,71
70,00 25614,80 19386,64 20668,08 25702,26 24086,13 }
75,00 28734,49 20359,47 22272,81 27174,46 26448,77
105,00 15536,00 20121,50 12114,89 17337,24 20177,08
110,00 16423,47 9520,77 12359,23 17377,07 19704,45
}
115,00 17650,56 9454,98 12141,19 16958,02 19803,07
120,00 18778,69 9810,25 11689,13 17356,84 19670,26 )
125,00 19466,89 8809,25 11382,90 17397,95 19026,81 ;
130,00 19982,70 9594,24 10873,80 17640,24 17998,83
// Rezultatul
$('#output').val('max: ' + (max - min));
});

2.4. Rezultatele cercetării


Rezultatele aplicației au fost acceptabile: tastand intr-o baza de date cu 5 fețe umane,
raportul de recunoaștere 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. Cea mai importanta parte este focalizarea fetei, separatea acesteia
de imaginea fundalului si alegera rezultatului correct dar pe scurt infatisarea intregului process
de recunoaștere a fetei de la imaginea capturata, prin la extragerea caracteristicilor
corespunzatoare figurii pana la identificarea subiectului.

Tabel. 2.1. Valorile maxime pentru Imaginea 1.

38
Fig. 2.1. Valorile maxime pentru Imaginea 1.

Tabel. 2.2. Valorile maxime pentru Imaginea 2.

e2 Imaginea 1 Imaginea 2 Imaginea 3 Imaginea 4 Imaginea 5


1,0 14591,6 9898,2 12656,4 17053,2 20493,5
2,0 14683,3 9594,2 12646,9 16972,3 20546,6
3,0 14793,7 10018,0 12837,2 17045,6 20404,2
4,0 15027,9 10127,6 12982,7 16984,0 20362,4
5,0 15064,5 10222,0 13096,9 17062,5 20313,5
6,0 15234,3 10396,0 13287,5 17132,4 20235,7
7,0 15504,6 10586,4 13444,1 17271,8 20234,5
8,0 15773,5 10742,7 13624,1 17652,9 20234,5
9,0 16249,9 11062,5 13737,0 18114,0 20001,0
10,0 16621,4 11322,4 13906,8 18529,2 20043,0

Fig. 2.2. Valorile maxime pentru Imaginea 2.

39
Tabel. 2.3. Valorile maxime pentru Imaginea 3.

e3/e4 Imaginea 1 Imaginea 2 Imaginea 3 Imaginea 4 Imaginea 5


1,0 15307,5 10429,9 13298,5 17806,0 21451,1
5,0 19483,9 15154,4 15395,9 21181,7 22392,6
10,0 22797,9 17086,7 18325,7 25759,4 23968,1
15,0 22518,1 18261,2 17808,6 24568,2 21439,9
20,0 19159,2 19443,6 17695,3 21628,4 17804,7
25,0 16518,9 18769,5 16494,8 17409,5 14971,2
30,0 14159,8 16100,3 14618,9 13583,6 12059,9

Fig. 2.3. Valorile maxime pentru Imaginea 3.

Tabel. 2.4. Valorile maxime pentru Imaginea 4.

N Imaginea 1 Imaginea 2 Imaginea 3 Imaginea 4 Imaginea 5


0,01 15274,31 10064,63 12945,79 10064,63 20830,80
0,02 15551,20 10217,28 13146,55 17753,01 21017,75
0,03 15771,80 10509,64 13636,63 18012,60 21134,10
0,04 16345,40 10881,74 13845,26 18495,02 21475,98
0,05 16639,71 11362,29 14136,77 18493,08 21837,75
0,10 18164,59 12408,71 15614,57 20097,06 22434,33
0,15 19822,31 13517,24 16467,02 20714,92 22582,30
0,20 20905,30 13517,24 17405,61 21640,28 22582,30

40
Fig. 2.4. Valorile maxime pentru Imaginea 4.

2.5. Concluzii la Capitolul 2


A fost imaginat, proiectat, implementat şi testat cu succes un sistem experimental pentru
detecţia şi corelarea feţelor în imagini utilizându-se se implementarea corelatorului numeric
adaptat pentru aplicația de recunoaștere a fețelor umane, și ale metodei Viola-Jones din
biblioteca open source de funcţii de vedere artificială a Intel, OpenCV.
Dezvoltarea programelor s-a realizat în limbajul C++. Sistemul lucrează în timp real,
făcând faţă fără probleme la achiziţie video continuă cu o cameră web simplă, la o rezoluţie de
320×240 pixeli, cu 15 cadre pe secundă.
Algoritmul de etichetare (indexare) a feţelor detectate în cadrele video lucrează corect,
păstrând identificarea acestora inclusiv în situaţiile de posibile ambiguităţi datorate „dispariţiei”
temporare a unora dintre ele şi reapariţiei lor ulterioare.

41
3.DOCUMENTAȚIA TEHNICĂ PRIVIND SISTEMUL DE SIMULARE

3.1. Ghidul programatorului


Programul este o aplicație web. Tehnologii folosite: HTML5 și JavaScript.
Structura programului
Programul constă în fișierul index.html în care este concentrată aspectul intregii aplicatii
si toata logica lui.
Logica programului
Întreaga logică a programului este concentrată în ultimul (și numai) SCRIPT bloc. Acesta
conține în calitate de funcții auxiliare, și funcții direct legate de punerea în aplicare a
algoritmilor.
function clear(elem)
Șterge elementul (umple-l cu alb).
function off(row, col)
Calculează decalajul pixelilor cunoaște rând și coloană ei.
function getReal2d(elem)
Returnează un pixel element de tablou bidimensional.
function putReal2d(elem, real2d)
Atrage pixelii de imagine care sunt tablou bidimensional.
function FT2D(real2d)
Bidimensionala transformata Fourier. Intrarea este un tablou bidimensional de numere
reale.
function FT2D_complex2d(complex2d, dir, scale)
Bidimensionala Transformata Fourier (înainte și înapoi). Intrarea este o serie de numere
complexe.
function IFT2D(complex2d)
Transformata Fourier inversa.
function IFT2D_amplitude(complex2d)
Transformata Fourier inversă , se calculeaza amplitudinea.
function real2d_map(real2d, fn)
Afișează un tablou bidimensional de numere reale, pe de altă matrice bidimensională de
aceeași mărime în conformitate cu funcția dată.
function real2d_complex2d(real2d)
Afișează un tablou bidimensional de numere reale pe tablou bidimensional de numere
complexe.
function complex_multiply(a, b)

42
Înmulțește două numere complexe.
function complex2d_map(complex2d, fn)
Afișează un tablou bidimensional de numere complexe de către un alt de aceeași mărime
în conformitate cu o funcție specifică.
function complex_conj(a)
Calculează conjugatul unui număr complex.
function complex2d_conj(complex2d)
Calculează conjugatul pentru toate rețea bidimensională de numere complexe.
function complex2d_swap(complex2d)
Schimba cu locul cadranele ale matricei de numere complexe.
function complex2d_real2d(complex2d, fn)
Convertește o serie de numere complexe într-o matrice de numere reale, în conformitate
cu o funcție predeterminată.

La initializarea se incarca imaginea img / butterfly.png în ambele domenii


(function () {
var img = new Image();
img.src = 'img/butterfly.jpg';
img.onload = function () {
drawImage(img);
};
var img2 = new Image();
img2.src = 'img/butterfly.jpg';
img2.onload = function () {
drawImage(img2, '#canvas2');
};
})();

Când se apasa caseta de dialog Open Image se selecteaza o imagine.


$('#open').click(function () {
$('<input type="file">').change(function () {
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
img.src = event.target.result;

43
img.onload = function () {
drawImage(img);
};
};
reader.readAsDataURL(this.files[0]);
}
}).click();
$('<input type="file">').change(function () {
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (event) {
var img = new Image();
img.src = event.target.result;
img.onload = function () {
drawImage(img, '#canvas2');
};
};
reader.readAsDataURL(this.files[0]);
}
}).click();
});

Întreaga logică a programului este concentrată în următoarele funcții:

$('#apply-filter').click(function () {

// Primeste pixelii la prima imagine


var img1 = real2d_complex2d(getReal2d('#canvas1'));
// Получить пиксели второй картинки
var img2 = real2d_complex2d(getReal2d('#canvas2'));
// Выполнить преобразование фурье для первой картинки
var img1_ft = FT2D_complex2d(img1, 1, 1/N/N);
// Выполнить преобразование фурье для второй картинки
var img2_ft = FT2D_complex2d(img2, 1, 1/N/N);

// Execută FT{IMG1}*CONJ{FT{IMG2}}

44
var result = complex2d_map(img1_ft, function (a, orig, row, col) {
return complex_multiply(a, complex_conj(img2_ft[row][col]));
});

// Afișează rezultatele transformării


putReal2d('#canvas3',
complex2d_real2d(complex2d_swap(complex2d_map(result,
function (a) {
return {re: a.re*1.5, im: a.im*1.5};
}))));

// Caută maximul si minimul


var max = null;
var min = null;
real2d_map(complex2d_real2d(FT2D_complex2d(result, -1, 1/N)), function (a) {
if (max === null || max < a) {
max = a;
}
if (min === null || min > a) {
min = a;
}
});
// Rezultatul
$('#output').val('max: ' + (max - min));
});

3.2. Ghidul utilizatorului


Aceast soft reprezintă de fapt o aplicație web care folosește tehnologiile : HTML5 și JavaScript.
1) În bara de căutare a browserului accesăm urmatoarea adresă :

http://test.themefuse.com/barbarosh/ulim_diplom_sergei/src/#

2) Accesînd această adresa va apărea în continuare urmatoarea fereastră:

45
3) Apăsăm pe butonul Open Image și selectăm o imagine dorită, pentru a procesa ambele
imagini va aparea fereastra de deschidere a fișierelor de 2 ori

4) În continuare accesînd butonul Apply Filter imaginile se vor procesa și în a 3 fereastră va


aparea spectrul funcției iar în fereastra de sub imagini valoarea maxima a prelucrării.

46
5) Valoare primită se salvează într-un document aparte. Cu valorile obținute pentru o serie
de imagini se construiesc tabele și diagrame.

3.3. Concluzii pentru Capitolul III.


Pentru a îmbunătăţi performanţa şi pentru a aborda fiecare variaţie,
numeroase algoritmi noi au fost propuse vizează generalizarea la persoane
nevăzute, analizei factoriale multiple şi structurile ascunse de fete. În caz de
rezoluţie mică fete, de pre-procesare metode care pot îmbunătăţi rezoluţia
de fata Imaginile au fost detaliate.
Pentru fiecare faţă detectată într-un cadru se poate defini o anumită regiune în care ne
putem aştepta ca ea să fie regăsită în cadrul următor, respectiv centrul geometric al
dreptunghiului său de încadrare în acest nou cadru se va regăsi cel mai probabil într-un cerc de
rază egală cu distanţa maximă amintită mai înainte şi centrat în poziţia corespunzătoare centrului
său geometric din cadrul anterior. În cazul mai multor feţe, corespondentul fiecăreia în cadrul
nou va fi dat de distanţa minimă între centrele geometrice respective. Eventuale situaţii de
ambiguitate în cazul mai multor feţe apropiate sunt rezolvate prin găsirea distanţei minime
pentru fiecare dintre acestea la posibilii corespondenţi din celălalt cadru. Totodată, pentru
eliminarea ambiguităţilor ce pot apărea în cazul intersectării mai multor persoane, când unele din
feţe sunt obturate temporar de altele, s-a utilizat euristica dată de dimensiunile dreptunghiurilor
de încadrare ale feţelor care datorită profunzimii sunt mai mari pentru cele situate în planuri mai
apropiate şi mai mici pentru cele mai îndepărtate.
Pe baza acestui criteriu se poate păstra etichetarea / indexarea corectă a fiecărei feţe după
reapariţia în cadru a celor temporar obturate.

47
CONCLUZII GENERALE
Prelucrarea numerică a imaginilor reprezintă un ansamblu de teorii şi tehnici folosite în
înregistrarea, sinteza, codarea, transmiterea, reproducerea, recunoaşterea, estimarea, detecţia,
filtrarea, îmbunătăţirea imaginilor digitale. Domeniile de aplicabilitate ale prelucrării digitale a
imaginilor sunt: transmisiunile video, medicina, biologia, astronomia, industria, comunicaţiile,
efectele speciale, educaţia la distanţă.
În cazul celor din urmă s-a imaginat, proiectat şi implementat şi un scenariu, o metodă şi
un algoritm de urmărire (tracking) a fiecărei feţe statice sau în mişcare, identificate ca atare în
cadrele respective, prin etichetarea / indexarea acesteia. Au fost elaborate soluţii pentru
etichetarea / indexarea corectă a feţelor în cadrele succesive, inclusiv pentru situaţiile de posibile
ambiguităţi în etichetarea corectă a acestora în cazul „pierderii” lor temporare din cadre.
Pentru fiecare faţă detectată într-un cadru sunt calculate poziţiile viitoare posibile.
Acestea sunt utilizate atât pentru identificarea corectă şi coerentă în cadrul următor cât şi pentru
cazurile în care faţa respectivă „dispare” dintr-un motiv sau altul din cadrele video pentru o
perioadă scurtă de timp – nu este detectată, se întoarce cu spatele la cameră, iese temporar din
scenă sau este obturată temporar de alt obiect sau altă persoană etc. – şi apoi reapare
Sisteme robuste de recunoaştere a feţei trebuie să fie capabil să se
ocupe de variaţii care
apară în scenarii practice de funcţionare. Aceasta înseamnă a avea
capacitatea de a se ocupe de orice şi de toate variantele se confruntă cu
condiţii de iluminare diferite, prezintă, expresii, şi de alţi factori, cum ar fi
achiziţionarea de variaţie mică faţă de rezoluţie o distanţă.

48
BIBLIOGRAFIE

1. Bartlett, M.S., Movellan, J.R., Sejnowski, T.R., “Face recognition by Independent


Component Analysis”, IEEE Trans. on Neural Networks, 13, pp. 1450-1464, 2002
2. Belhumeur, P.N., Hespana, J.P., Kriegman, D.J., "Eigenfaces vs. fisherfaces: Recognition
using class specific linear projection", IEEE Trans. PAMI, 19, no. 7, pp. 711-720, 1997
3. Belhumeur, P.N., Kriegman, D.J., "What is the Set of Images of an Object under All
Possible Illumination Conditions?", Int. J. Computer Vision, vol. 28, no. 3, pp. 1-16, 1998
4. Ciocoiu, I.B., Reţele neurale artificiale, Editura Cantes, Iaşi, 2001
5. Face Recognition Homepage: www.face-rec.org/databases
6. Ge, X., Iwata, S., “Learning the parts of objects by auto-association”, Neural Networks,
vol. 15, pp. 285-295, 2002
7. Hoyer, P.O., “Non-negative matrix factorization with sparseness constraints”, J. Machine
Learning Research, vol. 5, pp. 1457-1469, 2004
8. IEEE Spectrum, vol. 41, no. 3, pp. 13, 2004
9. Kong, S.G., Heo, J., Abidi, B.R., Paik, J., Abidi, M.A., “Recent advances in visual and
infrared face recognition—a review”, Computer Vision Image Understansding,, vol. 97,
pp. 103-135, 2005
10. Kreutz, M., Volpel, B., Jansen, H., "Scale-Invariant Image Recognition Based on Higher
Order Autocorrelation Features", Pattern Recognition, vol. 29, no. 1, pp. 19-26, 1996
11. Kurita, T., Hotta, K., Mishima, T., "Scale and rotation invariant recognition method using
high-order local autocorrelation features of log-polar image", Proc. Asian Conf. on
Computer Vision, pp. 89-96, 1998
12. Lai, J.H., Yuen, P.C., Feng, G.C., "Face Recognition Using Holistic Fourier Invariant
Features", Pattern Recognition, vol. 34, pp. 95-109, 2001
13. Lee, D.D., Seung, H.S., “Learning the parts of objects by non-negative matrix
factorization”, Nature, 401, pp. 788-791, 1999
14. Li, S.Z., Hou, X.W., Zhang, H.J., “Learning spatially localized, parts-based
representation”, Proc. CVPR, 2001
15. Liu, X., Chen, T., Vijaya Kumar, B.V.K., "Face Authentication for Multiple Subjects
Using Eigenflow", CMU Technical Report AMP 01-05, 2001
16. Liu, C., Wechsler, H., “Independent component analysis of Gabor features for face
recognition”, IEEE Trans. Neural Networks, vol. 14, no. 4, pp. 919-928, 2003

49
17. Moghaddam, B. , "Principal Manifolds and Probabilistic Subspaces for Visual
Recognition", IEEE Trans. PAMI, vol. 24, no.6, 2002
18. NIST Subcommittee on Biometrics: www.biometricscatalog.org
19. Penev, P., Atick, J., "Local feature analysis: A general statistical theory for object
representation", Network: Computation in Neural Systems, vol. 7, no. 3, pp. 477-500,
1996
20. Pentland, A., Moghaddam, B., Starner, T., "View-based and modular eigenspaces for face
recognition", Proc. CVPR, pp. 84-91, 1994
21. Piotrowski, L.N., Campbell, F.W., "A demonstration of the visual importance and
flexibility of spatial-frequency, amplitude, and phase", Perception, vol. 11, pp. 337-346,
1982
22. Shan, S., Chang, Y., Gao, W., Cao, B., “Curse Of Mis-Alignment In Face Recognition:
Problem And A Novel Mis-Alignment Learning Solution”, Proc. AFGR, pp. 314-320,
2004
23. Simard, P.Y., Le Cun, Y.A., Denker, J.S., Victorri, B., "Transformation Invariance in
Pattern Recognition – Tangent Distance and Tangent Propagation", Int. J. Imaging
System and Technology, vol. 11, Issue 3, pp. 181-194, 2001
24. Turk, M., Pentland, A.P., "Eigenfaces for recognition", J. of Cognitive Neuroscience, vol.
3, no. 1, pp. 71-86, 1991
25. Vrejoiu, M. H.; hotăran, a. M.; Preda, Ş.; Zamfir, M.: Metode, tehnici şi algoritmi pentru
localizarea şi urmărirea figurilor umane în imagini statice, respectiv dinamice. Studiu.
Specificaţii de definire metode, tehnici şi algoritmi. Specificaţii de implementare metode,
tehnici şi algoritmi. Sistem experimental – Raport de cercetare, etapa 1 (unică) a
proiectului PN09230606, ICI Bucureşti, iulie 2013.
26. Hewitt, R.: Seeing With OpenCV, Part 2: Finding Faces in Images, in SERVO Magazine,
T & L Publications Inc., February 2007.
27. Vrejoiu, M. H.; Hotăran, A. M.: Detectarea automată a feţelor umane. Metoda Viola-
Jones, în Revista Română de Informatică şi Automatică (RRIA), vol.23, nr.2, iunie 2013.
28. Viola, P.; Jones, M.: Rapid Object Detection using a Boosted Cascade of Simple
Features, in the Proceedings of the Conference on Computer Vision and Pattern
Recognition (CVPR), 2001.
29. Viola, P.; Jones, M. J.: Robust Real-Time Face Detection, in the International Journal of
Computer Vision (IJCV) 57(2), Kluwer Academic Publishers, 2004, pp. 137-154.
30. Jones, M.; Viola, P.: Fast multi-view face detection, in Technical report, Mitsubishi
Electric Research Laboratories, TR2003-96, 2003.

50
ANEXE

ANEXA 1. Prelucrarea in IPS Imaginea 1

e1-schimbarea dimesiunii

70 75 80 85 90 105 110

115 120 125 130

e2-rotirea(grade)

1 2 3 4 5 6 7

8 9 10

51
e3/e4- schimbarea pozitiei

1 5 10 15 20 25

30

N- adaugarea zgomotului

0,01 0,02 0,03 0,04 0,05 0,1 0,15

0,2

52
ANNEXA 2. Prelucrarea in IPS Imaginea 2.

E1-schimbarea dimesiunii.

70 75 80 85 90 105 110

115 120 125 130

E2-rotirea

1 2 3 4 5 6

7 8 9 10

53
E3/e4-miscarea pozitiei

1 5 10 15 20 25

30

N-adaugarea zgomotului

0,01 0,02 0,03 0,04 0,05 0,1 0,15

0,2

54
ANNEXA 3. Prelucrarea in IPS Imaginea 3.

e1-schimbarea dimesiunii

70 75 80 85 90 105 110

115 120 125 130

e2-rotirea

1 2 3 4 5 6 7

8 9 10

55
e3/e4- schimbarea pozitiei

1 5 10 15 20 25

30

N-adaugarea zgomotului

0,01 0,02 0,03 0,04 0,05 0,1 0,15

0,2

56
ANNEXA 4. Prelucrarea in IPS Imaginea 4.

e1-schimbarea dimesiunii

70 75 80 85 90 105 110

115 120 125 130

e2-rotirea

1 2 3 4 5 6 7

8 9 10

57
e3/e4-schimbarea pozitiei

1 5 10 15 20 25

30

N-schimbarea zgomotului

0.01 0.02 0.03 0.04 0.5 0.1 0.15

0,2

58
ANNEXA 5. Prelucrarea in IPS Imaginea 5.

e1-schimbarea dimesiunii

70 75 80 85 90 95 105

110 115 120 125 130

e2-rotire

1 2 3 4 5 6 7

8 9 10

59
e3,e4- schimbarea pozitiei

1 5 10 15 20 25

30

N-schimbarea zgomotului

0.01 0.02 0.03 0.04 0.05 0.1 0.15

0,2

60
ANNEXA 6 . Listingul softului.

function complex_add(a, b)
{
return {
re: a.re + b.re,
im: a.im + b.im
};
}

function complex_sub(a, b)
{
return {
re: a.re - b.re,
im: a.im - b.im
};
}

function complex_mul(a, b)
{
return {
re: a.re * b.re - a.im * b.im,
im: a.re * b.im + a.im * b.re
}
}

function complex_div(a, b)
{
return {
re: (a.re * b.re + a.im * b.im) / (b.re * b.re + b.im * b.im),
im: (a.im * b.re - a.re * b.im) / (b.re * b.re + b.im * b.im)
};
}

function complex_conj(a)
{
return {
re: a.re,
im: -a.im
};
}

// http://paulbourke.net/miscellaneous/dft/

61
// http://paulbourke.net/miscellaneous/dft/fft_ms.c
function fft(complex2d, power_of_2, dir)
{
var i, i1, i2,j, k, l, l1, l2, number_of_points, tmp;
var tx, t1, u, c;

/* Calculate the number of points */


number_of_points = 1;
for (i = 0; i < power_of_2; i++) {
number_of_points <<= 1;
}

/* Do the bit reversal */


// j = 0;
// for (i = 0; i < number_of_points - 1; i++) {
// if (i < j) {
// tmp = complex2d[i];
// complex2d[i] = complex2d[j];
// complex2d[j] = tmp;
// }
//
// k = number_of_points >> 1;
// while (k <= j) {
// j -= k;
// k >>= 1;
// }
//
// j += k;
// }

/* Compute the FFT */


c = {re: -1, im: 0};
l2 = 1;
for (l = 0; l < power_of_2; l++) {
l1 = l2;
l2 <<= 1;
u = {re: 1, im: 0};

for (j = 0; j < l1; j++)


{
for (i = j; i < number_of_points; i += l2)
{
i1 = i + l1;
t1 = complex_mul(u, complex2d[i1]);
complex2d[i1] = complex_sub(complex2d[i], t1);
complex2d[i] = complex_add(complex2d[i], t1);
}

u = complex_mul(u, c);
}

c.im = Math.sqrt((1.0 - c.re) / 2.0);


if (dir == 1) {

62
c.im = -c.im;
}
c.re = Math.sqrt((1.0 + c.re) / 2.0);
}

/* Scaling for forward transform */


if (dir == 1) {
for (i = 0; i < number_of_points; i++) {
complex2d[i] = complex_div(complex2d[i], number_of_points);
}
}

return complex2d;
}
/*
complex fast fourier transform and inverse from
http://rosettacode.org/wiki/Fast_Fourier_transform#C.2B.2B
*/
function icfft(amplitudes)
{
var N = amplitudes.length;
var iN = 1 / N;

//conjugate if imaginary part is not 0


for(var i = 0 ; i < N; ++i)
if(amplitudes[i] instanceof Complex)
amplitudes[i].im = -amplitudes[i].im;

//apply fourier transform


amplitudes = cfft(amplitudes)

for(var i = 0 ; i < N; ++i)


{
//conjugate again
amplitudes[i].im = -amplitudes[i].im;
//scale
amplitudes[i].re *= iN;
amplitudes[i].im *= iN;
}
return amplitudes;
}

function cfft(amplitudes)
{
var N = amplitudes.length;
if( N <= 1 )
return amplitudes;

var hN = N / 2;
var even = [];
var odd = [];
even.length = hN;
odd.length = hN;

63
for(var i = 0; i < hN; ++i)
{
even[i] = amplitudes[i*2];
odd[i] = amplitudes[i*2+1];
}
even = cfft(even);
odd = cfft(odd);

var a = -2*Math.PI;
for(var k = 0; k < hN; ++k)
{
if(!(even[k] instanceof Complex))
even[k] = new Complex(even[k], 0);
if(!(odd[k] instanceof Complex))
odd[k] = new Complex(odd[k], 0);
var p = k/N;
var t = new Complex(0, a * p);
t.cexp(t).mul(odd[k], t);
amplitudes[k] = even[k].add(t, odd[k]);
amplitudes[k + hN] = even[k].sub(t, even[k]);
}
return amplitudes;
}

/*
basic complex number arithmetic from
http://rosettacode.org/wiki/Fast_Fourier_transform#Scala
*/
function Complex(re, im)
{
this.re = re;
this.im = im || 0.0;
}

Complex.prototype.add = function(other, dst)


{
dst.re = this.re + other.re;
dst.im = this.im + other.im;
return dst;
}

Complex.prototype.sub = function(other, dst)


{
dst.re = this.re - other.re;
dst.im = this.im - other.im;
return dst;
}

Complex.prototype.mul = function(other, dst)


{
//cache re in case dst === this
var r = this.re * other.re - this.im * other.im;
dst.im = this.re * other.im + this.im * other.re;

64
dst.re = r;
return dst;
}

Complex.prototype.cexp = function(dst)
{
var er = Math.exp(this.re);
dst.re = er * Math.cos(this.im);
dst.im = er * Math.sin(this.im);
return dst;
}

Complex.prototype.log = function()
{
/*
although 'It's just a matter of separating out the real and imaginary parts of jw.' is not a helpful
quote
the actual formula I found here and the rest was just fiddling / testing and comparing with
correct results.
http://cboard.cprogramming.com/c-programming/89116-how-implement-complex-
exponential-functions-c.html#post637921
*/
if( !this.re )
console.log(this.im.toString()+'j');
else if( this.im < 0 )
console.log(this.re.toString()+this.im.toString()+'j');
else
console.log(this.re.toString()+'+'+this.im.toString()+'j');
}

65
DECLARAȚIE

Privind originalitatea conținutului lucrării de licență

Subsemnatul....................................................................................................................................
absolvent al Universității Libere Internaționale din Moldova, Facultatea........................................
................................................................................................................................................
specialitatea................................................................, promoția..............................................,
declar pe propria răspundere, că lucrarea cu titlul: ..........................................................................
..................................................................................................................................................
...................................................................................................................................................
elaborată sub îndrumarea dl.......................................................................................................,
pe care urmează să o susțin în fata comisiei este originală, îmi aparține și îmi asum conținutul
său în întregime.
Declar că nu am plagiat altă lucrare de licență, monografii lucrări de specialitate, articole etc.,
publicate sau postate pe internet, toate sursele bibliografice folosite la elaborarea lucrarii de
licență fiind menționate în cuprinsul acesteia.
De asemenea, declar ca lucrarea mea de licență sa fie verificată pe orice modalitate legală prin
confirmarea originalității, comsimțînd inclusiv la introducerea conținutului sau într-o baza de
date cu acest scop.

Data................., Semnătura student..................

66
CIRCULUM VITTAE

67
DATE PRIVIND CONTROLUL TEHNIC AL TEZEI

Serviciul de control Numele, Prenumele Data verificării Semnătură


din cadrul: controlorului tezei
Facultăţii

Universității

68