Specializarea Tehnologii și sisteme de Telecomunica ții Contribu ții laanalizași implementarea unor metode de ex tragere a caracteristicilor din… [620411]

UNIVERSITATEA TEHNICA DIN CLUJ -NAPOCA
FACULTATEA DE ELECTRONICA ,TELECOMUNICATII SI
TEHNOLOGIA INFORMATIEI
Specializarea Tehnologii și sisteme de Telecomunica ții
Contribu ții laanalizași implementarea unor
metode de ex tragere a caracteristicilor din
imagini în vederea clasific ării lor
Lucrare delicență
PRESEDINTE COMISIE , DECAN ,
Prof. dr. ing Monica Borda Prof.dr.ing. MarinaȚOPA
CONDUCATOR, ABSOLVENT: [anonimizat]
2010

UNIVERSITATEA TEHNICA DIN CLUJ -NAPOCA
FACULTATEA DE ELECTRONICA, TELECOMUNICATII SI
TEHNOLOGIA INFORMATIEI
CATEDRA DE COMUNICA ȚII
Titlul temei: Contribu ții la analiza și implementarea unor metode
de extragere a caracteristicilor din imagini î n vedere a clasificării lor
Enunțullucrarii de licen ță:
Proiectul trebuie s ăconținămetodologia de alegere a caracteristicilor extrase din imagini,
implementarea unei aplica ții Matlab de extragere a tr ăsăturilor din imaginile bazei de date pentru
clasificarea acestora. Obiectivele sunt documentarea metodelor de extragere trăsături deja
existente, clasificarea imaginilor pe baza tr ăsăturilor extrase și realizarea practic ăa unei aplica ții
deextragere trăsăturiși clasificare imagin i.
Locul de executie: Laborator 211
Data emiterii temei: 20 februarie 2009
Termen de predare: 24 iunie 2010
ȘEF CATEDR Ă, ABSOLVENT: [anonimizat].dr.ing. Virgil DOBROTA Alexandru Mihu
CONDUCATOR,
Asist.ing. Anca Ap ătean

Declarația autorului
Subsemnatul declar prin prezenta c ăideile, partea de implementare și experimental ă,
rezultatele, analizele și concluzi ile cuprinse în aceast ălucrare constituie efortul meu propriu, mai
puținacele elemente ce nu -mi aparțin, pe care le indic și le recunos c ca atare.
Declar de asemenea, c ădupăștiința mea, lucrarea în aceast ăformăeste original ăși nu a mai fost
niciodatăprezentatăsau depus ăîn alte locuri sau altor institu ții decât cele indicate în mod expres
de mine.
În calitate de autor, cedez toat e drepturile de utilizare și modificare a lucr ării de licențăcătre
Universitatea Tehnic ădin Cluj -Napoca.
Cluj-Napoca, 24 iunie 2010
ABSOLVENT: [anonimizat], TELECOMUNICA ȚIIȘI TEHNOLOGIA INFORMA ȚIEI

1.absolvent: [anonimizat]
2.asist. ing. Apătean Anca
SINTEZA LUCRARII DE LICEN ȚĂ
Contribu ții la analiza și implementarea unor metode de extragere a caracteristici lor
(trăsăturilor) din imagini în vederea clasific ării lor
Imaginile digitale, costul redus de realizare și stocare al acestora, precum și utilizarea lor
în tot mai multe domenii ale științeiși ingineriei, au introdus o cre ștere a cererii de aplica ții de
analizăși clasificare a imaginilor cu o precizie cât mai mare și într-un timp cât de poate de scurt .
Lucrarea urm ărește extracția de trăsături din imaginile ce compun baza de date pentru a
obține o acurate țe de clasificare (KNN) cât mai mare. Extrac ția trăsăturilor s -a realizat prin
metode deja existente, folosite în cadrul clasi ficatorului WND -CHARM . Acest clasificator face
parte din mediul OME (Open Microscopy Environmen t).Numărul de trăsături extrase a fost
redus prin renun țarea la metodele ineficiente de extragere în ceea ce prive ște performan țele de
clasificare la 318 atribute pe imagine fațăde 1024 atribute pe imagine folosite pentru formarea
vectorului de tr ăsături din cadrul clasificatorului WND -CHARM. Astfel ,timpul de extragere al
trăsăturilor tuturor imaginilor din baza de date, precum și timpul de clasificare au fost mic șorate
semnificativ (dela48 de orela 3 oreși 11 minute , respectiv de la 2 secunde lamai puțin de o
secundă).
Prin modificarea bazei de imagini aplica ția realizat ăpoate fi utilizat ăîn probleme de
detecție sau recunoa ștere din diverse domenii.
ABSTRACT
Digital images, cheap costs of acquisition and storage, as well as increasing use in many
fields of science and engineering , introduces a demand of image analysis and classification with
high accuracy and lower classification time.
This thesis follow s feature extraction from database images to obtain a high KNN
clasification accuracy. Feature extraction was achieved by existing methods used in WND –
CHARM classifier, which is part of the OME environment (Open Microscopy Environment).
Number of features perimage have been reduced from 1024 attributes per image used in WND –
CHARM feature vector to 318 attributes per image , by removing the inefficient extraction
methods in terms of clasification performance. Thus, the time needed f or feature extraction for
alldatabase images and classification time was reduced significantly (from 48 hours to3hours,
respectively from 2seconds to less than one second ).
By changing the image database the application can be used in detection and recognition
problems in many field of science and engineering.

CURRICULUM VITAE
Name and surname: Alexandru Mihu
Date of birth: 16th of November 1986
Studies:
High School: Colegiul Na țional „Lucian Blaga”, Sebe ș
Professional activity:
Internship at RDS & RCS S.A., technical advisor
Technical Knowledge:
Advanced PC operating and programming skills:
Microsoft Windows and Office suite; Pascal , FoxPro, C , C++ , C# , embedded C,
Java.
Electronical and mechanical CAD skills:
OrCAD suite , AutoCAD
Known languages:
English: Writing, Reading, Speaking: Very Good
German: Wr iting: Acceptable, Reading: Acceptable , Speaking: Acceptable
Contact address:
Address: Str.Valea Frumoasei 5C/8 ,Sebeș,Alba
Telephone: 0746 041672
E-mail address: mihu_alexandru_ioan @yahoo.com
I the undersigned, Alexandru Ioan Mihu , declare that all the data in this Curriculum Vitae
can be used by The Faculty of Electronics, Telecommunications and Information Technology of the
Technical University of Cluj -Napoca , for promotional pourposes and professional orientation, in the
following conditions:
Without prior consult
After prior consult
I do not agree

Cuprins
1. Stadiul actual ………………………….. ………………………….. ………………………….. …………………………. 1
2. Fundamentare teoretic ă………………………….. ………………………….. ………………………….. ………….. 2
2.1. Introducere ………………………….. ………………………….. ………………………….. ……………………. 2
2.2Transformata Wavelet continu ăși discretă………………………….. ………………………….. …….. 3
2.2.1 Transformata Wavelet continu ă………………………….. ………………………….. …………….. 3
2.2.2 Transformata Wavelet discret ă………………………….. ………………………….. ……………… 3
2.2.3 Familii de wavelet -uri:………………………….. ………………………….. …………………………. 5
2.2.4 Aplica ții ale wavelet -urilor ………………………….. ………………………….. …………………… 5
2.3 Transformata FFT ………………………….. ………………………….. ………………………….. …………… 6
2.3.1 Definire transformat ăFFT………………………….. ………………………….. ……………………. 6
2.3.2 Aplica ții ale transformatei FFT ………………………….. ………………………….. …………….. 6
2.4 Transformata Radon ………………………….. ………………………….. ………………………….. ………… 6
2.4.1 Definirea transformatei Radon ………………………….. ………………………….. ……………… 7
2.4.2 Aplica ții ale transformatei Radon ………………………….. ………………………….. ………….. 7
2.5 Caracteristicile Tamura ………………………….. ………………………….. ………………………….. ……8
2.5.1 Granularitatea ………………………….. ………………………….. ………………………….. ………… 8
2.5.2 Contrastul ………………………….. ………………………….. ………………………….. ………………. 8
2.5.3 Direc ționalitatea ………………………….. ………………………….. ………………………….. …….. 8
2.6 Polinoamele Zernike ………………………….. ………………………….. ………………………….. ………… 9
2.6.1 Definirea polinoamelor Zernike ………………………….. ………………………….. …………….. 9
2.6.2 Aplica ții ale polinoamelor Zernike ………………………….. ………………………….. ……….. 10
2.7 Histograme multiscalare ………………………….. ………………………….. ………………………….. …10
2.8 Filtre orientate în patru direc ții pentru ob ținerea "primelor 4 momente" …………………… 10
2.9 Algoritmul KNN ………………………….. ………………………….. ………………………….. ……………. 10
2.9.1 Avantajele algoritmului KNN ………………………….. ………………………….. ………………. 11
2.9.2 Dezavantajele algoritmului KNN ………………………….. ………………………….. …………. 12
2.10 Fișiere MEX (MEX -files) ………………………….. ………………………….. ………………………….. .12
3. Implementarea solu ției adoptate ………………………….. ………………………….. …………………………. 13
3.1 Baza de imagini ………………………….. ………………………….. ………………………….. …………….. 14
3.2 Metoda de extragere a caracteristicilor ………………………….. ………………………….. ………… 15
3.2.1 Metoda de extragere a caracteristicilor din WND -CHARM ………………………….. ….17

3.2.2 Metoda de extragere a caracteristicilor în lucrarea de fa ță………………………….. ….18
3.2.3 Evaluarea tr ăsăturilor în Weka ………………………….. ………………………….. …………… 21
3.3.4 Evaluarea tr ăsăturilor în Matlab ………………………….. ………………………….. …………. 22
3.3 Determinarea parametriilor transformatei Wavelet ………………………….. ……………………. 23
3.4 Modul de împ ărțire a datelor pentru înv ățareși testare ………………………….. ………………. 24
3.5 Îmbun ătățirea performan țelor………………………….. ………………………….. ……………………… 25
3.5.1 Reducerea num ărului de tr ăsături extrase din fiecare imagine ……………… ……. 35
3.5.2 Transformarea aplica ției într -un executabil ………………………….. ………………………. 27
3.6 Interfa ța graficăa aplicației………………………….. ………………………….. ……………………….. 27
3.6.1 Extragerea tr ăsăturilor ………………………….. ………………………….. ………………………. 28
3.6.2 Clasificarea imaginilor ………………………….. ………………………….. ………………………. 28
3.6.3 Testarea clasificatorului KNN și cu alte imagini decât cele din baza de date …….. 28
4. Rezultate experimenta le………………………….. ………………………….. ………………………….. ………… 28
4.1 Rezultate experimentale Weka ………………………….. ………………………….. ……………………… 29
4.2 Rezultate experimentale din Matlab și din aplica ția executabil ă
5. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ….35
6. Bibliografie ………………………….. ………………………….. ………………………….. ………………………….. 37
7. Anexe ………………………….. ………………………….. ………………………….. ………………………….. ……… 39
7.1 Anexa 1 ………………………….. ………………………….. ………………………….. ………………………… 39
Codul Matlab al func ției de transformare Wavelet ………………………….. ………………………….. ……39
7.2 Anexa 2 ………………………….. ………………………….. ………………………….. ………………………… 39
Codul Matlab pentru ob ținerea fișierului cu vectorul de tr ăsături………………………….. …………… 39
7.3 Anexa 3 ………………………….. ………………………….. ………………………….. ………………………… 39
Codul Ma tlab al func ției de extragere tr ăsături………………………….. ………………………….. ……….. 39
7.4 Anexa 4 ………………………….. ………………………….. ………………………….. ………………………… 41
Codul Matlab pentru ob ținerea fișierului cu liniile vectorului de caracteristici permutate ……… 41
Codul Matlab pentru func ția prelucrarefisierIN ………………………….. ………………………….. ……….. 41
Codul Matlab pentru functia preiaDatelePtPrel ………………………….. ………………………….. ……….. 42
7.5 Anexa 5 ………………………….. ………………………….. ………………………….. ………………………… 43
Codul Matlab pentru clasificarea KNN ………………………….. ………………………….. …………………… 43
7.6 Anexa 6 ………………………….. ………………………….. ………………………….. ………………………… 44
Codul Matlab a l aplicației GUI ………………………….. ………………………….. ………………………….. ….44
Codul Matlab pentru metodele de extragere folosite în aplica ția GUI ………………………….. …….. 63
Codul Matlab pentru extrac ția trăsăturilor din fiecare imagine în func ție de metodele alese în
aplicația GUI ………………………….. ………………………….. ………………………….. ………………………….. .64

Lista de figuri
Figura 1.1 Schema procesului de recunoa ștereși clasificare automatăa imaginilor …………………. 3
Figura 2.1 Arborele cu primele trei nivele de desco mpunere DWT(arborele Mallat) ……………….. 4
Figura 2.2 Arborele Mallat cu primele trei nivele de reconstru cție ale semnalului original ……….. 4
Figura 2.3 Familii de wavelet (a) Haar (b) Daubechie s4 (c) Coiflet1 (d) Symlet2 (e) Meyer (f)
Morlet (g) Mexican hat ………………………….. ………………………….. ………………………….. ………………… 5
Figura 2.4 Cele dou ăforme ale transformatei Radon -ecuația (7)și (9)………………………….. …….. 7
Figura 2.5 Valorile Zernike în unitatea de disc ………………………….. ………………………….. …………… 9
Figura 3.1 Imagini din baza de date ………………………….. ………………………….. ………………………… 14
Figura 3.2 Schema bloc a metodelor de extragere a tr ăsăturilor ………………………….. ………………. 15
Figura 3.3 Schema de formare a vectorului de tr ăsături din cadrul WND -CHARM ……………….. 17
Tabel 3.1 Metode de extragere a tr ăsăturilor analizate ………………………….. ………………………….. .20
Figura 3.5 Schema de formare a vectorului de tr ăsături………………………….. ………………………….. 20
Figura 3.6 Structura fi șierului ARFF la modul general ………………………….. ………………………….. .21
Figura 3.7 Structura fisierului ARFF utilizat în acest ălucrare ………………………….. ………………… 21
Figura 3.8 Matricele de confuzie pentru învățare, respectiv testare ………………………….. ………….. 22
Figura 3.9 Transformata Wavelet a unei imagini ………………………….. ………………………….. ………. 24
Figura 3.10 Schema bloc a clasific ării KNN ………………………….. ………………………….. …………….. 25
Figura 3.11 Schma bloc urmat ăde toolbox -uldeploytool ………………………….. ………………………. 27
Figura 3.12 Interfa ța graficăa lucrării………………………….. ………………………….. ……………………… 27
Figura 4.1 Matrice de confuzie Weka (num ărul de vecini=1) ………………………….. …………………. 29
Figura 4.2 Matricele de confuzie pentru k=3 (a), ………………………….. ………………………….. ………. 29
Figura 4.3 Matricele de confuzie pentru setul de testare (k=1,3 și 5) obținute în Weka …………… 30
Figura 4.4 Matricele de confuzie pentru setul de testare ob ținute în Matlab ………………………….. 30
Figura 4.5 Graficul timpului de clasificare în func ție de num ărul de trăsături……………………….. 31
Figura 4.6 Graficul timpului de clasificare în func ție de num ărul de trăsături……………………….. 31
Figura 4.7 Graficul timpului de extragere coeficien ți în funcție de num ărul de trăsături…………. 32
Figura 4.8 Graficul acurate ții în funcție de num ărul de trăsături………………………….. ……………… 35

Lista de tablele
Tabel 3.1 Metode de extragere a tr ăsăturilor analizate ………………………….. ………………………….. .20
Tabel 4. 1 Rezultate ob ținute în Matlab ………………………….. ………………………….. ……………………. 33
Tabel 4.2 Rezultate ob ținute prin transformarea aplica ției într -un executabil ………………………… 34

11. Stadiul actual
Stadiul actual în ceea ce prive ște recunoa șterea formelor și clasificarea automat ăa
imaginilor este unul avansat, reu șindu-se dezvoltarea unor aplica ții care au o acurate țe a
clasificării foarte ridicat ăși un timp de clasificare sau de detec ție foarte bun (detec ție sau
clasificare în timp real), și care încet -încet promit a se apropia ca performan țăde modul natural
cu care fiin ța umanătrateazăaceastăproblemă.
Imaginile digitale, stocarea ieftin ăși utilizarea acestora în tot mai multe domenii ale
științeiși ingineriei, au introdus o cre ștere a cererii de aplica ții de analiz ăși clasificare a
imaginilor cu o precizie cât mai mare. Aceste aplica ții includ tele detecția, descrisăîn[1],
recunoașterea facial ă,despre care pute ți găsi informa ții în [2], [3] sau [4]și clasificarea
imaginilor medic aleși biologice [5], [6], [7] sau [8].
Sistemele de vedere artificial ăsunt proiectate dup ămodelul sistemelor biologice, în
special cel uman. În dezvoltarea unor astfel de sisteme ne lovim, de foarte multe prob leme. Cea
mai important ădintre ele este imposibilitatea de a reproduce în sistemele artificiale, modul
nostru de gândire. Pentru noi oamenii, recunoa șterea unui obiect se face cu u șurință, chiar dac ă
acel obiect nu este v ăzut în întregime, dar în general nu putem s ăexplicămștiințificcum am
reușit sărealizămrecunoașterea. Prin urmare, nu putem dezvolta un algoritm sau o tehnic ăde
inteligențăartificialăcare descrie iterativ și exact acest proces.
Deșiîn ultimii ani au atras o aten ție deosebit ă, analiza și clasificarea imagini lor sunt
deocamdat ăconsiderate probleme competitive în sistemele de prelucrare și clasificare pe baza
conținutului imaginilor (CBIR -Content Based Image Retrieval ), datorit ăcomplexit ății
subiectului în ceea ce prive ște imaginile reale și dificultatea d e extragere cantitativ ăa trăsăturilor
de similitudine sau diferen țiere dintre imagini. Aceste tr ăsături pot include caracteristici de
culoare, textur ăsau formă, descriptori ce sunt ob ținuți global prin extragerea informa țiilor pe
baza mediei histogramelo r de culoare (pentru caracteristicile de culoare ), pe baza granularit ății,
contrastului și directivit ății imaginilor (pentru caracteristicile de textură)și pe baza tr ăsăturilor de
curbură, momente invariante, circularitatea și excentricitatea imaginilor (pentru caracteristicile
deformă).Cu toate acestea, extragerea tr ăsăturilor din imagini se face diferit în func ție de
detaliile particulare ale aplica țieișiperforman țele dorite.
În lucarea de fa țăsunt propus emai multe metode deja existente de extragere a
caracteristicilor pentru formarea vectorului de tr ăsăturiși clasificarea imaginilor pe baza
vectorului ob ținut.
Scopul principal al acestei lucr ări este testarea mai multor metode de extragere a
trăsăturilo r,nu neaparat ob ținerea unor performan țe superioare. Pentru a vedea eficien ța
metodelor de extragere s-a realizat clasificarea imaginilor pe baza vectorului de caracteristici
prin intermediul clasificatorului IBk din Weka (echivalentul KNN -k nearest neig hbor )și KNN
implementat în Matlab. Pentru realizarea acestor obiective m -am inspirat din mai multe referin țe,
dar cea mai semnificativ ăeste metodologia de extragere a trăsăturilor pentru formarea vectorului
de caracteristici din cadrul clasificatorului W ND-CHARM (Weighted Neighbor Distances using
a Compound Hierarchy of Algorithms Representing Morphology -distanța ponderat ădintre
vecini utilizând o ierarhie compus ăde algoritmi morfologici ). Pentru mai multe detalii a se
consulta [9].
Trăsăturile vect orului de caracteristici includ descompunerea polinomial ă(reprezentat ă
de polino amele Zernike), statisticile pixelilor (media, devia ția standard, oblicitatea, planitatea,
histograme multiscalare )șicaracteristicile de textur ă(contrast, granularitate și direcționalitate).
Aceste caracteristici au fost extrase din imaginile pe nivele de gri, precum și din imaginile
rezultate în urma transformatelor Wavelet (a imaginii pe nivele de gri și a transforma tei FFT –
fast Fourier transform a imaginii pe nivele de gri). O altătransformat ăutilizatăeste transformata
Radon a imaginii pe nivele de gri, care este folosit ăpentru extragerea informa ției spațiale.
Metodele aplicate asupra imaginilor pentru formarea vectorului de tr ăsături fac p artedin
metodologia descris ăîn [9] .Contribuția adusăla formarea vectorului de tr ăsături const ăîn

2selectarea din varietatea de metode de extragere doar a celor care oferăo performan țăde
clasificare mai ridicat ă. Pentru o aplicare eficient ăatransformatei Wavelet s-austabilit valorile
parametrilor (familia de wavelet și nivelul de descompunere wavelet ). Celelate metode utilizate,
precumși implement ările lor în Matlab pot fi desc ărcate gratuit și utilizate în scopuri științificeși
de cercetare de pe site -ul:http://www.openmicroscopy.org .
Vectorul de tr ăsături este utilizat apoi pentru clasificarea imaginilor de test într -un set de
clase de imagini predefint (clasa ma șini, pietoni, animale și garbage) cu ajutorul utilitarului
Weka. Deoarece apelarea din Matlab a utilitarului Weka este foarte complicat ăși datorită
necesității utilizării unui clasificator în interfa ța graficărealizată, s-a ales implementarea în
Matlab a unui algoritm de clasificare. Astfel, l uarea deciziei asupra clasei imaginii test s-a
realizat cualgoritmul KNN . Din punct de vedere al evaluatorului s-aales folosirea KNN
deoarece este un clasificator rapid, eficient și ușor de implementat. Pentru a nu permite
clasificatorului s ăînvețe inclusiv ordinea de preluare a imag inilor (deoarece clasific atorul prelua
pe rând cele patru clase ) s-arealizat permutarea imaginilor din vectorul de caracteristici.
Din punct de vedere aplicativ, lucrarea con ține o interfa țăgraficădezvoltatăcu ajutorul
toolbox -ului GUIDE (Graphical User Interface Design E nvironment ) din Matlab. Această
aplicațiepermite utilizatorului s ăselecteze diferite variante de formare a vectorului de tras ături,
precumși posibilitatea test ării clasificatorului KNN c u alte imagini decât cele din baza de date.
Vectorul de tr ăsături poate avea, în func ție de metodele alese, o dimensiune minim ăde 72
caracteristici și maximăde 318 caracteristici. Toate atributele sunt extrase pe baza imaginilor pe
nivele de gri, astfel informațiile de culoare nefiind utilizate.
2. Fundamentare teoretic ă
2.1.Introducere
Înrealizarea unei aplica ții de recunoa ștere a formelor și clasificare automat ăa imaginilor ,
dupăcum se poate observa în figura 1.1, în general se parcurg urmatoarele etape:
a)preprocesarea imaginii -etapăîn care se realizeaz ăîmbunătățirea calității imaginilor prin
aplicarea unor algoritmi DIP (digital image processing). [10]
Deoarece imaginile din baza de date, format ăpentru acest ălucrare, nu necesităalte
îmbunatățiri ale calit ății, în acest ăetapăs-arealizat doar conversia imaginilor color în imagini pe
nivele de gri. În multe situa ții pentru clasificarea imaginilor sunt extrase pe lâng ătrăsăturile de
texturăși de form ă,și cele de culoa re.S-a renunțatla aceste caracteristici deoarece nu se poate
realiza o diferen țiere a claselor pe baza culorii.
b)extragerea atributelor sau descriptorilor de imagine -reprezintăetapa cea mai important ă
deoarece influen țeazăîn mod direct performan țele de clasificare. [10]
Tipul trăsăturilor folosite în clasificare și descrise în aceast ălucrare se împart în trei
categorii: descompunere polinomial ă, statisticile pixelilor și textura. În descompunerea
polinomial ăeste generat un polinom ce aproximeaz ăimaginea în func ție de gradul de fidelitate,
iar coeficien ții acestui polinom sunt utiliza ți ca descriptori ai con ținutului imaginii. Tr ăsăturile
de textur ăse referăla variația în intensitate între pixelii imaginii pentru diferite direc țiiși
rezoluții.Statisticile pixelilor se bazeaz ăpe distribu ția pixelilor din imagine și includ histograme
și momente.
În aceastăetapă, pentru extragerea tr ăsăturilor, asupra imaginilor s-a aplicat transformat a
Wavelet (transformata Wavelet a imaginii pe nivele de gri și a transformatei FFT a imaginii pe
nivele de gri), iar din rezultatele ob ținute au fost extrase caracteristicile de statistic ăa
pixelilor("primele 4 momente", histograme lemultiscalare) și de textur ă(caracteristicile Tamura) .
Din imaginile originale (imaginile pe nivele de gri), f ărăa aplica asupra acestora nici o
transformat ă, sunt extrase caracteristicile de statistic ăa pixelilor și de textur ămenționate mai
sus, precum și cele de descompunere polinomial ă(polinoamele Zerni ke). Din vectorul de

3trăsături mai fac parte și rezultatele ob ținute în urma transformatei Radon a imaginii pe nivele de
gri.
c)evaluarea atributelor sau descriptorilor -esteo etapăîn care sunt evaluate datele din vectorul
de caracteristici șicare are ca rezultat în mod obi șnuit, o valoare numeric ăunidimensional ăsau
multidimensional ă(un vector), care relev ădistanța vectorului de tr ăsături fațăde granițele
regiunilor sau fa țăde "bornele de clasificare". [10]
Evaluarea atributelor s-a realizat cu ajutorul clasificatorului KNN, prin testarea
evaluatorului cu datele de înv ățare.
d) clasificarea imaginii -este etapa care îmbin ărezultatele m ăsurătorilor multiple anterioare, și
totodatăetapa final ă.
Prin cl asificare se stabile ște apartenen ța formei, obiectului sau imaginii -descrisăprin
vectorul de tr ăsături, la un set ulde clase de imagini predefinite .[10]
Clasificarea imaginilor de test , precum și stabilirea atributelor imaginilor care ne oferăcea mai
bunăperforman țăs-arealizat cu ajutorul algoritmului KNN.
Figura 1.1 Schema procesului de recunoa ștereși clasificare automat ăa imaginilor[1 0]
2.2Transforma taWavelet continu ăși discretă
2.2.1 Transforma ta W avelet continu ă
Transformata wavelet continu ă(CWT -continuous wavelet transform) este folosit ăla
împărțirea funcțiilor de timp continue în unde mai mici.
Ecuația transformatei wavelet continu ăeste următoarea:
XWT(τ,s)=ଵ
ඥ|ୱ|∫ݔ(ݐ)∗߰∗ቀ௧ିఛ
௦ቁݐ݀(1)
unde x(t)este semnalul ce trebuie analizat, ψ(t) este wavelet -ul mamăsau funcția de bază[11].
Toate func țiile folosite în transformare sunt derivate din func ția de bazăprin translatare (shiftare)
și scalare (dilatar e sau compresie). Parametrul de transla țieτse referăla locația funcției wavelet
în timpul parcurgerii semnalului, acesta corespunzând inf ormației de timp a transformatei .
Parametrul de scalare seste definit ca |1/frecven ță|și corespunde informa ției de frecvență.
Scalarea fie dilateaz ă(extinde) sau comprim ăsemnalul. În prelucr ările de imagini, de obicei, se
dorește compresia lor, pentru ca timpul necesar prelucr ării săfie cât mai redus.
Pe o scar ălargăde frecven țe joase semnalul este dilatat, fiind furnizate detaliile ascunse din
semnal, în timp ce pe o scar ăredusă(frecvențe înalte) semnalul este comprimat, furnizându -se
informația globalăreferitoare la semnal.
Transformata Wavelet realizeaz ăconvoluția semnalului și prelucrarea acestuia c u funcția de
bază.
2.2.2 Transformata Wavelet discret ă
Transformata W avelet discret ă(DWT -discrete wavelet transform) este o versiune
simplificat ăa transform ării wavelet continu ă, bazatăpe codarea în sub -bandă. Avantajul acestei
transformate constăîn simplitatea implement ării, reducerea timpului de execu țieși nivelul mai
scăzut de resurse necesare.
La transformata CWT, semnalele sunt analizate folosind un set de func ții de baza care

4realizeazăo simplăscalareși translație. În cazul transformatei DWT, o reprezentare în domeniul
timp a unui semnal digital este ob ținutăprin utilizarea tehnicilor de filtrare digital ă,semnalul
(imaginea) ce trebuie analizat fiind trecut prin filtre cu diferite frecven țe de tăiere la nivele
diferite.
Transformata DWT este realizat ăprin filtrări trece jos și filtrări trece sus succesive, ale unui
semnal discret în domeniul timp (figura 2.1).
Figura 2.1 Arborele cu primele trei nivele de des compunere DWT(arborele Mallat)[ 11]
În figura de mai sus, semnalul este notat cu x[ n], unde n este un num ăr întreg, filtrarea trece jos
este realizatăde blocul G 0, la ieșirea lui ob ținând aproximarea grosier ăa coeficien ților(notată
a[n]) ,iarfiltrarea trece sus este realizat ăde H 0,la iesire ob ținând informa ția detaliat ă(notată
d[n]) .
Filtrele care împart banda î n jumătate produc semnale ce ocup ădoar jumătate din banda
de frecven ță. Filtrarea și descompunerea vor continua pân ăcând se ajunge la nivelul dorit ,
numărul maxim d enivele de descompunere depinzând de lungimea semnalului (dimensiunea
imaginii).
Reconstruc ția semnalului original pe ba za coeficien țiilor transformatei DWT este
procesul invers descompunerii (figura 2.2).
Figura 2.2 Arborele Mallat cu pr imele tre i nivele de reconstruc ție alesemnalului original[11 ]
În Figura 2.2, d[n] reprezint ăcoeficienții de detaliu ai semnalului, a[n] aproxim ările
grosiere, iar blocurile H 1și G 1reprezintăfiltrele trece sus, respectiv filtrele trece jos de sintetizare
a semnalului original.
Procesul de reconstruc ție al semnalului original continu ăpânăcând este atins num ărul de
nivele de descompunere al esemnalului.

5Condițiile ce trebuie îndeplinite pentru a avea o reconstruc ție perfectăsunt:
G0(-z)*G 1(z)+H 0(-z)*H 1(z)=0 (2)
G0(z)*G 1(z)+H 0(z)*H 1(z)=2ݖିௗ(3)
unde G 0(z)și G 1(z) sunt filtrele trece jos de analiz ă, respec tiv de sintez ă, iar H 1(z)și H 0(z) sunt
filtre trece sus de analiz ă, respectiv de sintez ă[11].
Prima condi ție impune ca reconstruc ția săse facăfărăalias, iar cea de -a doua condi ție
impune ca distorsiunile de amplitudine sa aib ăvaloarea egalăcu1.
2.2.3 Familii de wavelet -uri:
Existăun anumit num ăr de func ții de bazăcare pot fi folosite ca f uncții mamăpentru
transformata wavelet , dar p entru utilizarea eficient ăaacestora, trebuie luate în considerare
detaliile particulare ale aplica ției care f olosește wavelet -uri.
Principalele familii de wavelet -uri:
Figura 2.3 Familii de wavelet (a) Haar (b) Daubechies4 (c) Coiflet1 (d) Symlet2 (e) Meyer
(f)Morlet (g) Mexican hat [11]
Figura 2.3 ilustreaz ăcele mai utilizate func ții wavelet. Wavelet -ul Haar este unul din cele
mai vechi si simple wavelet -uri, de aceea orice discu ție despre wavelet -uri începe cu ac esta.
Pentru mai multe detalii legate de principalele tipuri d e wavelet -uriaseconsulta [1 2].
2.2.4 Aplica ții ale wavelet -urilor
Existăogamălargăde aplicații pentru transformarea wavelet, e lefiind utilizate î n diferite
domenii, de la procesarea semnalelor pân ăla domeniul biometriei.
Wavelet -urile au un rol important în compresia datelor, în vederea îmbunat ățirii
performan țelor de prelucrare a imaginilor (de compresie a imaginilor). FBI utilizeaz ăwavelet –
urile ca și compresie stand ard a amprentelor, pentru stocarea lor în baza de date. Dintre
principalele tipuri de transformate aplicate imaginilor în vederea compresiei lor (ex. transformata
cosinus discret ă, transformata Fourier discret ă2D etc.), transformata wavelet asigur ăasigurăo
foarte bun ăratăde compresie.
Transformata Wavelet este aplicat ăîn aceastălucrare pe imaginile pe nivele de gri ,
precumși pe imaginea ob ținutăîn urma aplic ării transformatei FFT asupra imaginii pe nivele de
gri. Parametrii transformatei, nivelul dedescompunere și familia wavelet, au fost stabili ți
parcurgând urm ătoarele etape:

6a) extragerea trăsăturilor imaginilor din baza de date cumetoda I(vezi figura 3.5 pentru mai
multe detalii) pentru diferite nivele de descompunere wavelet (36)și pentru diferite familii de
wavelet -uri.
b) clasificarea imaginilor pe baza vectorului de tr ăsături obținut prin metoda de mai sus pentru a
observa care nive l, respectiv familie wavelet oferăo performan țăde clasificare cât mai bun ă.
Wavelet -urile sunt folosite atât în metoda I de extragere a tr ăsăturilor (reprezentat ăde metoda
descrisămai sus), precum și în metoda II de extragere a trăsăturilor (vezi figura 3.5 )
2.3 Transformata FFT
FFT este abrevierea din limba englez ăpentru fast Fourier transform (transformata
Fourier rapid ă), fiind un algoritm eficient de calcul al transformatei DFT -discrete Fourier
transform (transformata Fourier discret ă), precum și a inversei sale IDFT (inverse discret Fourier
Transform).
2.3.1 Definire transformat ăFFT
FFT produce exact acelea și rezultate ca și DFT, singura diferen țăfiind reprezentat ăde
rapiditatea transformat eiFFT.
Fieݔ଴,ݔଵ,…,ݔேିଵ, numere complexe. Transf ormata DFT este definit ăde următoarea
formulă:
ܺ(݇+1)=∑ݔ(݊+1)ܹே௞௡ ேିଵ
௡ୀ଴ ,k=0,1,… ,N -1(4),
iar inversa ei IDFT este:
ܺ(݊+1)=ଵ
ே∑ܺ(݇+1)ܹேି௞௡ ேିଵ
௞ୀ଴ ,n=0,1, … ,N -1(5),
unde jeste unitatea imaginar ă,ܹே=݁ି௝మഏ
೙șiN=lungime (x)[13].
Evaluând ecua ția (4), observ ăm căaceasta necesi tăܰଶoperații: sunt Nieșiriܺ௞și fiecare ie șire
necesităo sumădeNtermeni. Transformata FFT reprezint ăorice metod ăde obtinere a aceluia și
rezultat ca și DFT în N log N operații. Pentru mai multe informa ții legate de transformata FFT și
tipurile de algoritmi FFT a seconsulta [13],[14] sau [15 ].
În lucrarea de fa țătransformata FFT este utilizat ăîn cadrul metodei II de extragere a
trăsăturilor, fiind aplicat ăasupra imaginii pe nivele de gri, iar apoi asupra acesteia se va aplica
trans formata Wavelet (vezi figura 3.5 pentru mai multe detalii).
2.3.2 Aplica ții ale transformatei FFT
Aplicațiile transformatei FFT sunt urmatoarele:
-aproximări pe baza polinoamelor trigonometrice, compresia datelor (ex. MP3)
-analiza spectral ăasemnalelor
-filtrare
-răspunsul în fre cvențăa unui sistem
-ecuațiile parțial diferen țiale
-convoluția în domeniul frecven ță:-intercorelare
-multuplicarea de numere întregi mari
-multiplicarea simbolic ăa polinoamelor
2.4Transformata Radon
Transformata Radon și transformata Hough sunt strâns legate una de cealalt ă, Radon fiind
o formăparticular ăa transformatei Hough.

72.4.1 Definirea transformatei Radon
O reprezentare util ăa unei drepte este ecua ția sa în coordonate polare:
ߠݏ݋ܿݔ+ߠ݊݅ݏݕ=ߩ(6)
unde undeߩreprezintădistanța dintre dreapt ăși origine, iar ߠeste unghiul dintre axa xpozitivă
și dreaptaߩ[16].
Transformata Radon se define ște ca integral ăde-a lungul unei drepte inclinate cu unghiul ߠfață
de axa xpozitivăși situatăla distanțaߩfațăde origine [17 ]. Se noteaz ăîn general cu g(ߩ,ߠ.)
g(ߩ,ߠ=)∬݂(ݔ,ݕ)ߜ(ߠݏ݋ܿݔ+ߠ݊݅ݏݕ−ߩ)ݕ݀ݔ݀ାஶ
ିஶ(7)
undeߜreprezintăfuncția Diracși este ilustrat ăîn [16] astfel :
ߜ(ݔ)=ቄ+∞,ݔ=0
0,ݔ≠0(8)
Figura 2.4 Cele douăforme ale transformatei Radon -ecuația (7)și (9) [17][18 ]
Ecuațiailustratăîn [17] :
g(ߩ,ߠ=)∫݂(ݏߠݏ݋ܿ−ݑߠ݊݅ݏ,ݏߠ݊݅ݏ+ݑߠݏ݋ܿ)ݑ݀ାஶ
ିஶ(9),
este echivalent ăcu ecuația (2), fiind ob ținutăprin rotirea axelor de coordonate cu unghiul ߠ,
unde:
ݏ=ݔߠݏ݋ܿ+ݕߠ݊݅ݏݔ=ݏߠݏ݋ܿ−ݑ݅ݏߠ݊
ݑ=−ݔߠ݊݅ݏ+ݕߠݏ݋ܿݕ=ݔߠ݊݅ݏ+ݑߠݏ݋ܿ( 10)
Transformata Radon reprezint ăo imagine ca un set de proiec ții de -a lungul diferitor
direcții, realizâ nd legătura dintre spa țiul de coordonate (x,y)și spațiul proiec țiilor(ߩ,ߠ.)
Transformata Radon calculeaz ăproiecția intensit ății pixelului pe o linie radial ădin
centrul imaginii la un unghi specificat. Aceasta este utilizat ă, de obicei, pentru extrac ția
informației spațiale unde pixelii sunt corela ți la un unghi specific.
În metoda de extragere caracteristici propus ă, trăsăturile Radon sunt calculate pentru
unghiurile 0଴,45଴,90଴și135଴. Apoi, fiecare set d e valori rezultat este transformat într-o
histogram ăcu trei benzi, rezultând astfel un vector cu 4×3= 12 valori. Transformata Radon este
calculatăpentru imaginea pe nivele de gri și împreun ăcu "histogramele multiscalare", "primele 4
monemte " și caracter isticile Tamura formeaz ămetoda III de formare a vectorul ui de trăsături
(vezi figura 3.5 pentru mai multe detalii).
2.4.2 Aplicații ale transformatei Radon
Transformata are aplica ții în mai multe domenii cum ar fi:
-domeniul medical, în cazul tomografiei compiuterizate
-seismologie, în cazul reflexiei seismice
-ultramicroscopia ansamblurilor macromoleculare, cum sunt proteinele și virușii
-în rezolvarea ecua țiilor hiperbolice par țial diferen țiale

8-detecția de form ă
2.5 Caracteristicile Tamura
Dintre proprieta țile Tamura folosite în acest proiect se numar ă:
-granularitatea
-contrastul
-direcționalitatea .
Aceste tr ăsături au fost selectate de Tamura, MorișiYamawaki pe baza experimentelor
psihologice.
2.5.1 Granularitatea se referăla distanța dintre varia țiile spațiale notabile a nivelelor de
gri. Procedura compiuta ționalăpropusă, consider ădiferențele dintre valoarea medie a
semnalelor corespunz ătoare ferestrelor de diferite dimensiuni care nu se suprapun, urm ărind
pașii de ma i jos :
1. Pentru fiecare pixel (x,y), calculeazășase valori medii pentru ferestrele de dimensiunea 2k× 2k,
k=0,1,…,5 în jurul fiecarui pixel.
2. Pentru fiecare pixel, calculeaz ădiferența absolutăEk(x,y)dintre perechile valorilor medie ce
nu se suprapun în direc țiile:orizontalăși verticală.
3. Pentru fiecare pixel, caut ăvaloarea lui kce maximizeaz ădiferențaEk(x,y)în orice direc țieși
seteazădimensiunea cea mai buna Sbest(x,y)=2k.
4. Calculeaz ătrăsătura de granu laritate Fcrsprin medierea Sbest(x,y)asupra î ntregii imagini.
2.5.2 Contrastul relevămodul în care nivelele de gri q, q=0,1,…, qmax,variazăîntr-o
imagine gși a căror distribu ție este direc ționatăspre albși negru. Pentru definirea contrastului se
folosesc momentele centrale de ordinul al doilea și cele normalizate de ordinul al patrulea,
reprezentate de varian țastandard -σ,respectiv indicele de aplatizare -α4:
ܨ௖௢௡=ߪߙସ௡ൗ (11),
undeߙସ=ఓర
ఙర(12);ߪଶ=∑ (ݍ−݉)ଶPrቀ௤
௚ቁ௤೘ೌೣ
௤ୀ଴ (13);ߤସ=∑ (ݍ−݉)ସ ௤೘ೌೣ
௤ୀ଴ Pr(ݍ/݃)(14)și
meste media nivelelor de gri.[19 ]
2.5.3 Direcționalitatea
Gradul de direc ționalitate este m ăsurat folosind distribu ția spectral ăa much iilorlocale
orientate fațădeunghiur eledirecționale ale acestora. Soloditatea muchiei e(x,y)și unghiul
direcțional a(x,y) sunt calculate folosind detectorul de muchii Sobel, aproximând "pixel -wise" x
și derivata ya imaginii:
݁(ݔ,ݕ)=0.5(|∆௫(ݔ,ݕ)|+ห∆௬(ݔ,ݕ)ห)(15)
ܽ(ݔ,ݕ)=݊ܽݐିଵ(∆௬(ݔ,ݕ)/∆௫(ݔ,ݕ))(16)
În ecuațiile de mai sus Δx(x,y)șiΔy(x,y) sunt diferen țele pe vertical ăși orizontal ăa nivelelor de
gri dintre pixelii vecini [19]. Diferențele sunt m ăsurate utilizând urm ătorii operatori fereastra de
dimensiune 3×3 [19 ]:
−101 111
−101 000
−101−1−1−1
O histogram ăHdir(a)a valorilor direc ției cuantizate aeste construit ăprin num ărarea
numărului de pixeli muchie care un anumit unghiul direc ționalși soliditatea muchiei mai mare
decât un prag predefinit. Histograma este relativ uniform ăpentru imaginile f ărăo orientare

9accentuat ăși evidențiazăvârfurile pe ntru imaginile cu un grad al direc ționalității ridicat. Gradul
direcționalității este legat de ascu țimea vârfurilor:
ܨௗ௜௥=1−ݎ݊௣௘௔௞௦∑∑൫ܽ−ܽ௣൯ଶܪௗ௜௥(ܽ) ௔∈௪೛௡೛೐ೌೖೞ
௣ୀଵ(17),
În ecuația (17)݊௣௘௔௞௦este num ărul de vârfuri, apeste poziția vârfului p,wpeste gama de
unghiuri atribuite vârfului p, rindicăun factor de normalizare legat de nivelele de cuantizare ale
unghiului a,șiaeste unghiul direc țional cuantizat (în modulo 180o).[19]
Aceste prop rietăți texturale Tamura sunt calculate pe imaginea pe nivele de gri astfel:
-3 valori: contrastul, direc ționalitatea și granularitatea
-o histogram ăa granularit ății cu 3 benzi
Astfel, rezultăastfel un vector de caracteristici cu 6 valori.
Trăsăturile Tamura sunt utilizate în acestălucrare în cadrul metodelor I, II și III de
extragere a tr ăsăturilor (vezi Figura 3.5 ).
2.6 Polinoamele Zernike
Polinomele Zernike au fost dezvoltate la începutul secolului XX de c ătre fizicianul
german Frits Zernike (faimos pentru inven ția microscopului faz ă-contrast, pentru care a câstigat
premiul Nobel pentru Fizic ăîn 1953).
Figura 2.5 Valorile Zernike în unitatea de disc [20]
2.6.1 Definirea polinoamelor Zernike
Aceste caracterisitici Zernike sunt un set de polinoa me definite pe unitatea de disc
(figura 2.5), ce pot fi reprezentate atât în sistemul cartezian (x,y), câtși în coordonate polare
(r,).Cea mai utilizat ăformă,estedescrisăîn [21] ca fiind cea polară:
ܼ௝,௜௠௣௔௥=√݊+1ܴ௡௠(ݎ)√2cos(݉q),݉≠0(18)
ܼ௝,௣௔௥=√݊+1ܴ௡௠(ݎ)√2sin(݉q),݉≠0(19)
ܼ௝=√݊+1ܴ௡଴(ݎ),݉=0(20)
unde
ܴ௡௠(ݎ)=∑(ିଵ)ೞ(௡ି௦)!
௦!ቀ೙శ೘
మି௦ቁ!ቀ೙ష೘
మି௦ቁ!(௡ି௠)/ଶ
௦ୀ଴ݎ௡ିଶ௦(21)
Valorile lui mșinsunt întotdeauna întregi și satisfac condi țilem≤nșin-m=impar. Indexul j
reprezintămodul de ordonare a lnumerelor, fiind o func țiej(m,n).
Condiția de ortogonalitate pentru polinoamele Zernike ilustratăîn [21] este:
∫ܹ(ݎ)ܼ௝ܼ௞݀ଶݎ=ߨߜ௝௞(22),
unde :

10ܹ(ݎ)=ቊଵ
గ,ݑݎݐ݊݁݌ݎ≤1
0,ݑݎݐ݊݁݌ݎ>1(23)
2.6.2 Aplicații ale polinoamelor Zernike
Baza acestor func ții este definit ăpe o suprafa țăcirculară, caracteristic planelor pupilelor
în procesarea clasic ăde imagini, pentru lungimi de und ăopticeși inflaroșii, printr -un sistem de
lentileși oglinzi cu un diametru finit.
Descompunera polinomial ăZernike este utilizat ăîn următoarele domenii:
-prelucrare optic ă, pentru a caracteriza erorile observate în analizele interferometrice, cu scopul
de a obține performan ța dorită.
-optometrie și oftalmologie, la descrierea devie rii corneei sau lentilelor pentru o form ăideală
sferică, care au ca rezultat erori de refrac ție.
-optica adaptiv ă, la înlăturarea distorsiunilor atmosferice. Aplica țiile în acest domeniu sunt
astronomia IR (inflaroșu)sau vizual ăși pentru redarea imagi nilor din satelit. De exemplu, unul
dintre factorii Zernike (pentru m=0șin=2) este denumit "de -focus". Prin cuplarea iesirii acestui
factor la un sistem de control, poate fi implementat ăo focalizare automat ă.[21]
Coeficien ții Zernike sunt valori complexe, în descrierea imaginilor folosindu -se valoarea
absolutăa acestora. Polinoamele Zernike sunt aplicate asupra imaginii pe nivele de gri,
constituind metoda IV de extragere a tr ăsăturilor (pentru m ai multe detalii vezi figura 3.5 ).
2.7 Histograme multiscalare
Pentru acest set de tr ăsături sunt calculate histograme cu un num ăr variabil de benzi
(3,5,7și 9), dup ămodelul propus în [9] . Fiecare domeniu de frecven țe corespunde unei
histograme diferite, și astfel num ărul variabil de benzi permite m ăsurarea con ținutului într -un
domeniu de frecven țe foarte larg. Maximul histogramelor este folosit pentru normalizarea
vectorului de caracteristici rezultat, care are un num ăr de 1×24 elemente. Histogramele
multiscalare sunt aplicate asupra transformatei W avelet, transformatei FFT și asupra imaginii
originale (imagine pe nivele de gri) contribuind astfel cu un num ăr total de 3×24 elemente la
formarea vectorului de tr ăsături al imaginilor.
Histogramele multiscalare sunt utilizate în cadrul metodelor I, II și III de formare a
vectorului de tr ăsături.(pentru mai multe detalii vezi figura 3.5)
2.8 Filtre orientate în patru direcții pentru ob ținerea "primelor 4 momente"
Pentru acest set de tr ăsături, imaginea este subdivizat ăîntr-un set de "dungi" în patr u
orientări diferite ( 0଴,90଴,+45଴și−45଴). "Primele 4 momente" (media, devia țiastandard,
oblicitatea și planita tea ("kurtosis") ) sunt calculate pentru fiecare "dung ă"și fiecare set de
"dungi" este transformat într -o histogram ăcu 3 benzi. Având astfe l patru momente în patru
direcții cu histograme cu trei benzi, r ezultăun vector de tr ăsături care con ține4x4x3= 48
elemente. [9]
"Primele 4 momente" sunt utilizate, lafel ca și histogramele multiscalare în cadrul
metodelor I, II și III de extragere a trăsăturilor din imaginea original ă.
2.9Algoritmul KNN
KNN este abrevierea din limba englez ăpentru K -Nearest Neighbor (cei mai apropia ți k
vecini) , fiind un algoritm de înva țare supervizat utilizat în special în problemele de clasificare.
Scopul acestui algoritm este acela de a clasifica un nou obiect pe baza atributelor sale în fincție
desetulde date de antrenare cunoscut.

11Prin aceastătehnică, folosităîn special pentru clasificarea datelor î n mai multe posibile
clase , un obiect nou este clasificat pe baza majorit ății voturilor vecinilor s ăi, fiindu -i atribuită
clasa cea mai frecvent întâlnităprintre cei “k” cei mai apropia ți vecini.
Acei “k” cei mai apropia ți vecini se aleg pe baza distan ței minime dintre obiect și toate
celelalte obiecte din setul de date de antrenare (setul de date cunoscut).
Fiecare obiect este reprezentat î n setul de date printr -un vector de tr ăsături, care în cazul
imaginilor poate s ăconținăcaracteristici de formă, de textur ăsau de culoare.
Existămai multe tipuri de distan țe folosite pentru calculul distan ței minime dintre “noul
vector”și “vectorii” din setul de date:
-distanța euclidian ă
-distanțaeuclidianăstandardizat ă
-distanța city block (Manhattan)
-distanța cosinus
-distanța coeficientului de corela ție (distanța Pearson r)
-distanța hamming
-distanța Maholonobis
-distanța Minkowski
-etc
Cea mai frecvent ădistanțăutilizatăîn cadrul acestui algoritm este distan ța euclidian ă.
Fiind datăo matrice X de dimensiune [m xn], care con ține "m" vectori linie (vectorii de tras ături
de dimensiune [1 xn])ݔଵ,ݔଶ,…,ݔ௠, undeݔ௞=(ݔଵ௞,ݔଶ௞,…,ݔ௡௞), pute m defini metricile (distan țele)
dintre douăobiecte (doi vectori) oarecare ݔ௥șiݔ௦(r,s=1m)dupăcum sunt ilustrate și în [22],
astfel:
-distanța euclidian ă:
݀௥௦=ඥ(ݔ௥−ݔ௦)(ݔ௥−ݔ௦)ᇱ=ඥ∑ (ݔ௜௥−ݔ௜௦)ଶ ௡
௜ୀଵ (24)
-distanța euclidian ăstandardizat ă
ݏ݀௥௦=ඥ(ݔ௥−ݔ௦)ܦିଵ(ݔ௥−ݔ௦)ᇱ, unde Deste matricea diagonal ă, ce are ca elemente
dispersia vectorului ܺ௜=(ݔ௜ଵ,…,ݔ௜௠), notată݀௜ଶ,rezultând:
ݏ݀௥௦=ඨ∑ቀ(௫೔ೝି௫೔ೞ)
ௗ೔ቁଶ

௜ୀଵ (25)
-distanța city block (Manhattan)
ܿ݀௥௦=∑ |ݔ௜௥−ݔ௜௦|௡
௜ୀଵ (26)
-distanța cosinus
ݏ݋ܿ݀௥௦=ቆ1−௫ೝ௫ೞᇲ
(௫ೝ௫ೝᇲ)భ
మ(௫ೞ௫ೞᇲ)భ
మቇ (27)
-distanța coeficientului de corela ție (distanța Pearson r)
ݎ௥௦=1−(௫ೝି௫ೝതതതത)(௫ೞି௫ೞതതത)ᇲ
ඥ(௫ೝି௫ೝതതതത)(௫ೝି௫ೝതതതത)ᇲඥ(௫ೞି௫ೞതതത)(௫ೞି௫ೞതതത)ᇲ, undeݔ௥തതത=∑ݔ௜௥௡
௜ୀଵ (28)
-etc,pentru mai multe tipuri de metrici a se consulta [22]
Pentru a întelege și mai bine funcționarea algoritmul KNN pe un exemplu numeric a se
consulta consulta [24 ].
2.9.1 Avantajele algoritmului KNN
Unul dintre avantajele sale este u șurința implement ării, fiind unul dintre algo ritmii de
clasificare cei mai u șor de înteles.

12O altăcalitate a acestei tehnici este eficacitatea sa, în cazul în care, setul de date de
antrenare este afectat de zgomot (în speci al în cazul în care se foloseste ca metric ăinversul
pătratului distan ței ponderate ). Obținerea distan ței ponderate se fac e prin ierarhizarea fiec ărei
trăsături în func ție de scopul propus. Astfel distan ța euclidian ăponderatăva avea urmatoarea
expresie:
ݓ݀௥௦=ඥ∑ݓ௜(ݔ௜௥−ݔ௜௦)ଶ ௡
௜ୀଵ (29),
unde∑ݓ௜௡
௜ୀଵ=1, iarݓ௜este ponderea atributului (caracteristicii) i[23] .
A nu se confunda ponderarea atributelor cu ponderarea distan țelor.
O metodăfoarte întâlnit ăde ierarhizare a distan țelor, este aceea de a -i da fiecarui vecin o
pondere de 1/ d, unde deste distan ța pâna la vecin. A stfel vecini mai apropia ți vor avea o
contribuție mai mare la clasificarea unui obiect. Studiile au aratat c ăponderarea distan țelor nu
îmbunătățește performan țele algoritmului KNN.
2.9.2 Dezavantajele algoritmului KNN
La aplicarea algoritmului KNN î n practicăne lovim de următoarele probleme:
a)"Ce metric ăutilizăm pentru performan țe cât mai bune?"
b)"Care este valoarea optim ăpentru k?"
c)"Trebuie s ăfolosim toate atributele sau numai anumite atribute ale obiectelor?"
Toate aceste probleme au ca efect cresterea timpului de clasificare.
Timpul de clasificare depinde în special de num ărul de obiecte din setul de date. Pe ntru
seturile de date cu un num ărfoarte mare de obiecte este necesar ăo reducere a num ărului de
atribute pentru fiecare obiect în etapa de preclasificare, prin alegerea unor puncte cheie care să
diferențieze între ele cât mai bine posibil instan țele setului de date.
koptim se ob țineprin testarea algoritmului de mai multe ori, modificând num ărul de
vecini.
Costul de calcul este destul de mare, deoarece trebuie s ăcalculăm distanța dintre o noua
instanțași fiecare instan țădin setul de antrenare. Acest cost poate fi redus prin utiliz area metodei
"K-D tree ".[25 ]
Pentru a vedea eficacitatea metodelor de extragere a caracteristicilor, în aceast ălucrare s-
a folosit clasificatorul KNN . Am ales acest algoritm datorit ăsimplității lui, a performan țelor
bune de clasificare, atât în ceea ce privește acurate țea câtși a timpului de clasificare.
2.10 Fișiere MEX (MEX -files)
MEX este abrevierea din limba englez ăpentru MATLAB Executable (executabile
Matlab). Fi șierele MEX sunt subrutine dinamice realizate în mediile de programare C, C++ sau
Fortran, coduri surs ăcare compilate pot fi rulate din Matlab în acela și mod cum sunt rulate și
fișierele M (M -files) sau orice alt ăfuncție care este deja implementat ăîn Matlab. Func țiile
externe de interfa țare realizeaz ătransferul de date între MEX -filesși Matlab, oferind totodat ăși
posibilitatea de a chema func ții Matlab din programele C, C++ sau Fortran.
Principalele motive de a creea în loc de un M -file un MEX -file sunt urm ătoarele:
-abilitatea de a apela o gam ălargăde rutine C, C++ sau Fo rtran deja existente direct din Matlab
fărăa fi nevoi ți săle rescriem ca un M -files
-viteza de execu ție; putem rescrie programele care folosesc de exemplu bucle FOR ca și MEX –
files pentru eficien ță. Pentru mai multe detalii legate de realizare a MEX -filesa se consulta [26].
În aceas tălucrare MEX -files sunt folosite pentru calculul polinoamelor Zernike ale unei
imagini, precum și pentru implementarea clasificatorului KNN. Aceste MEX -files sunt realizate
de dezvoltatorii clasificatorului WND -CHARM, respectiv de Roger Jang și pot fi desc ărcate
gratuit de pe site -urile:
http://www.openmicroscopy.org ,respectiv http://mirlab.org/jang/matlab/toolbox/dcpr/ .

133. Implementarea solu ției adoptate
Scopul lucr ării de fațăeste acela de a testa diferite caracteristici care s ăcodeze cel mai
bine imaginile din baza de date și nu neaparat clasificarea acestora. Totu și, pentru a verifica
eficiența metodelor de extragere a tr ăsăturilor s-afolosit clasifi catorul KNN.
În general, un sistem de recunoa ștere al obiectelor trebuie s ă:
1-extragăatributele care grupezăimaginile într -o anumităclasăși diferențiazăimaginile din
clase diferite
2-săclasifice aceste atribute
3-săelimine alarmele false -de aceea avem clasa garbage
4-în cazul detec ției obstacolelor săidentifice clasa imag inii pe baza acestor atribute
5-săurmăreascăobiectele de -a lungul scenei rutiere pân ăîn momentul în care se pierd în afara
eiși nu mai reprezint ănici un pericol (modul de "tracking" (urm ărire)) .
În ace astălucrare s-apresupus c ăobiectele su nt deja segmentate (detectate), baza de date
fiind format ădin imagini care încadreaz ădoar obiectele șinudinscene întregi de mai multe
obiecte . Astfel, în aceast ălucrare este tratat numai modul de extragere al atributelor pentru
clasificare, precum și clasificar ea obiectelor .
La început s -aîncercat extragerea caracteristicilor din imagini numai pe baza
transformatei Wavelet. Imaginile din baza de date au diferite dime nsiuni (unele ilustreaz ăobiecte
mai apropiate având implicit dimensiuni mai mari -maxim 434×768 pixeli, altele obiecte mai
depărtate, având dimensiuni mai mici -minim 89×69 pixeli) , iar pentru clasificare este necesar
obținerea unui num ăr fix de caracteri stici pentru fiecare imagine. Din aceast ăcauză, înainte de a
aplica transformata Wavelet asupra imaginilor este necesar ăredimensionarea lor l a ace leași
valori .Rezultatele ob ținute în urma clasific ării KNN a imaginilor nu au fost satisf ăcătoare. Din
acest motiv s-a renunțat la redimensionare șis-a încercat găsirea unor metode de extragere a
trăsăturilorcare prin aplicarea lor asupra imaginilor s ăreturneze un num ăr fix de coeficien ți
indiferent de dimensiunea imaginii.
Sistemele de clasificare folosesc diferite caracteristici pentru d efinirea obiectelor din
imagini. Aceste caracteristici reprezintășablonul (pattern -ul) obiectului, iar sabloanele obiecte lor
care aparținmai multor clase vor fi esen țiale pentru procesul de inv ățareși testare al sistemului.
Pentru ob ținerea caracteristicilor s-aufolosit o serie de transform ări, combina ții de transform ări
și de metode de extragere :
-transformata Wavelet
-transformata FFT
-transformata Radon
-caracteristicile Tamura
-histogramele multiscalare
-filtre orientate în patru direc ții pentru ob ținerea "primelor 4 momente"
-polinoamele Zernike .
În pasul de clasificare , algoritmul de evaluare se bazeaz ăpe calculul de distan țe între
vectori ide caracteristici corespunz ători obiectelor. Pentru a dete ctași a recunoa ște
caracteristicile altor obiecte noi, sistemul trebuie înv ățat apriori cu aceste șabloane prin
intermediul caracteristicilor extrase. Sistemul odat ăînvățat, poate fi folosit doar pentru testare,
iar dacăse dorește adăugarea de noi insta nțe în setul de antrenare, se va mai trece înc ăo datăprin
etapa de înv ățare. Astfel, au fost studiat emetodele de extragere enumerate mai sus pentru
formarea setului de antrenare și testare. Acestea sunt utilizate declasificator (KNN) pentru a se
realiz a recunoa șterea automat ăobiecte lor.
În lucrare de fa țăs-a utilizat algoritmul de clasificare KNN, datorit ăsimplității
implement ăriiși al performa țelorbune de clasificare.

143.1 Baza de imagini
Baza de imagini este constru itădin 800 de imagini color, împ ărțite în patru clase dup ă
cum urmeaz ă:
-200 de imagini cu ma șini
-200 de imagini cu pietoni
-200 de imagini cu animale (câini, pisici, vaci, oi, cai )
-200 de imagini alc ătuind clasa "garbage" .
Baza de date a fost preluatăde pe internet din diferite baze de imagini disponibile gratuit
pe site -ul http://pascallin.ecs.soton.ac.uk/challenges/VOC/databases.html , deoarece nu a mai fost
creatăpânăacum o astfel de baz ăde imagini. Dup ăcum se poate observa în figura 3 .1 imaginile
au fost selectate manual șiau fost extrase doar obiectele de interes din acestea .Apoiimaginile au
fost transformate în imagini pe nivele de gri.
În figura de mai jos sunt ilustrate diferite imagini din fiecare clas ă:
Figura 3.1 Imagini din baza de date
Dupăce caracteristicile au fost extrase din imagini, ele au fost introduse î n clasificator
pentru a reali za clasificarea imaginilor î ncele patru clasele. Dupăcum se poate observa în figura
3.1,imaginile care alc ătuiesc clasa garbage au fost ob ținute din fundalul imaginilor celor lalte
clase. Aceast ăclasăeste utilăla detectarea alarmelor false, când imaginea nuface parte din nici
una din clasele ma șini, pietoni sau animale .
În general pentru crearea unei baze de imagini care săfie cât mai bun ă, sunt respectate
următoarele principii :

15-toate imaginile s ăfie realizate cu acelea șiprocedee (s ăfie realizate cu acela și aparat de
fotografiat sau camer ăde filmat)
-parametrii mijloacelor de captare a imaginilor s ăfie identici pe ntru toate imaginile
-săaibe un num ăr de imagini care s ăpermităobținerea unor rezultate de clasificare
satisfăcătoare .
Deoarece nu a mai fost creat ăo bazăde imagini ca și cea utilizat ăîn lucrarea de fa țăși
realizarea unei astfel de baze deimagini necesităfoarte mult timp , au fost folosite imagini care
fac obiectul altor baze de da te. Bine în țeles căbaza de imagini formată, nueste la fel de bun ăca
cea care respect ăprincipiile enumerate mai sus .
3.2 Metoda de extragere a caracteristicilor
Dupăcrearea bazei de imagini ,s-arealizat extragerea caracteristicilor din imagini prin
intermediul diferitor transformate de imagini (transformata Wavelet, transformata FFT,
transformata Radon) și alte moduri de extragere ("primele 4momente", histograme multiscalare,
caracteristicile Tamura -granularitatea, contrastul și direcționalitatea, și polinomurile Zernike).
Dupăcum se poate observa în figura 3.2, a ceste transformate și celelalte procedee de
extragere acaracteristici lorenumerate anterior, sun t distribuite înpatru metode de extragere a
caracteristicilor ,astfel :
Figura 3.2 Schema bloc a metodelor de extra gere a trăsăturilor

16Metodele de extragere a tr ăsăturilor, dup ăcum se poate vedea în figura 3.2, au fost
denumite metoda I, metoda II, metoda III și metoda IV pentru ca referirea la acestea s ăse
realizeze mult mai u șor.
Privind figura 3.2 se poate observa c ămetoda I șimetoda II diferăcași structurănumai
prin prizma imaginilor pe care sunt aplicate ( metoda I seaplicăpe imaginea ob ținutăîn urma
transformatei Wavelet a imaginii pe nivele de gri, iar metoda II pe cea ob ținutăîn urma
transformatei Wavelet a transformatei FFT). Num ărul de trăsături obținute prin aplicarea acestor
douămetode est e acelașiindiferent de imaginea pe care sunt aplicate (imagine pe nivele de gri,
cea rezultat ăîn urma transformatei W avelet sau cea rezultatăîn urma transformatei W avelet a
transformatei FFT) și indiferent de dimensiunea acesteia , doarece cele trei blocuri "prime le 4
momente", histograme multiscalare și caracteristicile Tamura contribuie cu un num ăr fix la
formarea vectorului de caracteristici (48, 24, respectiv 6).
Astfel, asupra transformatei W avelet a imagini i, câtși asupra transformatei W avelet a
trasnformat ei FFT, se vor aplica urm ătoarele func ții de compresie a num ărului de coefien ți:
a) Histogramele multiscalare -funcție care transform ăimaginea de intrare în patru tipuri de
histograme, cu 3, 5, 7 și 9 benzi, rezultând astfel 24 de valori. Aceste valori s unt normalizate cu
maximul lor.
b) "Primele 4 momente" -funcție care returneaz ăun număr de 48 de coeficien ți, prin parcurgerea
imaginii:
-pe diagonal ă(atât din strânga jos pâna în dreapta sus, cât și din dreapta jos pân ăîn stânga sus)
cu un pas care depinde de valoarea rotujit ăa împărțirii dimensiunii pe verical ăa imaginii la zece
(round(dim_verticala/10) ). La fiecare pas se calculeaz ăvaloare amediei, deviației standard,
oblicitățiiși planitățiipixelilor parcu și. Coloanele matrice i astfel ob ținută(care are stocate pe
fiecare linie cele patru valori men ționate) sunt transformate în histograme cu 3 benzi ,rezultând
un număr de4x3= 12atribute pentru fiecare imagine .
-pe orizontal ăși pe vertical ă, cu deosebirea c ăfațăde parcurgerea pe diagonal ăcea realizat ăpe
orizontalăse va face cu un pas care d epinde de dimensiunea vertical ăa imaginii , iar cea
verticalăse va face cu un pas care depinde de dimensiunea orizontal ăa imaginii. În rest se
procedeaz ăla fel cași la parcurgerea pe diagonal ă.
Așadar, pentru cele patru parcurgeri ( douăpe diagonal ă, una pe vertical ăși una pe
orizontală) se obțin un num ăr de [4 parcurgeri]x[ 4 coloa ne]x[3 benzi ale histogramelor ]=48
trăsături pentru orice imagine asupra c ăreia s -a aplicat aceast ămetodăde reducere a tr ăsăturilor .
c) Trăsăturile Tamura care se compun din directionalitatea imaginii, contrastul, granularitatea și
o histogram ăa granul itații cu 3 benzi.
Pânăacum au fost trecut eîn revistăprimele dou ămetode de reducere a atributelor unei
imagini ( metoda I șimetoda II ), iar în continuare vom aborda celelate dou ămetode -metoda III
șimetoda IV.
În cadrul metodei III dereducere a atributelor, blocurile: "primele 4 momente",
histograme multiscalare, caracteristicile Tamura, au aceea și funcționare ca și în cazul blocurilor
similare din metoda I șimetoda II, cu deosebirea c ăacestea ac ționeazăasupra imaginii originale
(imagine pe nivele de gri). Acestor blocuri i se adaug ăși transformata Radon.
Pentru a realiza transformata Radon s-autilizat funcția deja implementat ăîn Matlab:
R = radon(I, theta) care returneaz ătransformata Radon R a intensita ții imaginii I pe ntru u n unghi de theta grade [23 ].
Au fost calculat etransformatele Radon pentru patru valori ale lui theta -0଴,45଴,90଴și135଴.
Fiecare coloan ăa lui R va con ține transfromata Radon pentru fiecare unghi din theta. Apoi
coloane lematrice i R sunt transformate în patru histograme a câte trei benzi fiecare. Astfel,
transformata Radon particip ăcu un num ăr total de 4×3=12 tr ăsături la formarea vectorului de
caracteristici.
Metoda IV de extragere a tr ăsăturilor const ăîn descompunerea polinomial ăZernike a
imaginilor pe nivele de gri. Rezultatele ob ținute în urma aplic ării polinoamelor Zernike asupra
imaginii sunt valori complexe, și de aceea descriptorii imaginii vor fi modulul acesto r valori

17(valoarea absolut ăa numerelor complexe ob ținute).
La aceste metode s -a ajuns pornind de la cele descrise în [9] pentru formarea vectorului
de trăsături din cadrul clasificatorului WND -CHARM.
3.2.1 Metoda de extragere a caracteristicilor dinWND -CHARM
Metoda propus ăpentru formarea vectorului de tr ăsături al clasificatorului WND -CHARM
esteilustratăînurmătoarea figură:
Figura 3.3 Schema de formare a vectorului de tr ăsături din cadrul WND -CHARM [9]
Dupăcum se poate observa în figura 3.3 pentru formarea vectorului de tr ăsături s -au
utilizat diferite transformate ale imaginilor (transformata Wavelet, trans formata Chebyshev și
transformata FFT ), precum și combina ții ale acestor transformate (transformata Wavelet a
transformatei FFT și transformata Chebyshev a transformatei FFT). Apoi din rezultatele ob ținute
în urma acestor transformate, au fost extrase diferite tr ăsături,care sunt grupate în func ție de
tipul lor (caracteristici de mare contrast, de descompunere polinomial ă, de statisti căși textură)
în patru grupe astfel:
Figura 3.4 Grupele de caracteristici pentru formarea vectorului de tr ăsături din WND -CHARM
[9]
În figura 3.4 este descris ăcomponen ța fiecărei grupe de caracteristici. Astfel, grupa A
cuprinde următoarele caracteristici de contrast înalt (deformă):
-statisticile muchiilor care sunt calculate pe gradientul imaginii originale și cuprind mai
multe caracteristici cum ar fi media, varian ța, o histogram ăcu opt benzi a magnitudinii și
direcțieipixelilor, num ărul total de pixeli muchie normalizat în raport cu dimensiunea imaginii ,
omogenitatea direc țieiși o histogram ăcu patru benzi care ilustreazădiferența direcțieimuchiilor .
Astfel, prin extragerea acestor statistici din imagine se ob ține un număr de 28 de trăsături.
-coeficienții Gabor se obțin prin utilizarea wavelet -urilor Gabor[9], ob ținându -se un
număr de 7 coeficien țipentru fiecare imagine .

18-statisticile obiectelor sunt calculate pe imaginea binarizat ăprin intermediul pragului
Otsu [9]și cuprind urm ătoarele caracteristici: num ărul lui Euler (diferen ța dintre num ărul de
obiecteși numărul de găuri din imagine), centroizii imaginii, minimul, maximul, media, varian ța
și o histogram ăcu zece benzi calculat ăpentru pixelii obiectelor și distanța de la centroizii
obiectelor la centrul imaginii. În total statisticile obiectelor cuprind 34 de caracteristici.
Dupăcum se poate observa în figura 3.3 caracteristicile din grupa A sunt extrase numai din
imaginea original ă, contribuind astfel cu un num ăr de 28+7+34=69 caracteristici la formarea
vectorului de tr ăsături.
Grupa B reprezentat ăde caracteristicile de descompunere polinomial ă(de geometrie), are
în componen țăurmătoarele trăsături:
-statisticile Chebyshev -Fourier sunt extrase prin aplicarea transformatei Chebyshev –
Fourier asupra unei imagini, ob ținându -se un num ăr de 32 de tr ăsături.
-statisticile Chebyshev sunt obținute prin transformarea coeficien ților rezulta ți în urma
transform ării Chebyshev a imaginii într -o histogram ăcu32 de benzi.
-polinoamele Zernike -prin descompunerea polinomial ăZernike se obțin 72 de
coeficienți complec și, dar ca descriptori ai imaginii se folosesc valorile absolute ale acestora.
Dupăcum se poate observa în figura 3.3 caracteristicile din gru pa B sunt extrase din imaginea
originalăși imaginea rezultat ăîn urma transformatei FFT a imaginii originale, contribuind astfel
cu un num ăr de 2x(32+32+72)=272 caracteristici la formarea vectorului de tr ăsături.
Grupa C, dup ăcum se poate observa în fi gura 3.4 este compus ădin următoarele
caracteristici de statistic ăa pixelilor și de textur ă:
-primele 4 momente sunt reprezentate de media, devia ția standard, obl icitateași
planitatea imaginii. F iecare din cele patru caracteristici enumerate sunt formate dintr -o
histogram ăcu 12 benzi , rezultând 48 de caracteristici.
-trăsăturile Haralick sunt calculate cu ajutorul matrice lor concurente ale imaginilor.
Aceste trăsături cuprind un num ăr de 28 valori .
-histograme multiscalare sunt obținute prin transformarea imaginii în patru tipuri de
histograme, cu 3, 5, 7 și 9 benzi, rezultând astfel 24 de valori.
-caracteristicile Tamura se compun din direc ționalitatea imaginii, contrastul,
granularitatea și o histogram ăa granulita ții cu 3 benzi. Aceste trăsături contribuie cu un num ăr
de 6 caracteristici la formarea vectorului de tr ăsături.
Dupăcum se poate observa în figura 3.3 caracteristicile din grupa Csunt extrase din
transformata Wavelet a imaginii originale și transformata Wavelet a transformate i FFT a
imaginii originale , con tribuind astfel cu un num ăr de 2 x(48+28+24 +6)=212 caracteristici la
formarea vectorului de tr ăsături.
Grupa D este format ădin statisticile pixelilor și caracteristicile de textur ăce fac parte din
grupa C la care se adaug ășicaracteristicile Radon a imaginii originale. Prin aplicarea
transformatei Radon asupra unei imagini se ob țineun număr total de 4×3=12 tr ăsături.
Dupăcum se poate observa în figura 3.3 caracteristicile din grupa D sunt extrase din imaginea
originală,transformata FFT a imaginii originale, transformata Chebyshev (a imaginii originale și
a transformatei FFT a imaginii originale), contribuind astfel cu un num ăr de 4x(48+28+24
+6+12)=472caracteristici la formarea vectorului de tr ăsături.
Pentru mai multe detalii despre modul în care au fost calculate caracteris ticile din gru pele
A, B, Cși D a se consulta [9].
3.2.2 Metoda de extragere a caracteristicilor în lucrarea de fa ță
În aceastălucrare formarea vectorului de caracteristici s -a realizat având ca referință
figura 3.3. Pentru ob ținerea unor timpi de extragere a tr ăsăturilorși de clasificare mai buni este
necesar a se utiliza un vector de tr ăsături cu o dimensiune cât mai mic ă. Astfel, pentru calculul
vectorului de caracteristici, în lucrarea de fa țăse vor utiliza un num ăr mai redus de tr ăsături.
Pentru reducerea num ărului de tr ăsături, dar și din cauza num ărului foarte mare de
posibilități de formare a vectorului de tr ăsături (disponibile în figura 3.3), în aceast ălucrare s -a

19procedat astfel:
-s-a plecat de la formar ea vectorului de tr ăsăturiprin împărțirea figurii 3.3 în mai nou ă
metode de extragere caracteristicilor (primele nou ălinii ale tabelului 3.1) și testarea fiec ărei
metode în parte.
-s-au relizat combina ții ale celor nou ămetode de extragere (dupăcum s e poate observa
în tabelul 3.1) pânăcând s-aajuns la o performan țăde clasificare satisf ăcătoare.
-încăde la început s -a renunțat din grupa A la coeficien ții Gabor (datorit ănumărului mic
de trăsăturiși timpului de ob ținere mai ridicat fa țăde celelalte caracteristici ale grupei), din
grupa B lastatisticile Chebyshev -Fourier (d eoarece utilizeaz ăpentru calcul o mare parte din
memorie și timpul de ob ținere este foarte mare), din grupa C la trăsăturile Haralick (datorit ă
timpului de ob ținere foarte mare și modul uicomplicat de calcul ).
Nr.
crt. Metoda de extragere a tr ăsăturilorAcuratețe KNN
Weka
[%]Acuratețe KNN
Matlab
[%]
k k
1 3 5 1 3 5
1. imagine→transformata Wavelet → grupa C 70.6 68 70 70 62 68.3
2. imagine→ transformata Chebyshev → grupa D66.1 66.5 62.7 65.7 64.4 63.7
3. imagine→ transformata FFT → transformata
Wavelt→ grupa C68 67.5 75.5 66.3 65.6 74
4. imagine→ transformata FFT → transformata
Chebyshev → grupa D64.8 65.4 65.3 63.2 61.3 63.2
5. imagine→transformata FFT → grupa B 68.9 67.2 65.8 68 67.3 65.8
6. imagine→ transformata FFT → grupa D 59 53.3 60 56.9 51.9 58.5
7. imagine→ grupa A 62.7 62.7 60.4 63 64.3 61.3
8. imagine→ grupa B 81.5 80.7 83.5 80.6 81.9 82.8
9. imagine→ grupa D 82.5 83.5 82.5 85 86.2 87
10.imagine→ transformata Wavelet → grupa C +
imagine→ grupa A 70 71 73 69.3 70.6 70
11.imagine→ transformata Wavelet → grupa C +
imagine→ grupa A+
imagine→transformata FFT →transformata
Wavelet→grupa C70.6 73.7 72 69.3 71.2 70
12.imagine→ transformata Wavelet → grupa C +
imagine→ grupa A+imagine→ grupa B 70 71 73 69.3 70.6 70
13.imagine→transformata Wavelet → grupa C+
imagine→transformata FFT → grupa B 81 80.5 79.8 81.8 81.2 80.6
14.imagine→transformata Wavelet → grupa C +
statisticile Radon extrase din imaginea
originală86.8 86.8 86.2 86.2 87.5 87.5
15.imagine→transformata Wavelet → grupa C +
statisticile Chebyshev extrase din imaginea
originală73.771.2 73 70.670.6 70.6
16.imagine→transformata Wavelet → grupa C +
statisticile Chebyshev extrase din imaginea
originală+statisticile Radon extrase din
imaginea original ă82.5 85 85 82.5 82.5 80

20Nr.
crt. Metoda de extragere a tr ăsăturilorAcuratețe KNN
Weka
[%]Acuratețe KNN
Matlab
[%]
k k
1 3 5 1 3 5
17.imagine→transformata Wavelet → grupa C +
imagine→grupa D85.6 85 82.5 87 88.7 88
18.imagine→transformata Wavelet → grupa C +
imagine→grupa D + imagine→ grupa B 87.5 87.8 85 90 86.9 87.5
19.imagine→transformata Wavelet → grupa C +
imagine→grupa D+ imagine→ grupa B+
imagine→transfo rmata FFT → transformata
Wavelet→ grupa C87.9 87.5 85.6 91.3 86.3 86.3
Tabel 3.1 Metode de extragere a tr ăsăturilor analizate
În tabelul 3.1 se pot observa valorile acurate ții de clasificare ob ținute atât în Matlab cât și în
Weka , prin intermediul clasificatorului KNN, respectiv IBk pentru un num ăr de vecini k= 1,3 sau
5.
Dupăcum se poate observa în tabelul 3.1, metoda de extrac ție a trăsăturilor care ofer ăcea
mai mare acurate țe este descris ăîn ultima sec țiune a tabelului.
Nu s -a mai continuat testarea altor combina ții de metode de extragere a tr ăsăturilor
deoarece s -a obținut o acurate țede clasificare satisf ăcătoareșipentru cătimpul de extragere a
trăsăturilor pentru toate imaginile din baza de date sănu mai creasc ă(pentru căesteși așaunul
foarte ridicat -3 oreși 12 minute).
Asfel, s -aajuns la urm ătoarea schem ăde formare a vectorului de caracteristici, care este
utilizatămai departe în aceast ălucrare:
Figura 3.5 Schema de formare a vectorului de tr ăsături

21Figura 3.5 reprezintăschema de formare a vectorului de caracteristici p entru care s -a obținut o
acuratețe de clasificare satisfăcătoare prin intermediul clasificatorului IBk din Weka și
clasificatorului KNN implemantat în Matlab.
Metodele de extragere a tr ăsăturilor ilustrate în figura 3.5 sunt descrise mai am ănunțit în
în figura 3.2 și în secțiunea 3.2 a lucr ării de față.
Astfel, dup ăcum se observ ăîn figura 3.5 vectorul de caracteristici al fiec ărei imagini va
fi format din 318 tr ăsături. Pentru întreaga baz ăde imagini vectorul de tr ăsături va fi format din
318 trăsături x 800 de imagini.
3.2.3 Evaluarea tr ăsăturilor în Weka
Weka este un sistem foarte puternic cu ajutorul c ăruia se poate realiza numai clasificarea
obiectelor (nuși extragerea caracteristicilor).
Utilitarul poate fi descărcat gratuit de pe site -ul:http://www.cs.waikato.ac.nz/ml/weka/ .Acest a
a fost utilizat pentru a aplica o metod ăde învățare aupra vectorului de caracteristici și pentru a
analiza rezultatele ob ținute. Înainte de aplicarea oric ărui algoritm de clasificare asupra datelor,
acestea trebuie convertite în fisiere ARFF ("Attribute -Relation File Format").
Structura fi șierului ARFF trebuie s ărespecte urm ătoarea form ă:
Figur a 3.6 Structura fi șierului ARFF la modul general
Figura 3.6 ilustrezămodu l de formare al unui fi șier ARFF, în vederea antren ăriiși testării unui
clasificator ales din Weka cu tr ăsăturile extrase din imaginile cuprinse în baza de date.
Astfel, pentru vectorul de caracteristici forma t pe baza schemei din figura 3.5 , structura
fișierului ARFF va fi urm ătoarea:
Figura 3.7 Structura fisierului ARFF utilizat în acest ălucrare

În figura 3.7 este prezentat ăschema de formare a fi șierului ARFF adaptat ăla această
lucrare .
Așadar, fiecare atribut trebuie descris în header
informații atât despre tipul fiec ărui atribut, precum și despre clasa din care face parte respectivul
obiect.
Clasa fiec ărui obiect trebuie s ăfie cunoscut ă, pentru ca la testare s ăse poatăcompara
clasa prezisăde cl asificator cu clasa
datelor se ob ține o matrice de confuzie ("confusion matrix") având dimensiunea [num ăr_clase x
număr_clase], în cazul nostru 4×4, care arat ănumărul instan țelor
obiecte. Dac ătoate instan țele au fost clasificate corect atunci doar elementele diagonalei
principale ale matricei de confuzie sunt diferite de zero
următoarele matrice de confuzie
Figura 3.8Matrice
Notațiile realizate în figura 3.8 au urm ătoarele seminifica ții: M
pietoni, A -clasa animale și G
În figura 3.8 se poate observa
din care fac parte ( figura 3.8 a
În etapa de testare (figura 3.8 b):
-toate obiectele din clasa ma șini (prima linie
-din clasa pietoni (a doua linie
corect, 3 au fost clasificate ca f ăcând parte din clasa animale și
-din clasa animale 34 de imagini au fost clasif
b), 1 a fost cl asificatăca fiind din clasa ma ș
garbage
-din clasa garbage (ultima linie a
corect, 3 au fost clasificate ca apar ținând clase
Figura 3.8 prezintămatrice le de confuzie pen
clasificatorul IBk . Numărul de vecini al clasificatorului IBk este egal cu unu
vectorului de tr ăsături s -a utilizat schema prezentat ăîn figura 3.5.
Pentru înv ățareși testare
fostîmpărțit manual în 80% instanțe
un număr de160 de imagini din fiecare clas ăpentru an
de 640 de imagini )și 20% din fiecare clas ăpentru testare (din întreaga baz ăde date
160 de imagini ).
Programul Weka pune la
Deoarece în lucrarea de fa țăs
performan țelor diferi ților clasificatori, pentru a evalua calitatea tr ăsăturilor extrase din imagini s
a utilizat clasificatorul IBk.
3.3.4Evaluarea tr ăsăturilor în Matlab
Apelarea din Matlab a utilitarului Weka este una dificil ă. Din acest motiv, dar și datorită
necesității folosirii unui clasificator în interfa ța graficăa lucrării de fațăs
Matlab a unui algoritm de clasificare. Da
22este prezentat ăschema de formare a fi șierului ARFF adaptat ăla această
Așadar, fiecare atribut trebuie descris în header -ulfișierului ARFF, fi șierul conținind
informații atât despre tipul fiec ărui atribut, precum și despre clasa din care face parte respectivul
Clasa fiec ărui obiect trebuie s ăfie cunoscut ă, pentru ca la testare s ăse poatăcompara
asificator cu clasa realăaobiectului respectiv. Dupa antrenarea (înv ățarea)
datelor se ob ține o matrice de confuzie ("confusion matrix") având dimensiunea [num ăr_clase x
număr_clase], în cazul nostru 4×4, care arat ănumărul instan țelor atribuite
obiecte. Dac ătoate instan țele au fost clasificate corect atunci doar elementele diagonalei
confuzie sunt diferite de zero .Dacăspre exemplu vom avea
de confuzie descrise în figura 3.8 :
Matrice le de confuzie pentru înv ățare, respectiv testare
Notațiile realizate în figura 3.8 au urm ătoarele seminifica ții: M -clasa mașini, P
clasa animale și G-clasa garbage.
În figura 3.8 se poate observa căla învățare toate obiectele au fost atribuite corect claselor
figura 3.8 a ).
(figura 3.8 b):
toate obiectele din clasa ma șini (prima linie amatrice idinfigura 3.8 b ) au fost clasificate corect
din clasa pietoni (a doua linie amatrice idinfigura 3.8 b ) 36 de imagini au fost clasificate
corect, 3 au fost clasificate ca f ăcând parte din clasa animale și1din clasa garbage
din clasa animale 34 de imagini au fost clasif icate corect (a treia linie a matrice
asificatăca fiind din clasa ma șini, 2 au fost atribuite clasei
(ultima linie a matrice i din figura 3.8 b) 28 de imagini au fost clasificate
corect, 3 au fost clasificate ca apar ținând clase imașiniși 9 clasei animale.
le de confuzie pen tru învâțare, respectiv testare ob ținute
. Numărul de vecini al clasificatorului IBk este egal cu unu
a utilizat schema prezentat ăîn figura 3.5.
și testare vectorul de caracteristici al tuturor imaginilor din baza de date a
instanțepentru învățareși 20% pentru testare,
160 de imagini din fiecare clas ăpentru an trenare ( din întreaga baza de date
)și 20% din fiecare clas ăpentru testare (din întreaga baz ăde date
Programul Weka pune la dispoziție un num ăr mare de algoritmi de înv ățareși testare.
Deoarece în lucrarea de fa țăs-a pus accentul pe extragerea tr ăsăturilorși nu pe analiza
performan țelor diferi ților clasificatori, pentru a evalua calitatea tr ăsăturilor extrase din imagini s
Evaluarea tr ăsăturilor în Matlab
Apelarea din Matlab a utilitarului Weka este una dificil ă. Din acest motiv, dar și datorită
necesității folosirii unui clasificator în interfa ța graficăa lucrării de fațăs
unui algoritm de clasificare. Da torităsimplitățiiși ușurinței de implementare
este prezentat ăschema de formare a fi șierului ARFF adaptat ăla această
fișierului ARFF, fi șierul conținind
informații atât despre tipul fiec ărui atribut, precum și despre clasa din care face parte respectivul
Clasa fiec ărui obiect trebuie s ăfie cunoscut ă, pentru ca la testare s ăse poatăcompara
obiectului respectiv. Dupa antrenarea (înv ățarea)
datelor se ob ține o matrice de confuzie ("confusion matrix") având dimensiunea [num ăr_clase x
atribuite fiecărei clase de
obiecte. Dac ătoate instan țele au fost clasificate corect atunci doar elementele diagonalei
Dacăspre exemplu vom avea
pentru înv ățare, respectiv testare
clasa mașini, P -clasa
obiectele au fost atribuite corect claselor
) au fost clasificate corect
) 36 de imagini au fost clasificate
din clasa garbage
matrice idinfigura 3.8
au fost atribuite clasei pietoniși 3 clasei
28 de imagini au fost clasificate
tru învâțare, respectiv testare ob ținute în Weka cu
. Numărul de vecini al clasificatorului IBk este egal cu unu ,iarpentru formarea
tuturor imaginilor din baza de date a
învățareși 20% pentru testare, astfelîncât săavem
din întreaga baza de date un total
)și 20% din fiecare clas ăpentru testare (din întreaga baz ăde date un total de
algoritmi de înv ățareși testare.
a pus accentul pe extragerea tr ăsăturilorși nu pe analiza
performan țelor diferi ților clasificatori, pentru a evalua calitatea tr ăsăturilor extrase din imagini s –
Apelarea din Matlab a utilitarului Weka este una dificil ă. Din acest motiv, dar și datorită
necesității folosirii unui clasificator în interfa ța graficăa lucrării de fațăs-a ales dezvoltarea în
torităsimplitățiiși ușurinței de implementare ,pentru

23evaluarea tr ăsăturilor în Matlab s -a ales utilizarea clasificatorului KNN.
În aceastălucrare au fost utilizate pentru compararea performan țelor de clasificare dou ă
versiuni ale clasificatorului KNN:
KNNC (KNN Classify) care este un clasificator implementat cu ajutorul func ției deja
existente în Matlab:
Class = knnclassify( Sample ,Training ,Group , k, distance ) [23].
Funcțiaknnclassyfy returneazăvector ulClass, care con ține rezultatul clasific ării
imaginilor din vectorul Sample în funcție de imaginile cu ajutorul c ărora se realizeaz ăînvățarea
clasificatorului KNN.
Aceastăfuncție are cași parametrii:
-vectorul Sample care conține imaginile de testareși a cărui linii vor fi cl asificate în cele patru
clase.
-vectorul Training care conține imaginile de antrenare, fiind folosit la clasificarea obiectelor din
vectorul Sample . Numărul de coloane a celor doi vectori Sampl eșiTraining trebuie săfie egal.
-vectorul Group conține clasele imaginilor din setul de antrenare
-keste numărul de vecini utilizat în clasificare
-distance este metrica utilizat ăîn clasificare
KNNR (KNN Rule) care este implementat de Roger Jang și poate fi descărcat gratuit de
pe site -ul:http://mirlab.org/jang/matlab/toolbox/dcpr/.
Cuacest clasificator se ob țineexact aceea și acuratețe de clasificare, dar un timp de
clasificare mult mai bun . Acest lucru se datoreaz ăutilizăriiMEX -files, care au rolul de a reduce
timpul necesar în mod normal Matlab -ului sărealizeze opera țiiledorit e.
În interfa ța graficăva fi utilizat numai clasificatorul KNNR datorit ăperforman țelor de
clasificare superioare (în ceea ce prive ște timpul de clasificar e).
Astfel utilitarul Weka este folosit pe lâng ăstabilirea metodei de extragere a tr ăsăturilorși
la verificarea implement ării în Matlab a celor dou ăclasificatoare KNN.
3.3Determinarea parametriilor transformatei Wavelet
În aceast ălucrare s -a utili zat transformata Wavelet discret ăpentru semnale
bidimensionale . În Matlab aceast ătransformat ăare următoarea sintax ă:
[cA,cH,cV,cD] = dwt2(X,' wname')[23]
Prin aceast ătransformat ăse calculeaz ămatricea coeficien ților aproxima ți cAșimatrice le
coeficienților detalia ți cH, cV și cD (pe orizontal ă, verticalăși respectiv pe diagonal ă) prin
descompunerea wavelet a matrice i de intrare X (care poate fi reprezentat ăde o imagine).
Transformata Wavelet are ca parametru numele familiei wavelet utilizat în descompu –
nere. Tot un parametru al transformatei Wavelet poate fi considerat și nivelul de descompunere
wavelet.
Descompunerea wavelet se poate realiza pe mai multe nivele astfel:
-mai întâi se realizeaz ătransformata Wavelet a imag iniiprin metoda descris ămai sus (utilizată
pentru ob ținerea primului nivel de descompunere wavelet)
-pentru ob ținerea celui de -al doilea nivel al descompunerii se va aplica transformata Wavelet pe
una din matrice le coeficien ților (cA, cH, cV sau cD) sau pe o combina ție a acestor matrice .
-se continu ăcu aplicarea transformatei Wavelet pe noile matrice de coeficien ți pânăcând se
atinge nivelul de descompunere dorit.
Pentru determinarea parametriilor transforma tei Wavelet s -a realizat urm ătorul
experiment:
-s-a ales un nivel de de scompunere egal cu 3, 4, 5 sau 6 (nivelele 1 și 2 nu ofer ăo
compresie suficient ăa atributelor imaginii) . Așadar sunt patru valori ale nivelului de
descompunere.
-pentru fun cțiile mamăale descom punerii wavelet s -aufolosit func țiile deja
implementate in Matlab, precum: Daubechies, Coiflet, Symlet ,biortogonale și inverse
biortogonal e(reverse biortogonal) .

24Numele familiei de func ții wavelet Daubechies se scrie dbN, unde Neste ordinul, iar db
este "prenumele" func ției wavelet. FuncțiileCoiflet ( coifN ) reprezint ăo altăfamilie de func ții
discrete wavelet, descoperite de Ingrid Daubechies. Numele familiei de func ții wavelet Symlet se
scrie symN, unde le fel ca și la Daubec hies, Neste ordinul, iar sym este "prenumele" func ției
wavelet. Functiile wavelet biortogonale se scriu biorNr.Nd ,iarfuncțiile inverse biortogonal ela
fel cași cele biortogonale se scriu rbioNr.Nd .
Din varietatea de familii de wavelet -uri în acest experiment s -au utilizat urm ătoarele
funcții:db1db15, coif1 coif5, sym1 sym15, bior 1.1 bior6.8, rbio1.1 rbio6.8 (în total un
număr de 64 de valori)
-s-a utilizat numai metoda I de extragere a tr ăsăturilor (descrisăîn figura 3.2) având ca
scop areducerea timpul de extragere pentru imaginile din baza de date.
Astfel, prin utilizarea metodei I au fost ob ținuți vectorii de tr ăsături ai bazei de imagini
pentru valorile parametriilor transformatei Wavelet stabilite mai su s.S-au obținut un num ăr de
4×64=256 vectori de caracteristici, care au fost salva ți în fișiere text. La sfâr șitul fiecărei linii a
fișierului s-a introdus clasa real ăa imaginii (pentru a se putea calcula acurate țea de clasificare)
-s-a realizat permutarea liniilor tuturor fi șierelor, pentru a nu permite clasificatorului s ă
învețe inclusiv ordinea de preluare a imagnilor (deoarece clasificatorul prelua pe rând cele 4
clase, iar prin permutare imaginile sunt preluate aleator)
-pentr u învățareși testare datele au fost împ ărțiteasfel încât s ăse obțină80% din
imaginile fiec ărei clase pentru înv ățareși 20% pentru testare (câte 160 imagini din fiecare clas ă
pentru înv ățareși 40 imagini din fiecare clas ăpentru testare).
-s-a real izat clasificarea imaginilor din cele 256 de fi șiere prin intermediul
clasificatorului KNN . S-aoptat pentru o bținerea unei acuratețide clasificare cât mai bun ă, în
defavoarea unor timpi calcul a transformatei Wavelet mai ridica ți (cu cât nivelul de desc om-
punere este mai mare cu atât timpul necesar realiz ării transformatei Wavelet este mai ridicat , dar
scade timpul de clasificare ).
În urma acestui experiment s -a observat c ăacuratețea maxim ăse obține pentru familia de
wavelet -uribior1.3și nivelul de descompunere wavelet egal cu 3.
Coeficien ții cA, cH, cV și cD de nivlel 3 și familie bior1.3 a iunei imagini arat ăastfel:
Figura 3.9 Transformata Wavelet a unei imagini
În figura 3.9 este prezentat rezultatul aplic ării transformatei Wavelet de familie bior1.3 și
nivel de descompunere wavelet 3 asupra unei imagini oarecare din baza de date. În urma aplic ării
transformatei wavelet de nivel 3 și familie bior1.3 s -a realizat reducerea num arului de atribut e al
imaginii prezentate în fi gurăde la [148×93] (valori ce reprezint ădimensiunea imaginii originale)
pâna la [16×22]. Dup ăcum se poate observa în figura 3. 2 din rezultatul transformatei W avelet a l
imaginii sunt ext rase caracteristicile : "primele 4 momente", histograme multiscalare și
caracteristicile Tamura, num ărul de trăsături reducându -se de la[16×22=352] la 78 (48 pentru
"primele 4 momente", 24 pentru histogramele multiscalare și 6 pentru caracteristicile Tamura).
3.4Modul de împ ărțire a datelor pentru înv ățareși testare
Dupăcum se poate observa în figura 3.10, o rice clasificator trebuie s ăaibe un set de date
pentru antrenare și altul pentru testare. Iesirea unui astfel de clasificator este un vector care

25conținenumărul asociat claselor imaginilor din setul de testare (clasa_testare care este un vector
coloană).
Figura 3.10 Schema bloc a clasific ării KNN
În funcție de tipul clasificatorului setul de date de antrenare, respectiv de testare trebuie
săaibe o a numităstructură. Astfel pentru cele dou ăvariante aleclasificat orului KNN ( KNNCși
KNNR ) setul de antrenare și cel de testare va fi compus astfel:
-setul de antrenare este format din doi vectori -vector_trăsături_antrenare, care con ține pe
fiecare li nie trăsăturile imaginilor destinate antren ăriiși clasa_antrenare, care este un vector
coloanăce conține pe fiecare linie clasa corespondent ăimaginii sot ocate pe aceeași linei în
vectorul de antrenare .
-setul de testare este format dintr -un singur vect or care are acela și număr de coloane ca și
vector_trăsături_antrenare , conținând pe fiecare linie tr ăsăturile unei imagini de test .
Numărul de linii al acestor vectori depind de procentul de imagini din baza de date
destinate antren ăriiși testării. Cum s-a ales un procent de 80% din imaginile fiecărei clase pentru
antrenare și 20% pentru testare ,acești vectori vor avea urm ătoarea dimensiune:
-vector_trăsături_antrenare: 80% x 800 imagini = 640 imagini, iar pentru fiecare imagine s -au
extras 318 tr ăsături. Astfel dimensiunea datelor de înv ățare este [640 linii x 318 coloane].
-vector_trăsături_testare: 20% x 800 imagini = 160 imagini, iar pentru fiecare imagine s -au
extras 318 tr ăsături. Astfel dimensiunea datelor de testare este [160 linii x 318 coloane].
-clasa_antrenare dup ăcum a mai fost precizat este un vector coloan ăcu același număr de linii
cași vector_tr ăsături_antrenare. A șadar vom avea o dimensiune de [640 linii x 1 coloan ă].
-clasa_testare este tot un vector coloan ăcare con ține acela și număr de linii ca și
vector_trăsături_testare rezultând astfel dimensiune a [160 linii x 1 coloan ă].
Testarea clasificatorului KNN s -a realizat pentru un num ăr de vecini k=1,3 sau 5. După
cum se poate observa kiadoar valori impare, din cauz ăcăavem patru clase șis-a dorit evitarea
cazurilor în care clasificatorul poate atri buii imaginea la doua clase diferite în acela și timp (dac ă
acesta gase ște aceeași distanțăîntre vecinii s ăi care fac parte din dou ăclase diferite).
Acuratețea clasific ării a fost calculat ăca raportul dintre instan țele corect clasificate și
număr total de instanțe clasificate. Determinarea instan țelor corect clasificate s -a realizat prin
compararea claselor prezise de clasificator cu clasele reale (predefinite) a leimaginilor clasificate.
Din acest motiv este necesar stocarea claselor reale ale imaginil or de test.
3.5Îmbunătățirea performan țelor
S-a încercat îmbun ătățirea performan țelor prin dou ămetode:
-reducerea num ărului de tr ăsături extrase din fiecare imagine
-transformarea aplica ției într -un executabil
3.5.1 Reducerea num ărului de trăsături extrase din fiecare imagine
Dupăcum se poate observa în figura 3.5 formarea vectorului de tr ăsături se realizeaz ă
prin aplicarea asupra imaginilor din baza de date a combinațieicelor patru metode de extragere:
metoda I, metoda II, metoda III și metoda IV.
În tabelul 3.1 nu au fost analizate rezultatele tuturor combina țiilor posibile de formare a
vectorului de tr ăsături. Astfel, s -a încercat reducerea num ărului de tr ăsături extrase din fiecare

26imagine prin analiza tuturor modalitățilorposibile de formare a vectorului de tr ăsături pornind de
la cele patru metode: metoda I, metoda II, metoda III și metoda IV.
Deoarece avem un num ăr de patru metode de extragere, n umărul de modalitățiposibile de
obținere a vectorului de tr ăsăturiestedat de:
ܥସଵ+ܥସଶ+ܥସଷ+ܥସସ=4+6+4+1=15modalități
Cele cincisprezece modalit ăți de formare a vectorului de tr ăsături sunt ob ținute prin aplicarea
asupra imaginilor a urm ătoarelor metode și combina ții de metode de extragere:
1. metoda I
2. metoda II
3. me toda III
4. metoda IV
5. metoda I +metoda II
6. metoda I + metoda III
7. metoda I + metoda IV
8. metoda II + metoda III
9. metoda II + metoda IV
10. metoda III + metoda IV
11. metoda I + metoda II + metoda III
12. metoda I + metoda II + metoda IV
13.metoda I + metoda III + metoda IV
14. metoda II + metoda III + IV
15.metoda I +metoda II + metoda III + metoda IV
Au fost forma ți astfel cincisprezece vectori de caracteristici ai bazei de imagini,
dimensiunea lor variind în func ție de modalitatea de extr agere a tr ăsăturilor (a se vedea tabelul
4.1 pentru mai multe detalii).
Pentru clasificarea celor cincisprezece vectori de caracteristici s -a procedat dup ăcum
urmează:
-s-a realizat o aplica ție de extragere a tr ăsăturilor din imaginile bazei de date pentru toate cele
cincisprezece modalit ăți de formare a vector ului de caracteristici. Vectorii astfel formați aufost
salvați în fișiere text .
-s-a realizat permutarea liniil or tuturor fi șierelor, pentru a nu permite clasificatorului s ăînvețe
inclusiv ordinea de preluare a imagnilor
-pentru înv ățareși testare datele au fost împ ărțiteasfel încât s ăse obțină80% din imaginile
fiecărei clase pentru înv ățareși 20% pentru t estare (câte 160 imagini din fiecare clas ăpentru
învățareși 40 imagini di n fiecare clas ăpentru testare)
-s-a realizat clasificarea imaginilor din cei cincisprezece vectori de caracteristici prin
intermediul clasificatorului KNN
-rezultatele de clasif icare a celor cincisprezece vectori au fost comparate pe baza acurateții de
clasif icare.
Acuratețeadatăde fiecare combina ție de metode, a fost comparat ăcu rezultatele ob ținute
pentru combina țiametoda I+metoda II+metoda III +metoda IV (cea cu care s-a obținut cea mai
bunăacuratețe de clasificare ). Astfel s-aobservat c ămodalitățile compuse din metoda III +
metoda IV ,metoda I + metoda III + metoda IV ,metoda II + metoda III + metoda IV, se apropie
foarte mult de acuratețeaobținutăcumetoda I+metoda II+metoda III +metoda IV, fărăa o
depășii (90.63 % fa ța de 91.25%) .
În cazul celor trei modalit ăți (metoda III + metoda IV, metoda I + metoda III + metoda
IV,metoda II + metoda III + metoda IV ) se obțineun timp de cla sificare mai bun (0.09 secu nde
fațăde 0.11) decât în cazul metodei cu care s -a obținut cea mai bun ăacuratețe (metoda I+metoda
II+metoda III +metoda IV ).Acest lucru se datoreaz ănumărului mai mic de trăsăturipe imagine
(pentru mai multe detalii consulta ți tabelul 4.1)

27Totuși, am optat pentru ob ținerea unei acurate țide clasificare cât mai bun ăîn detrimentul
unui timp de clasificare mai sc ăzut.
3.5.2Transformarea aplica ției într -un executabil
S-a încercat îmbun ătățirea performan țelor în ceea ce prive ște timpii de clasificare a
tuturor celor cincisprezece combina ții posibile de creare a vectorului de caracteristici, prin
transformarea aplica ție realizate într -un fișier executabil. În acest scop am utilizat toolbox -ul
deploytool din Matlab, care urm ărește următoarea schem ăbloc pentru realizarea unui astfel de
fișier:
Figura 3.11 Schma bloc urmat ăde toolbox -uldeploytool [23]
În figura 3.11 este prezentat modul foarte simplu de realizare a unu i fișier executabil.
S-a ales acest mod de realizare a executabilului datorit ăsimplității precum și datorită
dorinței de a ob ține timpi de clasificare mai buni. Astfel cu ajutorul acestui toolbox și urmărind
pașii de mai sus s -a realizat transformarea aplicației realizate în Matlab într -o aplicație
"standalone "(de sine stat ătoare, care nu necesit ăinstalarea Matlab -ului pentru rulare) pentru
sistemul de operare Windows.
3.6Interfața graficăa aplicației
Pentru a realiza o prezentare a acestei lucr ări s-a relizat o interfa țăgraficăGUI (Graphical
User Interface) cu ajutorul toolbox -ului GUIDE (Graphical User Interface Design E nvironment )
dinMatlab. Aceast ăaplicație afost transformat ăîntr-una executabil ăcu ajutorul deploytool.
Interfațăgraficăaratăastfel:
Figura 3.12 Interfa ța graficăa lucrării

28În figura 3.12 este prezentat ăaplicația GUI realizat ăprin intermediul toolbox -urilor
Matlab (GUIDE + deploytool ).
Interfatăgraficăeste format ădin trei părti:
-partea de extragere a tr ăsăturilor
-partea de clasificare a imaginilor
-partea de testare a clasificatorului KNN cu alte imagini decât cele din baza de date
3.6.1 Extragerea tr ăsăturilor
Interfața graficăpermite utilizatorului s ăaleagăclasele de imagini utilizate în etapa de
extragere a tr ăsăturilor, precumși metodele de extrac ție a trăsăturilor (poate s ăaleagăorice
combinație a c elor patru metode descrise în figura 3.2). Dupăapăsarea butonului "Creare vector
trăsături" se va realiza extragerea trăsăturilor prin metoda aleas ădin imaginile claselor selectate.
Timpul de extragere al tr ăsăturilor tuturor imaginilor din baza de date va fi vizibil utilizatorului
odatăcu terminarea proc esului de extragere în c ăsuța numerotat ăcu "2", iar informa țiile legate
de numărul de caracteristici al vectorului de tr ăsături astfel format vor fi vizibile în c ăsuța
numerotat ăcu "1".
3.6.2 Clasificarea imaginilor
Pentru clasificarea imaginilor s-a ales clasificatorul KNNR. Interfa ța permite setarea
numărului de vecini pentru care se face clasificarea (c ăsuța "3")și procentul uidin numărul total
de imagini destinat procesului de înv ățare (căsuța 4). Procentul de imagini pentru care se face
testarea se calculeaz ăautomat prin scăderea din 100% a procentului de imagini de înv ățare.
Acesta este afi șat odatăcu setarea procentului de înv ățare în căsuța "5".
Prin apăsarea butonului "Antrenare și testare KNN" se realizeaz ăclasificarea imaginilor
dinsetul de testare în func ție de parametrii seta ți. Informa țiile legate de acurate țea clasific ăriiși
timpul de clasificare vor fi afi șate în căsuțele "6", respectiv "7".
3.6.3 Testarea clasificatorului KNN și cu alte imagini decât cele din baza de date
Interfața graficăpermite testarea clasificatorului KNN și cu alte imagini decât cele din
baza de date , în funcție de vectorul de tr ăsături extras "on -line" sau în func ție de vectorul de
trăsăturiimplicit obținut în cadrul celei mai bune metode de extr agere a caracteristicilor ( metoda
I+metoda II+metoda III+metoda IV ).
Pentru a se realiza testarea, utilizatorul trebuie s ăaleagăo nouăimagine prin ap ăsarea
butonului "Preia imagine" și săselecteze vectorul de tr ăsături utilizat. Tr ăsăturile imaginii
preluate vor fi extrase prin acelea și metode prin care s -a formatși vectorul de tr ăsături ales (cel
format on -line sau cel implicit). Informa țiile legate de timpul de extragere a tr ăsăturilor, timpul
de clasificare și clasa imaginii n oi vor fi afi șate în căsuțele "8", "9", respectiv "10 ".
4. Rezultate experimentale
Toate experimentele din acest ălucrare au fost relizate pe un calculator desktop având
următoarea configura ție:
-placăde bază: ASUS M3N78 -VM
-procesor: AMD Athlon(tm) 64 3000+, având o frecvențăde 1.8Ghz
-RAM: 2 Gb DDR II
-placaăvideo: Nvidia GeForce 8200
-HDD: 250 Gb, 7200 rpm
-sistem de operare: Windows XP Service Pack 3

294.1 Rezultate experimentale Weka
Pentru a avea convinge reacătrăsăturile din vectorul de caracteristici sunt destul de
difere nțiate de la o clas ăla alta, s -afolosit clasificatorul IBk ( echivalentul KNN -ului) din Weka.
Astfel s -arelizattestare a clasificatorului IBk cu datele de înv ățare,obținând u-seurmătoarea
matrice de confuzie:
Figura 4.1 Matrice de confuzie Weka (num ărul de vecini=1)
Figura 4.1 prezint ămatric ea de confuzie ob ținutăîn Weka prin testarea clasificatorului
IBk cu datele de înv ățare, pentru vectorul de tr ăsături construit dup ăfigura 3.5. În figura de mai
susse observ ăcăîn afarăde diagonala principal ăcelelalte elemente sunt zero, ceea ce înseamn ă
cănici o imagine nu a fost atribuit ăaltei clase decât celei din care face parte.
Ei bine, situa ția pentru cazul în care num ărul de v ecini este mai mare ca unu (respectiv k=3 sau
5) se schimb ă, făcând ca acurate țea clasific ăriisănu mai fie de 100%. Astfel înacest caz s-au
obținuturmătoarele matrice de confuzie:
(a) (b)
Figura 4.2 Matricele de confuzie pentru k=3 (a),
respectiv k=5 ( b) obținute în Weka
Figura 4.2 prezint ămatricele de confuzie ob ținute în Weka, prin testarea clasificato rului
IBk cu datele de înv ățare(pentru vectorul de tr ăsături construit dup ăfigura 3.5 ),ilustrând
rezultatele diferite ob ținute pentru k=3 ( figura 4.2 a ), respectiv k=5 ( figura 4.2 b) fațăde primul
caz (figura 4.1) când k=1.
Dupăcum se poate observa în matricele de confuzie de mai sus celelate elemente în afara
diagonalei principale nu sunt nule ca și în figura 4.1, având și imagini care nu sunt atribuite
corect. Astfel, când k=3 pentru clasa ma șini (notatăcuM) au fost atribuite corect 199 de imagini
din 200, un a fiind atribuit ăincorect clasei animale (notat ăcuA), pentru clasa pietoni (notat ăcu
P)-193 corecte,7 incorecte, ș.a.m.d.
Acuratețea de clasificare în acest caz scade la 93.75% (adic ă750 imagini clasificate
corect din totalul de 800) ,pentru k=3 la93.75și la 92.25% pentru k=5 (adic ă738 de imagini
clasificate corect din totalul de 800). Acest lucru relev ăcăpentru k=3 și k=5 nu s-a realizat o
diferențiere suficient ăîntre cele patru clase (exist ănd asemănări între acestea) și dupăcum o să
putem observa în cele ce urmeaz ăperformațele de clasificare cele mai bune se vor ob ține pentru
k=1. S-aales pentru num ărul de vecini valori impare (1,3, respectiv 5) din cauzăcăsunt patru

30claseșis-adorit evitarea cazurilor în care clasificatorul poate at ribuii imaginea la doua clase
diferite în acela și timp.
De asemenea ,Weka a fost utilizat și pentru verificarea implement ării clasificatoarelor
KNN (KNNCși KNNR )în Matlab.
Astfel, în etapa de testare, în Weka se o bținurmătoarele matrice de confizie:
(a) (b) (c)
Figura 4.3 Matricele de confuzie pentru setul de testare (k=1,3 și5) obținute în Weka
În figura 4.3 putem observa modul în care au fost atribuite imaginile din setul de testare
(format din 20% dinimagini lefiecărei clase , adică40 de imagini din fiecare clas ă) în urma
evaluării imaginilor cu ajutorul clasificatorului IBk. Astfel, pentru k=1 s-aobținut o acurate țe de
clasificare de 86.25% (adic ă138 de imagini clasificate corect din totalul de 160), pentru k=3 –
86.25%, iar pentru k=5 -86.875% (adic ă139 de imagini clasificate corect din totalul de 160).
În Matlab, în etapa de testare pentru ambele clasificatoare KNN (KNNC și KNNR) s -au
obținut următoarele matrice de confuzie:
(a) (b) (c)
Figura 4.4 Matricele de confuzie pentru setul de testare ob ținute în Matlab
În figura 4.4 este prezentat rezultatul atribuirii imaginilor fiec ărei clase, pentru setul de
testare, clasificarea fiind realizat ăîn Matlab prin intermediul celor dou ăclasificatoare KNN
studiate. Aceste clasificatoare returneaz ăacelași rezultat al clasific ării în ce ea ce prive ște
acuratețea, diferen ța majorădintre ele fiind constituit ăde timpii de clasificare.
În compara ție cu clasificatorul IBk din Weka, pentru cele din Matlab s -aobținut o
acuratețe de clasificare puțin mai mare , respectiv pentru k=1 (figura 4.4 a) s-aobținut o acurate țe
de 91.25% (adic ă146 imagini clasificate corect din totalul de 160), pentru k=3 (figura 4.4 b)
86.25% (adic ă137 de imagini clasificate corect di n totalul de 160) și pentru k=5 (figura 4.4 c)
86.25% .
4.2 Rezultate experimental edinMatlabșidinaplicația executabil ă
Aplicația executabil ăse referăla experimentul (transformat în fi șier executabil) realizat
pentru ob ținerea celor cincisprezece combina ții posibile de formare a vectorului de tr ăsăturiîn
secțiunea:
3.5.1 Reducerea num ărului de tr ăsături extrase din fiecare imagine , a lucrării de față.
Diferența în ceea ce prive ște timpii de clasificare dintre cele dou ăclasificatoare (KNNC

31șiKNNR) în func ție de num ărul de trăsături extrase (de combina ția de metode utiliz atăpentru
construirea vectorului de tr ăsături) poate fi observat ăatât în figura 4.5, cât și în tabelul 4.1.
Figura 4.5 Graficul timpului de clasificare în func ție de num ărul de trăsături
În figura 4.5 sunt prezentate sunt prezentate urm ătoarele grafice:
-graficul timpului de clasificare KNNR (cel cu albastru) al celor cincisprezece vectori de
caracteristici (pentru mai multe detalii vezi sec țiunea 3.5.1 a acestei lucr ări) în func ție de
numărul de de tr ăsături extrase din imagini pentru fiecare combina ție de metode (vezi tabelul
4.1)
-graficul timpului de clasificare KNNC (cel cu ro șu) al celor cincisprezece vectori de
caracteristici în func ție de num ărul de de tr ăsături extrase din imagini pentru fiecare combina ție
de metode (vezi tabelul 4.1).
Dupăcum observ ăm în figura 4.5 timpul de clasificare KNNR este mult mai bun, având valori
mai mici decât timpul de clasificare KNNC.Timpul de clasificare KNNC este divizat cu zece
pentru a se putea observa mai bine diferen țele între cele dou ăgrafice în fiecare punct.
Comparând valorile timpilor de clasificare KNNR obținuți în Matlabșiînaplicația
executabil ădin figura 4.6 putem observa c ăperforman țeleobținute în Matlab nu difer ăfoarte
mult de cele ob ținute prin interm ediul aplica ției executabile.
Figura 4.6 Graficul timpului de clasificare în func ție de num ărul de trăsături

32Figura 4.6 prezint ăvariația timpilor de clasificare ai KNNR -ului obținuți în cadrul
aplicației Matlab (cu albastru), respectiv în cadrul aplica ției executabile (cu ro șu) de obținere a
performan țelor de clasificare pentru cele cincisprezece moduri de formare a vectorului de
trăsături, fiind relizat ăîn Matlab.
Figura 4.7 Graficul ti mpului de extragere coeficien ți în funcție de num ărul de trăsături
Figura 4.7 prezint ăgraficul timpului de extragere acoeficienților(obținut în Matlab -cu
albastruși în aplica ția executabil ă-cu roșu) în func ție de num ărul de trăsături.
Dupăcum se poate observa în figura 4.7, diferen țele dintre timpul de extragere a
caracteristicilor pentru toate imaginile din baza de date în cazul aplica ției Matlab, respectiv
aplicațieistandalone, sunt atât de mici încât reprezent ările grafice a acestora în fun cție de
numărul de trăsături extrase pentru fiecare imagine sunt suprapuse. Astfel, transformarea unei
aplicații Matlab într -un executabil nu ofer ăperforman țe cu mult mai bune în ceea ce prive ște
timpii de execu ție, dar este util ăpentru rularea aplica ției Matlab pe calculatoarele care nu au
instalat programul Matlab.
În tabelul 4.1 sunt prezentate rezultatele experimentale ob ținute în Matlab, prin
clasificarea tuturor celor cincisprezece posibilit ăți de creare a vectorului de tr ăsături. Dupăcum
putem observa, tabelul informeaz ăasupra num ărului de tr ăsături din vectorul de caracteristici
construit conform metodei specificate, timpul de extragere al coeficien ților tuturor imaginilor din
baza de date, num ărul de vecini kal clasificatorului KNNR pentru care s -a obținut acurate țea de
clasificare cea mai mare, acurate țea de clasificare pentru fiecare clas ăde imagini din baza de
date, acurate țea medie a celor patru clase de imagini, timpul necesar clasificatoarelor KNNR și
KNNC săclasifice setul de tes tare constituit din atributele a 20% din imaginile fiec ărei clase
(40 de imagini din fiecare clas ă).
În tabelul 4.2 sunt prezentate aceea și termeni de performan țăa clasificăriiși extragere a
trăsăturilor, cu excep ția timpului de clasificare KNNC, ob ținuți în urma transform ării aplicației
de obținere a celor cincisprezece vectori de atribute și de clasificare a acestora într -o aplicație
executabil ăindependent ăde Matlab. Prin aceast ătransformare s -a încercat îmbun ătățirea
performan țelor de extragere și de clasificare prin îmbun ătățirea timpilor de extragere a
trăsăturilor, respectiv timpilor de clasificare a setului de testare pentru fiecare din cei
cincisprezece vectori de atribute.

33Tabel 4.1 Rezultate ob ținute în Matlab
Nr.
crtCombinația de
MetodeNumăr
trăsăturiTimp extragere
coeficiențik Acuratețe [%] Acuratețea
medie
[%]Timp
clasificare
KNNR
[s]Timp
clasificare
KNNC
[s]135Masini Pietoni Animale Garbage
1 I 78 1 min, 11 sec x 95 90 50 68 75.63 0.05 0.30
2 II 78 1 min, 41 sec x 88 88 60 47 70.63 0.07 0.21
3 III 90 17 min x 97 85 75 80 84.38 0.05 0.45
4 IV 72 2 h, 51 min x 100 97 45 85 81.88 0.04 0.20
5 I II 156 2 min, 51 sec x 97 95 70 72 83.75 0.06 0.62
6 I III 168 18 min x 97 85 75 85 85.63 0.07 0.65
7 I IV 150 2 h, 52 min x 100 97 50 85 83.13 0.06 0.68
8 II III 168 19 min x 97 85 75 82 85 0.07 0.80
9 II IV 150 2 h, 53 min x 100 97 55 90 85.63 0.06 0.73
10 III IV 162 3 h, 9 min x 100 95 78 90 90.63 0.09 0.79
11 I II III 246 20 min x 97 85 75 85 85.63 0.09 1.26
12 I II IV 228 2 h, 54 min x 100 97 60 90 86.88 0.08 0.97
13 I III IV 240 3 h, 10 min x 100 95 78 90 90.63 0.09 1.21
14 II III IV 240 3 h, 10 min x 100 95 78 90 90.63 0.09 1.27
15 I II III IV 318 3 h, 12 min x 100 95 80 90 91.25 0.10 1.30

34Tabel 4.2 Rezultate ob ținute printransformarea aplica ției într -un executabil
Nr.
crtCombinația
de MetodeNumăr
trăsăturiTimp
extragere
coeficiențik Acuratețe [%] Acuratețea
medie
[%]Timp
clasificare
KNNR[s]135 Masini Pietoni Animale Garbage
1 I 78 1 min, 7
secx 95 90 50 68 75.63 0.04
2 II 78 1 min, 34
secx 88 88 60 47 70.63 0.04
3 III 90 16 min x 97 85 75 80 84.38 0.04
4 IV 72 2 h, 51 sec x 100 97 45 85 81.88 0.04
5 I II 156 2 min, 41
secx 97 95 70 72 83.75 0.06
6 I III 168 18 min x 97 85 75 85 85.63 0.06
7 I IV 150 2 h, 52 min x 100 97 50 85 83.13 0.06
8 II III 168 18 min x 97 85 75 82 85 0.06
9 II IV 150 2 h, 52 min x 100 97 55 90 85.63 0.06
10 III IV 162 3 h,8 min x 100 95 78 90 90.63 0.08
11 I II III 246 19 min x 97 85 75 85 85.63 0.09
12 I II IV 228 2 h, 54 min x 100 97 60 90 86.88 0.08
13 I III IV 240 3 h, 9 min x 100 95 78 90 90.63 0.08
14 II III IV 240 3h, 9 min x 100 95 78 90 90.63 0.10
15 I II III IV 318 3 h, 11 min x 100 95 80 90 91.25 0.10

35În figura de mai jos (figura 4.8) se poate observa rata de clasificare a celor patru clase
(masini -în ga lben, pietoni -în roșu, animale -în verde și garbage -în albastru), precum și
acuratețea medie ( cu linie neagr ăîntreruptă)în funcție de num ărul de trăsături al vectorului de
caracteristici.
Figura 4.8 Graficul acurate ții înfuncție de num ărul de trăsături
Figura 4.8 prezint ăacuratețea de clasificare a celor patru clase și acuratețea medie în func ție de
numărul de trăsături al vectorului de caracteristici, fiind realizat ăîn Matlab.
Dupăcum se poate observa în acest ăfigurăclasa cu cea mai bun ăratăde recunoa ștere
este clasa ma șini, urmat ăde clasa pietoni, fapt ce poate fi explicat prin existen ța unui num ăr
suficient de imagini, care s ăpermităclasificatorului o înv ățare eficient ă. În cazul celorlalte dou ă
clase, animal eși garbage, acurate țea de clasificare este mai sc ăzutădatorităvarietății de fundale
ale imaginilor.
5.Concluzii
Pe dura ta realizării acestei lucr ări au fost studiat e diferite metode deja existente de
formare a vectorului de tr ăsături în vederea clasific ării imaginilor .
Din multitudinea de metode studiate (vezi figura 3.3), s -aajuns la schema de formare a
vectorului de caracte ristici prezentat ăîn figura 3.5. În funcție de acurate țea de clasific are,a fost
aleasăcombinațiade metode ce mai bun ăde extragere a tr ăsăturilor din imaginile bazei de date.
Din punct de vedere aplicativ afost dezvoltat ăo interfațăgrafică,care permite
utilizatorului s ăselecteze diferite variant e de formare a vectorului de tr ăsături, precum și
posibilitatea test ării clasificatorului KNN cu alte imagini decât cele din baza de date. Vectorul de
trăsături poate avea, în func ție de metodele alese, o dimensiune minim ăde 72 caracteristici și
maximăde 318 caracteris tici.
Principalul avantaj al aplica ției realizate, în compara ție cu metoda de extragere
caracteristici prop usăîn WND -CHARM (figura 3.3 ) este num ărul mult mai redus de tr ăsături pe
imagine, ceea ce are o influen țăfoarte mare asupra timpului de extragere al coeficien ților tuturor
imaginilor din baza de date, precum și asupra timpului de clasificare.
Astfel, timpul necesar extrager iitrăsăturilor (pentru care se ob ține acurate țea cea mai

36bună)este de 3 ore și 11 minute, în compara ție cu cele 48 de ore ne cesare extrageri i
caracteristicilor cu metoda propus ăîn WND -CHARM. De asemenea, s -aobținut o acuratețe de
clasificare mult mai bun ă, decât dac ăse realiza extragerea caracteristicilor pe baza metodologiei
descrisăîn figura 3.3 (91.25% fa țăde 68%) .
Înceea ce prive ște baza de imagini ,s-aajuns la concluzia c ăaceasta trebuie s ăaibe un
număr mai mare de imagini cel puțin pentru clasele animale și garbage , pentru ca rezultatele
clasificării săfieîmbunătățite.
Acuratețea de clasificare nu creșteliniar odatăcu extragerea mai multor tr ăsături din
imaginile bazei de date (vezi figura 4.8).
Prin extragerea mai multor caracteristici din fiecare imagine se m ărește timpul de
extragere al tr ăsăturilor, precum șitimpul de clasificare. De aceea pentr u a avea o clasificare
într-untimp cât mai redus trebuie săse facăun compromis între dimensiunea vectorului de
trăsăturiși timpul de clasificare.
Prin transformarea aplica ției Matlab într -una executabil ănu se pot ob ține timpi de
execuție mai buni, da r aceasta este folositoare la rularea aplica țieirealizate în Matlab pe
calculatoarele care nu au instalat acest program.
În urma rezultatelor ob ținute, Weka s -a dovedit un program foarte u til în stabilirea
metodelor eficiente de formare a vectorului de t răsături, precum și în verificarea implement ărilor
Matlab a clasificatoarelor KNN (KNNC și KNNR).
Problemele cele mai importante, întâmpinate în realizarea acestei lucr ări au fost:
-construirea unei baze de date care s ăconținăun număr suficient de i magini peclasă
Acuratețea de clasificare a fiec ărei clase dup ăcum se poate observa și în figura 4.8 nu
este aceea șipentru toate clasele și datorităfaptului c ănu a fost realizat ăo bazăde date special
conce putăpentru aceast ălucrare, imaginile car e formeaz ăcele patru clase f ăcândparte din baze
deimagini diferite.
-dimensiunea diferit ăa imaginilor din baza de date
Aceastăproblemăa fost rezolvat ăprin folosirea unor metode de extragere atrăsăturilor
care săaibe ca rezultat acela și număr decaracteristici indiferent de dimensiunea imaginii. Astfel,
dimensiunea vectorului de tr ăsături nu variaz ăde la o imagine la alta, fi ind aceea șipentru toate
imaginile .Aceastăcondițieeste necesarăla clasificarea imaginilor. Extragerea unui num ăr
constant de tr ăsături din fiecare imagine (indiferent de dimensiunea lor) se putea realiza și prin
redimensionarea tuturor imaginilor din baza de date la aceea și dimensiune, dar rezultatele
obținute nu sunt la fel de bune.
Aplicația realizat ăpoate fi utilizatăcu succes la dezvoltarea unor sisteme de recunoa ștere
de obstacole, înt ălnite de o ma șinăpeșosea, sisteme automate de supraveghere a parc ărilor sau
sisteme de utilaje automate în vederea efectu ării unor lucr ări agricole .
Prin schimbarea bazei de imagini cu una constituit ădin imagini medicale, aplica ția poate fi
utilizatăîn domeniul medical pentru detec ția anomaliilor sau procesarea imaginilor biologice.

376. Bibliografie
[1]Smith, J.R., Chang, S.F. , 1996. Local color and texture extraction and spatial query. Proc.
IEEE International Conference on Image Processing, Lausanne, Switzerland, September 1996.
[2]Shen, L., Bai, L., 2006. MutualBoost learning for selecting Gabor features for face
recognition, Pattern Recognition Letters, 27, 1758 –1767 .
[3]Jing, X.Y., Zhang, D., 2004. A Face and Palmprint Recognition Approach Based on
Discriminant DCT Featur e Extraction. IEEE Transactions on Sys tems, Man, and Cybern etics,
34,2405 –2414 .
[4]Pentland, A., Choudh ury, T., 2000. Face recognition for smart environments. Computer, 33,
50–55.
[5]Boland, M.V., Murph y, R.F., 2001. A Neural Network Classifier Capa ble of Recognizing the
Patterns of all Major Subcell ular Structures in Fluorescence Microscope Images of HeLa Cells.
Bioinformatics, 17, 1213 –1223.
[6]Awate, S.P., Tasdize n T., Foster N., Whitaker R.T., 2006. Adaptive Markov modeling for
mutualinformation -based, unsupervised MRI braintissue classificati on. Medical Image Analysis,
10,726–739.
[7]Cocosco, A., Zijd enbos, P., Evans, A.C., 2004. A fully automatic and robust brain MRI tissue
classification method. Medical Image Analysis, 7, 513–527.
[8] Ranzato, M., Tay lor, P.E., House, J.M., Flagan, R.C., LeCun, Y., Perona, P., 2007.
Automatic recognition of biol ogical particles in microscopic images. Pattern Recognition Letters,
28, 31 –39.
[9]http://www.phy.mtu.edu/~lshamir/publications/image_classifier.pdf
[10]http://www.upm.ro/facultati_departamente/stiinte_litere/conferinte/situl_integrare_european
a/Lucrari2/Ioan_Ispas.pdf
[11]http://www.dtic.upf.edu/~xserra/cursos/TDP/referenc ies/Park -DWT.pdf
[12]http://www.mathworks.com
[13]ac.upg -ploiesti.ro/cursuri/is/lab/IS_LUC%203.doc
[14]http://www.wisdom.weizmann.ac.il/~naor/COURSE/fft -lecture.pdf
[15]http://en.wikipedia.org/wiki/Fast_Fourier_transform#Cooley.E2.80.93Tukey_algorithm
[16] http://eivind.imm.dtu.dk/staff/ptoft/Radon/Radon.html
[17]http://imag.pub.ro/ro/cursuri/archive/radon.pdf
[18]http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Radon_transform.
png

38[19]http://www.cs.auckland.ac. nz/compsci708s1c/lectures/Glect –
html/topic4c708FSC.htm#tamura
[20] http://en.wikipedia.org/wiki/Zernike_polynomials
[21]http://www.astronomy.ohio -state.edu/~martini/Astro890/Astro890L6.pdf
[22]http://inf.ucv.ro/~gorunescu/courses/curs/clustering.pdf
[23] Malab R2009b Help
[24]http://people.revoledu.com/kardi/tutorial/KNN/index.html
[25]http://www.autonlab.org/autonweb/14665/version/2/part/5/data/moore –
tutorial.pdf?branch=main&language=en
[26]http://www.mathworks.com/support/tech -notes/1600/1605.html#intro

397. Anexe
7.1 Anexa 1
Codul Matlab al funcției de transformare Wavelet
function [coef_img]=compresie_wavelet(imagine,nivel,tip_transformare)
%imagine= imaginea asupra careia se va aplica transformata wavelet dwt2
%nivel= nivelul de compresie al imaginilor
%tp_transformare= familia de wavelet -uri folosita
fori=1:nivel
% extragem coeficientii aproximati, de pe orizontala, verticala si
% diagonala
[cA1,cH1,cV1,cD1] = dwt2(imagine,tip_transformare);
imagine=cA1;
end;
coef_img=cA1;
return ;
7.2 Anexa 2
Codul Matlab pentru ob ținerea fișierului cu vectorul de tr ăsături
clc
close all
clear all
%fis-fisierul in care va fi salvat vectorul de trasaturi
fis=fopen( 'fisier_caracteristici.txt' ,'w');
fori=1:4
% Lista contine numele imaginilor din baza de date
lista=strcat( 'Lista' ,num2str(i), '.txt');
% functia care realizeaza extragerea trasaturilor pentru fiecare
% clasa pe rand
citesteImaginiLista(lista,fis);
end
fclose all;
7.3 Anexa 3
Codul Matlab al func ției de extragere tr ăsături
function citesteImaginiLista(fisLst,fis)
%fisLst -fisierul txt care contine denumirea imaginilor
%fis -fisierul in care se va scrie vectorul de trasaturi
% preiau nr de imagini in functie de numarul de linii al fisierului Lista
numberOfLines = GiveNbOfLines(fi sLst);
fid_imagesLst=fopen(fisLst);
% punem in variabila dirImagini folderul din care sa citeasca imaginile
nume_lista = { 'Lista1.txt' ,'Lista2.txt' ,'Lista3.txt' ,'Lista4.txt' };
T=strcmp(fisLst, nume_lista);
currentfolder=pwd;
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\persons \'),…
strcat(currentfolder, '\animals \'),…

40strcat(currentfolder, '\garbage \')};
[T,clasa]= sort(T, 'descend' );
clasa=clasa(1);
dirImagini=dirImagini{clasa};
fori = 1:numberOfLines -1
% preiau numele fiecarei imagini din fisierul fid_imagesLst
imgName = numeImagine(fid_imagesLst);
% citesc imaginea si o transform din color in gray
[imagine] = imread(strcat(dirImagini,imgName), 'png');
imagine=rgb2gray(imagine );
imagine = im2double(imagine);
%metoda I de extractie
%aplicare transformata wavelet
caracteristici_wavelet1=compresie_wavelet(imagine,3, 'bior1.3' );
%aplicare first4moments, MultiScaleHistograms, TamuraTextures asupra
%transformatei wavelet a imaginii
first4moments = CombFirst4Moments(caracteristici_wavelet1);
multiscalehist = MultiScaleHistograms(caracteristici_wavelet1);
TamuraFeatures = TamuraTextures(caracteristici_wavelet1);
vect_caracteristici=[first4moments,multiscalehist,TamuraFeatures];
%metoda II de extractie
% aplicare FFT
fftTrans=FourierTransform(imagine);
caracteristici_wavelet_fft=compresie_wavelet(fftTrans(:,:,1),3, 'bior1.3' );
%aplicare first4moments, MultiScaleHistograms, TamuraTextures asupra
%transformatei wavelet a transformat ei fft a imaginii
first4moments = CombFirst4Moments(caracteristici_wavelet_fft);
multiscalehist = MultiScaleHistograms(caracteristici_wavelet_fft);
TamuraFeatures = TamuraTextures(caracteristici_wavelet_fft);
vect_caracteristici=[vect_caracteristici,firs t4moments,multiscalehist, …
TamuraFeatures];
%metoda III de extractie
%aplicare first4moments, MultiScaleHistograms, TamuraTextures si
% RadonTransform asupra imaginii originale
first4moments = CombFirst4Moments(imagine);
multiscalehist= MultiScale Histograms(imagine);
TamuraFeatures = TamuraTextures(imagine);
radonTransStat = RadonTransformStatistics(imagine);
vect_caracteristici=[vect_caracteristici,first4moments,multiscalehist, …
TamuraFeatures,radonTransStat];
% metoda IV de extractie
%aplicare polinoamele lui zernike asupra imaginii originale
zvalues = ZernikePolynomials(imagine);

41vect_caracteristici=[vect_caracteristici,zvalues];
%% salvam rezultatul in fisier
lungime=size(vect_caracteristici,2);
forj=1:lungime
fprintf(fis, '%.3f' , vect_caracteristici(j));
fprintf(fis, '%c',',');
end;
fprintf(fis, '%d%c \n',clasa, ',');
end
fclose(fid_imagesLst);
7.4 Anexa 4
Codul Matlab pentru ob ținerea fișierului cu liniile vectorului de caracteristici permutate
close all
clear all
clc
calea=strcat(pwd, '\fisiere \');
% fisierul in care este salvat vectorul de trasaturi
fisierulmeu=strcat(calea, 'fisier_caracteristici.txt' );
% functia care realizeaza permutarea datelor precum si impartirea lor in
% 80% s i 20% pentru invatare si testare
prelucrareFisierIN(fisierulmeu);
fclose all;
Codul Matlab pentru func țiaprelucrarefisierIN
function prelucrareFisierIN(fisierulmeu)
% fac permutari de linii, pt ca sa nu -i dau posibilitatea
% clasificatorului sa invete inclusiv ordinea obiectelor
%preiau datele din fisier si le transform in 80% pentru invatare si 20 %
%pentru testare
xy=preiaDatelePtPrel(fisierulmeu);
lungime=size(xy);
clasa1=xy(1:lungime(1)/4,:);
clasa2=xy(lungime(1)/4+1:2*lungime(1)/4,:);
clasa3=xy(2* lungime(1)/4+1:3*lungime(1)/4,:);
clasa4=xy(3*lungime(1)/4+1:lungime(1),:);
size1=size(clasa1);
size2=size(clasa2);
size3=size(clasa3);
size4=size(clasa4);
clasa1_invatare=clasa1(1:0.8*size1(1),:);
clasa1_test=clasa1(0.8*size1(1)+1:end,:);
clasa2_invatare= clasa2(1:0.8*size2(1),:);
clasa2_test=clasa2(0.8*size2(1)+1:end,:);
clasa3_invatare=clasa3(1:0.8*size3(1),:);

42clasa3_test=clasa3(0.8*size3(1)+1:end,:);
clasa4_invatare=clasa4(1:0.8*size4(1),:);
clasa4_test=clasa4(0.8*size4(1)+1:end,:);
date_invatare=[clasa1_invatare;clasa2_invatare;clasa3_invatare;clasa4_invatare];
date_testare=[clasa1_test;clasa2_test;clasa3_test;clasa4_test];
%permutare linii
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];
%salvez datele in alt fisier -fis_testare_random1.txt
calea=strcat(pwd, '\fisiere random \');
fid_scriere=fopen(strcat(calea, 'fisier_caracteristici_random.txt' ),'w');
%matricea cu pa rametrii imaginilor cu liniile permutate
%scrierea matrice i in noul fisier -fisier_caracteristici_random1.txt
dim1=size(date);
fork1=1:dim1(1)
fprintf(fid_scriere, '%s',date{k1,1});
fprintf(fid_scriere, '\n');
end
fclose(fid_scriere);
Codul Matlab pentru functia preiaDatelePtPrel
function [xa] = preiaDatelePtPrel(fis)
% functie cu care citesc datele dintr -un fisier .txt, linie cu linie
% ca stringuri
numberOfLines = GiveNbOfLines(fis);
fid_imagesLst_app=fopen(fis);
clear xa;
clear ya;
clear nrul;
nr_instante=((numberOfLines -1));
fori = 1:nr_instante
%preluam fiecare linie ca un string si o salvam intr -o matrice de
%stringuri
tline = fgetl(fid_imagesLst_app);
xa{i,1}=tline;
end
fclose(fid_imagesLst_app);
Codul Matlab pentru func țiapermutareLinii
function [rez] = permutareLinii(matrice)
% face permutarea liniilor matrice i de la intrare; structura lui "matrice"
% ar trebui sa fie : pe linia se gaseste info despre obiectul 1 si tot asa,
% iar pe coloane sunt caracteristicile si clasa obiectelor

43dim=size(matrice);
rez=matrice(randperm(dim(1)),:);
7.5 Anexa 5
Codul Matlab pentru clasificarea KNN
close all
clear all
clc
%fisierul in care salvam rezultatele clasificarii
calea=strcat(pwd, '/rezultate/' );
fis1=fopen(strcat(calea, 'rezultateknn.txt' ),'w');
calea= strcat(pwd, '/fisiere/' );
%fisierul din care preluam vectorul de trasaturi
fisierulmeu=strcat(calea, 'fisier_caracteristici.txt' );
[xy]=preiaDatelePtPrel(fisierulmeu);
[dim1,dim2]=size(x);
%din parametrii tuturor imaginilor 80% le retinem pentru antrenare si 20%
%pentru testare
number = round(8*dim1/10);
%xapp -matricea de antrenare
xapp=x(1:number,1:dim2 -1);
%xtest -matricea de te st
xtest=x(number+1:dim1,1:dim2 -1);
%yapp -vectorul care contine clasele imaginilor de antrenare
yapp=y(1:number);
%ytest -vectorul care contine clasele imaginilor de testare
ytest=y(number+1:dim1);
timp=0;
accuracy=0;
% facem antrenarea si testarea KNN pentru k=1,3 si 5, unde k=numarul de
% vecini
fork=1:2:5
tic
%clasificatorul KNNC
%computedOutput=knnclassify(xtest,xapp,yapp,k);
% clasificatorul KNNR
DS.input=xapp';
DS.output=yapp';
TS.input=xtest';
knnrParam.k=k;
[computedOutput, combinedComputedOutput, nearestIndex, knnrMat] = …
knnr(DS, TS, knnrParam);
%timpul de clasificare
timp=toc;
accuracy=computeAccuracy(ytest,computedOutput')*100;

44perf=0.5*timp+0.5*(1 -accuracy/100);
%scrierea rezultatelor obtinute in fisier
fprintf(fis1, '%d %.2f %.2f %.2f \n',k,timp,accuracy,perf);
% matricea de confuzie
confusion=confusionmatrix(ytest',computedOutput);
% calculul acuratetii de clasificare pentru fiecare clasa
accuracy_cars=confusion(1,1)/40;
accuracy_persons=confusion(2,2)/40;
accuracy_animals=confusion(3,3)/40;
accuracy_garbage=confusion(4,4)/40;
%scrierea rezultatelor obtinute in fisier
fprintf(fis1, '%.2f %.2f %.2f
%.2f \n',accuracy_cars,accuracy_persons,ac curacy_animals,accuracy_garbage);
end;
fclose all;
7.6 Anexa 6
Codul Matlab al aplica ției GUI
function varargout = licentaexe(varargin)
% LICENTAEXE M -file for licentaexe.fig
% LICENTAEXE, by itself, creates a new LICENTAEXE or raises the existing
% singleton*.
%
% H = LICENTAEXE returns the handle to a new LICENTAEXE or the handle to
% the existing singleton*.
%
% LICENTAEXE('CALLBACK',hObject,eventData,handles,…) calls the local
% function named CALLBACK in LICE NTAEXE.M with the given input arguments.
%
% LICENTAEXE('Property','Value',…) creates a new LICENTAEXE or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before licentaexe_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to licentaexe_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help licentaexe
% Last Modified by GUIDE v2.5 03 -Jun-2010 12:06:20
% Begin initialization code -DO NOT EDIT
gui_Singleton = 1;
gui_State = struct( 'gui_Name' , mfilename, …
'gui_Singleton' , gui_Singleton, …
'gui_OpeningFcn' , @licentaexe_OpeningFcn, …
'gui_OutputFcn' , @licentaexe_OutputFcn, …

45'gui_LayoutFcn' , [] , …
'gui_Callback' , []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
ifnargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfc n(gui_State, varargin{:});
end
% End initialization code -DO NOT EDIT
%–Executes just before licentaexe is made visible.
function licentaexe_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
%hObject handle to figure
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to licentaexe (see VARARGIN)
% afisarea imaginii NO_IMAGE de fiecare data cand aplicatia este rulata
[imagine_init,map]=imread( 'no_image.jpg' );
imshow(imagine_init,map, 'parent' ,handles.axes1);
% Choose default command line output for licentaexe
handles.output = hObject;
% Update handles structure
guidata(hObject, h andles);
% UIWAIT makes licentaexe wait for user response (see UIRESUME)
% uiwait(handles.figure1);
%–Outputs from this function are returned to the command line.
function varargout = licentaexe_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output fr om handles structure
varargout{1} = handles.output;
%–Executes on button press in radiobutton3 -masini
function radiobutton3_Callback(hObject, eventdata, handles)
% hObject handle to radiobutton3 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton3

46%–Executes on button press in radiobutton4 -pietoni
function radiobutton4_Callback(h Object, eventdata, handles)
% hObject handle to radiobutton4 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle sta te of radiobutton4
%–Executes on button press in radiobutton5 -animale
function radiobutton5_Callback(hObject, eventdata, handles)
% hObject handle to radiobutton5 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton5
%–Executes on button press in radiobutton6 -garbage
function radiobutton6_Callback(hObject, eventdata, handles)
%hObject handle to radiobutton6 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton6
funct ionedit1_Callback(hObject, eventdata, handles)
%preluarea procentului de invatare si testare
procent_invatare=str2double(get(handles.edit1, 'String' ));
if(isnan(procent_invatare)||(procent_invatare<=0)||procent_invatare>100)
errordlg( 'Introduceti un n umar mai mic sau egal cu 100' ,…
'Error' );
elseprocent_testare=100 -procent_invatare;
set(handles.edit2, 'String' ,num2str(procent_testare));
end
% hObject handle to edit1 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
%–Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)

47% hObject handle to edit1 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user dat a (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
%–Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
function edit3_Callback(hObject, e ventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as tex t
% str2double(get(hObject,'String')) returns contents of edit3 as a double
%–Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
%eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.

48ifispc && isequ al(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
%–Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close all
function edit4_Callback(hObject, eventdata, handles)
% preluarea numarului de vecini pentru care sa se clasifice
numar_vecini=str2double(get(handles.edit4, 'String' ));
if(isnan(numar_vecini)||(numar_vecini<=0))
errordlg( 'Introduceti un numar intreg de preferabil impar' ,…
'Error' );
end;
% hObject handl e to edit4 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit4 as text
% str2double(get(hObject,'St ring')) returns contents of edit4 as a double
%–Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
%–Executes on button press in radiobutton8 -metoda I
function radiobutton8_Callback(hObject, eventdata, handles)
dim_vect=str2double(get(handles.edit8, 'String' ));
handles.dim_vect=dim_vect;
% vedem daca metoda I va fi folosita
metoda1=get(handles.radiobutton8, 'Value' );
%calculam si afisam numarul de trasaturi care va compune vectorul de
%caracteristici
if(metoda1==0)

49dim_vect=handles.dim_vect;
dim_vect=dim _vect -78;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
else
dim_vect=handles.dim_vect;
dim_vect=dim_vect+78;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
end
% hObject handle to radiobutton8 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton8
%–Executes on button press in radiobutton9 -metoda II
function radiobutton9_Callback(hObject, eventdata, handles)
% vedem daca metoda II va fi folosita
dim_vect=str2double(get(handles.edit8, 'String' ));
handles.dim_vect=dim_vect;
metoda2=get(handles.radiobutton9, 'Valu e');
%calculam si afisam numarul de trasaturi care va compune vectorul de
%caracteristici
if(metoda2==0)
dim_vect=handles.dim_vect;
dim_vect=dim_vect -78;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
else
dim_vect=handles.dim_vect;
dim_vect=dim_vect+78;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
end
% hObject handle to radiobutton9 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
%handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton9
%–Executes on button press in radiobutton10 -metoda III
function radiobutton10_Callback(hObject, eventdata, handles)
% vedem daca metoda II va fi folosita
dim_vect=str2double(get(handles.edit8, 'String' ));
handles.dim_vect=dim_vect;
metoda3=get(handles.radiobutton10, 'Value' );
%calculam si afisam numarul de trasaturi care va compune vectorul de

50%caracteristici
if(metoda 3==0)
dim_vect=handles.dim_vect;
dim_vect=dim_vect -90;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
else
dim_vect=handles.dim_vect;
dim_vect=dim_vect+90;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
end
% hObject handle to radiobutton10 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,' Value') returns toggle state of radiobutton10
%–Executes on button press in radiobutton11 -metoda IV
function radiobutton11_Callback(hObject, eventdata, handles)
% vedem daca metoda II va fi folosita
dim_vect=str2double(get(handles.edit8, 'String' ));
handles.dim_vect=dim_vect;
metoda4=get(handles.radiobutton11, 'Value' );
%calculam si afisam numarul de trasaturi care va compune vectorul de
%caracteristici
if(metoda4==0)
dim_vect=handles.dim_vect;
dim_vect=dim_vect -72;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
else
dim_vect=handles.dim_vect;
dim_vect=dim_vect+72;
handles.dim_vect=dim_vect;
set(handles.edit8, 'String' ,num2str(dim_vect));
end
% hObject handle to radiobutton11 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton11
%–Executes on button p ress in pushbutton2 -antrenare si testare KNN
function pushbutton2_Callback(hObject, eventdata, handles)
% toate butoanele disable
disableButtons(handles);

51% preluarea datelor din fisierul cu vectorul de trasaturi obtinut online
fisier_carac=strcat(pwd, '\fisier_caracteristici.txt' );
fid_scriere=fopen(strcat(pwd, '\fisier_caracteristici_random.txt' ),'w');
xy = preiaDatelePtrandomizare(fisier_carac);
lungime=size(xy);
% preia valoarea pentru procentul de invatare
procent_invatare=str2double(get(handles.edit1, 'String' ))/100;
% impartirea fiecarei clase in 80% pentru invatare si 20% pentru testare
% in functie de numarul de clase
if(lungime(1)==400)
clasa1=xy(1:lungime(1)/2,:);
clasa2=xy(lungime(1)/2+1:2*lungime(1)/2,:);
size1=size(clasa1);
size2=size(clasa2);
clasa1_invatare=clasa1(1:round(procent_invatare*size1(1)),:);
clasa1_test=clasa1(round(procent_invatare*size1(1))+1:end,:);
clasa2_invatare=clasa2(1:round(procent_invatare*size2(1)),:);
clasa2_test=clasa2(round(procent_invatare*size2(1))+1:end,:);
date_invatare=[clasa1_invatare;clasa2_invatare];
date_testare=[clasa1_test;clasa2_test];
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];
elseif (lungime(1)==600)
clasa1=xy(1:lungime(1)/3,:);
clasa2=xy(lungime(1)/3+1:2*lungime(1)/3,:);
clasa3=xy(2*lungime(1)/3+1:3*lungime(1)/3,:);
size1=size(clasa1);
size2=size(clasa2);
size3=size(clasa3);
clasa1_invatare=clasa1(1:round(procent_invatare*size1(1)),:);
clasa1_test=clasa1(round(procent_invatare*size1(1))+1:end,:);
clasa2_invatare=clasa2(1:round(procent_invatare*size2(1)),:);
clasa2_test=clasa2(round(procent_invatare*size2(1))+1:end,:);
clasa3_ invatare=clasa3(1:round(procent_invatare*size3(1)),:);
clasa3_test=clasa3(round(procent_invatare*size3(1))+1:end,:);
date_invatare=[clasa1_invatare;clasa2_invatare;clasa3_invatare];
date_testare=[clasa1_test;clasa2_test;clasa3_test];
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];

52elseif (lungime(1)==800)
clasa1=xy(1:lungime(1)/4,:);
clasa2=xy(lungime(1)/4+1:2*lungime(1)/4,:);
clasa3=xy(2*lungime(1)/4+1:3* lungime(1)/4,:);
clasa4=xy(3*lungime(1)/4+1:lungime(1),:);
size1=size(clasa1);
size2=size(clasa2);
size3=size(clasa3);
size4=size(clasa4);
clasa1_invatare=clasa1(1:round(procent_invatare*size1(1)),:);
clasa1_test=clasa1(round(procent_invatare*size1(1))+1 :end,:);
clasa2_invatare=clasa2(1:round(procent_invatare*size2(1)),:);
clasa2_test=clasa2(round(procent_invatare*size2(1))+1:end,:);
clasa3_invatare=clasa3(1:round(procent_invatare*size3(1)),:);
clasa3_test=clasa3(round(procent_invatare*size3(1))+1:end,:);
clasa4_invatare=clasa4(1:round(procent_invatare*size4(1)),:);
clasa4_test=clasa4(round(procent_invatare*size4(1))+1:end,:);
date_invatare=[clasa1_invatare;clasa2_invatare;clasa3_invatare;clasa4_invatare];
date_testare=[clasa1_test;clasa2_test;clasa3_test;clasa4_test];
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];
end;
% scrierea datelor in fisierul random
dim1 =size(date);
fork1=1:dim1(1)
fprintf(fid_scriere, '%s',date{k1,1});
fprintf(fid_scriere, '\n');
end
% preluarea datelor din fisierul random pentru clasificare KNN
[x y]=preiaDatelePtPrel(strcat(pwd, '\fisier_caracteristici_random.txt' ));
[dim1,dim2]=size(x);
number = round(procent_invatare*dim1);
%xapp -matricea de antrenare
xapp=x(1:number,1:dim2 -1);
%xtest -matricea de test
xtest=x(number+1:dim1,1:dim2 -1);
%yapp -vectorul care contine clasele imaginilor de antrenare
yapp=y(1:number);
%ytest -vectorul care contine clasele imaginilor de testare
ytest=y(number+1:dim1);
%preluare valoare numar vecini
k=str2double(get(handles.edit4, 'String' ));

53tic
%clasificare KNNR
DS.input=xapp';
DS.output=yapp';
TS.input=xtest';
knnrParam.k=k;
try
[computedOutput] =knnr(DS, TS, knnrParam);
catch error
disp(error);
errordlg( 'Numar vecini prea mare sau prea mic setul de date de antrenare' ,…
'Error' );
enableButtons2(handles);
end
% timpul de clasificare KNNR
timp=toc;
% calculare performante
accuracy=computeAccuracy(ytest,compute dOutput)*100;
perf=timp*(1 -accuracy/100);
% afisarea rezultatelor obtinute in EDITBOX -uri
set(handles.edit5, 'String' ,num2str(accuracy));
set(handles.edit6, 'String' ,num2str(timp));
set(handles.edit7, 'String' ,num2str(perf));
fclose all;
enableButtons2(handles);
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit5_Callback(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') return s contents of edit5 as text
% str2double(get(hObject,'String')) returns contents of edit5 as a double
%–Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.

54% See ISPC and COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
function edit6_Callback(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
%eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit6 as text
% str2double(get(hObject,'String')) returns contents of edit6 as a double
%–Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgro undColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
function edit7_Callback(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit7 as text
% str2double(get(hObject,'String')) returns contents of edit7 as a double
%–Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit con trols usually have a white background on Windows.
% See ISPC and COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end

55function edit8_Callback(hObject, eventdata, handles)
% hObject handle to edit8 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit8 as text
% str2double(get(hObject,'String')) returns contents of edit8 as a double
%–Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
% hObject h andle to edit8 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC an d COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
%–Executes during object creation, after setting all properties.
function radiobutton8_CreateFcn(hObject, eventdata, handles)
% hObject handle to radiobutton8 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
%–Executes during object deletion, before destroying properties.
function uipanel12_DeleteFcn(hObject, eventdata, handles)
% hObject handle to uipanel12 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%–Executes during object deletion, before destroying properties.
function radiobutton8_DeleteFcn(hObject, eventdata, handles)
% hObject handle to radiobutton8 (see GCBO)
% eventdata reserved -to be defi ned in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%–Executes on button press in pushbutton3 -creare vector trasaturi
function pushbutton3_Callback(hObject, eventdata, handles)
disableButtons(handles );
% numarul de clase utilizate pentru crearea vectorului de caracteristici
clasa1=get(handles.radiobutton3, 'Value' );
clasa2=get(handles.radiobutton4, 'Value' );
clasa3=get(handles.radiobutton5, 'Value' );
clasa4=get(handles.radiobutton6, 'Value' );

56%verificam sa nu avem selesctata numai o clasa
if(((clasa1) && ~(clasa2) && ~(clasa3) && ~(clasa4))||((clasa2) && …
~(clasa1) && ~(clasa3) && ~(clasa4))||((clasa3) && ~(clasa1) …
&& ~(clasa2) && ~(clasa4))||((clasa4) && ~(clasa1) && ~ (clasa2) …
&& ~(clasa3)))
errordlg( 'Trebuie sa selectati cel putin doua clase de imagini' ,…
'Error' );
enableButtons1(handles);
end;
currentfolder=pwd;
% in functie de clasele selectate preluam imaginile din directorul
% corespunzator
if((clasa1)&&(clasa2)&&(~(clasa3))&&(~(clasa4)))
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\persons \')};
clasa=[1,2];
elseif ((clasa1)&&(clasa3)&&(~(clasa2))&&(~(clasa4)))
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\animals \')};
clasa=[1,3];
elseif ((clasa1)&&(clasa4)&&(~(clasa2))&&(~(clasa3)))
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\garbage \')};
clasa=[1,4];
elseif ((clasa1)&&(clasa2)&&(clasa3)&&(~(clasa4)))
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\persons \'),strcat(currentfolder, '\animals \')};
clasa=[1,2,3];
elseif ((clasa1)&&(clasa2 )&&(clasa4)&&(~(clasa3)))
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\persons \'),strcat(currentfolder, '\garbage \')};
clasa=[1,2,4];
elseif ((clasa1)&&(clasa3)&&(clasa4)&&(~(clasa2)))
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\animals \'),strcat(currentfolder, '\garbage \')};
clasa=[1,3,4];
elseif ((clasa1)&&(clasa2)&&(clasa3)&&(clasa4))
dirImagini={strcat(currentfolder, '\cars\'),…
strcat(currentfolder, '\persons \'),…
strcat(currentfolder, '\animals \'),…
strcat(currentfolder, '\garbage \')};
clasa=[1,2,3,4];
elseif ((clasa2)&&(clasa3)&&(~(clasa1))&&(~(clasa4)))
dirImagini={strcat(currentfolder, '\persons \'),…
strcat(currentfolder, '\animals \')};
clasa=[2,3];
elseif ((clasa2)&&(clasa4)&&(~(clasa1))&&(~(clasa3)))
dirImagini={strcat(currentfolder, '\persons \'),…
strcat(currentfolder, '\garbage \')};
clasa=[2,4];
elseif ((clasa2) &&(clasa3)&&(clasa4)&&(~(clasa1)))
dirImagini={strcat(currentfolder, '\persons \'),…

57strcat(currentfolder, '\animals \'),strcat(currentfolder, '\garbage \')};
clasa=[2,3,4];
elseif ((clasa3)&&(clasa4)&&(~(clasa1))&&(~(clasa2)))
dirImagini={ strcat(currentfolder, '\animals \'),…
strcat(currentfolder, '\garbage \')};
clasa=[3,4];
end;
% metodele folosite la formarea vectorului de trasaturi
met1=get(handles.radiobutton8, 'Value' );
met2=get(handles.radiobutton9, 'Value' );
met3=get(handles.radiobutton10, 'Value' );
met4=get(handles.radiobutton11, 'Value' );
metoda=[met1 met2 met3 met4];
handles.metoda=metoda;
numar_clase=size(clasa);
fis=fopen( 'fisier_caracteristici.txt' ,'w');
tic
% extragerea trasaturilor din imaginile claselor selectate
fori=1:numar_clase(2)
numberOfLines = GiveNbOfLines(strcat( 'Lista.txt' ));
fid_imagesLst=fopen(strcat( 'Lista.txt' ));
forj=1:numberOfLines -1
imgName = numeImagine(fid_imagesLst);
% citesc imaginea, o transformam din color i n gray
[imagine] = imread(strcat(dirImagini{i},imgName), 'png');
imagine = im2double(imagine);
imagine=rgb2gray(imagine);
% aplicarea metodelor selectate asupra imaginilor din clasele selectate
vect_caract=extractie_vect_trasaturi(met1,me t2,met3,met4,imagine);
clear imagine ;
% salvam rezultatul in fisier
lungime=size(vect_caract,2);
fork=1:lungime
fprintf(fis, '%.3f,' , vect_caract(k));
end;
fprintf(fis, '%d%c \n',clasa(i), ',');
end;
progressbar(i/numar_clase(2));
end;
% timpul de extragere a caracteristicilor
timp=toc;
timestr = sec2timestr(timp);
% afisare timp
set(handles.edit9, 'String' ,timestr);
enableButtons2(handles);
set(handles.radiobutton12, 'Enable' ,'on');
set(handles.radiobut ton13, 'Enable' ,'on');

58set(handles.pushbutton2, 'Enable' ,'on');
handles.output=hObject;
guidata(hObject, handles);
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit9_Callback(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (s ee GUIDATA)
% Hints: get(hObject,'String') returns contents of edit9 as text
% str2double(get(hObject,'String')) returns contents of edit9 as a double
%–Executes during object creation, after setting all properties.
function edit9_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles empty -handles not created until after all CreateFcns called
% Hint: edit controls usu ally have a white background on Windows.
% See ISPC and COMPUTER.
ifispc && isequal(get(hObject, 'BackgroundColor' ), get(0, 'defaultUicontrolBackgroundColor' ))
set(hObject, 'BackgroundColor' ,'white' );
end
function disableButtons(handles)
%change the mouse cursor to an hourglass
set(handles.figure1, 'Pointer' ,'watch' );
%disable all the buttons so they cannot be pressed
set(handles.edit1, 'Enable' ,'off');
set(handles.edit4, 'Enable' ,'off');
set(handles.pushbutton1, 'Enable' ,'off');
set(handles .pushbutton2, 'Enable' ,'off');
set(handles.pushbutton3, 'Enable' ,'off');
set(handles.radiobutton3, 'Enable' ,'off');
set(handles.radiobutton4, 'Enable' ,'off');
set(handles.radiobutton5, 'Enable' ,'off');
set(handles.radiobutton6, 'Enable' ,'off');
set(handles.radiobutton8, 'Enable' ,'off');
set(handles.radiobutton9, 'Enable' ,'off');
set(handles.radiobutton10, 'Enable' ,'off');
set(handles.radiobutton11, 'Enable' ,'off');
function enableButtons1(handles)

59%change the mouse cursor to an arrow
set(handles.figure1, 'Pointer' ,'arrow' );
%enable all the buttons so they can be pressed
% set(handles.edit1,'Enable','on');
% set(handles.edit4,'Enable','on');
set(handles.pushbutton1, 'Enable' ,'on');
set(handles.pushbutton2, 'Enable' ,'on');
set(handles.pus hbutton3, 'Enable' ,'on');
set(handles.radiobutton3, 'Enable' ,'on');
set(handles.radiobutton4, 'Enable' ,'on');
set(handles.radiobutton5, 'Enable' ,'on');
set(handles.radiobutton6, 'Enable' ,'on');
set(handles.radiobutton8, 'Enable' ,'on');
set(handles.radiobutton9, 'Enable' ,'on');
set(handles.radiobutton10, 'Enable' ,'on');
set(handles.radiobutton11, 'Enable' ,'on');
function enableButtons2(handles)
%change the mouse cursor to an arrow
set(handles.figure1, 'Pointer' ,'arrow' );
%enable all the buttons so they can be pressed
set(handles.edit1, 'Enable' ,'on');
set(handles.edit4, 'Enable' ,'on');
set(handles.pushbutton1, 'Enable' ,'on');
set(handles.pushbutton2, 'Enable' ,'on');
set(handles.pushbutton3, 'Enable' ,'on');
set(handles.radiobutton3, 'Enable' ,'on');
set(handles.radiobutton4, 'Enable' ,'on');
set(handles.radiobutton5, 'Enable' ,'on');
set(handles.radiobutton6, 'Enable' ,'on');
set(handles.radiobutton8, 'Enable' ,'on');
set(handles.radiobutton9, 'Enable' ,'on');
set(handles.radiobutton10, 'Enable' ,'on');
set(handl es.radiobutton11, 'Enable' ,'on');
%–Executes on button press in pushbutton4 -preia imagine pentru
% clasificare
function pushbutton4_Callback(hObject, eventdata, handles)
% preluare imagine noua pentru clasificarea ei pe baza fisierului implicit
%sau obtinut online
cla(handles.axes1, 'reset' );
try
[imagine_init,map]=imread( 'no_image.jpg' );
imshow(imagine_init,map, 'parent' ,handles.axes1);
[filename, pathname] = uigetfile({ '*.png' ;'*.jpg' ;'*.bmp' ;'*.*'},'Pick an Image File' );
S =imread([pathname,filename]);
imshow(S,[0 255]);
handles.S = S;
catch error

60disp(error);
selection=questdlg( 'Nu a fost selectata nici o imagine.Stop proces?' ,…
'Stop process' ,…
'Yes' ,'No','Yes' );
switch selection,
case 'Yes'
[imagine_init,map]=imread( 'no_image.jpg' );
imshow(imagine_init,map, 'parent' ,handles.axes1);
set(handles.pushbutton5, 'Enable' ,'off');
return
case 'No'
pushbutton4_Callback(hObject, eventdata, hand les);
return
end;
set(handles.pushbutton5, 'Enable' ,'on');
end;
set(handles.pushbutton5, 'Enable' ,'on');
handles.output=hObject;
guidata(hObject, handles);
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%–Executes on button press in pushbutton5 -clasifica imagine
function pushbutton5_Callback(hObject, eventdata, handles)
S=handles.S;
S=im2doubl e(S);
S=rgb2gray(S);
% fisier online sau implicit?
stare12=get(handles.radiobutton12, 'Value' );
stare13=get(handles.radiobutton13, 'Value' );
% in functie de optiunea selectata extrage caracteristicile de pe noua
% imagine si o clasifica
if(stare12)
tic
% ex tragere trasaturi
vect_caracteristici=extractie_vect_trasaturi(1,0,1,1,S);
timp1=toc;
set(handles.text41, 'String' ,strcat(num2str(timp1), ' s'));
%preia datele din fisierul implicit
[x y]=preiaDatelePtPrel(strcat(pwd, …
'\fisier_caracteristici_random_implict.txt' ));
tic
% computedOutput=knnclassify(double(vect_caracteristici),xapp,yapp,1);
dim1=size(x);
x=x(:,1:dim1(2) -1);
% clasificare KNNR

61DS.input=x';
DS.output=y';
TS.input=double(vect_caracteristici)';
knnrParam.k=1;
[computedOutput] =knnr(DS, TS, knnrParam);
% timp clasificare
timp2=toc;
% afisarea rezultatelor obtinute -clasa, timp extractie trasaturi,
% timp clasificare
set(handles.text42, 'String' ,strcat(num2str(timp2), ' s'));
if(computedOutput==1)
clasa= 'Masini' ;
elseif (computedOutput==2)
clasa= 'Pietoni' ;
elseif (computedOutput==3)
clasa= 'Animale' ;
elseif (computedOutput==4)
clasa= 'Garbage' ;
end;
set(handles.text43, 'String' ,clasa);
%
elseif (stare13)
tic
% extragerea trasaturilor noii imagini prin metodele selectate pentru
% formarea fisierului online
metoda=handles.metoda;
vect_caracteristici=extractie_vect_trasaturi(metoda(1),metoda(2), …
metoda(3),metoda(4),S);
% timp extractie trasaturi
timp1=toc;
set(handles.text41, 'String' ,strcat(num2str(timp1), ' s'));
% preia datele din fisierul obtinut online p entru clasificare
[x y]=preiaDatelePtPrel(strcat(pwd, '\fisier_caracteristici_random.txt' ));
tic
% computedOutput=knnclassify(double(vect_caracteristici),xapp,yapp,1);
dim1=size(x);
x=x(:,1:dim1(2) -1);
% clasificare KNNR
DS.input=x';
DS.output=y';
TS.input=double(vect_caracteristici)';
knnrParam.k=1;
[computedOutput] =knnr(DS, TS, knnrParam);
% timp clasificare KNNR
timp2=toc;
% afisare timp clasificare in EDITBOX -ul afere nt
set(handles.text42, 'String' ,strcat(num2str(timp2), ' s'));
% stabilirea clasei din care face parte imaginea de test
if(computedOutput==1)
clasa= 'Masini' ;
elseif (computedOutput==2)
clasa= 'Pietoni' ;

62elseif (computedOutput= =3)
clasa= 'Animale' ;
elseif (computedOutput==4)
clasa= 'Garbage' ;
end;
set(handles.text43, 'String' ,clasa);
end;
guidata(hObject, handles);
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%–Executes on button press in radiobutton12 -fisier implicit
function radiobutton12_Callback(hObject, eventdata, handles)
%setarea starilor ridiobutoanelor 12 si 13
stare13=get(handles.radiobutton13, 'Value' );
stare12=get(handles.radiobutton12, 'Value' );
if(stare12)
set(handles.radiobutton13, 'Value' ,0);
elseif (stare13)
set(handles.radiobutton12, 'Value' ,0);
elseif (~(stare12))
set(handles.radiobutton13, 'Value' ,1);
end;
% hObject handle to radiobutton12 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton12
%–Executes on button press in radiobutton13 -fisier obtinut online
function radiobutton13_Callback(hObject, eventdata, handles)
%setarea starilor ridiobutoanelor 12 si 13
stare13=get(handl es.radiobutton13, 'Value' );
stare12=get(handles.radiobutton12, 'Value' );
if(stare13)
set(handles.radiobutton12, 'Value' ,0);
elseif (stare12)
set(handles.radiobutton13, 'Value' ,0);
elseif (~(stare13))
set(handles.radiobutton12, 'Value' ,1);
end;
% hObject handle to radiobutton13 (see GCBO)
% eventdata reserved -to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

63% Hint: get(hObject,'Value') returns toggle state of radiobutton 13
Codul Matlab pentru metodele de extragere folosite în aplica ția GUI
function [vect_caracteristici1]=metoda1(imagine)
vect_wavelet=compresie_wavelet(imagine,3, 'bior1.3' );
% metoda I
% aplicare CombFirst4Moments, MultiscaleHistograms, TamuraTextures
% asupra transformatei wavelet a imaginii
first4moments = CombFirst4Moments(vect_wavelet);
multiscalehist = MultiScaleHistograms(vect_wavelet);
TamuraFeatures = TamuraTextures(vect_wavelet);
vect_caracteristici1=[first4moments,multiscalehist, …
Tamura Features];
clear first4moments ;
clear multiscalehist ;
clear TamuraFeatures ;
function [vect_caracteristici2]=metoda2(imagine)
% aplicare fft asupra imaginii originale
% metoda II
fftTrans=FourierTransform(imagine);
% % aplicare CombFirst4Moments, Multisca leHistograms, TamuraTextures
% % asupra transformatei wavelet a transformatei FFT
vect_wavelet=compresie_wavelet(fftTrans(:,:,1),3, 'bior1.3' );
first4moments = CombFirst4Moments(vect_wavelet);
multiscalehist = MultiScaleHistograms(vect_wavelet);
TamuraFeatu res = TamuraTextures(vect_wavelet);
vect_caracteristici2=[first4moments,multiscalehist, …
TamuraFeatures];
clear first4moments ;
clear multiscalehist ;
clear TamuraFeatures ;
function [vect_caracteristici3]=metoda3(imagine)
% % metoda III
% % aplicate CombFirst4Moments, MultiscaleHistograms, TamuraTextures si
% % transformata Radon asupra imaginii originale
first4moments = CombFirst4Moments(imagine);
multiscalehist = MultiScaleHistograms(imagine);
TamuraFeatures = TamuraTextures(imagine);
radonTrans = RadonTransformStatistics(imagine);
vect_caracteristici3=[first4moments,multiscalehist, …
TamuraFeatures,radonTrans];
clear first4moments ;
clear multiscalehist ;
clear TamuraFeatures ;
clear radonTrans ;

64function [vect_caracteristici4]=metoda4(imagine)
% metoda IV
% % aplicare Zernike polinomials asupra imaginii originale
zvalues = ZernikePolynomials(imagine)*1000;
vect_caracteristici4=zvalues;
clear zvalues ;
Codul Matlab pentru extrac ția trăsăturilor din fiecare imagine în func ție de metodele alese în
aplicația GUI
function [vect_caract]= …
extractie_vect_trasaturi(met1,met2,met3,met4,imagine)
% met1 -0 1 daca metoda I este folosita pentru formarea vectorului de
% trasaturi
% met2 -0 1 daca metoda II este folosita pentru formarea vectorului de
% trasaturi
% met3 -0 1 daca metoda III este folosita pentru formarea vectorului de
% trasaturi
% met4 -0 1 daca metoda IV este folosita pentru formarea vectorului de
% trasaturi
% vect_caract -vectorul de caracteristici obtinut in urma plicarii
%metodelor de extractie asupra imainii
if((met1)&&(~(met2))&&(~(met3))&&(~(met4)))
vect_caract=metoda1(imagine);
elseif ((met2)&&(~(met1))&&(~(met3))&&(~(met4)))
vect_caract=metoda2(imagine);
elseif ((met3)&&(~(met 1))&&(~(met2))&&(~(met4)))
vect_caract=metoda3(imagine);
elseif ((met4)&&(~(met1))&&(~(met2))&&(~(met3)))
vect_caract=metoda4(imagine);
elseif ((met1)&&(met2)&&(~(met3))&&(~(met4)))
vect_caract=[metoda1(imagine) ,metoda2(imagine)];
elseif ((met1)&&(met3)&&(~(met2))&&(~(met4)))
vect_caract=[metoda1(imagine),metoda2(imagine)];
elseif ((met1)&&(met4)&&(~(met2))&&(~(met3)))
vect_caract=[metoda1(imagine),metoda4(imagine)];
elseif ((met2)&&(met3)&&(~(met1))&&(~(met4)))
vect_caract=[metoda2(imagine),metoda3(imagine)];
elseif ((met2)&&(met4)&&(~(met1))&&(~(met3)))
vect_caract=[metoda2(imagine),metoda4(imagine)];
elseif ((met3)&& (met4)&&(~(met1))&&(~(met2)))

65vect_caract=[metoda3(imagine),metoda4(imagine)];
elseif ((met1)&&(met2)&&(met3))
vect_caract=[metoda1(imagine),metoda2(imagine), …
metoda3(imagine)];
elseif ((met1)&&(met2)&&(m et4)&&(~(met3)))
vect_caract=[metoda1(imagine),metoda2(imagine), …
metoda4(imagine)];
elseif ((met1)&&(met3)&&(met4)&&(~(met2)))
vect_caract=[metoda1(imagine),metoda3(imagine), …
metoda4(imagine)];
elseif ((met2)&&(met3)&&(met4)&&(~(met1)))
vect_caract=[metoda2(imagine),metoda3(imagine), …
metoda4(imagine)];
elseif ((met1)&&(met2)&&(met3)&&(met4))
vect_caract=[metoda1(imagine),metoda2(imagine), …
metoda3(imagine),metoda4(imagine)];
end;

Similar Posts