Sunteți pe pagina 1din 74

UNIVERSITATEA TEHNICA DIN CLUJ-NAPOCA FACULTATEA DE ELECTRONICA, TELECOMUNICATII SI TEHNOLOGIA INFORMATIEI Specializarea Tehnologii i sisteme de Telecomunicaii

Contribuii la analiza i implementarea unor metode de extragere a caracteristicilor din imagini n vederea clasificrii lor
Lucrare de licen

PRESEDINTE COMISIE,
Prof. dr. ing Monica Borda

DECAN, Prof.dr.ing. Marina OPA

CONDUCATOR, Asist. ing. Anca Aptean 2010

ABSOLVENT, Alexandru Mihu

UNIVERSITATEA TEHNICA DIN CLUJ-NAPOCA FACULTATEA DE ELECTRONICA, TELECOMUNICATII SI TEHNOLOGIA INFORMATIEI CATEDRA DE COMUNICAII

Titlul temei: Contribuii la analiza i implementarea unor metode de extragere a caracteristicilor din imagini n vederea clasificrii lor Enunul lucrarii de licen:
Proiectul trebuie s conin metodologia de alegere a caracteristicilor extrase din imagini, implementarea unei aplicaii Matlab de extragere a trsturilor din imaginile bazei de date pentru clasificarea acestora. Obiectivele sunt documentarea metodelor de extragere trsturi deja existente, clasificarea imaginilor pe baza trsturilor extrase i realizarea practic a unei aplicaii de extragere trsturi i clasificare imagini.

Locul de executie: Laborator 211 Data emiterii temei: 20 februarie 2009 Termen de predare: 24 iunie 2010

EF CATEDR, Prof.dr.ing. Virgil DOBROTA CONDUCATOR, Asist.ing. Anca Aptean

ABSOLVENT, Alexandru Mihu

FACULTATEA DE ELECTRONIC, TELECOMUNICAII I TEHNOLOGIA INFORMAIEI

Declaraia autorului

Subsemnatul declar prin prezenta c ideile, partea de implementare i experimental, rezultatele, analizele i concluziile cuprinse n aceast lucrare constituie efortul meu propriu, mai puin acele elemente ce nu-mi aparin, pe care le indic i le recunosc ca atare. Declar de asemenea, c dup tiina mea, lucrarea n aceast form este original i nu a mai fost niciodat prezentat sau depus n alte locuri sau altor instituii dect cele indicate n mod expres de mine. n calitate de autor, cedez toate drepturile de utilizare i modificare a lucrrii de licen ctre Universitatea Tehnic din Cluj-Napoca.

Cluj-Napoca, 24 iunie 2010

ABSOLVENT, Alexandru Mihu

1. absolvent Mihu Alexandru Ioan 2. asist. ing. Aptean Anca

SINTEZA LUCRARII DE LICEN


Contribuii la analiza i implementarea unor metode de extragere a caracteristicilor (trsturilor) din imagini n vederea clasificrii lor Imaginile digitale, costul redus de realizare i stocare al acestora, precum i utilizarea lor n tot mai multe domenii ale tiinei i ingineriei, au introdus o cretere a cererii de aplicaii de analiz i clasificare a imaginilor cu o precizie ct mai mare i ntr-un timp ct de poate de scurt. Lucrarea urmrete extracia de trsturi din imaginile ce compun baza de date pentru a obine o acuratee de clasificare (KNN) ct mai mare. Extracia trsturilor s-a realizat prin metode deja existente, folosite n cadrul clasificatorului WND-CHARM. Acest clasificator face parte din mediul OME (Open Microscopy Environment). Numrul de trsturi extrase a fost redus prin renunarea la metodele ineficiente de extragere n ceea ce privete performanele de clasificare la 318 atribute pe imagine fa de 1024 atribute pe imagine folosite pentru formarea vectorului de trsturi din cadrul clasificatorului WND-CHARM. Astfel, timpul de extragere al trsturilor tuturor imaginilor din baza de date, precum i timpul de clasificare au fost micorate semnificativ (de la 48 de ore la 3 ore i 11 minute , respectiv de la 2 secunde la mai puin de o secund). Prin modificarea bazei de imagini aplicaia realizat poate fi utilizat n probleme de detecie sau recunoatere 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 follows feature extraction from database images to obtain a high KNN clasification accuracy. Feature extraction was achieved by existing methods used in WNDCHARM classifier, which is part of the OME environment (Open Microscopy Environment). Number of features per image have been reduced from 1024 attributes per image used in WNDCHARM feature vector to 318 attributes per image, by removing the inefficient extraction methods in terms of clasification performance. Thus, the time needed for feature extraction for all database images and classification time was reduced significantly (from 48 hours to 3 hours, respectively from 2 seconds 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 Naional 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: Writing: Acceptable, Reading: Acceptable, Speaking: Acceptable Contact address: Address: Str.Valea Frumoasei 5C/8, Sebe, Alba Telephone: 0746 041 672 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.2 Transformata 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 Aplicaii ale wavelet-urilor ........................................................................................ 5 2.3 Transformata FFT............................................................................................................... 6 2.3.1 Definire transformat FFT......................................................................................... 6 2.3.2 Aplicaii ale transformatei FFT ................................................................................. 6 2.4 Transformata Radon............................................................................................................ 6 2.4.1 Definirea transformatei Radon .................................................................................. 7 2.4.2 Aplicaii ale transformatei Radon .............................................................................. 7 2.5 Caracteristicile Tamura ...................................................................................................... 8 2.5.1 Granularitatea............................................................................................................ 8 2.5.2 Contrastul................................................................................................................... 8 2.5.3 Direcionalitatea ........................................................................................................ 8 2.6 Polinoamele Zernike............................................................................................................ 9 2.6.1 Definirea polinoamelor Zernike................................................................................. 9 2.6.2 Aplicaii ale polinoamelor Zernike........................................................................... 10 2.7 Histograme multiscalare ................................................................................................... 10 2.8 Filtre orientate n patru direcii pentru obinerea "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 Fiiere MEX (MEX-files)................................................................................................. 12 3. Implementarea soluiei 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 trsturilor n Weka............................................................................... 21 3.3.4 Evaluarea trsturilor n Matlab ............................................................................. 22 3.3 Determinarea parametriilor transformatei Wavelet ......................................................... 23 3.4 Modul de mprire a datelor pentru nvare i testare................................................... 24 3.5 mbuntirea performanelor........................................................................................... 25 3.5.1 Reducerea numrului de trsturi extrase din fiecare imagine.35 3.5.2 Transformarea aplicaiei ntr-un executabil ............................................................ 27 3.6 Interfaa grafic a aplicaiei ............................................................................................. 27 3.6.1 Extragerea trsturilor ............................................................................................ 28 3.6.2 Clasificarea imaginilor ............................................................................................ 28 3.6.3 Testarea clasificatorului KNN i cu alte imagini dect cele din baza de date ........ 28 4. Rezultate experimentale ............................................................................................................ 28 4.1 Rezultate experimentale Weka........................................................................................... 29 4.2 Rezultate experimentale din Matlab i din aplicaia executabil 5. Concluzii.................................................................................................................................... 35 6. Bibliografie................................................................................................................................ 37 7. Anexe ......................................................................................................................................... 39 7.1 Anexa 1 .............................................................................................................................. 39 Codul Matlab al funciei de transformare Wavelet...................................................................... 39 7.2 Anexa 2 .............................................................................................................................. 39 Codul Matlab pentru obinerea fiierului cu vectorul de trsturi............................................... 39 7.3 Anexa 3 .............................................................................................................................. 39 Codul Matlab al funciei de extragere trsturi ........................................................................... 39 7.4 Anexa 4 .............................................................................................................................. 41 Codul Matlab pentru obinerea fiierului cu liniile vectorului de caracteristici permutate......... 41 Codul Matlab pentru funcia 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 al aplicaiei GUI .................................................................................................... 44 Codul Matlab pentru metodele de extragere folosite n aplicaia GUI ........................................ 63 Codul Matlab pentru extracia trsturilor din fiecare imagine n funcie de metodele alese n aplicaia GUI................................................................................................................................. 64

Lista de figuri
Figura 1.1 Schema procesului de recunoatere i clasificare automat a imaginilor ...................... 3 Figura 2.1 Arborele cu primele trei nivele de descompunere DWT(arborele Mallat) .................... 4 Figura 2.2 Arborele Mallat cu primele trei nivele de reconstrucie ale semnalului original........... 4 Figura 2.3 Familii de wavelet (a) Haar (b) Daubechies4 (c) Coiflet1 (d) Symlet2 (e)Meyer(f) Morlet(g) Mexican hat..................................................................................................................... 5 Figura 2.4 Cele dou forme ale transformatei Radon- ecuaia (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 trsturilor ................................................... 15 Figura 3.3 Schema de formare a vectorului de trsturi din cadrul WND-CHARM.................... 17 Tabel 3.1 Metode de extragere a trsturilor analizate ................................................................. 20 Figura 3.5 Schema de formare a vectorului de trsturi................................................................ 20 Figura 3.6 Structura fiierului ARFF la modul general................................................................. 21 Figura 3.7 Structura fisierului ARFF utilizat n acest lucrare ..................................................... 21 Figura 3.8 Matricele de confuzie pentru nvare, respectiv testare.............................................. 22 Figura 3.9 Transformata Wavelet a unei imagini.......................................................................... 24 Figura 3.10 Schema bloc a clasificrii KNN................................................................................. 25 Figura 3.11 Schma bloc urmat de toolbox-ul deploytool ............................................................ 27 Figura 3.12 Interfaa grafic a lucrrii........................................................................................... 27 Figura 4.1 Matrice de confuzie Weka (numrul 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) obinute n Weka............... 30 Figura 4.4 Matricele de confuzie pentru setul de testare obinute n Matlab ................................ 30 Figura 4.5 Graficul timpului de clasificare n funcie de numrul de trsturi ............................. 31 Figura 4.6 Graficul timpului de clasificare n funcie de numrul de trsturi ............................. 31 Figura 4.7 Graficul timpului de extragere coeficieni n funcie de numrul de trsturi ............. 32 Figura 4.8 Graficul acurateii n funcie de numrul de trsturi .................................................. 35

Lista de tablele
Tabel 3.1 Metode de extragere a trsturilor analizate ................................................................. 20 Tabel 4.1 Rezultate obinute n Matlab ......................................................................................... 33 Tabel 4.2 Rezultate obinute prin transformarea aplicaiei ntr-un executabil .............................. 34

1. Stadiul actual Stadiul actual n ceea ce privete recunoaterea formelor i clasificarea automat a imaginilor este unul avansat, reuindu-se dezvoltarea unor aplicaii care au o acuratee a clasificrii foarte ridicat i un timp de clasificare sau de detecie foarte bun (detecie sau clasificare n timp real), i care ncet-ncet promit a se apropia ca performan de modul natural cu care fiina uman trateaz aceast problem. Imaginile digitale, stocarea ieftin i utilizarea acestora n tot mai multe domenii ale tiinei i ingineriei, au introdus o cretere a cererii de aplicaii de analiz i clasificare a imaginilor cu o precizie ct mai mare. Aceste aplicaii includ teledetecia, descris n [1], recunoaterea facial, despre care putei gsi informaii n [2], [3] sau [4] i clasificarea imaginilor medicale 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 probleme. Cea mai important dintre ele este imposibilitatea de a reproduce n sistemele artificiale, modul nostru de gndire. Pentru noi oamenii, recunoaterea unui obiect se face cu uurin, chiar dac acel obiect nu este vzut n ntregime, dar n general nu putem s explicm tiinific cum am reuit s realizm recunoaterea. Prin urmare, nu putem dezvolta un algoritm sau o tehnic de inteligen artificial care descrie iterativ i exact acest proces. Dei n ultimii ani au atras o atenie deosebit, analiza i clasificarea imaginilor sunt deocamdat considerate probleme competitive n sistemele de prelucrare i clasificare pe baza coninutului imaginilor (CBIR - Content Based Image Retrieval), datorit complexitii subiectului n ceea ce privete imaginile reale i dificultatea de extragere cantitativ a trsturilor de similitudine sau difereniere dintre imagini. Aceste trsturi pot include caracteristici de culoare, textur sau form, descriptori ce sunt obinui global prin extragerea informaiilor pe baza mediei histogramelor de culoare (pentru caracteristicile de culoare), pe baza granularitii, contrastului i directivitii imaginilor (pentru caracteristicile de textur) i pe baza trsturilor de curbur, momente invariante, circularitatea i excentricitatea imaginilor (pentru caracteristicile de form). Cu toate acestea, extragerea trsturilor din imagini se face diferit n funcie de detaliile particulare ale aplicaiei i performanele dorite. n lucarea de fa sunt propuse mai multe metode deja existente de extragere a caracteristicilor pentru formarea vectorului de trsturi i clasificarea imaginilor pe baza vectorului obinut. Scopul principal al acestei lucrri este testarea mai multor metode de extragere a trsturilor, nu neaparat obinerea unor performane superioare. Pentru a vedea eficiena metodelor de extragere s-a realizat clasificarea imaginilor pe baza vectorului de caracteristici prin intermediul clasificatorului IBk din Weka (echivalentul KNN- k nearest neighbor) i KNN implementat n Matlab. Pentru realizarea acestor obiective m-am inspirat din mai multe referine, dar cea mai semnificativ este metodologia de extragere a trsturilor pentru formarea vectorului de caracteristici din cadrul clasificatorului WND-CHARM (Weighted Neighbor Distances using a Compound Hierarchy of Algorithms Representing Morphology - distana ponderat dintre vecini utiliznd o ierarhie compus de algoritmi morfologici). Pentru mai multe detalii a se consulta [9]. Trsturile vectorului de caracteristici includ descompunerea polinomial (reprezentat de polinoamele Zernike), statisticile pixelilor (media, deviaia standard, oblicitatea, planitatea, histograme multiscalare) i caracteristicile de textur (contrast, granularitate i direcionalitate). 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 transformatei FFTfast 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 informaiei spaiale. Metodele aplicate asupra imaginilor pentru formarea vectorului de trsturi fac parte din metodologia descris n [9]. Contribuia adus la formarea vectorului de trsturi const n

selectarea din varietatea de metode de extragere doar a celor care ofer o performan de clasificare mai ridicat. Pentru o aplicare eficient a transformatei Wavelet s-au stabilit valorile parametrilor (familia de wavelet i nivelul de descompunere wavelet). Celelate metode utilizate, precum i implementrile lor n Matlab pot fi descrcate gratuit i utilizate n scopuri tiinifice i de cercetare de pe site-ul: http://www.openmicroscopy.org. Vectorul de trsturi este utilizat apoi pentru clasificarea imaginilor de test ntr-un set de clase de imagini predefint (clasa maini, pietoni, animale i garbage) cu ajutorul utilitarului Weka. Deoarece apelarea din Matlab a utilitarului Weka este foarte complicat i datorit necesitii utilizrii unui clasificator n interfaa grafic realizat, s-a ales implementarea n Matlab a unui algoritm de clasificare. Astfel, luarea deciziei asupra clasei imaginii test s-a realizat cu algoritmul KNN. Din punct de vedere al evaluatorului s-a ales folosirea KNN deoarece este un clasificator rapid, eficient i uor de implementat. Pentru a nu permite clasificatorului s nvee inclusiv ordinea de preluare a imaginilor (deoarece clasificatorul prelua pe rnd cele patru clase) s-a realizat permutarea imaginilor din vectorul de caracteristici. Din punct de vedere aplicativ, lucrarea conine o interfa grafic dezvoltat cu ajutorul toolbox-ului GUIDE (Graphical User Interface Design Environment) din Matlab. Aceast aplicaie permite utilizatorului s selecteze diferite variante de formare a vectorului de trasturi, precum i posibilitatea testrii clasificatorului KNN cu alte imagini dect cele din baza de date. Vectorul de trsturi poate avea, n funcie 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 informaiile de culoare nefiind utilizate.

2. Fundamentare teoretic 2.1. Introducere n realizarea unei aplicaii de recunoatere 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 mbuntirea calitii imaginilor prin aplicarea unor algoritmi DIP (digital image processing).[10] Deoarece imaginile din baza de date, format pentru acest lucrare, nu necesit alte mbunatiri ale calitii, n acest etap s-a realizat doar conversia imaginilor color n imagini pe nivele de gri. n multe situaii pentru clasificarea imaginilor sunt extrase pe lng trsturile de textur i de form, i cele de culoare. S-a renunat la aceste caracteristici deoarece nu se poate realiza o difereniere a claselor pe baza culorii. b) extragerea atributelor sau descriptorilor de imagine - reprezint etapa cea mai important deoarece influeneaz n mod direct performanele de clasificare.[10] Tipul trsturilor 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 funcie de gradul de fidelitate, iar coeficienii acestui polinom sunt utilizai ca descriptori ai coninutului imaginii. Trsturile de textur se refer la variaia n intensitate ntre pixelii imaginii pentru diferite direcii i rezoluii. Statisticile pixelilor se bazeaz pe distribuia pixelilor din imagine i includ histograme i momente. n aceast etap, pentru extragerea trsturilor, asupra imaginilor s-a aplicat transformata Wavelet (transformata Wavelet a imaginii pe nivele de gri i a transformatei FFT a imaginii pe nivele de gri), iar din rezultatele obinute au fost extrase caracteristicile de statistic a pixelilor("primele 4 momente", histogramele multiscalare) i de textur (caracteristicile Tamura). Din imaginile originale (imaginile pe nivele de gri), fr a aplica asupra acestora nici o transformat, sunt extrase caracteristicile de statistic a pixelilor i de textur menionate mai sus, precum i cele de descompunere polinomial (polinoamele Zernike). Din vectorul de

trsturi mai fac parte i rezultatele obinute n urma transformatei Radon a imaginii pe nivele de gri. c)evaluarea atributelor sau descriptorilor - este o etap n care sunt evaluate datele din vectorul de caracteristici i care are ca rezultat n mod obinuit, o valoare numeric unidimensional sau multidimensional (un vector), care relev distana vectorului de trsturi fa de graniele regiunilor sau fa de "bornele de clasificare".[10] Evaluarea atributelor s-a realizat cu ajutorul clasificatorului KNN, prin testarea evaluatorului cu datele de nvare. d) clasificarea imaginii - este etapa care mbin rezultatele msurtorilor multiple anterioare, i totodat etapa final. Prin clasificare se stabilete apartenena formei, obiectului sau imaginii - descris prin vectorul de trsturi, la un setul de clase de imagini predefinite.[10] Clasificarea imaginilor de test, precum i stabilirea atributelor imaginilor care ne ofer cea mai bun performan s-a realizat cu ajutorul algoritmului KNN.

Figura 1.1 Schema procesului de recunoatere i clasificare automat a imaginilor[10] 2.2 Transformata Wavelet continu i discret 2.2.1 Transformata Wavelet continu Transformata wavelet continu (CWT- continuous wavelet transform) este folosit la mprirea funciilor de timp continue n unde mai mici. Ecuaia transformatei wavelet continu este urmtoarea: XWT(,s)= ) ( ||

(1)

unde x(t) este semnalul ce trebuie analizat, (t) este wavelet-ul mam sau funcia de baz [11]. Toate funciile folosite n transformare sunt derivate din funcia de baz prin translatare (shiftare) i scalare (dilatare sau compresie). Parametrul de translaie se refer la locaia funciei wavelet n timpul parcurgerii semnalului, acesta corespunznd informaiei de timp a transformatei. Parametrul de scalare s este definit ca |1/frecven| i corespunde informaiei de frecven. Scalarea fie dilateaz (extinde) sau comprim semnalul. n prelucrrile de imagini, de obicei, se dorete compresia lor, pentru ca timpul necesar prelucrrii s fie ct mai redus. Pe o scar larg de frecvene joase semnalul este dilatat, fiind furnizate detaliile ascunse din semnal, n timp ce pe o scar redus (frecvene nalte) semnalul este comprimat, furnizndu-se informaia global referitoare la semnal. Transformata Wavelet realizeaz convoluia semnalului i prelucrarea acestuia cu funcia de baz. 2.2.2 Transformata Wavelet discret Transformata Wavelet discret (DWT- discrete wavelet transform) este o versiune simplificat a transformrii wavelet continu, bazat pe codarea n sub-band. Avantajul acestei transformate const n simplitatea implementrii, reducerea timpului de execuie i nivelul mai sczut de resurse necesare. La transformata CWT, semnalele sunt analizate folosind un set de funcii de baza care

realizeaz o simpl scalare i translaie. n cazul transformatei DWT, o reprezentare n domeniul timp a unui semnal digital este obinut prin utilizarea tehnicilor de filtrare digital, semnalul (imaginea) ce trebuie analizat fiind trecut prin filtre cu diferite frecvene de tiere la nivele diferite. Transformata DWT este realizat prin filtrri trece jos i filtrri trece sus succesive, ale unui semnal discret n domeniul timp (figura 2.1).

Figura 2.1 Arborele cu primele trei nivele de descompunere DWT(arborele Mallat)[11] n figura de mai sus, semnalul este notat cu x[n], unde n este un numr ntreg, filtrarea trece jos este realizat de blocul G0, la ieirea lui obinnd aproximarea grosier a coeficienilor(notat a[n]) , iar filtrarea trece sus este realizat de H0, la iesire obinnd informaia detaliat (notat d[n]). Filtrele care mpart banda n jumtate produc semnale ce ocup doar jumtate din banda de frecven. Filtrarea i descompunerea vor continua pn cnd se ajunge la nivelul dorit, numrul maxim de nivele de descompunere depinznd de lungimea semnalului (dimensiunea imaginii). Reconstrucia semnalului original pe baza coeficieniilor transformatei DWT este procesul invers descompunerii (figura 2.2).

Figura 2.2 Arborele Mallat cu primele trei nivele de reconstrucie ale semnalului original[11] n Figura 2.2, d[n] reprezint coeficienii de detaliu ai semnalului, a[n] aproximrile grosiere, iar blocurile H1 i G1 reprezint filtrele trece sus, respectiv filtrele trece jos de sintetizare a semnalului original. Procesul de reconstrucie al semnalului original continu pn cnd este atins numrul de nivele de descompunere ale semnalului.

Condiiile ce trebuie ndeplinite pentru a avea o reconstrucie perfect sunt: G0(z)*G1(z)+H0(z)*H1(z)=2 (3) unde G0(z) i G1(z) sunt filtrele trece jos de analiz, respectiv de sintez, iar H1(z)i H0(z) sunt filtre trece sus de analiz, respectiv de sintez[11]. Prima condiie impune ca reconstrucia s se fac fr alias, iar cea de-a doua condiie impune ca distorsiunile de amplitudine sa aib valoarea egal cu 1. 2.2.3 Familii de wavelet-uri: Exist un anumit numr de funcii de baz care pot fi folosite ca funcii mam pentru transformata wavelet, dar pentru utilizarea eficient a acestora, trebuie luate n considerare detaliile particulare ale aplicaiei care folosete wavelet-uri. Principalele familii de wavelet-uri: G0(-z)*G1(z)+H0(-z)*H1(z)=0 (2)

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 funcii wavelet. Wavelet-ul Haar este unul din cele mai vechi si simple wavelet-uri, de aceea orice discuie despre wavelet-uri ncepe cu acesta. Pentru mai multe detalii legate de principalele tipuri de wavelet-uri a se consulta [12]. 2.2.4 Aplicaii ale wavelet-urilor Exist o gam larg de aplicaii pentru transformarea wavelet, ele fiind utilizate n diferite domenii, de la procesarea semnalelor pn la domeniul biometriei. Wavelet-urile au un rol important n compresia datelor, n vederea mbunatirii performanelor de prelucrare a imaginilor (de compresie a imaginilor). FBI utilizeaz waveleturile ca i compresie standard 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 obinut n urma aplicrii transformatei FFT asupra imaginii pe nivele de gri. Parametrii transformatei, nivelul de descompunere i familia wavelet, au fost stabilii parcurgnd urmtoarele etape:

a) extragerea trsturilor imaginilor din baza de date cu metoda I (vezi figura 3.5 pentru mai multe detalii) pentru diferite nivele de descompunere wavelet (36) i pentru diferite familii de wavelet-uri. b) clasificarea imaginilor pe baza vectorului de trsturi obinut prin metoda de mai sus pentru a observa care nivel, respectiv familie wavelet ofer o performan de clasificare ct mai bun. Wavelet-urile sunt folosite att n metoda I de extragere a trsturilor (reprezentat de metoda descris mai sus), precum i n metoda II de extragere a trsturilor (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 aceleai rezultate ca i DFT, singura diferen fiind reprezentat de rapiditatea transformatei FFT. Fie , , , , numere complexe. Transformata DFT este definit de urmtoarea formul: ( + 1) = )1 + ( , k=0,1, ,N-1 (4), iar inversa ei IDFT este: ( + 1) = ( + 1) , n=0,1, ,N-1 (5),

unde j este unitatea imaginar, = i N= lungime(x) [13]. Evalund ecuaia (4), observm c aceasta necesit operaii: sunt N ieiri i fiecare ieire necesit o sum de N termeni. Transformata FFT reprezint orice metod de obtinere a aceluiai rezultat ca i DFT n N log N operaii. Pentru mai multe informaii legate de transformata FFT i tipurile de algoritmi FFT a se consulta [13],[14] sau [15]. n lucrarea de fa transformata FFT este utilizat n cadrul metodei II de extragere a trsturilor, fiind aplicat asupra imaginii pe nivele de gri, iar apoi asupra acesteia se va aplica transformata Wavelet (vezi figura 3.5 pentru mai multe detalii). 2.3.2 Aplicaii ale transformatei FFT Aplicaiile transformatei FFT sunt urmatoarele: - aproximri pe baza polinoamelor trigonometrice, compresia datelor (ex. MP3) - analiza spectral a semnalelor - filtrare - rspunsul n frecven a unui sistem - ecuaiile parial difereniale - convoluia n domeniul frecven: - intercorelare - multuplicarea de numere ntregi mari - multiplicarea simbolic a polinoamelor 2.4 Transformata Radon Transformata Radon i transformata Hough sunt strns legate una de cealalt, Radon fiind o form particular a transformatei Hough.

2.4.1 Definirea transformatei Radon O reprezentare util a unei drepte este ecuaia sa n coordonate polare: )6( = + unde unde reprezint distana dintre dreapt i origine, iar este unghiul dintre axa x pozitiv i dreapta [16]. Transformata Radon se definete ca integral de-a lungul unei drepte inclinate cu unghiul fa de axa x pozitiv i situat la distana fa de origine [17]. Se noteaz n general cu g(, ). g(, )= ()7() + () , unde reprezint funcia Dirac i este ilustrat n [16] astfel: +, 0 = ( = ) (8) 0 ,0

Figura 2.4 Cele dou forme ale transformatei Radon- ecuaia (7) i (9)

[17][18]

Ecuaia ilustrat n [17]: g(, )= (,)9() + , este echivalent cu ecuaia (2), fiind obinut prin rotirea axelor de coordonate cu unghiul , unde: + = = + = + = (10) Transformata Radon reprezint o imagine ca un set de proiecii de-a lungul diferitor direcii, realiznd legtura dintre spaiul de coordonate (x,y) i spaiul proieciilor (, ). Transformata Radon calculeaz proiecia intensitii pixelului pe o linie radial din centrul imaginii la un unghi specificat. Aceasta este utilizat, de obicei, pentru extracia informaiei spaiale unde pixelii sunt corelai la un unghi specific. n metoda de extragere caracteristici propus, trsturile Radon sunt calculate pentru unghiurile 0, 45, 90 i 135. Apoi, fiecare set de valori rezultat este transformat ntr-o histogram cu trei benzi, rezultnd astfel un vector cu 4x3=12 valori. Transformata Radon este calculat pentru imaginea pe nivele de gri i mpreun cu "histogramele multiscalare", "primele 4 monemte " i caracteristicile Tamura formeaz metoda III de formare a vectorului de trsturi (vezi figura 3.5 pentru mai multe detalii). 2.4.2 Aplicaii ale transformatei Radon Transformata are aplicaii 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 viruii - n rezolvarea ecuaiilor hiperbolice parial difereniale

- detecia de form 2.5 Caracteristicile Tamura Dintre proprietaile Tamura folosite n acest proiect se numar: - granularitatea - contrastul - direcionalitatea. Aceste trsturi au fost selectate de Tamura, Mori i Yamawaki pe baza experimentelor psihologice. 2.5.1 Granularitatea se refer la distana dintre variaiile spaiale notabile a nivelelor de gri. Procedura compiutaional propus, consider diferenele dintre valoarea medie a semnalelor corespunztoare ferestrelor de diferite dimensiuni care nu se suprapun, urmrind paii de mai 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 diferena absolut Ek(x,y) dintre perechile valorilor medie ce nu se suprapun n direciile: orizontal i vertical. 3. Pentru fiecare pixel, caut valoarea lui k ce maximizeaz diferena Ek(x,y) n orice direcie i seteaz dimensiunea cea mai buna Sbest(x,y)=2k. 4. Calculeaz trstura de granularitate Fcrs prin 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 cror distribuie este direcionat spre alb i negru. Pentru definirea contrastului se folosesc momentele centrale de ordinul al doilea i cele normalizate de ordinul al patrulea, reprezentate de variana standard - , respectiv indicele de aplatizare - 4: = (11), unde = (12); = ( ) Pr (13); = () Pr ( )41( )/i m este media nivelelor de gri.[19] 2.5.3 Direcionalitatea Gradul de direcionalitate este msurat folosind distribuia spectral a muchiilor locale orientate fa de unghiurele direcionale ale acestora. Soloditatea muchiei e(x,y) i unghiul direcional a(x,y) sunt calculate folosind detectorul de muchii Sobel, aproximnd "pixel-wise" x i derivata y a imaginii: (|(5.0 = ) ,( + |) , () , (15) ) (/) ,()61( )) , ( = ) , (

n ecuaiile de mai sus x(x,y) i y(x,y) sunt diferenele pe vertical i orizontal a nivelelor de gri dintre pixelii vecini [19]. Diferenele sunt msurate utiliznd urmtorii operatori fereastra de dimensiune 3x3 [19]: 1 0 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 1 O histogram Hdir(a) a valorilor direciei cuantizate a este construit prin numrarea numrului de pixeli muchie care un anumit unghiul direcional i soliditatea muchiei mai mare dect un prag predefinit. Histograma este relativ uniform pentru imaginile fr o orientare

accentuat i evideniaz vrfurile pentru imaginile cu un grad al direcionalitii ridicat. Gradul direcionalitii este legat de ascuimea vrfurilor: n ecuaia (17) este numrul de vrfuri, ap este poziia vrfului p, wp este gama de unghiuri atribuite vrfului p, r indic un factor de normalizare legat de nivelele de cuantizare ale unghiului a, i a este unghiul direcional cuantizat (n modulo 180o).[19] Aceste proprieti texturale Tamura sunt calculate pe imaginea pe nivele de gri astfel: - 3 valori: contrastul, direcionalitatea i granularitatea - o histogram a granularitii cu 3 benzi Astfel, rezult astfel un vector de caracteristici cu 6 valori. Trsturile Tamura sunt utilizate n acest lucrare n cadrul metodelor I, II i III de extragere a trsturilor (vezi Figura 3.5). 2.6 Polinoamele Zernike Polinomele Zernike au fost dezvoltate la nceputul secolului XX de ctre fizicianul german Frits Zernike (faimos pentru invenia microscopului faz-contrast, pentru care a cstigat premiul Nobel pentru Fizic n 1953).
= 1 () (17),

Figura 2.5 Valorile Zernike n unitatea de disc [20] 2.6.1 Definirea polinoamelor Zernike Aceste caracterisitici Zernike sunt un set de polinoame definite pe unitatea de disc (figura 2.5), ce pot fi reprezentate att n sistemul cartezian (x,y), ct i n coordonate polare (r,). Cea mai utilizat form, este descris n [21] ca fiind cea polar: , = + 1 ( 2)cos( q) , 0 (18) , = + 1 ( 2)sin( q) , 0 (19) = + 1 ()02( 0 = ,) unde ()()! ( )/ ( = ) (21)
!

Valorile lui m i n sunt ntotdeauna ntregi i satisfac condiile mn i n-m=impar. Indexul j reprezint modul de ordonare al numerelor, fiind o funcie j(m,n). Condiia de ortogonalitate pentru polinoamele Zernike ilustrat n [21] este: () ,)22( =
9

unde:

2.6.2 Aplicaii ale polinoamelor Zernike

, 1 ( = ) (23) 0, 1 >

Baza acestor funcii este definit pe o suprafa circular, caracteristic planelor pupilelor n procesarea clasic de imagini, pentru lungimi de und optice i inflaroii, printr-un sistem de lentile i oglinzi cu un diametru finit. Descompunera polinomial Zernike este utilizat n urmtoarele domenii: - prelucrare optic, pentru a caracteriza erorile observate n analizele interferometrice, cu scopul de a obine performana dorit. -optometrie i oftalmologie, la descrierea devierii corneei sau lentilelor pentru o form ideal sferic, care au ca rezultat erori de refracie. - optica adaptiv, la nlturarea distorsiunilor atmosferice. Aplicaiile n acest domeniu sunt astronomia IR (inflarou) sau vizual i pentru redarea imaginilor din satelit. De exemplu, unul dintre factorii Zernike (pentru m=0 i n=2) este denumit "de-focus". Prin cuplarea iesirii acestui factor la un sistem de control, poate fi implementat o focalizare automat. [21] Coeficienii 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 trsturilor (pentru mai multe detalii vezi figura 3.5). 2.7 Histograme multiscalare Pentru acest set de trsturi sunt calculate histograme cu un numr variabil de benzi (3,5,7 i 9), dup modelul propus n [9]. Fiecare domeniu de frecvene corespunde unei histograme diferite, i astfel numrul variabil de benzi permite msurarea coninutului ntr-un domeniu de frecvene foarte larg. Maximul histogramelor este folosit pentru normalizarea vectorului de caracteristici rezultat, care are un numr de 1x24 elemente. Histogramele multiscalare sunt aplicate asupra transformatei Wavelet, transformatei FFT i asupra imaginii originale (imagine pe nivele de gri) contribuind astfel cu un numr total de 3x24 elemente la formarea vectorului de trsturi al imaginilor. Histogramele multiscalare sunt utilizate n cadrul metodelor I, II i III de formare a vectorului de trsturi.(pentru mai multe detalii vezi figura 3.5) 2.8 Filtre orientate n patru direcii pentru obinerea "primelor 4 momente" Pentru acest set de trsturi, imaginea este subdivizat ntr-un set de "dungi" n patru orientri diferite (0, 90, +45 i 45). "Primele 4 momente" (media, deviaia standard, oblicitatea i planitatea ("kurtosis") ) sunt calculate pentru fiecare "dung" i fiecare set de "dungi" este transformat ntr-o histogram cu 3 benzi. Avnd astfel patru momente n patru direcii cu histograme cu trei benzi, rezult un vector de trsturi care conine 4x4x3=48 elemente.[9] "Primele 4 momente" sunt utilizate, lafel ca i histogramele multiscalare n cadrul metodelor I, II i III de extragere a trsturilor din imaginea original. 2.9 Algoritmul KNN KNN este abrevierea din limba englez pentru K-Nearest Neighbor (cei mai apropiai k vecini), fiind un algoritm de nvaare supervizat utilizat n special n problemele de clasificare. Scopul acestui algoritm este acela de a clasifica un nou obiect pe baza atributelor sale n fincie de setul de date de antrenare cunoscut.

10

Prin aceast tehnic, folosit n special pentru clasificarea datelor n mai multe posibile clase, un obiect nou este clasificat pe baza majoritii voturilor vecinilor si, fiindu-i atribuit clasa cea mai frecvent ntlnit printre cei k cei mai apropiai vecini. Acei k cei mai apropiai vecini se aleg pe baza distanei 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 trsturi, care n cazul imaginilor poate s conin caracteristici de form, de textur sau de culoare. Exist mai multe tipuri de distane folosite pentru calculul distanei minime dintre noul vector i vectorii din setul de date: - distana euclidian - distana euclidian standardizat - distana city block (Manhattan) - distana cosinus - distana coeficientului de corelaie (distana Pearson r) - distana hamming - distana Maholonobis - distana Minkowski - etc Cea mai frecvent distan utilizat n cadrul acestui algoritm este distana euclidian. Fiind dat o matrice X de dimensiune [mxn], care conine "m" vectori linie (vectorii de trasturi de dimensiune [1xn]) , ,, , unde =( , ,, ), putem defini metricile (distanele) dintre dou obiecte (doi vectori) oarecare i (r,s=1m) dup cum sunt ilustrate i n [22], astfel: - distana euclidian: =( )( ) = ( ) (24) - distana euclidian standardizat = ( ) ( ) , unde D este matricea diagonal, ce are ca elemente dispersia vectorului =(, , ), notat , rezultnd: - distana city block (Manhattan) =| | - distana cosinus = 1

( )

(25)

(26)

- distana coeficientului de corelaie (distana Pearson r)


()()()()

- etc, pentru mai multe tipuri de metrici a se consulta [22] Pentru a ntelege i mai bine funcionarea algoritmul KNN pe un exemplu numeric a se consulta consulta [24]. 2.9.1 Avantajele algoritmului KNN Unul dintre avantajele sale este uurina implementrii, fiind unul dintre algoritmii de clasificare cei mai uor de nteles.

1=

()()

(27) , unde = (28)

()()

11

O alt calitate a acestei tehnici este eficacitatea sa, n cazul n care, setul de date de antrenare este afectat de zgomot (n special n cazul n care se foloseste ca metric inversul ptratului distanei ponderate). Obinerea distanei ponderate se face prin ierarhizarea fiecrei trsturi n funcie de scopul propus. Astfel distana euclidian ponderat va avea urmatoarea expresie: = ( ) (29), unde =1, iar este ponderea atributului (caracteristicii) i [23] . A nu se confunda ponderarea atributelor cu ponderarea distanelor. O metod foarte ntlnit de ierarhizare a distanelor, este aceea de a-i da fiecarui vecin o pondere de 1/d , unde d este distana pna la vecin. Astfel vecini mai apropiai vor avea o contribuie mai mare la clasificarea unui obiect. Studiile au aratat c ponderarea distanelor nu mbuntete performanele algoritmului KNN. 2.9.2 Dezavantajele algoritmului KNN La aplicarea algoritmului KNN n practic ne lovim de urmtoarele probleme: a)"Ce metric utilizm pentru performane ct 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 numrul de obiecte din setul de date. Pentru seturile de date cu un numr foarte mare de obiecte este necesar o reducere a numrului de atribute pentru fiecare obiect n etapa de preclasificare, prin alegerea unor puncte cheie care s diferenieze ntre ele ct mai bine posibil instanele setului de date. k optim se obine prin testarea algoritmului de mai multe ori, modificnd numrul de vecini. Costul de calcul este destul de mare, deoarece trebuie s calculm distana dintre o noua instana i fiecare instan din setul de antrenare. Acest cost poate fi redus prin utilizarea metodei "K-D tree".[25] Pentru a vedea eficacitatea metodelor de extragere a caracteristicilor, n aceast lucrare sa folosit clasificatorul KNN. Am ales acest algoritm datorit simplitii lui, a performanelor bune de clasificare, att n ceea ce privete acurateea ct i a timpului de clasificare. 2.10 Fiiere MEX (MEX-files) MEX este abrevierea din limba englez pentru MATLAB Executable (executabile Matlab). Fiierele MEX sunt subrutine dinamice realizate n mediile de programare C, C++ sau Fortran, coduri surs care compilate pot fi rulate din Matlab n acelai mod cum sunt rulate i fiierele M (M- files) sau orice alt funcie care este deja implementat n Matlab. Funciile externe de interfaare realizeaz transferul de date ntre MEX- files i Matlab, oferind totodat i posibilitatea de a chema funcii Matlab din programele C, C++ sau Fortran. Principalele motive de a creea n loc de un M-file un MEX- file sunt urmtoarele: - abilitatea de a apela o gam larg de rutine C, C++ sau Fortran deja existente direct din Matlab fr a fi nevoii s le rescriem ca un M -files - viteza de execuie; putem rescrie programele care folosesc de exemplu bucle FOR ca i MEXfiles pentru eficien. Pentru mai multe detalii legate de realizarea MEX- files a se consulta [26]. n aceast 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 descrcate gratuit de pe site-urile: http://www.openmicroscopy.org, respectiv http://mirlab.org/jang/matlab/toolbox/dcpr/.

12

3. Implementarea soluiei adoptate Scopul lucrrii 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. Totui, pentru a verifica eficiena metodelor de extragere a trsturilor s-a folosit clasificatorul KNN. n general, un sistem de recunoatere al obiectelor trebuie s: 1- extrag atributele care grupez imaginile ntr-o anumit clas i difereniaz imaginile din clase diferite 2- s clasifice aceste atribute 3- s elimine alarmele false - de aceea avem clasa garbage 4- n cazul deteciei obstacolelor s identifice clasa imaginii pe baza acestor atribute 5- s urmreasc obiectele de-a lungul scenei rutiere pn n momentul n care se pierd n afara ei i nu mai reprezint nici un pericol (modul de "tracking" (urmrire)). n aceast lucrare s-a presupus c obiectele sunt deja segmentate (detectate), baza de date fiind format din imagini care ncadreaz doar obiectele i nu din scene ntregi de mai multe obiecte. Astfel, n aceast lucrare este tratat numai modul de extragere al atributelor pentru clasificare, precum i clasificarea obiectelor. La nceput s-a ncercat extragerea caracteristicilor din imagini numai pe baza transformatei Wavelet. Imaginile din baza de date au diferite dimensiuni (unele ilustreaz obiecte mai apropiate avnd implicit dimensiuni mai mari- maxim 434x768 pixeli, altele obiecte mai deprtate, avnd dimensiuni mai mici- minim 89x69 pixeli), iar pentru clasificare este necesar obinerea unui numr fix de caracteristici pentru fiecare imagine. Din aceast cauz, nainte de a aplica transformata Wavelet asupra imaginilor este necesar redimensionarea lor la aceleai valori. Rezultatele obinute n urma clasificrii KNN a imaginilor nu au fost satisfctoare. Din acest motiv s-a renunat la redimensionare i s-a ncercat gsirea unor metode de extragere a trsturilor care prin aplicarea lor asupra imaginilor s returneze un numr fix de coeficieni indiferent de dimensiunea imaginii. Sistemele de clasificare folosesc diferite caracteristici pentru definirea obiectelor din imagini. Aceste caracteristici reprezint ablonul (pattern-ul) obiectului, iar sabloanele obiectelor care aparin mai multor clase vor fi eseniale pentru procesul de invare i testare al sistemului. Pentru obinerea caracteristicilor s-au folosit o serie de transformri, combinaii de transformri i de metode de extragere: - transformata Wavelet - transformata FFT - transformata Radon - caracteristicile Tamura - histogramele multiscalare - filtre orientate n patru direcii pentru obinerea "primelor 4 momente" - polinoamele Zernike. n pasul de clasificare, algoritmul de evaluare se bazeaz pe calculul de distane ntre vectorii de caracteristici corespunztori obiectelor. Pentru a detecta i a recunoate caracteristicile altor obiecte noi, sistemul trebuie nvat apriori cu aceste abloane prin intermediul caracteristicilor extrase. Sistemul odat nvat, poate fi folosit doar pentru testare, iar dac se dorete adugarea de noi instane n setul de antrenare, se va mai trece nc o dat prin etapa de nvare. Astfel, au fost studiate metodele de extragere enumerate mai sus pentru formarea setului de antrenare i testare. Acestea sunt utilizate de clasificator (KNN) pentru a se realiza recunoaterea automat obiectelor. n lucrare de fa s-a utilizat algoritmul de clasificare KNN, datorit simplitii implementrii i al performaelor bune de clasificare.

13

3.1 Baza de imagini Baza de imagini este construit din 800 de imagini color, mprite n patru clase dup cum urmeaz: - 200 de imagini cu maini - 200 de imagini cu pietoni - 200 de imagini cu animale (cini, pisici, vaci, oi, cai) - 200 de imagini alctuind 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 pn acum o astfel de baz de imagini. Dup cum se poate observa n figura 3.1 imaginile au fost selectate manual i au fost extrase doar obiectele de interes din acestea. Apoi imaginile 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 realiza clasificarea imaginilor n cele patru clasele. Dup cum se poate observa n figura 3.1, imaginile care alctuiesc clasa garbage au fost obinute din fundalul imaginilor celorlalte clase. Aceast clas este util la detectarea alarmelor false, cnd imaginea nu face parte din nici una din clasele maini, pietoni sau animale. n general pentru crearea unei baze de imagini care s fie ct mai bun, sunt respectate urmtoarele principii:

14

- toate imaginile s fie realizate cu aceleai procedee (s fie realizate cu acelai aparat de fotografiat sau camer de filmat) - parametrii mijloacelor de captare a imaginilor s fie identici pentru toate imaginile - s aibe un numr de imagini care s permit obinerea unor rezultate de clasificare satisfctoare. Deoarece nu a mai fost creat o baz de imagini ca i cea utilizat n lucrarea de fa i realizarea unei astfel de baze de imagini necesit foarte mult timp, au fost folosite imagini care fac obiectul altor baze de date. Bine neles c baza de imagini format, nu este 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-a realizat extragerea caracteristicilor din imagini prin intermediul diferitor transformate de imagini (transformata Wavelet, transformata FFT, transformata Radon) i alte moduri de extragere ("primele 4 momente", histograme multiscalare, caracteristicile Tamura - granularitatea, contrastul i direcionalitatea, i polinomurile Zernike). Dup cum se poate observa n figura 3.2, aceste transformate i celelalte procedee de extragere a caracteristicilor enumerate anterior, sunt distribuite n patru metode de extragere a caracteristicilor, astfel:

Figura 3.2 Schema bloc a metodelor de extragere a trsturilor

15

Metodele de extragere a trsturilor, 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 uor. Privind figura 3.2 se poate observa c metoda I i metoda II difer ca i structur numai prin prizma imaginilor pe care sunt aplicate (metoda I se aplic pe imaginea obinut n urma transformatei Wavelet a imaginii pe nivele de gri, iar metoda II pe cea obinut n urma transformatei Wavelet a transformatei FFT). Numrul de trsturi obinute prin aplicarea acestor dou metode este acelai indiferent de imaginea pe care sunt aplicate (imagine pe nivele de gri, cea rezultat n urma transformatei Wavelet sau cea rezultat n urma transformatei Wavelet a transformatei FFT) i indiferent de dimensiunea acesteia, doarece cele trei blocuri "primele 4 momente", histograme multiscalare i caracteristicile Tamura contribuie cu un numr fix la formarea vectorului de caracteristici (48, 24, respectiv 6). Astfel, asupra transformatei Wavelet a imaginii, ct i asupra transformatei Wavelet a trasnformatei FFT, se vor aplica urmtoarele funcii de compresie a numrului de coefieni: a) Histogramele multiscalare - funcie care transform imaginea de intrare n patru tipuri de histograme, cu 3, 5, 7 i 9 benzi, rezultnd astfel 24 de valori. Aceste valori sunt normalizate cu maximul lor. b) "Primele 4 momente" - funcie care returneaz un numr de 48 de coeficieni, prin parcurgerea imaginii: - pe diagonal (att din strnga jos pna n dreapta sus, ct i din dreapta jos pn n stnga sus) cu un pas care depinde de valoarea rotujit a mpririi dimensiunii pe verical a imaginii la zece (round(dim_verticala/10)). La fiecare pas se calculeaz valoarea mediei, deviaiei standard, oblicitii i planitii pixelilor parcui. Coloanele matricei astfel obinut (care are stocate pe fiecare linie cele patru valori menionate) sunt transformate n histograme cu 3 benzi, rezultnd un numr de 4x3=12 atribute 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 depinde 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. Aadar, pentru cele patru parcurgeri (dou pe diagonal, una pe vertical i una pe orizontal) se obin un numr de [4 parcurgeri]x[4 coloane]x[3 benzi ale histogramelor]=48 trsturi pentru orice imagine asupra creia s-a aplicat aceast metod de reducere a trsturilor. c) Trsturile Tamura care se compun din directionalitatea imaginii, contrastul, granularitatea i o histogram a granulitaii cu 3 benzi. Pn acum au fost trecute n revist primele dou metode de reducere a atributelor unei imagini (metoda I i metoda II), iar n continuare vom aborda celelate dou metode - metoda III i metoda IV. n cadrul metodei III de reducere a atributelor, blocurile: "primele 4 momente", histograme multiscalare, caracteristicile Tamura, au aceeai funcionare ca i n cazul blocurilor similare din metoda I i metoda II, cu deosebirea c acestea acioneaz asupra imaginii originale (imagine pe nivele de gri). Acestor blocuri i se adaug i transformata Radon. Pentru a realiza transformata Radon s-a utilizat funcia deja implementat n Matlab: Au fost calculate transformatele Radon pentru patru valori ale lui theta - 0, 45, 90 i 135. Fiecare coloan a lui R va conine transfromata Radon pentru fiecare unghi din theta. Apoi coloanele matricei R sunt transformate n patru histograme a cte trei benzi fiecare. Astfel, transformata Radon particip cu un numr total de 4x3=12 trsturi la formarea vectorului de caracteristici. Metoda IV de extragere a trsturilor const n descompunerea polinomial Zernike a imaginilor pe nivele de gri. Rezultatele obinute n urma aplicrii polinoamelor Zernike asupra imaginii sunt valori complexe, i de aceea descriptorii imaginii vor fi modulul acestor valori
R = radon(I, theta) care returneaz transformata Radon R a intensitaii imaginii I pentru un unghi de theta grade [23].

16

(valoarea absolut a numerelor complexe obinute). La aceste metode s-a ajuns pornind de la cele descrise n [9] pentru formarea vectorului de trsturi din cadrul clasificatorului WND-CHARM. 3.2.1 Metoda de extragere a caracteristicilor din WND-CHARM Metoda propus pentru formarea vectorului de trsturi al clasificatorului WND-CHARM este ilustrat n urmtoarea figur:

Figura 3.3 Schema de formare a vectorului de trsturi din cadrul WND-CHARM [9] Dup cum se poate observa n figura 3.3 pentru formarea vectorului de trsturi s-au utilizat diferite transformate ale imaginilor (transformata Wavelet, transformata Chebyshev i transformata FFT), precum i combinaii ale acestor transformate (transformata Wavelet a transformatei FFT i transformata Chebyshev a transformatei FFT). Apoi din rezultatele obinute n urma acestor transformate, au fost extrase diferite trsturi, care sunt grupate n funcie de tipul lor (caracteristici de mare contrast, de descompunere polinomial, de statistic i textur) n patru grupe astfel:

Figura 3.4 Grupele de caracteristici pentru formarea vectorului de trsturi din WND-CHARM [9] n figura 3.4 este descris componena fiecrei grupe de caracteristici. Astfel, grupa A cuprinde urmtoarele caracteristici de contrast nalt(de form): - statisticile muchiilor care sunt calculate pe gradientul imaginii originale i cuprind mai multe caracteristici cum ar fi media, variana, o histogram cu opt benzi a magnitudinii i direciei pixelilor, numrul total de pixeli muchie normalizat n raport cu dimensiunea imaginii, omogenitatea direciei i o histogram cu patru benzi care ilustreaz diferena direciei muchiilor. Astfel, prin extragerea acestor statistici din imagine se obine un numr de 28 de trsturi. - coeficienii Gabor se obin prin utilizarea wavelet-urilor Gabor[9], obinndu-se un numr de 7 coeficieni pentru fiecare imagine.

17

- statisticile obiectelor sunt calculate pe imaginea binarizat prin intermediul pragului Otsu [9] i cuprind urmtoarele caracteristici: numrul lui Euler (diferena dintre numrul de obiecte i numrul de guri din imagine), centroizii imaginii, minimul, maximul, media, variana i o histogram cu zece benzi calculat pentru pixelii obiectelor i distana 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 numr de 28+7+34=69 caracteristici la formarea vectorului de trsturi. Grupa B reprezentat de caracteristicile de descompunere polinomial (de geometrie), are n componen urmtoarele trsturi: - statisticile Chebyshev- Fourier sunt extrase prin aplicarea transformatei ChebyshevFourier asupra unei imagini, obinndu-se un numr de 32 de trsturi. - statisticile Chebyshev sunt obinute prin transformarea coeficienilor rezultai n urma transformrii Chebyshev a imaginii ntr-o histogram cu 32 de benzi. - polinoamele Zernike - prin descompunerea polinomial Zernike se obin 72 de coeficieni compleci, dar ca descriptori ai imaginii se folosesc valorile absolute ale acestora. Dup cum se poate observa n figura 3.3 caracteristicile din grupa B sunt extrase din imaginea original i imaginea rezultat n urma transformatei FFT a imaginii originale, contribuind astfel cu un numr de 2x(32+32+72)=272 caracteristici la formarea vectorului de trsturi. Grupa C, dup cum se poate observa n figura 3.4 este compus din urmtoarele caracteristici de statistic a pixelilor i de textur: - primele 4 momente sunt reprezentate de media, deviaia standard, oblicitatea i planitatea imaginii. Fiecare din cele patru caracteristici enumerate sunt formate dintr-o histogram cu 12 benzi, rezultnd 48 de caracteristici. - trsturile Haralick sunt calculate cu ajutorul matricelor concurente ale imaginilor. Aceste trsturi cuprind un numr de 28 valori. - histograme multiscalare sunt obinute prin transformarea imaginii n patru tipuri de histograme, cu 3, 5, 7 i 9 benzi, rezultnd astfel 24 de valori. - caracteristicile Tamura se compun din direcionalitatea imaginii, contrastul, granularitatea i o histogram a granulitaii cu 3 benzi. Aceste trsturi contribuie cu un numr de 6 caracteristici la formarea vectorului de trsturi. Dup cum se poate observa n figura 3.3 caracteristicile din grupa C sunt extrase din transformata Wavelet a imaginii originale i transformata Wavelet a transformatei FFT a imaginii originale, contribuind astfel cu un numr de 2x(48+28+24+6)=212 caracteristici la formarea vectorului de trsturi. Grupa D este format din statisticile pixelilor i caracteristicile de textur ce fac parte din grupa C la care se adaug i caracteristicile Radon a imaginii originale. Prin aplicarea transformatei Radon asupra unei imagini se obine un numr total de 4x3=12 trsturi. 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 numr de 4x(48+28+24 +6+12)=472 caracteristici la formarea vectorului de trsturi. Pentru mai multe detalii despre modul n care au fost calculate caracteristicile din grupele 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 avnd ca referin figura 3.3. Pentru obinerea unor timpi de extragere a trsturilor i de clasificare mai buni este necesar a se utiliza un vector de trsturi cu o dimensiune ct mai mic. Astfel, pentru calculul vectorului de caracteristici, n lucrarea de fa se vor utiliza un numr mai redus de trsturi. Pentru reducerea numrului de trsturi, dar i din cauza numrului foarte mare de posibiliti de formare a vectorului de trsturi (disponibile n figura 3.3), n aceast lucrare s-a

18

procedat astfel: - s-a plecat de la formarea vectorului de trsturi prin mprirea figurii 3.3 n mai nou metode de extragere caracteristicilor (primele nou linii ale tabelului 3.1) i testarea fiecrei metode n parte. - s-au relizat combinaii ale celor nou metode de extragere (dup cum se poate observa n tabelul 3.1) pn cnd s-a ajuns la o performan de clasificare satisfctoare. - nc de la nceput s-a renunat din grupa A la coeficienii Gabor (datorit numrului mic de trsturi i timpului de obinere mai ridicat fa de celelalte caracteristici ale grupei), din grupa B la statisticile Chebyshev-Fourier (deoarece utilizeaz pentru calcul o mare parte din memorie i timpul de obinere este foarte mare), din grupa C la trsturile Haralick (datorit timpului de obinere foarte mare i modului complicat de calcul). Acuratee KNN Weka Metoda de extragere a trsturilor [%] k 1 3 5 imagine transformata Wavelet grupa C 70.6 68 70 imagine transformata Chebyshev grupa D 66.1 66.5 62.7 imagine transformata FFT transformata 68 67.5 75.5 Wavelt grupa C imagine transformata FFT transformata 64.8 65.4 65.3 Chebyshev grupa D imagine transformata FFT grupa B 68.9 67.2 65.8 imagine transformata FFT grupa D 59 53.3 60 imagine grupa A 62.7 62.7 60.4 imagine grupa B 81.5 80.7 83.5 imagine grupa D 82.5 83.5 82.5 imagine transformata Wavelet grupa C + imagine grupa A 70 71 73 imagine transformata Wavelet grupa C + imagine grupa A + 70.6 73.7 72 imagine transformata FFT transformata Wavelet grupa C imagine transformata Wavelet grupa C + imagine grupa A + imagine grupa B 70 71 73 imagine transformata Wavelet grupa C+ imagine transformata FFT grupa B Acuratee KNN Matlab [%] k 1 3 5 70 62 68.3 65.7 64.4 63.7 66.3 65.6 74 63.2 68 56.9 63 80.6 85 69.3 69.3 61.3 67.3 51.9 64.3 81.9 86.2 70.6 71.2 63.2 65.8 58.5 61.3 82.8 87 70 70

Nr. crt.

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

12.

69.3

70.6

70

13.

81

80.5

79.8

81.8

81.2

80.6

14.

15.

16.

imagine transformata Wavelet grupa C + statisticile Radon extrase din imaginea 86.8 original imagine transformata Wavelet grupa C + statisticile Chebyshev extrase din imaginea 73.7 original imagine transformata Wavelet grupa C + statisticile Chebyshev extrase din imaginea original + statisticile Radon extrase din 82.5 imaginea original

86.8

86.2

86.2

87.5

87.5

71.2

73

70.6

70.6

70.6

85

85

82.5

82.5

80

19

Nr. crt.

Metoda de extragere a trsturilor imagine transformata Wavelet grupa C + imagine grupa D imagine transformata Wavelet grupa C + imagine grupa D + imagine grupa B

17.

Acuratee KNN Weka [%] k 1 3 5 85.6 85 82.5

Acuratee KNN Matlab [%] k 1 3 5 87 88.7 88

18.

87.5

87.8

85

90

86.9

87.5

19.

imagine transformata Wavelet grupa C + imagine grupa D+ imagine grupa B+ 87.9 87.5 85.6 91.3 imagine transformata FFT transformata Wavelet grupa C Tabel 3.1 Metode de extragere a trsturilor analizate

86.3

86.3

n tabelul 3.1 se pot observa valorile acurateii de clasificare obinute att n Matlab ct i n Weka, prin intermediul clasificatorului KNN, respectiv IBk pentru un numr de vecini k= 1,3 sau 5. Dup cum se poate observa n tabelul 3.1, metoda de extracie a trsturilor care ofer cea mai mare acuratee este descris n ultima seciune a tabelului. Nu s-a mai continuat testarea altor combinaii de metode de extragere a trsturilor deoarece s-a obinut o acuratee de clasificare satisfctoare i pentru c timpul de extragere a trsturilor pentru toate imaginile din baza de date s nu mai creasc (pentru c este i aa unul foarte ridicat- 3 ore i 12 minute). Asfel, s-a ajuns la urmtoarea schem de formare a vectorului de caracteristici, care este utilizat mai departe n aceast lucrare:

Figura 3.5 Schema de formare a vectorului de trsturi

20

Figura 3.5 reprezint schema de formare a vectorului de caracteristici pentru care s-a obinut o acuratee de clasificare satisfctoare prin intermediul clasificatorului IBk din Weka i clasificatorului KNN implemantat n Matlab. Metodele de extragere a trsturilor ilustrate n figura 3.5 sunt descrise mai amnunit n n figura 3.2 i n seciunea 3.2 a lucrrii de fa. Astfel, dup cum se observ n figura 3.5 vectorul de caracteristici al fiecrei imagini va fi format din 318 trsturi. Pentru ntreaga baz de imagini vectorul de trsturi va fi format din 318 trsturi x 800 de imagini. 3.2.3 Evaluarea trsturilor n Weka Weka este un sistem foarte puternic cu ajutorul cruia se poate realiza numai clasificarea obiectelor (nu i extragerea caracteristicilor). Utilitarul poate fi descrcat gratuit de pe site-ul: http://www.cs.waikato.ac.nz/ml/weka/. Acesta a fost utilizat pentru a aplica o metod de nvare aupra vectorului de caracteristici i pentru a analiza rezultatele obinute. nainte de aplicarea oricrui algoritm de clasificare asupra datelor, acestea trebuie convertite n fisiere ARFF ("Attribute-Relation File Format"). Structura fiierului ARFF trebuie s respecte urmtoarea form:

Figura 3.6 Structura fiierului ARFF la modul general Figura 3.6 ilustrez modul de formare al unui fiier ARFF, n vederea antrenrii i testrii unui clasificator ales din Weka cu trsturile extrase din imaginile cuprinse n baza de date. Astfel, pentru vectorul de caracteristici format pe baza schemei din figura 3.5, structura fiierului ARFF va fi urmtoarea:

Figura 3.7 Structura fisierului ARFF utilizat n acest lucrare

21

n figura 3.7 este prezentat schema de formare a fiierului ARFF adaptat la aceast lucrare. Aadar, fiecare atribut trebuie descris n header header-ul fiierului ARFF, fiierul coninind informaii att despre tipul fiecrui atribut, precum i despre clasa din care face parte respectivul obiect. Clasa fiecrui obiect trebuie s fie cunoscut, pentru ca la testare s se poat compara clasa prezis de clasificator cu clasa real a obiectului respectiv. Dupa antrenarea (nvarea) asificator datelor se obine o matrice de confuzie ("confusion matrix") avnd dimensiunea [numr_clase x numr_clase], n cazul nostru 4x4, care arat numrul instanelor atribuite fiecrei clase de obiecte. Dac toate instanele au fost clasificate corect atunci doar elementele diagonalei principale ale matricei de confuzie sunt diferite de zero Dac spre exemplu vom avea zero. urmtoarele matrice de confuzie descrise n figura 3.8:

Figura 3.8 Matrice de confuzie pentru nvare, respectiv testare Matricele Notaiile realizate n figura 3.8 au urmtoarele seminificaii: M - clasa maini, P - clasa pietoni, A - clasa animale i G -clasa garbage. n figura 3.8 se poate observa c la nvare toate obiectele au fost atribuite corect claselor din care fac parte (figura 3.8 a figura a). n etapa de testare (figura 3.8 b): - toate obiectele din clasa maini (prima linie a matricei din figura 3.8 b) au fost clasificate corect ) - din clasa pietoni (a doua linie a matricei din figura 3.8 b) 36 de imagini au fost clasificate ) corect, 3 au fost clasificate ca fcnd parte din clasa animale i 1 din clasa garbage - din clasa animale 34 de imagini au fost clasif clasificate corect (a treia linie a matrice din figura 3.8 matricei b), 1 a fost clasificat ca fiind din clasa ma asificat maini, 2 au fost atribuite clasei pietoni i 3 clasei garbage - din clasa garbage (ultima linie a matricei din figura 3.8 b) 28 de imagini au fost clasificate corect, 3 au fost clasificate ca aparinnd clase maini i 9 clasei animale. clasei Figura 3.8 prezint matricele de confuzie pentru nvare, respectiv testare obinute n Weka cu le pentru clasificatorul IBk. Numrul de vecini al clasificatorului IBk este egal cu unu iar pentru formarea . unu, vectorului de trsturi s-a utilizat schema prezentat n figura 3.5. a Pentru nvare i testare vectorul de caracteristici al tuturor imaginilor din baza de date a fost mprit manual n 80% instane pentru nvare i 20% pentru testare, astfel nct s avem un numr de 160 de imagini din fiecare clas pentru an antrenare (din ntreaga baza de date un total din de 640 de imagini) i 20% din fiecare clas pentru testare (din ntreaga baz de date un total de ) 160 de imagini). Programul Weka pune la dispoziie un numr mare de algoritmi de nvare i testare. Deoarece n lucrarea de fa s a pus accentul pe extragerea trsturilor i nu pe analiza s-a performanelor diferiilor clasificatori, pentru a evalua calitatea trsturilor extrase din imagini s sa utilizat clasificatorul IBk. 3.3.4 Evaluarea trsturilor n Matlab Apelarea din Matlab a utilitarului Weka este una dificil. Din acest motiv, dar i datorit necesitii folosirii unui clasificator n interfaa grafic a lucrrii de fa s ales dezvoltarea n s-a Matlab a unui algoritm de clasificare. Datorit simplitii i uurinei de implementare pentru Datorit implementare,

22

evaluarea trsturilor n Matlab s-a ales utilizarea clasificatorului KNN. n aceast lucrare au fost utilizate pentru compararea performanelor de clasificare dou versiuni ale clasificatorului KNN: KNNC (KNN Classify) care este un clasificator implementat cu ajutorul funciei deja existente n Matlab:
Class = knnclassify(Sample, Training, Group, k, distance) [23].

Funcia knnclassyfy returneaz vectorul Class, care conine rezultatul clasificrii imaginilor din vectorul Sample n funcie de imaginile cu ajutorul crora se realizeaz nvarea clasificatorului KNN. Aceast funcie are ca i parametrii: - vectorul Sample care conine imaginile de testare i a crui linii vor fi clasificate n cele patru clase. - vectorul Training care conine imaginile de antrenare, fiind folosit la clasificarea obiectelor din vectorul Sample. Numrul de coloane a celor doi vectori Sample i Training trebuie s fie egal. - vectorul Group conine clasele imaginilor din setul de antrenare - k este numrul de vecini utilizat n clasificare - distance este metrica utilizat n clasificare KNNR (KNN Rule) care este implementat de Roger Jang i poate fi descrcat gratuit de pe site-ul: http://mirlab.org/jang/matlab/toolbox/dcpr/. Cu acest clasificator se obine exact aceeai acuratee de clasificare, dar un timp de clasificare mult mai bun. Acest lucru se datoreaz utilizrii MEX-files, care au rolul de a reduce timpul necesar n mod normal Matlab-ului s realizeze operaiile dorite. n interfaa grafic va fi utilizat numai clasificatorul KNNR datorit performanelor de clasificare superioare (n ceea ce privete timpul de clasificare). Astfel utilitarul Weka este folosit pe lng stabilirea metodei de extragere a trsturilor i la verificarea implementrii n Matlab a celor dou clasificatoare KNN. 3.3 Determinarea parametriilor transformatei Wavelet n aceast lucrare s-a utilizat transformata Wavelet discret pentru semnale bidimensionale. n Matlab aceast transformat are urmtoarea sintax:
[cA,cH,cV,cD] = dwt2(X,'wname') [23]

Prin aceast transformat se calculeaz matricea coeficienilor aproximai cA i matricele coeficienilor detaliai cH, cV i cD (pe orizontal, vertical i respectiv pe diagonal) prin descompunerea wavelet a matricei de intrare X (care poate fi reprezentat de o imagine). Transformata Wavelet are ca parametru numele familiei wavelet utilizat n descompunere. 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 nti se realizeaz transformata Wavelet a imaginii prin metoda descris mai sus (utilizat pentru obinerea primului nivel de descompunere wavelet) - pentru obinerea celui de-al doilea nivel al descompunerii se va aplica transformata Wavelet pe una din matricele coeficienilor (cA, cH, cV sau cD) sau pe o combinaie a acestor matrice. - se continu cu aplicarea transformatei Wavelet pe noile matrice de coeficieni pn cnd se atinge nivelul de descompunere dorit. Pentru determinarea parametriilor transformatei Wavelet s-a realizat urmtorul experiment: - s-a ales un nivel de descompunere egal cu 3, 4, 5 sau 6 (nivelele 1 i 2 nu ofer o compresie suficient a atributelor imaginii). Aadar sunt patru valori ale nivelului de descompunere. - pentru funciile mam ale descompunerii wavelet s-au folosit funciile deja implementate in Matlab, precum: Daubechies, Coiflet, Symlet, biortogonale i inverse biortogonale (reverse biortogonal) .

23

Numele familiei de funcii wavelet Daubechies se scrie dbN, unde N este ordinul, iar db este "prenumele" funciei wavelet. Funciile Coiflet (coifN) reprezint o alt familie de funcii discrete wavelet, descoperite de Ingrid Daubechies. Numele familiei de funcii wavelet Symlet se scrie symN, unde le fel ca i la Daubechies, N este ordinul, iar sym este "prenumele" funciei wavelet. Functiile wavelet biortogonale se scriu biorNr.Nd, iar funciile inverse biortogonale la fel ca i cele biortogonale se scriu rbioNr.Nd. Din varietatea de familii de wavelet-uri n acest experiment s-au utilizat urmtoarele funcii: db1db15, coif1coif5, sym1sym15, bior 1.1bior6.8, rbio1.1rbio6.8 (n total un numr de 64 de valori) - s-a utilizat numai metoda I de extragere a trsturilor (descris n figura 3.2) avnd ca scop a reducerea timpul de extragere pentru imaginile din baza de date. Astfel, prin utilizarea metodei I au fost obinui vectorii de trsturi ai bazei de imagini pentru valorile parametriilor transformatei Wavelet stabilite mai sus. S-au obinut un numr de 4x64=256 vectori de caracteristici, care au fost salvai n fiiere text. La sfritul fiecrei linii a fiierului s-a introdus clasa real a imaginii (pentru a se putea calcula acurateea de clasificare) - s-a realizat permutarea liniilor tuturor fiierelor, pentru a nu permite clasificatorului s nvee inclusiv ordinea de preluare a imagnilor (deoarece clasificatorul prelua pe rnd cele 4 clase, iar prin permutare imaginile sunt preluate aleator) - pentru nvare i testare datele au fost mprite asfel nct s se obin 80% din imaginile fiecrei clase pentru nvare i 20% pentru testare (cte 160 imagini din fiecare clas pentru nvare i 40 imagini din fiecare clas pentru testare). - s-a realizat clasificarea imaginilor din cele 256 de fiiere prin intermediul clasificatorului KNN. S-a optat pentru obinerea unei acuratei de clasificare ct mai bun, n defavoarea unor timpi calcul a transformatei Wavelet mai ridicai (cu ct nivelul de descompunere este mai mare cu att timpul necesar realizrii transformatei Wavelet este mai ridicat, dar scade timpul de clasificare). n urma acestui experiment s-a observat c acurateea maxim se obine pentru familia de wavelet-uri bior1.3 i nivelul de descompunere wavelet egal cu 3. Coeficienii cA, cH, cV i cD de nivlel 3 i familie bior1.3 ai unei imagini arat astfel:

Figura 3.9 Transformata Wavelet a unei imagini n figura 3.9 este prezentat rezultatul aplicrii transformatei Wavelet de familie bior1.3 i nivel de descompunere wavelet 3 asupra unei imagini oarecare din baza de date. n urma aplicrii transformatei wavelet de nivel 3 i familie bior1.3 s-a realizat reducerea numarului de atribute al imaginii prezentate n figur de la [148x93] (valori ce reprezint dimensiunea imaginii originale) pna la [16x22]. Dup cum se poate observa n figura 3.2 din rezultatul transformatei Wavelet al imaginii sunt extrase caracteristicile: "primele 4 momente", histograme multiscalare i caracteristicile Tamura, numrul de trsturi reducndu-se de la [16x22=352] la 78 (48 pentru "primele 4 momente", 24 pentru histogramele multiscalare i 6 pentru caracteristicile Tamura). 3.4 Modul de mprire a datelor pentru nvare i testare Dup cum se poate observa n figura 3.10, orice clasificator trebuie s aibe un set de date pentru antrenare i altul pentru testare. Iesirea unui astfel de clasificator este un vector care

24

conine numrul asociat claselor imaginilor din setul de testare (clasa_testare care este un vector coloan).

Figura 3.10 Schema bloc a clasificrii KNN n funcie de tipul clasificatorului setul de date de antrenare, respectiv de testare trebuie s aibe o anumit structur. Astfel pentru cele dou variante ale clasificatorului KNN (KNNC i KNNR) setul de antrenare i cel de testare va fi compus astfel: - setul de antrenare este format din doi vectori - vector_trsturi_antrenare, care conine pe fiecare linie trsturile imaginilor destinate antrenrii i clasa_antrenare, care este un vector coloan ce conine pe fiecare linie clasa corespondent imaginii sotocate pe aceeai linei n vectorul de antrenare. - setul de testare este format dintr-un singur vector care are acelai numr de coloane ca i vector_trsturi_antrenare, coninnd pe fiecare linie trsturile unei imagini de test. Numrul de linii al acestor vectori depind de procentul de imagini din baza de date destinate antrenrii i testrii. Cum s-a ales un procent de 80% din imaginile fiecrei clase pentru antrenare i 20% pentru testare, aceti vectori vor avea urmtoarea dimensiune: - vector_trsturi_antrenare: 80% x 800 imagini = 640 imagini, iar pentru fiecare imagine s-au extras 318 trsturi. Astfel dimensiunea datelor de nvare este [640 linii x 318 coloane]. - vector_trsturi_testare: 20% x 800 imagini = 160 imagini, iar pentru fiecare imagine s-au extras 318 trsturi. Astfel dimensiunea datelor de testare este [160 linii x 318 coloane]. - clasa_antrenare dup cum a mai fost precizat este un vector coloan cu acelai numr de linii ca i vector_trsturi_antrenare. Aadar vom avea o dimensiune de [640 linii x 1 coloan]. - clasa_testare este tot un vector coloan care conine acelai numr de linii ca i vector_trsturi_testare rezultnd astfel dimensiunea [160 linii x 1 coloan]. Testarea clasificatorului KNN s-a realizat pentru un numr de vecini k=1,3 sau 5. Dup cum se poate observa k ia doar valori impare, din cauz c avem patru clase i s-a dorit evitarea cazurilor n care clasificatorul poate atribuii imaginea la doua clase diferite n acelai timp (dac acesta gasete aceeai distan ntre vecinii si care fac parte din dou clase diferite). Acurateea clasificrii a fost calculat ca raportul dintre instanele corect clasificate i numr total de instane clasificate. Determinarea instanelor corect clasificate s-a realizat prin compararea claselor prezise de clasificator cu clasele reale (predefinite) ale imaginilor clasificate. Din acest motiv este necesar stocarea claselor reale ale imaginilor de test. 3.5 mbuntirea performanelor S-a ncercat mbuntirea performanelor prin dou metode: - reducerea numrului de trsturi extrase din fiecare imagine - transformarea aplicaiei ntr-un executabil 3.5.1 Reducerea numrului de trsturi extrase din fiecare imagine Dup cum se poate observa n figura 3.5 formarea vectorului de trsturi se realizeaz prin aplicarea asupra imaginilor din baza de date a combinaiei celor patru metode de extragere: metoda I, metoda II, metoda III i metoda IV. n tabelul 3.1 nu au fost analizate rezultatele tuturor combinaiilor posibile de formare a vectorului de trsturi. Astfel, s-a ncercat reducerea numrului de trsturi extrase din fiecare

25

imagine prin analiza tuturor modalitilor posibile de formare a vectorului de trsturi pornind de la cele patru metode: metoda I, metoda II, metoda III i metoda IV. Deoarece avem un numr de patru metode de extragere, numrul de modaliti posibile de obinere a vectorului de trsturi este dat de:
+ + + = 4 + 6 + 4 + 1 = 15 modaliti

Cele cincisprezece modaliti de formare a vectorului de trsturi sunt obinute prin aplicarea asupra imaginilor a urmtoarelor metode i combinaii de metode de extragere: 1. metoda I 2. metoda II 3. metoda 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 formai astfel cincisprezece vectori de caracteristici ai bazei de imagini, dimensiunea lor variind n funcie de modalitatea de extragere a trsturilor (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 aplicaie de extragere a trsturilor din imaginile bazei de date pentru toate cele cincisprezece modaliti de formare a vectorului de caracteristici. Vectorii astfel formai au fost salvai n fiiere text. - s-a realizat permutarea liniilor tuturor fiierelor, pentru a nu permite clasificatorului s nvee inclusiv ordinea de preluare a imagnilor - pentru nvare i testare datele au fost mprite asfel nct s se obin 80% din imaginile fiecrei clase pentru nvare i 20% pentru testare (cte 160 imagini din fiecare clas pentru nvare i 40 imagini din fiecare clas pentru testare) - s-a realizat clasificarea imaginilor din cei cincisprezece vectori de caracteristici prin intermediul clasificatorului KNN - rezultatele de clasificare a celor cincisprezece vectori au fost comparate pe baza acurateii de clasificare. Acurateea dat de fiecare combinaie de metode, a fost comparat cu rezultatele obinute pentru combinaia metoda I+metoda II+metoda III +metoda IV (cea cu care s-a obinut cea mai bun acuratee de clasificare). Astfel s-a observat c modalitile compuse din metoda III + metoda IV, metoda I + metoda III + metoda IV, metoda II + metoda III + metoda IV, se apropie foarte mult de acurateea obinut cu metoda I+metoda II+metoda III +metoda IV, fr a o depii (90.63 % faa de 91.25%). n cazul celor trei modaliti (metoda III + metoda IV, metoda I + metoda III + metoda IV, metoda II + metoda III + metoda IV) se obine un timp de clasificare mai bun (0.09 secunde fa de 0.11) dect n cazul metodei cu care s-a obinut cea mai bun acuratee (metoda I+metoda II+metoda III +metoda IV). Acest lucru se datoreaz numrului mai mic de trsturi pe imagine (pentru mai multe detalii consultai tabelul 4.1)

26

Totui, am optat pentru obinerea unei acuratei de clasificare ct mai bun n detrimentul unui timp de clasificare mai sczut. 3.5.2 Transformarea aplicaiei ntr-un executabil S-a ncercat mbuntirea performanelor n ceea ce privete timpii de clasificare a tuturor celor cincisprezece combinaii posibile de creare a vectorului de caracteristici, prin transformarea aplicaie realizate ntr-un fiier executabil. n acest scop am utilizat toolbox-ul deploytool din Matlab, care urmrete urmtoarea schem bloc pentru realizarea unui astfel de fiier:

Figura 3.11 Schma bloc urmat de toolbox-ul deploytool[23] n figura 3.11 este prezentat modul foarte simplu de realizare a unui fiier executabil. S-a ales acest mod de realizare a executabilului datorit simplitii precum i datorit dorinei de a obine timpi de clasificare mai buni. Astfel cu ajutorul acestui toolbox i urmrind paii de mai sus s-a realizat transformarea aplicaiei realizate n Matlab ntr-o aplicaie "standalone" (de sine stattoare, care nu necesit instalarea Matlab-ului pentru rulare) pentru sistemul de operare Windows. 3.6 Interfaa grafic a aplicaiei Pentru a realiza o prezentare a acestei lucrri s-a relizat o interfa grafic GUI (Graphical User Interface) cu ajutorul toolbox-ului GUIDE (Graphical User Interface Design Environment) din Matlab. Aceast aplicaie a fost transformat ntr-una executabil cu ajutorul deploytool. Interfa grafic arat astfel:

Figura 3.12 Interfaa grafic a lucrrii

27

n figura 3.12 este prezentat aplicaia GUI realizat prin intermediul toolbox-urilor Matlab (GUIDE + deploytool). Interfat grafic este format din trei prti: - partea de extragere a trsturilor - partea de clasificare a imaginilor - partea de testare a clasificatorului KNN cu alte imagini dect cele din baza de date 3.6.1 Extragerea trsturilor Interfaa grafic permite utilizatorului s aleag clasele de imagini utilizate n etapa de extragere a trsturilor, precum i metodele de extracie a trsturilor (poate s aleag orice combinaie a celor patru metode descrise n figura 3.2). Dup apsarea butonului "Creare vector trsturi" se va realiza extragerea trsturilor prin metoda aleas din imaginile claselor selectate. Timpul de extragere al trsturilor tuturor imaginilor din baza de date va fi vizibil utilizatorului odat cu terminarea procesului de extragere n csua numerotat cu "2", iar informaiile legate de numrul de caracteristici al vectorului de trsturi astfel format vor fi vizibile n csua numerotat cu "1". 3.6.2 Clasificarea imaginilor Pentru clasificarea imaginilor s-a ales clasificatorul KNNR. Interfaa permite setarea numrului de vecini pentru care se face clasificarea (csua "3") i procentului din numrul total de imagini destinat procesului de nvare (csua 4). Procentul de imagini pentru care se face testarea se calculeaz automat prin scderea din 100% a procentului de imagini de nvare. Acesta este afiat odat cu setarea procentului de nvare n csua "5". Prin apsarea butonului "Antrenare i testare KNN" se realizeaz clasificarea imaginilor din setul de testare n funcie de parametrii setai. Informaiile legate de acurateea clasificrii i timpul de clasificare vor fi afiate n csuele "6",respectiv "7". 3.6.3 Testarea clasificatorului KNN i cu alte imagini dect cele din baza de date Interfaa grafic permite testarea clasificatorului KNN i cu alte imagini dect cele din baza de date, n funcie de vectorul de trsturi extras "on-line" sau n funcie de vectorul de trsturi implicit obinut n cadrul celei mai bune metode de extragere a caracteristicilor (metoda I+metoda II+metoda III+metoda IV). Pentru a se realiza testarea, utilizatorul trebuie s aleag o nou imagine prin apsarea butonului "Preia imagine" i s selecteze vectorul de trsturi utilizat. Trsturile imaginii preluate vor fi extrase prin aceleai metode prin care s-a format i vectorul de trsturi ales (cel format on-line sau cel implicit). Informaiile legate de timpul de extragere a trsturilor, timpul de clasificare i clasa imaginii noi vor fi afiate n csuele "8", "9", respectiv "10".

4. Rezultate experimentale Toate experimentele din acest lucrare au fost relizate pe un calculator desktop avnd urmtoarea configuraie: - plac de baz: ASUS M3N78-VM - procesor: AMD Athlon(tm) 64 3000+, avnd 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

28

4.1 Rezultate experimentale Weka Pentru a avea convingerea c trsturile din vectorul de caracteristici sunt destul de difereniate de la o clas la alta, s-a folosit clasificatorul IBk (echivalentul KNN-ului) din Weka. Astfel s-a relizat testarea clasificatorului IBk cu datele de nvare, obinndu-se urmtoarea matrice de confuzie:

Figura 4.1 Matrice de confuzie Weka (numrul de vecini=1) Figura 4.1 prezint matricea de confuzie obinut n Weka prin testarea clasificatorului IBk cu datele de nvare, pentru vectorul de trsturi construit dup figura 3.5. n figura de mai sus se observ c n afar de diagonala principal celelalte elemente sunt zero, ceea ce nseamn c nici o imagine nu a fost atribuit altei clase dect celei din care face parte. Ei bine, situaia pentru cazul n care numrul de vecini este mai mare ca unu (respectiv k=3 sau 5) se schimb, fcnd ca acurateea clasificrii s nu mai fie de 100%. Astfel n acest caz s-au obinut urmtoarele matrice de confuzie:

(a)

(b)

Figura 4.2 Matricele de confuzie pentru k=3 (a), respectiv k=5 (b) obinute n Weka Figura 4.2 prezint matricele de confuzie obinute n Weka, prin testarea clasificatorului IBk cu datele de nvare (pentru vectorul de trsturi construit dup figura 3.5), ilustrnd rezultatele diferite obinute pentru k=3 (figura 4.2 a), respectiv k=5 (figura 4.2 b) fa de primul caz (figura 4.1) cnd 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, avnd i imagini care nu sunt atribuite corect. Astfel, cnd k=3 pentru clasa maini (notat cu M) au fost atribuite corect 199 de imagini din 200, una fiind atribuit incorect clasei animale (notat cu A), pentru clasa pietoni (notat cu P) - 193 corecte,7 incorecte, .a.m.d. Acurateea de clasificare n acest caz scade la 93.75% (adic 750 imagini clasificate corect din totalul de 800), pentru k=3 la 93.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 difereniere suficient ntre cele patru clase (existnd asemnri ntre acestea) i dup cum o s putem observa n cele ce urmeaz performaele de clasificare cele mai bune se vor obine pentru k=1. S-a ales pentru numrul de vecini valori impare (1,3, respectiv 5) din cauz c sunt patru

29

clase i s-a dorit evitarea cazurilor n care clasificatorul poate atribuii imaginea la doua clase diferite n acelai timp. De asemenea, Weka a fost utilizat i pentru verificarea implementrii clasificatoarelor KNN (KNNC i KNNR) n Matlab. Astfel, n etapa de testare, n Weka se obin urmtoarele matrice de confizie:

(a) (b) (c) Figura 4.3 Matricele de confuzie pentru setul de testare (k=1,3 i 5) obinute n Weka n figura 4.3 putem observa modul n care au fost atribuite imaginile din setul de testare (format din 20% din imaginile fiecrei clase, adic 40 de imagini din fiecare clas) n urma evalurii imaginilor cu ajutorul clasificatorului IBk. Astfel, pentru k=1 s-a obinut o acuratee 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 obinut urmtoarele matrice de confuzie:

(a)

(b)

(c)

Figura 4.4 Matricele de confuzie pentru setul de testare obinute n Matlab n figura 4.4 este prezentat rezultatul atribuirii imaginilor fiecrei clase, pentru setul de testare, clasificarea fiind realizat n Matlab prin intermediul celor dou clasificatoare KNN studiate. Aceste clasificatoare returneaz acelai rezultat al clasificrii n ceea ce privete acurateea, diferena major dintre ele fiind constituit de timpii de clasificare. n comparaie cu clasificatorul IBk din Weka, pentru cele din Matlab s-a obinut o acuratee de clasificare puin mai mare, respectiv pentru k=1 (figura 4.4 a) s-a obinut o acuratee 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 din totalul de 160) i pentru k=5 (figura 4.4 c) 86.25%. 4.2 Rezultate experimentale din Matlab i din aplicaia executabil Aplicaia executabil se refer la experimentul (transformat n fiier executabil) realizat pentru obinerea celor cincisprezece combinaii posibile de formare a vectorului de trsturi n seciunea: 3.5.1 Reducerea numrului de trsturi extrase din fiecare imagine, a lucrrii de fa. Diferena n ceea ce privete timpii de clasificare dintre cele dou clasificatoare (KNNC

30

i KNNR) n funcie de numrul de trsturi extrase (de combinaia de metode utilizat pentru construirea vectorului de trsturi) poate fi observat att n figura 4.5, ct i n tabelul 4.1.

Figura 4.5 Graficul timpului de clasificare n funcie de numrul de trsturi n figura 4.5 sunt prezentate sunt prezentate urmtoarele grafice: - graficul timpului de clasificare KNNR (cel cu albastru) al celor cincisprezece vectori de caracteristici (pentru mai multe detalii vezi seciunea 3.5.1 a acestei lucrri) n funcie de numrul de de trsturi extrase din imagini pentru fiecare combinaie de metode (vezi tabelul 4.1) - graficul timpului de clasificare KNNC (cel cu rou) al celor cincisprezece vectori de caracteristici n funcie de numrul de de trsturi extrase din imagini pentru fiecare combinaie de metode (vezi tabelul 4.1). Dup cum observm n figura 4.5 timpul de clasificare KNNR este mult mai bun, avnd valori mai mici dect timpul de clasificare KNNC.Timpul de clasificare KNNC este divizat cu zece pentru a se putea observa mai bine diferenele ntre cele dou grafice n fiecare punct. Comparnd valorile timpilor de clasificare KNNR obinui n Matlab i n aplicaia executabil din figura 4.6 putem observa c performanele obinute n Matlab nu difer foarte mult de cele obinute prin intermediul aplicaiei executabile.

Figura 4.6 Graficul timpului de clasificare n funcie de numrul de trsturi

31

Figura 4.6 prezint variaia timpilor de clasificare ai KNNR-ului obinui n cadrul aplicaiei Matlab (cu albastru), respectiv n cadrul aplicaiei executabile (cu rou) de obinere a performanelor de clasificare pentru cele cincisprezece moduri de formare a vectorului de trsturi, fiind relizat n Matlab.

Figura 4.7 Graficul timpului de extragere coeficieni n funcie de numrul de trsturi Figura 4.7 prezint graficul timpului de extragere a coeficienilor (obinut n Matlab- cu albastru i n aplicaia executabil- cu rou) n funcie de numrul de trsturi. Dup cum se poate observa n figura 4.7, diferenele dintre timpul de extragere a caracteristicilor pentru toate imaginile din baza de date n cazul aplicaiei Matlab, respectiv aplicaiei standalone, sunt att de mici nct reprezentrile grafice a acestora n funcie de numrul de trsturi extrase pentru fiecare imagine sunt suprapuse. Astfel, transformarea unei aplicaii Matlab ntr-un executabil nu ofer performane cu mult mai bune n ceea ce privete timpii de execuie, dar este util pentru rularea aplicaiei Matlab pe calculatoarele care nu au instalat programul Matlab. n tabelul 4.1 sunt prezentate rezultatele experimentale obinute n Matlab, prin clasificarea tuturor celor cincisprezece posibiliti de creare a vectorului de trsturi. Dup cum putem observa, tabelul informeaz asupra numrului de trsturi din vectorul de caracteristici construit conform metodei specificate, timpul de extragere al coeficienilor tuturor imaginilor din baza de date, numrul de vecini k al clasificatorului KNNR pentru care s-a obinut acurateea de clasificare cea mai mare, acurateea de clasificare pentru fiecare clas de imagini din baza de date, acurateea medie a celor patru clase de imagini, timpul necesar clasificatoarelor KNNR i KNNC s clasifice setul de testare constituit din atributele a 20% din imaginile fiecrei clase (40 de imagini din fiecare clas). n tabelul 4.2 sunt prezentate aceeai termeni de performan a clasificrii i extragere a trsturilor, cu excepia timpului de clasificare KNNC, obinui n urma transformrii aplicaiei de obinere a celor cincisprezece vectori de atribute i de clasificare a acestora ntr-o aplicaie executabil independent de Matlab. Prin aceast transformare s-a ncercat mbuntirea performanelor de extragere i de clasificare prin mbuntirea timpilor de extragere a trsturilor, respectiv timpilor de clasificare a setului de testare pentru fiecare din cei cincisprezece vectori de atribute.

32

Tabel 4.1 Rezultate obinute n Matlab


Nr. crt

Combinaia de Metode

Numr trsturi

Timp extragere coeficieni

Acuratee [%] Garbage 68 47 80 85 72 85 85 82 90 90 85 90 90 90 90

1 3 5 Masini Pietoni Animale x x x x x x x x x x x x x x x 95 88 97 100 97 97 100 97 100 100 97 100 100 100 100 90 88 85 97 95 85 97 85 97 95 85 97 95 95 95 50 60 75 45 70 75 50 75 55 78 75 60 78 78 80

Acurateea medie [%] 75.63 70.63 84.38 81.88 83.75 85.63 83.13 85 85.63 90.63 85.63 86.88 90.63 90.63 91.25

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

I II III IV I II I III I IV II III II IV III IV I II III I II IV I III IV II III IV I II III IV

78 78 90 72 156 168 150 168 150 162 246 228 240 240 318

1 min, 11 sec 1 min, 41 sec 17 min 2 h, 51 min 2 min, 51 sec 18 min 2 h, 52 min 19 min 2 h, 53 min 3 h, 9 min 20 min 2 h, 54 min 3 h, 10 min 3 h, 10 min 3 h, 12 min

Timp clasificare KNNR [s] 0.05 0.07 0.05 0.04 0.06 0.07 0.06 0.07 0.06 0.09 0.09 0.08 0.09 0.09 0.10

Timp clasificare KNNC [s] 0.30 0.21 0.45 0.20 0.62 0.65 0.68 0.80 0.73 0.79 1.26 0.97 1.21 1.27 1.30

33

Tabel 4.2 Rezultate obinute prin transformarea aplicaiei ntr-un executabil


Nr. crt

Combinaia de Metode I II III IV I II I III I IV II III II IV III IV I II III I II IV I III IV II III IV I II III IV

Numr trsturi 78 78 90 72 156 168 150 168 150 162 246 228 240 240 318

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Timp extragere coeficieni 1 min, 7 sec 1 min, 34 sec 16 min 2 h, 51 sec 2 min, 41 sec 18 min 2 h, 52 min 18 min 2 h, 52 min 3 h,8 min 19 min 2 h, 54 min 3 h, 9 min 3h, 9 min 3 h, 11 min

k 1 3 5 x x x x x x x x x x x x x x x Masini 95 88 97 100 97 97 100 97 100 100 97 100 100 100 100

Acuratee [%] Pietoni 90 88 85 97 95 85 97 85 97 95 85 97 95 95 95 Animale 50 60 75 45 70 75 50 75 55 78 75 60 78 78 80 Garbage 68 47 80 85 72 85 85 82 90 90 85 90 90 90 90

Acurateea medie [%] 75.63 70.63 84.38 81.88 83.75 85.63 83.13 85 85.63 90.63 85.63 86.88 90.63 90.63 91.25

Timp clasificare KNNR[s] 0.04 0.04 0.04 0.04 0.06 0.06 0.06 0.06 0.06 0.08 0.09 0.08 0.08 0.10 0.10

34

n figura de mai jos (figura 4.8) se poate observa rata de clasificare a celor patru clase (masini- n galben, pietoni- n rou, animale- n verde i garbage- n albastru), precum i acurateea medie (cu linie neagr ntrerupt) n funcie de numrul de trsturi al vectorului de caracteristici.

Figura 4.8 Graficul acurateii n funcie de numrul de trsturi Figura 4.8 prezint acurateea de clasificare a celor patru clase i acurateea medie n funcie de numrul de trsturi al vectorului de caracteristici, fiind realizat n Matlab. Dup cum se poate observa n acest figur clasa cu cea mai bun rat de recunoatere este clasa maini, urmat de clasa pietoni, fapt ce poate fi explicat prin existena unui numr suficient de imagini, care s permit clasificatorului o nvare eficient. n cazul celorlalte dou clase, animale i garbage, acurateea de clasificare este mai sczut datorit varietii de fundale ale imaginilor. 5. Concluzii Pe durata realizrii acestei lucrri au fost studiate diferite metode deja existente de formare a vectorului de trsturi n vederea clasificrii imaginilor. Din multitudinea de metode studiate (vezi figura 3.3), s-a ajuns la schema de formare a vectorului de caracteristici prezentat n figura 3.5. n funcie de acurateea de clasificare, a fost aleas combinaia de metode ce mai bun de extragere a trsturilor din imaginile bazei de date. Din punct de vedere aplicativ a fost dezvoltat o interfa grafic, care permite utilizatorului s selecteze diferite variante de formare a vectorului de trsturi, precum i posibilitatea testrii clasificatorului KNN cu alte imagini dect cele din baza de date. Vectorul de trsturi poate avea, n funcie de metodele alese, o dimensiune minim de 72 caracteristici i maxim de 318 caracteristici. Principalul avantaj al aplicaiei realizate, n comparaie cu metoda de extragere caracteristici propus n WND-CHARM (figura 3.3) este numrul mult mai redus de trsturi pe imagine, ceea ce are o influen foarte mare asupra timpului de extragere al coeficienilor tuturor imaginilor din baza de date, precum i asupra timpului de clasificare. Astfel, timpul necesar extragerii trsturilor (pentru care se obine acurateea cea mai

35

bun) este de 3 ore i 11 minute, n comparaie cu cele 48 de ore necesare extragerii caracteristicilor cu metoda propus n WND-CHARM. De asemenea, s-a obinut o acuratee de clasificare mult mai bun, dect dac se realiza extragerea caracteristicilor pe baza metodologiei descris n figura 3.3 (91.25% fa de 68%). n ceea ce privete baza de imagini, s-a ajuns la concluzia c aceasta trebuie s aibe un numr mai mare de imagini cel puin pentru clasele animale i garbage, pentru ca rezultatele clasificrii s fie mbuntite. Acurateea de clasificare nu crete liniar odat cu extragerea mai multor trsturi din imaginile bazei de date (vezi figura 4.8). Prin extragerea mai multor caracteristici din fiecare imagine se mrete timpul de extragere al trsturilor, precum i timpul de clasificare. De aceea pentru a avea o clasificare ntr-un timp ct mai redus trebuie s se fac un compromis ntre dimensiunea vectorului de trsturi i timpul de clasificare. Prin transformarea aplicaiei Matlab ntr-una executabil nu se pot obine timpi de execuie mai buni, dar aceasta este folositoare la rularea aplicaiei realizate n Matlab pe calculatoarele care nu au instalat acest program. n urma rezultatelor obinute, Weka s-a dovedit un program foarte util n stabilirea metodelor eficiente de formare a vectorului de trsturi, precum i n verificarea implementrilor Matlab a clasificatoarelor KNN (KNNC i KNNR). Problemele cele mai importante, ntmpinate n realizarea acestei lucrri au fost: - construirea unei baze de date care s conin un numr suficient de imagini pe clas Acurateea de clasificare a fiecrei clase dup cum se poate observa i n figura 4.8 nu este aceeai pentru toate clasele i datorit faptului c nu a fost realizat o baz de date special conceput pentru aceast lucrare, imaginile care formeaz cele patru clase fcnd parte din baze de imagini diferite. - dimensiunea diferit a imaginilor din baza de date Aceast problem a fost rezolvat prin folosirea unor metode de extragere a trsturilor care s aibe ca rezultat acelai numr de caracteristici indiferent de dimensiunea imaginii. Astfel, dimensiunea vectorului de trsturi nu variaz de la o imagine la alta, fiind aceeai pentru toate imaginile. Aceast condiie este necesar la clasificarea imaginilor. Extragerea unui numr constant de trsturi din fiecare imagine (indiferent de dimensiunea lor) se putea realiza i prin redimensionarea tuturor imaginilor din baza de date la aceeai dimensiune, dar rezultatele obinute nu sunt la fel de bune. Aplicaia realizat poate fi utilizat cu succes la dezvoltarea unor sisteme de recunoatere de obstacole, ntlnite de o main pe osea, sisteme automate de supraveghere a parcrilor sau sisteme de utilaje automate n vederea efecturii unor lucrri agricole. Prin schimbarea bazei de imagini cu una constituit din imagini medicale, aplicaia poate fi utilizat n domeniul medical pentru detecia anomaliilor sau procesarea imaginilor biologice.

36

6. 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, 17581767. [3] Jing, X.Y., Zhang, D., 2004. A Face and Palmprint Recognition Approach Based on Discriminant DCT Feature Extraction. IEEE Transactions on Systems, Man, and Cybernetics, 34, 24052414. [4] Pentland, A., Choudhury, T., 2000. Face recognition for smart environments. Computer, 33, 5055. [5] Boland, M.V., Murphy, R.F., 2001. A Neural Network Classifier Capable of Recognizing the Patterns of all Major Subcellular Structures in Fluorescence Microscope Images of HeLa Cells. Bioinformatics, 17, 12131223. [6] Awate, S.P., Tasdizen T., Foster N., Whitaker R.T., 2006. Adaptive Markov modeling for mutualinformation-based, unsupervised MRI braintissue classification. Medical Image Analysis, 10,726739. [7] Cocosco, A., Zijdenbos, P., Evans, A.C., 2004. A fully automatic and robust brain MRI tissue classification method. Medical Image Analysis, 7, 513527. [8] Ranzato, M., Taylor, P.E., House, J.M., Flagan, R.C., LeCun, Y., Perona, P., 2007. Automatic recognition of biological particles in microscopic images. Pattern Recognition Letters, 28, 3139. [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/referencies/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

37

[19]http://www.cs.auckland.ac.nz/compsci708s1c/lectures/Glecthtml/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/mooretutorial.pdf?branch=main&language=en [26] http://www.mathworks.com/support/tech-notes/1600/1605.html#intro

38

7. Anexe 7.1 Anexa 1 Codul Matlab al funciei 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 for i=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 obinerea fiierului cu vectorul de trsturi clc close all clear all %fis- fisierul in care va fi salvat vectorul de trasaturi fis=fopen('fisier_caracteristici.txt','w' ); for i=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 funciei de extragere trsturi 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(fisLst); 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\'),...

39

strcat(currentfolder,'\garbage\')}; [T,clasa]= sort(T,'descend'); clasa=clasa(1); dirImagini=dirImagini{clasa}; for i = 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 transformatei fft a imaginii first4moments = CombFirst4Moments(caracteristici_wavelet_fft); multiscalehist = MultiScaleHistograms(caracteristici_wavelet_fft); TamuraFeatures = TamuraTextures(caracteristici_wavelet_fft); vect_caracteristici=[vect_caracteristici,first4moments,multiscalehist,... TamuraFeatures]; %metoda III de extractie %aplicare first4moments, MultiScaleHistograms, TamuraTextures si % RadonTransform asupra imaginii originale first4moments = CombFirst4Moments(imagine); multiscalehist= MultiScaleHistograms(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);

40

vect_caracteristici=[vect_caracteristici,zvalues]; %% salvam rezultatul in fisier lungime=size(vect_caracteristici,2); for j=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 obinerea fiierului 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% si 20% pentru invatare si testare prelucrareFisierIN(fisierulmeu); fclose all; Codul Matlab pentru funcia prelucrarefisierIN 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),:);

41

clasa3_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 parametrii imaginilor cu liniile permutate %scrierea matricei in noul fisier-fisier_caracteristici_random1.txt dim1=size(date); for k1=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)); for i = 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 funcia permutareLinii function [rez] = permutareLinii(matrice) % face permutarea liniilor matricei 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

42

dim=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'); [x y]=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 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); timp=0; accuracy=0; % facem antrenarea si testarea KNN pentru k=1,3 si 5, unde k=numarul de % vecini for k=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;

43

perf=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,accuracy_animals,accuracy_garbage); end; fclose all; 7.6 Anexa 6 Codul Matlab al aplicaiei 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 LICENTAEXE.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, ...

44

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(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, handles); % 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 from 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

45

% --- Executes on button press in radiobutton4 - pietoni function radiobutton4_Callback(hObject, 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 state 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

function edit1_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 numar mai mic sau egal cu 100',... 'Error'); else procent_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)

46

% 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. if ispc && 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 data (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. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

function edit3_Callback(hObject, eventdata, 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 text % 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.

47

if ispc && isequal(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 handle 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,'String')) 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. if ispc && 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)

48

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 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,'Value'); %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

49

%caracteristici if (metoda3==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 press in pushbutton2 - antrenare si testare KNN function pushbutton2_Callback(hObject, eventdata, handles) % toate butoanele disable disableButtons(handles);

50

% 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];

51

elseif (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); for k1=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'));

52

tic %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,computedOutput)*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') returns 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.

53

% See ISPC and COMPUTER. if ispc && 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. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 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 controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end

54

function 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 handle 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 and COMPUTER. if ispc && 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 defined 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');

55

%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\'),...

56

strcat(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 for i=1:numar_clase(2) numberOfLines = GiveNbOfLines(strcat('Lista.txt')); fid_imagesLst=fopen(strcat('Lista.txt')); for j=1:numberOfLines-1 imgName = numeImagine(fid_imagesLst); % citesc imaginea, o transformam din color in 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,met2,met3,met4,imagine); clear imagine; % salvam rezultatul in fisier lungime=size(vect_caract,2); for k=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.radiobutton13,'Enable','on');

57

set(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 (see 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 usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && 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)

58

%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(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(handles.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

59

disp(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, handles); 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=im2double(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 % extragere 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

60

DS.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 pentru 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 aferent 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';

61

elseif (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(handles.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)

62

% Hint: get(hObject,'Value') returns toggle state of radiobutton13 Codul Matlab pentru metodele de extragere folosite n aplicaia 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,... TamuraFeatures]; clear first4moments; clear multiscalehist; clear TamuraFeatures; function [vect_caracteristici2]=metoda2(imagine) % aplicare fft asupra imaginii originale % metoda II fftTrans=FourierTransform(imagine); % % aplicare CombFirst4Moments, MultiscaleHistograms, TamuraTextures % % asupra transformatei wavelet a transformatei FFT vect_wavelet=compresie_wavelet(fftTrans(:,:,1),3,'bior1.3'); first4moments = CombFirst4Moments(vect_wavelet); multiscalehist = MultiScaleHistograms(vect_wavelet); TamuraFeatures = 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;

63

function [vect_caracteristici4]=metoda4(imagine) % metoda IV % % aplicare Zernike polinomials asupra imaginii originale zvalues = ZernikePolynomials(imagine)*1000; vect_caracteristici4=zvalues; clear zvalues; Codul Matlab pentru extracia trsturilor din fiecare imagine n funcie de metodele alese n aplicaia 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)&&(~(met1))&&(~(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)))

64

vect_caract=[metoda3(imagine),metoda4(imagine)]; elseif ((met1)&&(met2)&&(met3)) vect_caract=[metoda1(imagine),metoda2(imagine),... metoda3(imagine)]; elseif ((met1)&&(met2)&&(met4)&&(~(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;

65