Sunteți pe pagina 1din 85

TATEA DE ELECTRONIC, TELECOMUNICAII I TEHNOLOGIA INFORMAIEI

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 Gavril Toderean

Marina OPA

DECAN, Prof.dr.ing.

CONDUCATOR, Asist. ing. Anca Aptean Alexandru Mihu

ABSOLVENT,

2010
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 a trsturilor deja existente, clasificarea imaginilor pe baza trsturilor extrase i realizarea din punct de vedere aplicativ a unei interfee grafice de extragere a trsturilor i clasificare a imaginilor.

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

EF CATEDR,

ABSOLVENT,

Prof.dr.ing. Virgil DOBROTA Alexandru Mihu CONDUCATOR, Asist.ing. Anca Aptean

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 , Mihu Alexandru

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

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 se poate de scurt. Lucrarea urmrete extragerea trsturilor din imaginile unor obstacole ce se pot gsi n scenele rutiere pentru a obine o acuratee a clasificrii ct mai mare. Imaginile sunt grupate n patru categorii: maini, pietoni, animale i garbage, fiind n numr de 200 pentru fiecare clas. Aceste obiective au fost realizate prin studierea mai multor referine bibliografice. Soluia adoptat este reprezentat de utilizarea unor metode de extragere a trsturilor ce fac parte din metodologia de formare a vectorului de caracteristici al clasificatorului WND-CHARM [9]. 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 comparativ cu 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 aproximativ 11 ori pentru timpul de extragere al trsturilor tuturor imaginilor din baza de date i de aproximativ 3 ori pentru timpul de clasificare al celor 20% din imaginile ficrei clase destinate testrii). 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 obstacle images that can be found in traffic scenes with high classification accuracy. The images are grouped in four main groups, each with with 200 images ilustrating cars, pedestrians, animals and backgrounds. This objectives were achieved by studying several bibliographic references. The adopted solution is reprezented by use of feature extraction methods that are part of feature vector forming described in WND-CHARM classifier [9]. Number of features per image have been reduced from 1024 attributes per image used in WND-CHARM feature vector to 318 attributes per image, by removing the inefficient extraction methods in terms of clasification performance. Thus, the time needed for feature extraction for all database images and classification time was reduced significantly (approximately 11 times for feature extraction time, respectively 3 times for test images classification time). 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 Tehnical University of Cluj Napoca 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

Lista de figuri

Lista de tablele

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 se pot 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 modul nostru de gndire n sistemele artificiale. Pentru noi oamenii, recunoaterea unui obiect se face cu uurin, chiar dac acel obiect nu este vzut n ntregime, dar n general nu putem explica 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 n general includ caracteristici de culoare, textur sau form. Caracteristicile sunt obinute 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 lucrarea 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. Pentru a vedea eficiena metodelor de extragere a caracteristicilor 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. Aceste obiective au fost realizate prin studierea mai multor referine bibliografice. Soluia adoptat este reprezentat de utilizarea unor metode de extragere a trsturilor ce fac parte din metodologia de formare a vectorului de caracteristici al clasificatorului WND-CHARM (Weighted Neighbor Distances using a Compound Hierarchy of Algorithms Representing Morphology[9]) - distana ponderat dintre vecini utiliznd o ierarhie compus de algoritmi morfologici. Pentru mai multe detalii a se consulta [9]. 8

Trsturile vectorului de caracteristici includ descompunerea polinomial (reprezentat de polinoamele Zernike), elementele de statistic a pixelilor (media, deviaia standard, skewness- oblicitatea, kurtosis- planitatea, histogramele multi-scal) 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 FFT- Fast Fourier Transform a imaginii pe nivele de gri). O alt transformat utilizat este transformata Radon a imaginii pe nivele de gri, care este folosit pentru extragerea 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 predefinit (clasa maini, pietoni, animale i garbage) cu ajutorul utilitarului Weka. Deoarece apelarea din Matlab a utilitarului Weka este foarte complicat i datorit faptului c s-a dorit dezvoltarea unei aplicaii de sine stttoare n Matlab, s-a ales implementarea n Matlab a unui algoritm de clasificare. n luarea deciziei asupra clasei imaginii de test s-a folosit 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 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 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 selectate de utilizator, 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 urmtoarele 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 i obiectele vizate de aplicaia de fa se gsesc ntr-un mediu exterior, unde informaia de culoare este foarte bogat i variat. b) extragerea caracteristicilor sau trsturilor din 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 textur. n descompunerea polinomial este generat un polinom ce aproximeaz imaginea n funcie de gradul de fidelitate, iar coeficienii acestui polinom sunt utilizai ca trsturi ai coninutului imaginii. Caracteristicile 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 transformata Wavelet 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 multi-scal) 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 caracteristicile obinute n urma transformatei Radon a imaginii pe nivele de gri. c)evaluarea caracteristicilor sau trsturilor - 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). Aceast valoare numeric relev distana vectorului de trsturi fa de graniele regiunilor sau fa de "bornele de clasificare".[10] n lucrarea de fa evaluarea trsturilor s-a realizat cu ajutorul clasificatorului KNN, cu un numrul de vecini k=1,3 sau 5. S-a ales o valoare impar a numrului de vecini doarece s-a dorit evitarea cazurilor n care clasificatorul poate atribuii imaginea de test la dou clase diferite n acelai timp. d) clasificarea imaginii - este etapa care mbin rezultatele msurtorilor multiple anterioare, i totodat reprezint etapa final a sistemului. Prin clasificare se stabilete apartenena formei, obiectului sau imaginii descris prin vectorul de trsturi, la un set 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.

10

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|s|xt**t-sdt (1),

unde x(t) este semnalul ce trebuie analizat i (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 baz 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).

11

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 coeficienilor 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 i 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)=0 G0(z)*G1(z)+H0(z)*H1(z)=2z-d | (2) (3),

12

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:

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 i 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 transformata Wavelet care este utilizat 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 wavelet-urile 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. 13

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.2 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 precum i n metoda II (vezi figura 3.2). 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 Definirea transformatei FFT FFT produce exact aceleai rezultate ca i DFT, singura diferen fiind reprezentat de rapiditatea transformatei FFT. Fie x0 , x1, ,xN-1 , numere complexe. Transformata DFT este definit de urmtoarea formul: Xk+1=n=0N-1x(n+1)WNkn , k=0,1, ,N-1 (4), iar inversa ei IDFT este: Xn+1=1Nk=0N-1X(k+1)WN-kn, n=0,1, ,N-1 (5), unde j este unitatea imaginar, WN=e-j2n i N= lungime(x) [13]. Evalund ecuaia (4), observm c aceasta necesit N2 operaii: sunt N ieiri Xk 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.2 pentru mai multe detalii).

14

2.3.2 Aplicaii ale transformatei FFT Transformata FFT are aplicaii n urmtoarele domenii: compresia datelor (ex. MP3) analiza spectral a semnalelor filtrare obinerea rspunsului n frecven a unui sistem rezolvarea ecuaiilor 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: xcos+ysin= (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 nclinate cu unghiul fa de axa x pozitiv i situat la distana fa de origine [17]. Se noteaz n general cu g(,) i are urmtoarea formul: g(,)=-+fx,y(xcos+ysin-)dxdy (7), unde reprezint funcia Dirac i este ilustrat n [16] astfel: x=+, x=0 0 ,x0(8)

Figura 2.4 Reprezentarea grafic a celor dou forme ale transformatei Radonecuaia (7) i (9) [17][18] Ecuaia ilustrat n [17]:

15

g(,)=-+f(s cos-u sin, s sin+u cos)du

(9),

este echivalent cu ecuaia (2), fiind obinut prin rotirea axelor de coordonate cu unghiul , unde: s=x cos+y sin x=s cos-u sin (10) u=-x sin+y cos y=x sin+u cos 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 a caracteristicilor din imagini, n lucrarea de fa trsturile Radon sunt calculate pentru unghiurile 00, 450, 900 i 1350. 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 multiscal, "primele 4 monemte" i caracteristicile Tamura formeaz metoda III de formare a vectorului de trsturi (vezi figura 3.2 pentru mai multe detalii). 2.4.2 Aplicaii ale transformatei Radon Transformata Radon 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. Pentru mai multe detalii a se consulta [19]. 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 : 16

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 bun 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: Fcon=4n 11, unde: 4=44 12; m)4Pr (q/g) (14) i 2=q=0qmaxq-m2Prqg (13); 4= m este media nivelelor de gri.[19] q=0qmax(q-

2.5.3 Direcionalitatea Gradul de direcionalitate este msurat folosind distribuia spectral a muchiilor locale orientate, fa de unghiurile direcionale ale acestora. Soliditatea 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: ex,y=0.5(xx,y+yx,y) (15) ax,y= tan-1(yx,y/xx,y) (16)

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 fereastr de dimensiune 3x3 [19]: 01 1 01 1 01 1 1 1 1

0 0 0 1 1 1

Histograma Hdir(a) a valorilor direciei cuantizate a este construit prin numrarea pixelilor muchie care un anumit unghi direcional i soliditatea

17

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 i este descris de urmtoarea ecuaie: Fdir=1-rnpeaksp=1npeaksawpa-ap2Hdir(a) (17), n ecuaia (17) npeaks 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.2). 2.6 Polinoamele Zernike Polinomele Zernike au fost dezvoltate la nceputul secolului XX de ctre fizicianul german Frits Zernike (faimos pentru invenia microscopului fazcontrast, pentru care a cstigat premiul Nobel pentru Fizic n 1953).

Figura 2.5 Valorile Zernike n unitatea de disc [20] 2.6.1 Definirea polinoamelor Zernike Aceste caracterisitici Zernike sunt un set de polinoame definite pe unitatea de disc (figura 2.5), ce pot fi reprezentate att n sistemul cartezian

18

(x,y), ct i n coordonate polare (r,). Cea mai utilizat form, este descris n [21] ca fiind cea polar: Zj,impar=n+1Rnmr2cosm, m0 (18) Zj,par=n+1Rnmr2sinm,m0 (19) Zj=n+1Rn0r,m=0 (20), unde: Rnmr=s=0(n-m)/2-1sn-s!s!n+m2-s!n-m2-s!rn-2s (21) Valorile lui m i n sunt ntotdeauna ntregi i satisfac condiile mn i nm=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: W(r)ZjZkd2r=jk(22), unde: Wr=1 , pentru r10, pentru r>1 (23) 2.6.2 Aplicaii ale polinoamelor Zernike 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 sferic ideal, care au ca rezultat erori de refracie. - optica adaptiv, la nlturarea distorsiunilor atmosferice. Aplicaiile n acest domeniu sunt astronomia vizibil sau inflaroie (IR) i 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.2). 2.7 Histograme multi-scal

19

Pentru acest set de trsturi sunt calculate patru 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 valori foarte larg. Maximul histogramelor este folosit pentru normalizarea vectorului de caracteristici rezultat, care are un numr de 1x24 elemente. Histogramele multi-scal 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 multi-scal sunt utilizate n cadrul metodelor I, II i III de formare a vectorului de trsturi (pentru mai multe detalii vezi figura 3.2). 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" pentru patru orientri diferite (00, 900, +450 i -450). "Primele 4 momente" (media, deviaia standard, skewness i 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 transformate n histograme cu trei benzi, rezult un vector de trsturi care conine 4x4x3=48 elemente.[9] "Primele 4 momente" sunt utilizate, la fel ca i histogramele multi-scal 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 funcie de setul cunoscut de date de antrenare. Prin aceast tehnic folosit n special pentru clasificarea datelor n mai multe clase, un nou obiect 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 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 metrici folosite n cadrul algoritmului KNN pentru calculul distanei minime dintre noul vector i vectorii din setul de antrenare: - distana euclidian - distana euclidian standardizat 20

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 trsturi de dimensiune [1xn]) x1, x2,, xm, unde xk=(x1k, x2k, , xnk), putem defini metricile (distanele) dintre dou obiecte (doi vectori) oarecare xr i xs (r,s=1m), dup cum sunt ilustrate i n [22], astfel: - distana euclidian: drs=xr-xs(xr-xs)' = i=1n(xir-xis )2 - distana euclidian standardizat: dsrs=xr-xsD-1(xr-xs)', unde D este matricea diagonal, ce are ca elemente dispersia vectorului Xi=xi1, , xim, notat di2, rezultnd: dsrs=i=1n(xir-xis )di2 - distana city block (Manhattan) dcrs=i=1nxir-xis (26) - distana cosinus dcosrs=1-xrxs'(xrxr')12(xsxs')12 (27) (25) (24)

- distana coeficientului de corelaie (distana Pearson r) rrs =1-(xr-xr)(xs-xs)'(xr-xr)(xr-xr)'(xs-xs)(xs-xs)', unde xr=i=1nxir (28) - 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 neles.

21

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: dwrs= i=1nwi(xir-xis )2 (29),

unde i=1nwi=1, iar wi 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 creterea 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, n etapa de preclasificare este necesar o reducere a numrului de atribute pentru fiecare obiect. Acest lucru se realizeaz prin alegerea unor puncte cheie care s diferenieze ntre ele instanele setului de antrenare ct mai bine. Numrul optim de vecini se obine prin testarea algoritmului de mai multe ori, modificnd numrul acestora. Costul de calcul este destul de mare, deoarece trebuie s calculm distana dintre noua instan 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 s-a folosit clasificatorul KNN. A fost ales acest algoritm datorit simplitii lui, a performanelor bune de clasificare, att n ceea ce privete acurateea ct i timpul 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 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. 22

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 -file. - viteza de execuie; putem rescrie programele care folosesc de exemplu bucle FOR ca i MEX- files 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/. 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. 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- s 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- s identifice clasa imaginii pe baza acestor atribute 5- n cazul deteciei obstacolelor, exist posibilitatea apariiei unui modul de tracking sau urmrire care s realizeze urmrirea obiectelor de-a lungul scenei rutiere pn n momentul n care se pierd n afara ei i nu mai reprezint nici un pericol. 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 care s includ mai multe obiecte. Astfel, n aceast lucrare este tratat numai pasul de extragere al trsturilor pentru modulul de clasificare. La nceput s-a ncercat extragerea caracteristicilor din imagini doar pe baza transformatei Wavelet, ceea ce implic redimensionarea imaginilor la aceeai scal pentru a obine acelai numr de coeficieni. 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. Folosirea caracteristicilor wavelet n multiple surse bibliografice ne-au fcut s concluzionm c performanele sczute obinute se datoreaz redimensionrii imaginilor i nu transformatei Wavelet. 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 la intrare vectori de caracteristici care definesc obiectele din imagini. Aceste caracteristici reprezint ablonul (pattern-ul) obiectului, iar sabloanele obiectelor care aparin mai multor clase vor fi eseniale pentru procesul de nvare i testare al sistemului. Pentru 23

obinerea caracteristicilor s-au folosit o serie de transformate, combinaii de transformate i de metode de extragere printre care se pot enumera: - transformata Wavelet - transformata FFT - transformata Radon - caracteristicile Tamura - histogramele multi-scal - 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. Metodele de extragere enumerate mai sus au fost studiate pentru evaluarea performanelor ce se pot obine cu ajutorul lor, sau chiar prin diferite combinaii ale lor. Caracteristicile extrase au fost utilizate de clasificator (KNN) pentru a se realiza recunoaterea automat a obiectelor. 3.1 Baza de imagini Baza de date este format din imaginile unor obstacole ce pot fi ntlnite de conductorul unei maini pe durata deplasrii. Exist posibilitatea ca obstacolele ntlnite s nu fie observate la timp sau s distrag atenia conductorului. Din acest motiv au fost dezvoltate sisteme de detecie i recunoatere a obstacolelor care s atenioneze conductorul asupra pericolelor reprezentate de acestea. n mediul urban obstacolele ce pot fi ntlnite sunt reprezentate de alte maini sau de pietoni. Fa de mediul urban, n mediul rural se pot ntlni i alte obstacole cum sunt animalele. De aceea baza de imagini va fi format din clasele maini, pietoni i animale. 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. 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. Un sistem unitar presupune existena deteciei i recunoaterii (clasificrii) robuste. Detecia i clasificarea bazat doar pe imaginile din domeniul vizibil n general nu ofer performane prea bune n orice condiii, de aceea sistemele actuale folosesc i ali senzori pentru realizarea deteciei i recunoaterii obstacolelor. Cum n lucrarea de fa recunoatere automat a obstacolelor se realizeaz numai pe baza imaginilor din domeniul vizibil ne ateptm ca sitemul de clasificare s dea rateuri. De aceea a fost introdus i clasa de imagini garbage.

24

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. n figura de mai jos sunt ilustrate diferite imagini din fiecare clas: Maini:

Pietoni:

Animale:

Garbage:

Figura 3.1 Imagini din baza de date Dup ce caracteristicile au fost extrase, ele au fost introduse n clasificator pentru a realiza clasificarea imaginilor n cele patru clasele. n general pentru crearea unei baze de imagini care s fie ct mai bun (din punct de vedere al rezultatelor de clasificare), sunt respectate urmtoarele principii: - toate imaginile s fie realizate cu aceleai procedee (cu acelai aparat de fotografiat sau camer de filmat) - parametrii mijloacelor de captare s fie identici pentru toate imaginile (rezoluie, contrast, dimensiune, etc) - 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

25

mult timp, au fost folosite imagini care fac obiectul altor baze de date disponibile gratuit pe site-ul: http://pascallin.ecs.soton.ac.uk/challenges/VOC/databases.html. Bine neles c baza de imagini format, nu este la fel de bun ca cea care respect principiile enumerate mai sus, deoarece procedeul de nregistrare, rezoluia, contrastul i dimensiunile imaginilor difer de la o baz de imagini la alta. 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, trans-formata Radon) i altor moduri de extragere ("primele 4 momente", histograme multiscalare, caracteristicile Tamura granularitatea, contrastul i direcionalitatea, i polinoamele 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: Metoda I

Metoda II

Metoda III

Metoda IV

26

Figura 3.2 Schema bloc a metodelor de extragere a trsturilor 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 multiscal i caracteristicile Tamura contribuie cu un numr constant de trsturi 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 multi-scal - 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_vertical/10)). La fiecare pas se calculeaz valoarea mediei, deviaiei standard, skewness i kurtosis a 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 trsturi pentru fiecare imagine. - pe orizontal i pe vertical, cu deosebirea c fa de parcurgerea pe diagonal cea realizat pe vertical se va face cu un pas care depinde de dimensiunea orizontal 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 caracteristicilor. c) Trsturile Tamura se compun din directionalitatea imaginii, contrastul, granularitatea i o histogram a granulitaii cu 3 benzi, rezultnd 6 caracteristici pentru fiecare imagine. Pn acum au fost trecute n revist primele dou metode de reducere a atributelor unei imagini (metoda I i metoda II), iar n continuare vor fi abordate celelate dou metode - metoda III i metoda IV. n cadrul metodei III de reducere a atributelor, blocurile: "primele 4 momente", histograme multi-scal, 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.

27

Pentru a realiza transformata Radon s-a utilizat funcia deja implementat n Matlab: R = radon(I, theta) care returneaz transformata Radon R a intensitaii imaginii I pentru un unghi de theta grade [23]. Au fost calculate transformatele Radon pentru patru valori ale lui theta - 00, 450, 900 i 1350. Fiecare coloan a lui R va conine transformata 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 (valoarea absolut). 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 clasificatorului WND-CHARM este ilustrat n urmtoarea figur: trsturi al

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:

28

Figura 3.4 Grupele de caracteristici 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 muchilor care sunt calculate pe gradientul imaginii originale.Prin extragerea acestor statistici se obin 28 de trsturi. - coeficienii Gabor se obin prin utilizarea wavelet-urilor Gabor [9], obinnduse un numr de 7 coeficieni pentru fiecare imagine. - statisticile obiectelor sunt calculate pe imaginea binarizat prin intermediul pragului Otsu [9]. 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 asupra imaginii a transformatei Chebyshev- Fourier. Vectorul obinut prin intermediul acestei transformate va fi transformat ntr-o histogram cu 32 de benzi. Astfel se vor obine un numr de 32 de caracteristici Chebyshev- Fourier. - 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, skewness i kurtosis imaginii. Fiecare din cele patru caracteristici enumerate este format dintr-o histogram cu 12 benzi, rezultnd 48 de trsturi pentru fiecare imagine. - trsturile Haralick sunt calculate cu ajutorul matricelor concurente ale imaginilor. Aceste trsturi cuprind un numr de 28 valori. - histograme multi-scal sunt obinute prin transformarea imaginii n patru tipuri de histograme, cu 3, 5, 7 i 9 benzi, rezultnd astfel 24 de valori.

29

- caracteristicile Tamura se compun din direcionalitatea imaginii, contrastul, granularitatea i o histogram a granularitii 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 adoptat 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 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 realizat 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 comparativ cu 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). Nr. crt . 1. 2. Acuratee KNN Weka [%] k 1 3 5 70. 68 70 6 66. 66. 62. Acuratee KNN Matlab [%] k 1 3 5 70 62 68. 3 65. 64. 63.

Metoda de extragere a trsturilor imagine transformata Wavelet grupa C imagine transformata Chebyshev 30

3. 4. 5. 6. 7. 8. 9.

grupa D imagine transformata FFT transformata Wavelt grupa C imagine transformata FFT transformata Chebyshev grupa D imagine transformata FFT grupa B imagine transformata FFT grupa D imagine grupa A imagine grupa B imagine grupa D

1 68 64. 8 68. 9 59 62. 7 81. 5 82. 5 70 70. 6

5 67. 5 65. 4 67. 2 53. 3 62. 7 80. 7 83. 5 71 73. 7

7 75. 5 65. 3 65. 8 60 60. 4 83. 5 82. 5 73 72

7 66. 3 63. 2 68 56. 9 63 80. 6 85 69. 3 69. 3

4 65. 6 61. 3 67. 3 51. 9 64. 3 81. 9 86. 2 70. 6 71. 2

7 74 63. 2 65. 8 58. 5 61. 3 82. 8 87 70 70

imagine transformata Wavelet 10. grupa C + imagine grupa A imagine transformata Wavelet 11. grupa C + imagine grupa A + imagine transformata FFT transformata Wavelet grupa C imagine transformata Wavelet 12. grupa C + imagine grupa A + imagine grupa B imagine transformata Wavelet 13. grupa C+ imagine transformata FFT grupa B imagine transformata Wavelet 14. grupa C + statisticile Radon extrase din imaginea original imagine transformata Wavelet 15. grupa C + statisticile Chebyshev extrase din imaginea original imagine transformata Wavelet grupa C + statisticile Chebyshev 16. extrase din imaginea original + statisticile Radon extrase din imaginea original Nr. crt . Metoda de extragere a trsturilor

70

71

73

69. 3 81. 8 86. 2 70. 6 82. 5

70. 6 81. 2 87. 5 70. 6 82. 5

70

81

80. 5 86. 8 71. 2 85

79. 8 86. 2 73

80. 6 87. 5 70. 6 80

86. 8 73. 7 82. 5

85

17. imagine transformata Wavelet grupa C + imagine grupa D

Acuratee KNN Weka [%] k 1 3 5 85. 85 82. 6 5

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

31

imagine transformata Wavelet 18. grupa C + imagine grupa D + imagine grupa B imagine transformata Wavelet 19. grupa C + imagine grupa D+ imagine grupa B+ imagine transformata FFT transformata Wavelet grupa C

87. 5 87. 9

87. 8 87. 5

85

90

86. 9 86. 3

87. 5 86. 3

85. 6

91. 3

Tabel 3.1 Metode de extragere a trsturilor analizate n tabelul 3.1 sunt ilustrate valorile acurateii de clasificare (pentru metodele specificate de extreagere a trsturilor) 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 acestuia. 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 ca 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

32

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. 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 800 de imagini x 318 trsturi. 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:

33

Figura 3.7 Structura fisierului ARFF utilizat n acest lucrare n figura 3.7 este prezentat schema de formare a fiierului ARFF adaptat la aceast lucrare. Aadar, fiecare atribut trebuie descris n 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) 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. Un exemplu de matrice de confuzie obinute n Weka este ilustrat n figura 3.8. ==Matricea de confuzie== M 160 0 0 0 ==Matricea de confuzie== M 40 0 1 3 P 0 3 6 2 0 A 0 3 3 4 9 G 0 1 3 2 8 | M=1 | P=2 | A=3 | G=4 P 0 160 0 0 A 0 0 160 0 (a) G 0 0 0 160 |M=1 | P=2 |A=3 |G=4

34

(b) Figura 3.8 Matricele de confuzie pentru nvare, respectiv testare 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). 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 clasificate corect (a treia linie a matricei din figura 3.8 b), 1 a fost clasificat ca fiind din clasa 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 clasei maini i 9 clasei animale. Figura 3.8 prezint matricele de confuzie pentru nvare (cu 80% din imaginile din baza de date), respectiv testare (cu 20% din imaginile din baza de date) obinute n Weka cu clasificatorul IBk. Numrul de vecini al clasificatorului IBk este egal cu unu, iar pentru formarea vectorului de trsturi s-a utilizat schema prezentat n figura 3.5. 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 antrenare (din ntreaga baza de date un total 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 performanelor diferiilor clasificatori, pentru a evalua calitatea trsturilor extrase din imagini a fost utilizat numai clasificatorul IBk. 3.3.4 Evaluarea trsturilor n Matlab Deoarece apelarea din Matlab a utilitarului Weka este foarte complicat i datorit faptului c s-a dorit dezvoltarea unei aplicaii de sine stttoare n Matlab, s-a ales implementarea n Matlab a unui algoritm de clasificare. Datorit simplitii i uurinei de implementare, pentru 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:

35

KNNC (KNN Classify) care este un clasificator implementat cu ajutorul funciei deja existente n Matlab: Class = knnclassify(Sample, Training, Group, k, distance) [23].

Funcia knnclassify returneaz vectorul Class, care conine rezultatul clasificrii imaginilor din vectorul Sample n funcie de imaginile din vectorul Training. Aceast funcie are ca i parametrii: - vectorul Sample conine pe fiecare linie trsturile extrase din imaginile de test - vectorul Training conine pe fiecare linie trsturile extrase din 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) 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, 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 parametrilor 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 descompu-nere. Tot un parametru al transformatei Wavelet poate fi considerat i nivelul de descompunere wavelet. Descompunerea wavelet se poate realiza pe mai multe nivele astfel: - mai 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. 36

- se continu aplicarea transformatei Wavelet pe noile matrice de coeficieni pn cnd se atinge nivelul de descompunere dorit. Pentru determinarea parametrilor transformatei Wavelet s-a realizat urmtorul experiment: - pentru nivelul de descompunere au fost alese patru valori 3, 4, 5 i 6 (nivelele 1 i 2 nu ofer o compresie suficient a coeficienilor imaginii). Aadar sunt patru valori ale nivelului de descompunere. n lucrarea de fa pentru obinerea nivelelor de descompunere wavelet superioare au fost utilizai numai coeficienii aproximai cA. - pentru funciile mam ale descompunerii wavelet s-au folosit funciile deja implementate n Matlab, precum: Daubechies, Coiflet, Symlet, biortogonale i invers biortogonale (reverse biortogonal) . 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 la fel ca i la Daubechies, N este ordinul, iar sym este "prenumele" funciei wavelet. Funciile wavelet biortogonale se scriu biorNr.Nd, iar funciile inverse biortogonale, n comparaie cu 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 familii de wavelet-uri). - s-a utilizat numai metoda I de extragere a trsturilor (descris n figura 3.2) din dou motive: 1- utilizeaz transformata Wavelet 2- fa de metoda II nu necesit o transformare prealabil a imaginii i astfel timpul de extragere al trsturilor din imagini este mai redus. 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 - 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 de imagini din fiecare clas pentru nvare i 40 de 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 de calcul ai transformatei Wavelet mai ridicai (cu ct nivelul de descompunere wavelet 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.

37

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 trsturi ale imaginii prezentate n figura de mai sus 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", histogramele multi-scal i caracteristicile Tamura, numrul de trsturi reducndu-se de la [16x22=352] la 78 (48 pentru "primele 4 momente", 24 pentru histogramele multi-scal i 6 pentru caracteristicile Tamura). 3.4 Modul de mprire al 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 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:

38

- 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 linie 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 n lucrarea de fa 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. 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 Prin reducerea numrului de trsturi extrase din imagini se vor mbuntii timpul de extragere al caractersiticilor, precum i timpul de clasificare. Dup cum se poate observa n figura 3.5 formarea vectorului de trsturi se realizeaz prin aplicarea asupra imaginilor din baza de date a combinrii celor patru metode de extragere: metoda I, metoda II, metoda III i metoda IV.

39

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 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 a caracteristicilor, numrul de modaliti posibile de obinere a vectorului de trsturi este dat de: C41+C42+ C43+ C44=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 +mrtoda 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 - 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 de metode 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 de extragere a trsturilor 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%). 40

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) n comparaie cu metoda cu care s-a obinut cea mai bun acuratee. Acest lucru se datoreaz numrului mai mic de trsturi pe imagine (pentru mai multe detalii consultai tabelul 4.1) Totui, s-a 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 i timpii de extragere a trsturilor a tuturor celor cincisprezece combinaii posibile de creare a vectorului de caracteristici. Acest lucru s-a realizat prin transformarea aplicaie ntr-un fiier executabil. n acest scop a fost utilizat toolbox-ul deploytool din Matlab, care urmrete urmtoarea schem bloc pentru realizarea unui astfel de fiier:

Figura 3.11 Schema bloc de realizare a executabilului [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 de obinere i clasificare a celor cincisprezece vectori de trsturi (dezvoltat n Matlab) ntr-o aplicaie "standalone" (de sine stttoare, 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:

41

Figura 3.12 Interfaa grafic a lucrrii 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 din care s se realizeze extragerea trsturilor, precum i metodele de extragere 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 al trsturilor 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".

42

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

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

43

(echivalentul KNN-ului) din Weka prin testarea acestuia cu datele de nvare, obinndu-se urmtoarea matrice de confuzie; ==Matricea de confuzie== M 2 0 0 P A G | M = 1 | P = 2 | A = 3 | G = 4

0 2 0 0

0 2 0 0

0 2 0 0

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 toate imaginile au fost atribuite corect clasei din care fac 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: ==Matricea de confuzie== M 19 9 1 6 7 P 0 19 3 4 3 A 1 6 18 3 15 G 0 0 7 17 5 | M= 1 | P= 2 | A= 3 | G=

44

4 ==Matricea de confuzie== M 20 0 1 11 11 P 0 19 7 4 3 A 0 3 17 4 19 G 0 0 11 16 7 | M=1 |P=2 |A=3 | G=4 (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 scade la 93.75% (adic 750 imagini clasificate corect din totalul de 800) 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 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: ==Matricea de confuzie== M 40 P 0 A 0 G 0 | M= 1

45

0 1 3

36 2 0

3 34 9

1 3 28

| P= 2 | A= 3 | G= 4

==Matricea de confuzie== M 39 0 3 2 P 0 3 9 3 0 A 1 1 3 0 8 G 0 0 4 3 0

|M=1 |P=2 |A=3 |G=4

==Matricea de confuzie== M 39 2 4 2 P 0 3 8 2 0 A 1 2 2 9 5 G 0 0 5 3 3

|M=1 |P=2 |A=3 |G=4

(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: ==Matricea de

46

confuzie== M 40 0 4 0 P 0 38 1 0 A 0 1 32 4 G 0 1 3 36 | M =1 | P= 2 | A= 3 | G =4

==Matricea de confuzie== M 39 0 5 0 P 0 3 8 1 1 A 1 0 2 6 5 G 0 2 8 3 4

|M=1 |P=2 |A=3 |G=4

==Matricea de confuzie== M 39 0 5 0 P 0 3 8 0 1 A 1 0 2 7 5 G 0 2 6 3 4

|M=1 |P=2 |A=3 |G=4 (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 n ceea ce privete acurateea i matricele de confuzie, diferena major dintre ele fiind constituit de timpii de clasificare (vezi figura 4.5).

47

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 executabil experimentale din Matlab i din aplicaia

Aplicaia executabil se refer la experimentul realizat pentru obinerea celor cincisprezece combinaii posibile de formare a vectorului de trsturi descris 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 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 timpilor de clasificare KNNR i KNNC 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 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 se poate observa 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 din figura 4.6 obinui n Matlab i n aplicaia executabil putem observa c performanele obinute n

48

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 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) pentru cele cincisprezece moduri de formare a vectorului de trsturi.

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

49

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 clasificatoarelor KNNR i KNNC 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 trsturile a 20% din imaginile fiecrei clase (40 de imagini din fiecare clas). n tabelul 4.2 sunt prezentai aceeai termeni de performan a clasificrii i extragere a trsturilor (cu excepia timpului de clasificare KNNC) obinui n urma transformrii aplicaie 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 reducerea timpilor de extragere a trsturilor, respectiv timpilor de clasificare a setului de testare pentru fiecare din cei cincisprezece vectori de trsturi.

50

Nr. crt

Combinaia de Metode

Nu m r tr st uri

Timp extrag ere coefici eni pe toat baza de imagin i 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

Tabel 4.1 Rezultate obinute n Matlab k Acuratee [%]

Acurate ea medie [%] Garba ge

Timp clasificare KNNC [s]

3 5

Masini

P Animal i e e t o n i 9 0 8 8 8 5 9 7 9 5 8 5 9 7 8 5 9 7 9 5 50 60 75 45 70 75 50 75 55 78

1 2 3 4 5 6 7 8 9 1 0

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

78 78 90 72 15 6 16 8 15 0 16 8 15 0 16 2

x x x x x x x x x x

95 88 97 100 97 97 100 97 100 100

68 47 80 85 72 85 85 82 90 90

75.63 70.63 84.38 81.88 83.75 85.63 83.13 85 85.63 90.63

0.05 0.07 0.05 0.04 0.06 0.07 0.06 0.07 0.06 0.09

0.30 0.21 0.45 0.20 0.62 0.65 0.68 0.80 0.73 0.79

51

1 1 1 2 1 3 1 4 1 5

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

24 6 22 8 24 0 24 0 31 8

20 min 2 h, 54 min 3 h, 10 min 3 h, 10 min 3 h, 12 min

x x x x x

97 100 100 100 100

8 5 9 7 9 5 9 5 9 5

75 60 78 78 80

85 90 90 90 90

85.63 86.88 90.63 90.63 91.25

0.09 0.08 0.09 0.09 0.10

1.26 0.97 1.21 1.27 1.30

Nr. crt

Combinai a de Metode I II III IV I II I III I IV II III II IV

1 2 3 4 5 6 7 8 9

Tabel 4.2 Rezultate obinute prin transformarea aplicaiei ntr-un executabil Numr Timp k Acuratee Timp trstu extragere [%] clasificare ri coeficieni KNNR[s] pe toat 1 3 5 Pieto Animale Garbage baza ni 78 1 min, 7 sec x 90 50 68 75.63 0.04 78 90 72 156 168 150 168 150 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 x x x x x x x x 88 85 97 95 85 97 85 97 60 75 45 70 75 50 75 55 47 80 85 72 85 85 82 90 70.63 84.38 81.88 83.75 85.63 83.13 85 85.63 0.04 0.04 0.04 0.06 0.06 0.06 0.06 0.06

52

10 11 12 13 14 15

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

162 246 228 240 240 318

3 h,8 min 19 min 2 h, 54 min 3 h, 9 min 3h, 9 min 3 h, 11 min

x x x x x x

95 85 97 95 95 95

78 75 60 78 78 80

90 85 90 90 90 90

90.63 85.63 86.88 90.63 90.63 91.25

0.08 0.09 0.08 0.08 0.10 0.10

53

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 Dup cum se poate observa n figura 4.8 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 cea mai bun de metode 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 a caracteristicilor 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 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 [9] (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 creterea numrului de metode de extragere a caracteristicilor 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 sau au instalate versiuni diferite ale acestuia. 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 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 au fost mai sczute. 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.

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_int egrare_europeana/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_algo rithm [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 [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

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 ce conine trsturile imaginilor din baza de date 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\'),... 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); 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),:); 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_invata re]; 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 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; 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, ... '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 % --- 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) % 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. 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) 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 %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); % 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]; 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_invata re]; 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')); 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. % 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

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'); %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\'),... 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'); 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) %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 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 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'; 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) % 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 clear clear clear first4moments; multiscalehist; TamuraFeatures; radonTrans;

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))) 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;