Documente Academic
Documente Profesional
Documente Cultură
Licenta PDF
Licenta PDF
PRESEDINTE COMISIE,
DECAN,
Prof.dr.ing. Marina OPA
CONDUCATOR,
Asist. ing. Anca Aptean
ABSOLVENT,
Alexandru Mihu
2010
EF CATEDR,
Prof.dr.ing. Virgil DOBROTA
CONDUCATOR,
Asist.ing. Anca Aptean
ABSOLVENT,
Alexandru Mihu
Declaraia autorului
ABSOLVENT,
Alexandru Mihu
ABSTRACT
Digital images, cheap costs of acquisition and storage, as well as increasing use in many
fields of science and engineering, introduces a demand of image analysis and classification with
high accuracy and lower classification time.
This thesis follows feature extraction from database images to obtain a high KNN
clasification accuracy. Feature extraction was achieved by existing methods used in WNDCHARM classifier, which is part of the OME environment (Open Microscopy Environment).
Number of features per image have been reduced from 1024 attributes per image used in WNDCHARM feature vector to 318 attributes per image, by removing the inefficient extraction
methods in terms of clasification performance. Thus, the time needed for feature extraction for
all database images and classification time was reduced significantly (from 48 hours to 3 hours,
respectively from 2 seconds to less than one second).
By changing the image database the application can be used in detection and recognition
problems in many field of science and engineering.
CURRICULUM VITAE
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:
Cuprins
1. Stadiul actual............................................................................................................................... 1
2. Fundamentare teoretic .............................................................................................................. 2
2.1. Introducere ......................................................................................................................... 2
2.2 Transformata Wavelet continu i discret........................................................................ 3
2.2.1 Transformata Wavelet continu ................................................................................. 3
2.2.2 Transformata Wavelet discret .................................................................................. 3
2.2.3 Familii de wavelet-uri:............................................................................................... 5
2.2.4 Aplicaii ale wavelet-urilor ........................................................................................ 5
2.3 Transformata FFT............................................................................................................... 6
2.3.1 Definire transformat FFT......................................................................................... 6
2.3.2 Aplicaii ale transformatei FFT ................................................................................. 6
2.4 Transformata Radon............................................................................................................ 6
2.4.1 Definirea transformatei Radon .................................................................................. 7
2.4.2 Aplicaii ale transformatei Radon .............................................................................. 7
2.5 Caracteristicile Tamura ...................................................................................................... 8
2.5.1 Granularitatea............................................................................................................ 8
2.5.2 Contrastul................................................................................................................... 8
2.5.3 Direcionalitatea ........................................................................................................ 8
2.6 Polinoamele Zernike............................................................................................................ 9
2.6.1 Definirea polinoamelor Zernike................................................................................. 9
2.6.2 Aplicaii ale polinoamelor Zernike........................................................................... 10
2.7 Histograme multiscalare ................................................................................................... 10
2.8 Filtre orientate n patru direcii pentru obinerea "primelor 4 momente"........................ 10
2.9 Algoritmul KNN................................................................................................................ 10
2.9.1 Avantajele algoritmului KNN................................................................................... 11
2.9.2 Dezavantajele algoritmului KNN ............................................................................. 12
2.10 Fiiere MEX (MEX-files)................................................................................................. 12
3. Implementarea soluiei adoptate ............................................................................................... 13
3.1 Baza de imagini ................................................................................................................. 14
3.2 Metoda de extragere a caracteristicilor............................................................................ 15
3.2.1 Metoda de extragere a caracteristicilor din WND-CHARM.................................... 17
Lista de figuri
Figura 1.1 Schema procesului de recunoatere i clasificare automat a imaginilor ...................... 3
Figura 2.1 Arborele cu primele trei nivele de descompunere DWT(arborele Mallat) .................... 4
Figura 2.2 Arborele Mallat cu primele trei nivele de reconstrucie ale semnalului original........... 4
Figura 2.3 Familii de wavelet (a) Haar (b) Daubechies4 (c) Coiflet1 (d) Symlet2 (e)Meyer(f)
Morlet(g) Mexican hat..................................................................................................................... 5
Figura 2.4 Cele dou forme ale transformatei Radon- ecuaia (7) i (9)........................................ 7
Figura 2.5 Valorile Zernike n unitatea de disc ............................................................................... 9
Figura 3.1 Imagini din baza de date .............................................................................................. 14
Figura 3.2 Schema bloc a metodelor de extragere a trsturilor ................................................... 15
Figura 3.3 Schema de formare a vectorului de trsturi din cadrul WND-CHARM.................... 17
Tabel 3.1 Metode de extragere a trsturilor analizate ................................................................. 20
Figura 3.5 Schema de formare a vectorului de trsturi................................................................ 20
Figura 3.6 Structura fiierului ARFF la modul general................................................................. 21
Figura 3.7 Structura fisierului ARFF utilizat n acest lucrare ..................................................... 21
Figura 3.8 Matricele de confuzie pentru nvare, respectiv testare.............................................. 22
Figura 3.9 Transformata Wavelet a unei imagini.......................................................................... 24
Figura 3.10 Schema bloc a clasificrii KNN................................................................................. 25
Figura 3.11 Schma bloc urmat de toolbox-ul deploytool ............................................................ 27
Figura 3.12 Interfaa grafic a lucrrii........................................................................................... 27
Figura 4.1 Matrice de confuzie Weka (numrul de vecini=1) ...................................................... 29
Figura 4.2 Matricele de confuzie pentru k=3 (a),.......................................................................... 29
Figura 4.3 Matricele de confuzie pentru setul de testare (k=1,3 i 5) obinute n Weka............... 30
Figura 4.4 Matricele de confuzie pentru setul de testare obinute n Matlab ................................ 30
Figura 4.5 Graficul timpului de clasificare n funcie de numrul de trsturi ............................. 31
Figura 4.6 Graficul timpului de clasificare n funcie de numrul de trsturi ............................. 31
Figura 4.7 Graficul timpului de extragere coeficieni n funcie de numrul de trsturi ............. 32
Figura 4.8 Graficul acurateii n funcie de numrul de trsturi .................................................. 35
Lista de tablele
Tabel 3.1 Metode de extragere a trsturilor analizate ................................................................. 20
Tabel 4.1 Rezultate obinute n Matlab ......................................................................................... 33
Tabel 4.2 Rezultate obinute prin transformarea aplicaiei ntr-un executabil .............................. 34
1. Stadiul actual
Stadiul actual n ceea ce privete recunoaterea formelor i clasificarea automat a
imaginilor este unul avansat, reuindu-se dezvoltarea unor aplicaii care au o acuratee a
clasificrii foarte ridicat i un timp de clasificare sau de detecie foarte bun (detecie sau
clasificare n timp real), i care ncet-ncet promit a se apropia ca performan de modul natural
cu care fiina uman trateaz aceast problem.
Imaginile digitale, stocarea ieftin i utilizarea acestora n tot mai multe domenii ale
tiinei i ingineriei, au introdus o cretere a cererii de aplicaii de analiz i clasificare a
imaginilor cu o precizie ct mai mare. Aceste aplicaii includ teledetecia, descris n [1],
recunoaterea facial, despre care putei gsi informaii n [2], [3] sau [4] i clasificarea
imaginilor medicale i biologice [5], [6], [7] sau [8].
Sistemele de vedere artificial sunt proiectate dup modelul sistemelor biologice, n
special cel uman. n dezvoltarea unor astfel de sisteme ne lovim, de foarte multe probleme. Cea
mai important dintre ele este imposibilitatea de a reproduce n sistemele artificiale, modul
nostru de gndire. Pentru noi oamenii, recunoaterea unui obiect se face cu uurin, chiar dac
acel obiect nu este vzut n ntregime, dar n general nu putem s explicm tiinific cum am
reuit s realizm recunoaterea. Prin urmare, nu putem dezvolta un algoritm sau o tehnic de
inteligen artificial care descrie iterativ i exact acest proces.
Dei n ultimii ani au atras o atenie deosebit, analiza i clasificarea imaginilor sunt
deocamdat considerate probleme competitive n sistemele de prelucrare i clasificare pe baza
coninutului imaginilor (CBIR - Content Based Image Retrieval), datorit complexitii
subiectului n ceea ce privete imaginile reale i dificultatea de extragere cantitativ a trsturilor
de similitudine sau difereniere dintre imagini. Aceste trsturi pot include caracteristici de
culoare, textur sau form, descriptori ce sunt obinui global prin extragerea informaiilor pe
baza mediei histogramelor de culoare (pentru caracteristicile de culoare), pe baza granularitii,
contrastului i directivitii imaginilor (pentru caracteristicile de textur) i pe baza trsturilor de
curbur, momente invariante, circularitatea i excentricitatea imaginilor (pentru caracteristicile
de form). Cu toate acestea, extragerea trsturilor din imagini se face diferit n funcie de
detaliile particulare ale aplicaiei i performanele dorite.
n lucarea de fa sunt propuse mai multe metode deja existente de extragere a
caracteristicilor pentru formarea vectorului de trsturi i clasificarea imaginilor pe baza
vectorului obinut.
Scopul principal al acestei lucrri este testarea mai multor metode de extragere a
trsturilor, nu neaparat obinerea unor performane superioare. Pentru a vedea eficiena
metodelor de extragere s-a realizat clasificarea imaginilor pe baza vectorului de caracteristici
prin intermediul clasificatorului IBk din Weka (echivalentul KNN- k nearest neighbor) i KNN
implementat n Matlab. Pentru realizarea acestor obiective m-am inspirat din mai multe referine,
dar cea mai semnificativ este metodologia de extragere a trsturilor pentru formarea vectorului
de caracteristici din cadrul clasificatorului WND-CHARM (Weighted Neighbor Distances using
a Compound Hierarchy of Algorithms Representing Morphology - distana ponderat dintre
vecini utiliznd o ierarhie compus de algoritmi morfologici). Pentru mai multe detalii a se
consulta [9].
Trsturile vectorului de caracteristici includ descompunerea polinomial (reprezentat
de polinoamele Zernike), statisticile pixelilor (media, deviaia standard, oblicitatea, planitatea,
histograme multiscalare) i caracteristicile de textur (contrast, granularitate i direcionalitate).
Aceste caracteristici au fost extrase din imaginile pe nivele de gri, precum i din imaginile
rezultate n urma transformatelor Wavelet (a imaginii pe nivele de gri i a transformatei FFTfast Fourier transform a imaginii pe nivele de gri). O alt transformat utilizat este transformata
Radon a imaginii pe nivele de gri, care este folosit pentru extragerea informaiei spaiale.
Metodele aplicate asupra imaginilor pentru formarea vectorului de trsturi fac parte din
metodologia descris n [9]. Contribuia adus la formarea vectorului de trsturi const n
selectarea din varietatea de metode de extragere doar a celor care ofer o performan de
clasificare mai ridicat. Pentru o aplicare eficient a transformatei Wavelet s-au stabilit valorile
parametrilor (familia de wavelet i nivelul de descompunere wavelet). Celelate metode utilizate,
precum i implementrile lor n Matlab pot fi descrcate gratuit i utilizate n scopuri tiinifice i
de cercetare de pe site-ul: http://www.openmicroscopy.org.
Vectorul de trsturi este utilizat apoi pentru clasificarea imaginilor de test ntr-un set de
clase de imagini predefint (clasa maini, pietoni, animale i garbage) cu ajutorul utilitarului
Weka. Deoarece apelarea din Matlab a utilitarului Weka este foarte complicat i datorit
necesitii utilizrii unui clasificator n interfaa grafic realizat, s-a ales implementarea n
Matlab a unui algoritm de clasificare. Astfel, luarea deciziei asupra clasei imaginii test s-a
realizat cu algoritmul KNN. Din punct de vedere al evaluatorului s-a ales folosirea KNN
deoarece este un clasificator rapid, eficient i uor de implementat. Pentru a nu permite
clasificatorului s nvee inclusiv ordinea de preluare a imaginilor (deoarece clasificatorul prelua
pe rnd cele patru clase) s-a realizat permutarea imaginilor din vectorul de caracteristici.
Din punct de vedere aplicativ, lucrarea conine o interfa grafic dezvoltat cu ajutorul
toolbox-ului GUIDE (Graphical User Interface Design Environment) din Matlab. Aceast
aplicaie permite utilizatorului s selecteze diferite variante de formare a vectorului de trasturi,
precum i posibilitatea testrii clasificatorului KNN cu alte imagini dect cele din baza de date.
Vectorul de trsturi poate avea, n funcie de metodele alese, o dimensiune minim de 72
caracteristici i maxim de 318 caracteristici. Toate atributele sunt extrase pe baza imaginilor pe
nivele de gri, astfel informaiile de culoare nefiind utilizate.
2. Fundamentare teoretic
2.1. Introducere
n realizarea unei aplicaii de recunoatere a formelor i clasificare automat a imaginilor,
dup cum se poate observa n figura 1.1, n general se parcurg urmatoarele etape:
a) preprocesarea imaginii - etap n care se realizeaz mbuntirea calitii imaginilor prin
aplicarea unor algoritmi DIP (digital image processing).[10]
Deoarece imaginile din baza de date, format pentru acest lucrare, nu necesit alte
mbunatiri ale calitii, n acest etap s-a realizat doar conversia imaginilor color n imagini pe
nivele de gri. n multe situaii pentru clasificarea imaginilor sunt extrase pe lng trsturile de
textur i de form, i cele de culoare. S-a renunat la aceste caracteristici deoarece nu se poate
realiza o difereniere a claselor pe baza culorii.
b) extragerea atributelor sau descriptorilor de imagine - reprezint etapa cea mai important
deoarece influeneaz n mod direct performanele de clasificare.[10]
Tipul trsturilor folosite n clasificare i descrise n aceast lucrare se mpart n trei
categorii: descompunere polinomial, statisticile pixelilor i textura. n descompunerea
polinomial este generat un polinom ce aproximeaz imaginea n funcie de gradul de fidelitate,
iar coeficienii acestui polinom sunt utilizai ca descriptori ai coninutului imaginii. Trsturile
de textur se refer la variaia n intensitate ntre pixelii imaginii pentru diferite direcii i
rezoluii. Statisticile pixelilor se bazeaz pe distribuia pixelilor din imagine i includ histograme
i momente.
n aceast etap, pentru extragerea trsturilor, asupra imaginilor s-a aplicat transformata
Wavelet (transformata Wavelet a imaginii pe nivele de gri i a transformatei FFT a imaginii pe
nivele de gri), iar din rezultatele obinute au fost extrase caracteristicile de statistic a
pixelilor("primele 4 momente", histogramele multiscalare) i de textur (caracteristicile Tamura).
Din imaginile originale (imaginile pe nivele de gri), fr a aplica asupra acestora nici o
transformat, sunt extrase caracteristicile de statistic a pixelilor i de textur menionate mai
sus, precum i cele de descompunere polinomial (polinoamele Zernike). Din vectorul de
trsturi mai fac parte i rezultatele obinute n urma transformatei Radon a imaginii pe nivele de
gri.
c)evaluarea atributelor sau descriptorilor - este o etap n care sunt evaluate datele din vectorul
de caracteristici i care are ca rezultat n mod obinuit, o valoare numeric unidimensional sau
multidimensional (un vector), care relev distana vectorului de trsturi fa de graniele
regiunilor sau fa de "bornele de clasificare".[10]
Evaluarea atributelor s-a realizat cu ajutorul clasificatorului KNN, prin testarea
evaluatorului cu datele de nvare.
d) clasificarea imaginii - este etapa care mbin rezultatele msurtorilor multiple anterioare, i
totodat etapa final.
Prin clasificare se stabilete apartenena formei, obiectului sau imaginii - descris prin
vectorul de trsturi, la un setul de clase de imagini predefinite.[10]
Clasificarea imaginilor de test, precum i stabilirea atributelor imaginilor care ne ofer cea mai
bun performan s-a realizat cu ajutorul algoritmului KNN.
)(
||
(1)
unde x(t) este semnalul ce trebuie analizat, (t) este wavelet-ul mam sau funcia de baz [11].
Toate funciile folosite n transformare sunt derivate din funcia de baz prin translatare (shiftare)
i scalare (dilatare sau compresie). Parametrul de translaie se refer la locaia funciei wavelet
n timpul parcurgerii semnalului, acesta corespunznd informaiei de timp a transformatei.
Parametrul de scalare s este definit ca |1/frecven| i corespunde informaiei de frecven.
Scalarea fie dilateaz (extinde) sau comprim semnalul. n prelucrrile de imagini, de obicei, se
dorete compresia lor, pentru ca timpul necesar prelucrrii s fie ct mai redus.
Pe o scar larg de frecvene joase semnalul este dilatat, fiind furnizate detaliile ascunse din
semnal, n timp ce pe o scar redus (frecvene nalte) semnalul este comprimat, furnizndu-se
informaia global referitoare la semnal.
Transformata Wavelet realizeaz convoluia semnalului i prelucrarea acestuia cu funcia de
baz.
2.2.2 Transformata Wavelet discret
Transformata Wavelet discret (DWT- discrete wavelet transform) este o versiune
simplificat a transformrii wavelet continu, bazat pe codarea n sub-band. Avantajul acestei
transformate const n simplitatea implementrii, reducerea timpului de execuie i nivelul mai
sczut de resurse necesare.
La transformata CWT, semnalele sunt analizate folosind un set de funcii de baza care
Figura 2.2 Arborele Mallat cu primele trei nivele de reconstrucie ale semnalului original[11]
n Figura 2.2, d[n] reprezint coeficienii de detaliu ai semnalului, a[n] aproximrile
grosiere, iar blocurile H1 i G1 reprezint filtrele trece sus, respectiv filtrele trece jos de sintetizare
a semnalului original.
Procesul de reconstrucie al semnalului original continu pn cnd este atins numrul de
nivele de descompunere ale semnalului.
(2)
G0(z)*G1(z)+H0(z)*H1(z)=2
(3)
unde G0(z) i G1(z) sunt filtrele trece jos de analiz, respectiv de sintez, iar H1(z)i H0(z) sunt
filtre trece sus de analiz, respectiv de sintez[11].
Prima condiie impune ca reconstrucia s se fac fr alias, iar cea de-a doua condiie
impune ca distorsiunile de amplitudine sa aib valoarea egal cu 1.
2.2.3 Familii de wavelet-uri:
Exist un anumit numr de funcii de baz care pot fi folosite ca funcii mam pentru
transformata wavelet, dar pentru utilizarea eficient a acestora, trebuie luate n considerare
detaliile particulare ale aplicaiei care folosete wavelet-uri.
Principalele familii de wavelet-uri:
Figura 2.3 Familii de wavelet (a) Haar (b) Daubechies4 (c) Coiflet1 (d) Symlet2 (e) Meyer
(f)Morlet (g) Mexican hat
[11]
Figura 2.3 ilustreaz cele mai utilizate funcii wavelet. Wavelet-ul Haar este unul din cele
mai vechi si simple wavelet-uri, de aceea orice discuie despre wavelet-uri ncepe cu acesta.
Pentru mai multe detalii legate de principalele tipuri de wavelet-uri a se consulta [12].
2.2.4 Aplicaii ale wavelet-urilor
Exist o gam larg de aplicaii pentru transformarea wavelet, ele fiind utilizate n diferite
domenii, de la procesarea semnalelor pn la domeniul biometriei.
Wavelet-urile au un rol important n compresia datelor, n vederea mbunatirii
performanelor de prelucrare a imaginilor (de compresie a imaginilor). FBI utilizeaz waveleturile ca i compresie standard a amprentelor, pentru stocarea lor n baza de date. Dintre
principalele tipuri de transformate aplicate imaginilor n vederea compresiei lor (ex. transformata
cosinus discret, transformata Fourier discret 2D etc.), transformata wavelet asigur asigur o
foarte bun rat de compresie.
Transformata Wavelet este aplicat n aceast lucrare pe imaginile pe nivele de gri,
precum i pe imaginea obinut n urma aplicrii transformatei FFT asupra imaginii pe nivele de
gri. Parametrii transformatei, nivelul de descompunere i familia wavelet, au fost stabilii
parcurgnd urmtoarele etape:
a) extragerea trsturilor imaginilor din baza de date cu metoda I (vezi figura 3.5 pentru mai
multe detalii) pentru diferite nivele de descompunere wavelet (36) i pentru diferite familii de
wavelet-uri.
b) clasificarea imaginilor pe baza vectorului de trsturi obinut prin metoda de mai sus pentru a
observa care nivel, respectiv familie wavelet ofer o performan de clasificare ct mai bun.
Wavelet-urile sunt folosite att n metoda I de extragere a trsturilor (reprezentat de metoda
descris mai sus), precum i n metoda II de extragere a trsturilor (vezi figura 3.5)
2.3 Transformata FFT
FFT este abrevierea din limba englez pentru fast Fourier transform (transformata
Fourier rapid), fiind un algoritm eficient de calcul al transformatei DFT - discrete Fourier
transform (transformata Fourier discret), precum i a inversei sale IDFT (inverse discret Fourier
Transform).
2.3.1 Definire transformat FFT
FFT produce exact aceleai rezultate ca i DFT, singura diferen fiind reprezentat de
rapiditatea transformatei FFT.
Fie , , , , numere complexe. Transformata DFT este definit de urmtoarea
formul:
( + 1) =
(+ 1) , k=0,1, ,N-1 (4),
iar inversa ei IDFT este:
( + 1) =
( + 1) , n=0,1, ,N-1 (5),
Figura 2.4 Cele dou forme ale transformatei Radon- ecuaia (7) i (9)
[17][18]
g(, )= ( , + () 9),
este echivalent cu ecuaia (2), fiind obinut prin rotirea axelor de coordonate cu unghiul ,
unde:
= +
=
= +
= +
(10)
Transformata Radon reprezint o imagine ca un set de proiecii de-a lungul diferitor
direcii, realiznd legtura dintre spaiul de coordonate (x,y) i spaiul proieciilor (, ).
Transformata Radon calculeaz proiecia intensitii pixelului pe o linie radial din
centrul imaginii la un unghi specificat. Aceasta este utilizat, de obicei, pentru extracia
informaiei spaiale unde pixelii sunt corelai la un unghi specific.
n metoda de extragere caracteristici propus, trsturile Radon sunt calculate pentru
unghiurile 0, 45, 90 i 135. Apoi, fiecare set de valori rezultat este transformat ntr-o
histogram cu trei benzi, rezultnd astfel un vector cu 4x3=12 valori. Transformata Radon este
calculat pentru imaginea pe nivele de gri i mpreun cu "histogramele multiscalare", "primele 4
monemte " i caracteristicile Tamura formeaz metoda III de formare a vectorului de trsturi
(vezi figura 3.5 pentru mai multe detalii).
2.4.2 Aplicaii ale transformatei Radon
Transformata are aplicaii n mai multe domenii cum ar fi:
- domeniul medical, n cazul tomografiei compiuterizate
- seismologie, n cazul reflexiei seismice
- ultramicroscopia ansamblurilor macromoleculare, cum sunt proteinele i viruii
- n rezolvarea ecuaiilor hiperbolice parial difereniale
- detecia de form
2.5 Caracteristicile Tamura
Dintre proprietaile Tamura folosite n acest proiect se numar:
- granularitatea
- contrastul
- direcionalitatea.
Aceste trsturi au fost selectate de Tamura, Mori i Yamawaki pe baza experimentelor
psihologice.
2.5.1 Granularitatea se refer la distana dintre variaiile spaiale notabile a nivelelor de
gri. Procedura compiutaional propus, consider diferenele dintre valoarea medie a
semnalelor corespunztoare ferestrelor de diferite dimensiuni care nu se suprapun, urmrind
paii de mai jos :
1. Pentru fiecare pixel (x,y), calculeaz ase valori medii pentru ferestrele de dimensiunea 2k 2k,
k=0,1,...,5 n jurul fiecarui pixel.
2. Pentru fiecare pixel, calculeaz diferena absolut Ek(x,y) dintre perechile valorilor medie ce
nu se suprapun n direciile: orizontal i vertical.
3. Pentru fiecare pixel, caut valoarea lui k ce maximizeaz diferena Ek(x,y) n orice direcie i
seteaz dimensiunea cea mai buna Sbest(x,y)=2k.
4. Calculeaz trstura de granularitate Fcrs prin medierea Sbest(x,y) asupra ntregii imagini.
2.5.2 Contrastul relev modul n care nivelele de gri q, q=0,1,..., qmax, variaz ntr-o
imagine g i a cror distribuie este direcionat spre alb i negru. Pentru definirea contrastului se
folosesc momentele centrale de ordinul al doilea i cele normalizate de ordinul al patrulea,
reprezentate de variana standard - , respectiv indicele de aplatizare - 4:
= (11),
2.5.3 Direcionalitatea
Gradul de direcionalitate este msurat folosind distribuia spectral a muchiilor locale
orientate fa de unghiurele direcionale ale acestora. Soloditatea muchiei e(x,y) i unghiul
direcional a(x,y) sunt calculate folosind detectorul de muchii Sobel, aproximnd "pixel-wise" x
i derivata y a imaginii:
(, = )0.5(|(, |)+ (, )) (15)
(, = )( (, )/(, ( ))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 fereastra de
dimensiune 3x3 [19]:
1 0 1
1 1 1
1 0 1
0 0 0
1 0 1
1 1 1
O histogram Hdir(a) a valorilor direciei cuantizate a este construit prin numrarea
numrului de pixeli muchie care un anumit unghiul direcional i soliditatea muchiei mai mare
dect un prag predefinit. Histograma este relativ uniform pentru imaginile fr o orientare
() (17),
= 1
n ecuaia (17) este numrul de vrfuri, ap este poziia vrfului p, wp este gama de
unghiuri atribuite vrfului p, r indic un factor de normalizare legat de nivelele de cuantizare ale
unghiului a, i a este unghiul direcional cuantizat (n modulo 180o).[19]
Aceste proprieti texturale Tamura sunt calculate pe imaginea pe nivele de gri astfel:
- 3 valori: contrastul, direcionalitatea i granularitatea
- o histogram a granularitii cu 3 benzi
Astfel, rezult astfel un vector de caracteristici cu 6 valori.
Trsturile Tamura sunt utilizate n acest lucrare n cadrul metodelor I, II i III de
extragere a trsturilor (vezi Figura 3.5).
2.6 Polinoamele Zernike
Polinomele Zernike au fost dezvoltate la nceputul secolului XX de ctre fizicianul
german Frits Zernike (faimos pentru invenia microscopului faz-contrast, pentru care a cstigat
premiul Nobel pentru Fizic n 1953).
unde:
() = (22),
9
, 1
( = )
(23)
0, > 1
Baza acestor funcii este definit pe o suprafa circular, caracteristic planelor pupilelor
n procesarea clasic de imagini, pentru lungimi de und optice i inflaroii, printr-un sistem de
lentile i oglinzi cu un diametru finit.
Descompunera polinomial Zernike este utilizat n urmtoarele domenii:
- prelucrare optic, pentru a caracteriza erorile observate n analizele interferometrice, cu scopul
de a obine performana dorit.
-optometrie i oftalmologie, la descrierea devierii corneei sau lentilelor pentru o form ideal
sferic, care au ca rezultat erori de refracie.
- optica adaptiv, la nlturarea distorsiunilor atmosferice. Aplicaiile n acest domeniu sunt
astronomia IR (inflarou) sau vizual i pentru redarea imaginilor din satelit. De exemplu, unul
dintre factorii Zernike (pentru m=0 i n=2) este denumit "de-focus". Prin cuplarea iesirii acestui
factor la un sistem de control, poate fi implementat o focalizare automat. [21]
Coeficienii Zernike sunt valori complexe, n descrierea imaginilor folosindu-se valoarea
absolut a acestora. Polinoamele Zernike sunt aplicate asupra imaginii pe nivele de gri,
constituind metoda IV de extragere a trsturilor (pentru mai multe detalii vezi figura 3.5).
2.7 Histograme multiscalare
Pentru acest set de trsturi sunt calculate histograme cu un numr variabil de benzi
(3,5,7 i 9), dup modelul propus n [9]. Fiecare domeniu de frecvene corespunde unei
histograme diferite, i astfel numrul variabil de benzi permite msurarea coninutului ntr-un
domeniu de frecvene foarte larg. Maximul histogramelor este folosit pentru normalizarea
vectorului de caracteristici rezultat, care are un numr de 1x24 elemente. Histogramele
multiscalare sunt aplicate asupra transformatei Wavelet, transformatei FFT i asupra imaginii
originale (imagine pe nivele de gri) contribuind astfel cu un numr total de 3x24 elemente la
formarea vectorului de trsturi al imaginilor.
Histogramele multiscalare sunt utilizate n cadrul metodelor I, II i III de formare a
vectorului de trsturi.(pentru mai multe detalii vezi figura 3.5)
2.8 Filtre orientate n patru direcii pentru obinerea "primelor 4 momente"
Pentru acest set de trsturi, imaginea este subdivizat ntr-un set de "dungi" n patru
orientri diferite (0, 90, +45 i 45). "Primele 4 momente" (media, deviaia standard,
oblicitatea i planitatea ("kurtosis") ) sunt calculate pentru fiecare "dung" i fiecare set de
"dungi" este transformat ntr-o histogram cu 3 benzi. Avnd astfel patru momente n patru
direcii cu histograme cu trei benzi, rezult un vector de trsturi care conine 4x4x3=48
elemente.[9]
"Primele 4 momente" sunt utilizate, lafel ca i histogramele multiscalare n cadrul
metodelor I, II i III de extragere a trsturilor din imaginea original.
2.9 Algoritmul KNN
KNN este abrevierea din limba englez pentru K-Nearest Neighbor (cei mai apropiai k
vecini), fiind un algoritm de nvaare supervizat utilizat n special n problemele de clasificare.
Scopul acestui algoritm este acela de a clasifica un nou obiect pe baza atributelor sale n fincie
de setul de date de antrenare cunoscut.
10
Prin aceast tehnic, folosit n special pentru clasificarea datelor n mai multe posibile
clase, un obiect nou este clasificat pe baza majoritii voturilor vecinilor si, fiindu-i atribuit
clasa cea mai frecvent ntlnit printre cei k cei mai apropiai vecini.
Acei k cei mai apropiai vecini se aleg pe baza distanei minime dintre obiect i toate
celelalte obiecte din setul de date de antrenare (setul de date cunoscut).
Fiecare obiect este reprezentat n setul de date printr-un vector de trsturi, care n cazul
imaginilor poate s conin caracteristici de form, de textur sau de culoare.
Exist mai multe tipuri de distane folosite pentru calculul distanei minime dintre noul
vector i vectorii din setul de date:
- distana euclidian
- distana euclidian standardizat
- distana city block (Manhattan)
- distana cosinus
- distana coeficientului de corelaie (distana Pearson r)
- distana hamming
- distana Maholonobis
- distana Minkowski
- etc
Cea mai frecvent distan utilizat n cadrul acestui algoritm este distana euclidian.
Fiind dat o matrice X de dimensiune [mxn], care conine "m" vectori linie (vectorii de trasturi
de dimensiune [1xn]) , ,, , unde =( , ,, ), putem defini metricile (distanele)
dintre dou obiecte (doi vectori) oarecare i (r,s=1m) dup cum sunt ilustrate i n [22],
astfel:
- distana euclidian:
=( )( ) = ( )
(24)
- distana euclidian standardizat
=( ) ( ) , unde D este matricea diagonal, ce are ca elemente
dispersia vectorului =(, , ), notat , rezultnd:
( )
(25)
(26)
- distana cosinus
=1
(27)
()()
)(
)
(
, unde
= (28)
)(
)(
)(
11
O alt calitate a acestei tehnici este eficacitatea sa, n cazul n care, setul de date de
antrenare este afectat de zgomot (n special n cazul n care se foloseste ca metric inversul
ptratului distanei ponderate). Obinerea distanei ponderate se face prin ierarhizarea fiecrei
trsturi n funcie de scopul propus. Astfel distana euclidian ponderat va avea urmatoarea
expresie:
= ( )
(29),
12
13
14
- toate imaginile s fie realizate cu aceleai procedee (s fie realizate cu acelai aparat de
fotografiat sau camer de filmat)
- parametrii mijloacelor de captare a imaginilor s fie identici pentru toate imaginile
- s aibe un numr de imagini care s permit obinerea unor rezultate de clasificare
satisfctoare.
Deoarece nu a mai fost creat o baz de imagini ca i cea utilizat n lucrarea de fa i
realizarea unei astfel de baze de imagini necesit foarte mult timp, au fost folosite imagini care
fac obiectul altor baze de date. Bine neles c baza de imagini format, nu este la fel de bun ca
cea care respect principiile enumerate mai sus.
3.2 Metoda de extragere a caracteristicilor
Dup crearea bazei de imagini, s-a realizat extragerea caracteristicilor din imagini prin
intermediul diferitor transformate de imagini (transformata Wavelet, transformata FFT,
transformata Radon) i alte moduri de extragere ("primele 4 momente", histograme multiscalare,
caracteristicile Tamura - granularitatea, contrastul i direcionalitatea, i polinomurile Zernike).
Dup cum se poate observa n figura 3.2, aceste transformate i celelalte procedee de
extragere a caracteristicilor enumerate anterior, sunt distribuite n patru metode de extragere a
caracteristicilor, astfel:
15
Metodele de extragere a trsturilor, dup cum se poate vedea n figura 3.2, au fost
denumite metoda I, metoda II, metoda III i metoda IV pentru ca referirea la acestea s se
realizeze mult mai uor.
Privind figura 3.2 se poate observa c metoda I i metoda II difer ca i structur numai
prin prizma imaginilor pe care sunt aplicate (metoda I se aplic pe imaginea obinut n urma
transformatei Wavelet a imaginii pe nivele de gri, iar metoda II pe cea obinut n urma
transformatei Wavelet a transformatei FFT). Numrul de trsturi obinute prin aplicarea acestor
dou metode este acelai indiferent de imaginea pe care sunt aplicate (imagine pe nivele de gri,
cea rezultat n urma transformatei Wavelet sau cea rezultat n urma transformatei Wavelet a
transformatei FFT) i indiferent de dimensiunea acesteia, doarece cele trei blocuri "primele 4
momente", histograme multiscalare i caracteristicile Tamura contribuie cu un numr fix la
formarea vectorului de caracteristici (48, 24, respectiv 6).
Astfel, asupra transformatei Wavelet a imaginii, ct i asupra transformatei Wavelet a
trasnformatei FFT, se vor aplica urmtoarele funcii de compresie a numrului de coefieni:
a) Histogramele multiscalare - funcie care transform imaginea de intrare n patru tipuri de
histograme, cu 3, 5, 7 i 9 benzi, rezultnd astfel 24 de valori. Aceste valori sunt normalizate cu
maximul lor.
b) "Primele 4 momente" - funcie care returneaz un numr de 48 de coeficieni, prin parcurgerea
imaginii:
- pe diagonal (att din strnga jos pna n dreapta sus, ct i din dreapta jos pn n stnga sus)
cu un pas care depinde de valoarea rotujit a mpririi dimensiunii pe verical a imaginii la zece
(round(dim_verticala/10)). La fiecare pas se calculeaz valoarea mediei, deviaiei standard,
oblicitii i planitii pixelilor parcui. Coloanele matricei astfel obinut (care are stocate pe
fiecare linie cele patru valori menionate) sunt transformate n histograme cu 3 benzi, rezultnd
un numr de 4x3=12 atribute pentru fiecare imagine.
- pe orizontal i pe vertical, cu deosebirea c fa de parcurgerea pe diagonal cea realizat pe
orizontal se va face cu un pas care depinde de dimensiunea vertical a imaginii, iar cea
vertical se va face cu un pas care depinde de dimensiunea orizontal a imaginii. n rest se
procedeaz la fel ca i la parcurgerea pe diagonal.
Aadar, pentru cele patru parcurgeri (dou pe diagonal, una pe vertical i una pe
orizontal) se obin un numr de [4 parcurgeri]x[4 coloane]x[3 benzi ale histogramelor]=48
trsturi pentru orice imagine asupra creia s-a aplicat aceast metod de reducere a trsturilor.
c) Trsturile Tamura care se compun din directionalitatea imaginii, contrastul, granularitatea i
o histogram a granulitaii cu 3 benzi.
Pn acum au fost trecute n revist primele dou metode de reducere a atributelor unei
imagini (metoda I i metoda II), iar n continuare vom aborda celelate dou metode - metoda III
i metoda IV.
n cadrul metodei III de reducere a atributelor, blocurile: "primele 4 momente",
histograme multiscalare, caracteristicile Tamura, au aceeai funcionare ca i n cazul blocurilor
similare din metoda I i metoda II, cu deosebirea c acestea acioneaz asupra imaginii originale
(imagine pe nivele de gri). Acestor blocuri i se adaug i transformata Radon.
Pentru a realiza transformata Radon s-a utilizat funcia deja implementat n Matlab:
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 - 0, 45, 90 i 135.
Fiecare coloan a lui R va conine transfromata Radon pentru fiecare unghi din theta. Apoi
coloanele matricei R sunt transformate n patru histograme a cte trei benzi fiecare. Astfel,
transformata Radon particip cu un numr total de 4x3=12 trsturi la formarea vectorului de
caracteristici.
Metoda IV de extragere a trsturilor const n descompunerea polinomial Zernike a
imaginilor pe nivele de gri. Rezultatele obinute n urma aplicrii polinoamelor Zernike asupra
imaginii sunt valori complexe, i de aceea descriptorii imaginii vor fi modulul acestor valori
16
Figura 3.3 Schema de formare a vectorului de trsturi din cadrul WND-CHARM [9]
Dup cum se poate observa n figura 3.3 pentru formarea vectorului de trsturi s-au
utilizat diferite transformate ale imaginilor (transformata Wavelet, transformata Chebyshev i
transformata FFT), precum i combinaii ale acestor transformate (transformata Wavelet a
transformatei FFT i transformata Chebyshev a transformatei FFT). Apoi din rezultatele obinute
n urma acestor transformate, au fost extrase diferite trsturi, care sunt grupate n funcie de
tipul lor (caracteristici de mare contrast, de descompunere polinomial, de statistic i textur)
n patru grupe astfel:
Figura 3.4 Grupele de caracteristici pentru formarea vectorului de trsturi din WND-CHARM
[9]
n figura 3.4 este descris componena fiecrei grupe de caracteristici. Astfel, grupa A
cuprinde urmtoarele caracteristici de contrast nalt(de form):
- statisticile muchiilor care sunt calculate pe gradientul imaginii originale i cuprind mai
multe caracteristici cum ar fi media, variana, o histogram cu opt benzi a magnitudinii i
direciei pixelilor, numrul total de pixeli muchie normalizat n raport cu dimensiunea imaginii,
omogenitatea direciei i o histogram cu patru benzi care ilustreaz diferena direciei muchiilor.
Astfel, prin extragerea acestor statistici din imagine se obine un numr de 28 de trsturi.
- coeficienii Gabor se obin prin utilizarea wavelet-urilor Gabor[9], obinndu-se un
numr de 7 coeficieni pentru fiecare imagine.
17
18
procedat astfel:
- s-a plecat de la formarea vectorului de trsturi prin mprirea figurii 3.3 n mai nou
metode de extragere caracteristicilor (primele nou linii ale tabelului 3.1) i testarea fiecrei
metode n parte.
- s-au relizat combinaii ale celor nou metode de extragere (dup cum se poate observa
n tabelul 3.1) pn cnd s-a ajuns la o performan de clasificare satisfctoare.
- nc de la nceput s-a renunat din grupa A la coeficienii Gabor (datorit numrului mic
de trsturi i timpului de obinere mai ridicat fa de celelalte caracteristici ale grupei), din
grupa B la statisticile Chebyshev-Fourier (deoarece utilizeaz pentru calcul o mare parte din
memorie i timpul de obinere este foarte mare), din grupa C la trsturile Haralick (datorit
timpului de obinere foarte mare i modului complicat de calcul).
12.
Acuratee KNN
Weka
Metoda de extragere a trsturilor
[%]
k
1
3
5
imagine transformata Wavelet grupa C
70.6 68
70
imagine transformata Chebyshev grupa D 66.1 66.5 62.7
imagine transformata FFT transformata 68 67.5 75.5
Wavelt grupa C
imagine transformata FFT transformata 64.8 65.4 65.3
Chebyshev grupa D
imagine transformata FFT grupa B
68.9 67.2 65.8
imagine transformata FFT grupa D
59 53.3 60
imagine grupa A
62.7 62.7 60.4
imagine grupa B
81.5 80.7 83.5
imagine grupa D
82.5 83.5 82.5
imagine transformata Wavelet grupa C +
imagine grupa A
70
71
73
imagine transformata Wavelet grupa C +
imagine grupa A +
70.6 73.7 72
imagine transformata FFT transformata
Wavelet grupa C
imagine transformata Wavelet grupa C +
imagine grupa A + imagine grupa B
70
71
73
13.
Nr.
crt.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
14.
15.
16.
81
19
Acuratee KNN
Matlab
[%]
k
1
3
5
70
62
68.3
65.7 64.4 63.7
66.3 65.6
74
63.2
61.3
63.2
68
56.9
63
80.6
85
67.3
51.9
64.3
81.9
86.2
65.8
58.5
61.3
82.8
87
69.3
70.6
70
69.3
71.2
70
69.3
70.6
70
80.5
79.8
81.8
81.2
80.6
86.8
86.2
86.2
87.5
87.5
71.2
73
70.6
70.6
70.6
85
85
82.5
82.5
80
Nr.
crt.
17.
18.
19.
Acuratee KNN
Weka
[%]
k
1
3
5
85.6 85 82.5
Acuratee KNN
Matlab
[%]
k
1
3
5
87 88.7
88
87.5
90
87.8
85
86.9
87.5
86.3
86.3
n tabelul 3.1 se pot observa valorile acurateii de clasificare obinute att n Matlab ct i n
Weka, prin intermediul clasificatorului KNN, respectiv IBk pentru un numr de vecini k= 1,3 sau
5.
Dup cum se poate observa n tabelul 3.1, metoda de extracie a trsturilor care ofer cea
mai mare acuratee este descris n ultima seciune a tabelului.
Nu s-a mai continuat testarea altor combinaii de metode de extragere a trsturilor
deoarece s-a obinut o acuratee de clasificare satisfctoare i pentru c timpul de extragere a
trsturilor pentru toate imaginile din baza de date s nu mai creasc (pentru c este i aa unul
foarte ridicat- 3 ore i 12 minute).
Asfel, s-a ajuns la urmtoarea schem de formare a vectorului de caracteristici, care este
utilizat mai departe n aceast lucrare:
20
Figura 3.5 reprezint schema de formare a vectorului de caracteristici pentru care s-a obinut o
acuratee de clasificare satisfctoare prin intermediul clasificatorului IBk din Weka i
clasificatorului KNN implemantat n Matlab.
Metodele de extragere a trsturilor ilustrate n figura 3.5 sunt descrise mai amnunit n
n figura 3.2 i n seciunea 3.2 a lucrrii de fa.
Astfel, dup cum se observ n figura 3.5 vectorul de caracteristici al fiecrei imagini va
fi format din 318 trsturi. Pentru ntreaga baz de imagini vectorul de trsturi va fi format din
318 trsturi x 800 de imagini.
3.2.3 Evaluarea trsturilor n Weka
Weka este un sistem foarte puternic cu ajutorul cruia se poate realiza numai clasificarea
obiectelor (nu i extragerea caracteristicilor).
Utilitarul poate fi descrcat gratuit de pe site-ul: http://www.cs.waikato.ac.nz/ml/weka/. Acesta
a fost utilizat pentru a aplica o metod de nvare aupra vectorului de caracteristici i pentru a
analiza rezultatele obinute. nainte de aplicarea oricrui algoritm de clasificare asupra datelor,
acestea trebuie convertite n fisiere ARFF ("Attribute-Relation File Format").
Structura fiierului ARFF trebuie s respecte urmtoarea form:
21
n figura 3.7 este prezentat schema de formare a fiierului ARFF adaptat la aceast
lucrare.
Aadar, fiecare atribut trebuie descris n header-ul
header
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
asificator 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.
zero Dac spre exemplu vom avea
urmtoarele matrice de confuzie descrise n figura 3.8:
22
23
Numele familiei de funcii wavelet Daubechies se scrie dbN, unde N este ordinul, iar db
este "prenumele" funciei wavelet. Funciile Coiflet (coifN) reprezint o alt familie de funcii
discrete wavelet, descoperite de Ingrid Daubechies. Numele familiei de funcii wavelet Symlet se
scrie symN, unde le fel ca i la Daubechies, N este ordinul, iar sym este "prenumele" funciei
wavelet. Functiile wavelet biortogonale se scriu biorNr.Nd, iar funciile inverse biortogonale la
fel ca i cele biortogonale se scriu rbioNr.Nd.
Din varietatea de familii de wavelet-uri n acest experiment s-au utilizat urmtoarele
funcii: db1db15, coif1coif5, sym1sym15, bior 1.1bior6.8, rbio1.1rbio6.8 (n total un
numr de 64 de valori)
- s-a utilizat numai metoda I de extragere a trsturilor (descris n figura 3.2) avnd ca
scop a reducerea timpul de extragere pentru imaginile din baza de date.
Astfel, prin utilizarea metodei I au fost obinui vectorii de trsturi ai bazei de imagini
pentru valorile parametriilor transformatei Wavelet stabilite mai sus. S-au obinut un numr de
4x64=256 vectori de caracteristici, care au fost salvai n fiiere text. La sfritul fiecrei linii a
fiierului s-a introdus clasa real a imaginii (pentru a se putea calcula acurateea de clasificare)
- s-a realizat permutarea liniilor tuturor fiierelor, pentru a nu permite clasificatorului s
nvee inclusiv ordinea de preluare a imagnilor (deoarece clasificatorul prelua pe rnd cele 4
clase, iar prin permutare imaginile sunt preluate aleator)
- pentru nvare i testare datele au fost mprite asfel nct s se obin 80% din
imaginile fiecrei clase pentru nvare i 20% pentru testare (cte 160 imagini din fiecare clas
pentru nvare i 40 imagini din fiecare clas pentru testare).
- s-a realizat clasificarea imaginilor din cele 256 de fiiere prin intermediul
clasificatorului KNN. S-a optat pentru obinerea unei acuratei de clasificare ct mai bun, n
defavoarea unor timpi calcul a transformatei Wavelet mai ridicai (cu ct nivelul de descompunere este mai mare cu att timpul necesar realizrii transformatei Wavelet este mai ridicat, dar
scade timpul de clasificare).
n urma acestui experiment s-a observat c acurateea maxim se obine pentru familia de
wavelet-uri bior1.3 i nivelul de descompunere wavelet egal cu 3.
Coeficienii cA, cH, cV i cD de nivlel 3 i familie bior1.3 ai unei imagini arat astfel:
24
conine numrul asociat claselor imaginilor din setul de testare (clasa_testare care este un vector
coloan).
25
imagine prin analiza tuturor modalitilor posibile de formare a vectorului de trsturi pornind de
la cele patru metode: metoda I, metoda II, metoda III i metoda IV.
Deoarece avem un numr de patru metode de extragere, numrul de modaliti posibile de
obinere a vectorului de trsturi este dat de:
+ + + = 4 + 6 + 4 + 1 = 15 modaliti
Cele cincisprezece modaliti de formare a vectorului de trsturi sunt obinute prin aplicarea
asupra imaginilor a urmtoarelor metode i combinaii de metode de extragere:
1. metoda I
2. metoda II
3. metoda III
4. metoda IV
5. metoda I +metoda II
6. metoda I + metoda III
7. metoda I + metoda IV
8. metoda II + metoda III
9. metoda II + metoda IV
10. metoda III + metoda IV
11. metoda I + metoda II + metoda III
12. metoda I + metoda II + metoda IV
13. metoda I + metoda III + metoda IV
14. metoda II + metoda III +IV
15. metoda I +metoda II + metoda III + metoda IV
Au fost formai astfel cincisprezece vectori de caracteristici ai bazei de imagini,
dimensiunea lor variind n funcie de modalitatea de extragere a trsturilor (a se vedea tabelul
4.1 pentru mai multe detalii).
Pentru clasificarea celor cincisprezece vectori de caracteristici s-a procedat dup cum
urmeaz:
- s-a realizat o aplicaie de extragere a trsturilor din imaginile bazei de date pentru toate cele
cincisprezece modaliti de formare a vectorului de caracteristici. Vectorii astfel formai au fost
salvai n fiiere text.
- s-a realizat permutarea liniilor tuturor fiierelor, pentru a nu permite clasificatorului s nvee
inclusiv ordinea de preluare a imagnilor
- pentru nvare i testare datele au fost mprite asfel nct s se obin 80% din imaginile
fiecrei clase pentru nvare i 20% pentru testare (cte 160 imagini din fiecare clas pentru
nvare i 40 imagini din fiecare clas pentru testare)
- s-a realizat clasificarea imaginilor din cei cincisprezece vectori de caracteristici prin
intermediul clasificatorului KNN
- rezultatele de clasificare a celor cincisprezece vectori au fost comparate pe baza acurateii de
clasificare.
Acurateea dat de fiecare combinaie de metode, a fost comparat cu rezultatele obinute
pentru combinaia metoda I+metoda II+metoda III +metoda IV (cea cu care s-a obinut cea mai
bun acuratee de clasificare). Astfel s-a observat c modalitile compuse din metoda III +
metoda IV, metoda I + metoda III + metoda IV, metoda II + metoda III + metoda IV, se apropie
foarte mult de acurateea obinut cu metoda I+metoda II+metoda III +metoda IV, fr a o
depii (90.63 % faa de 91.25%).
n cazul celor trei modaliti (metoda III + metoda IV, metoda I + metoda III + metoda
IV, metoda II + metoda III + metoda IV) se obine un timp de clasificare mai bun (0.09 secunde
fa de 0.11) dect n cazul metodei cu care s-a obinut cea mai bun acuratee (metoda I+metoda
II+metoda III +metoda IV). Acest lucru se datoreaz numrului mai mic de trsturi pe imagine
(pentru mai multe detalii consultai tabelul 4.1)
26
Totui, am optat pentru obinerea unei acuratei de clasificare ct mai bun n detrimentul
unui timp de clasificare mai sczut.
3.5.2 Transformarea aplicaiei ntr-un executabil
S-a ncercat mbuntirea performanelor n ceea ce privete timpii de clasificare a
tuturor celor cincisprezece combinaii posibile de creare a vectorului de caracteristici, prin
transformarea aplicaie realizate ntr-un fiier executabil. n acest scop am utilizat toolbox-ul
deploytool din Matlab, care urmrete urmtoarea schem bloc pentru realizarea unui astfel de
fiier:
27
n figura 3.12 este prezentat aplicaia GUI realizat prin intermediul toolbox-urilor
Matlab (GUIDE + deploytool).
Interfat grafic este format din trei prti:
- partea de extragere a trsturilor
- partea de clasificare a imaginilor
- partea de testare a clasificatorului KNN cu alte imagini dect cele din baza de date
3.6.1 Extragerea trsturilor
Interfaa grafic permite utilizatorului s aleag clasele de imagini utilizate n etapa de
extragere a trsturilor, precum i metodele de extracie a trsturilor (poate s aleag orice
combinaie a celor patru metode descrise n figura 3.2). Dup apsarea butonului "Creare vector
trsturi" se va realiza extragerea trsturilor prin metoda aleas din imaginile claselor selectate.
Timpul de extragere al trsturilor tuturor imaginilor din baza de date va fi vizibil utilizatorului
odat cu terminarea procesului de extragere n csua numerotat cu "2", iar informaiile legate
de numrul de caracteristici al vectorului de trsturi astfel format vor fi vizibile n csua
numerotat cu "1".
3.6.2 Clasificarea imaginilor
Pentru clasificarea imaginilor s-a ales clasificatorul KNNR. Interfaa permite setarea
numrului de vecini pentru care se face clasificarea (csua "3") i procentului din numrul total
de imagini destinat procesului de nvare (csua 4). Procentul de imagini pentru care se face
testarea se calculeaz automat prin scderea din 100% a procentului de imagini de nvare.
Acesta este afiat odat cu setarea procentului de nvare n csua "5".
Prin apsarea butonului "Antrenare i testare KNN" se realizeaz clasificarea imaginilor
din setul de testare n funcie de parametrii setai. Informaiile legate de acurateea clasificrii i
timpul de clasificare vor fi afiate n csuele "6",respectiv "7".
3.6.3 Testarea clasificatorului KNN i cu alte imagini dect cele din baza de date
Interfaa grafic permite testarea clasificatorului KNN i cu alte imagini dect cele din
baza de date, n funcie de vectorul de trsturi extras "on-line" sau n funcie de vectorul de
trsturi implicit obinut n cadrul celei mai bune metode de extragere a caracteristicilor (metoda
I+metoda II+metoda III+metoda IV).
Pentru a se realiza testarea, utilizatorul trebuie s aleag o nou imagine prin apsarea
butonului "Preia imagine" i s selecteze vectorul de trsturi utilizat. Trsturile imaginii
preluate vor fi extrase prin aceleai metode prin care s-a format i vectorul de trsturi ales (cel
format on-line sau cel implicit). Informaiile legate de timpul de extragere a trsturilor, timpul
de clasificare i clasa imaginii noi vor fi afiate n csuele "8", "9", respectiv "10".
4. Rezultate experimentale
Toate experimentele din acest lucrare au fost relizate pe un calculator desktop avnd
urmtoarea configuraie:
- plac de baz: ASUS M3N78-VM
- procesor: AMD Athlon(tm) 64 3000+, avnd o frecven de 1.8Ghz
- RAM: 2 Gb DDR II
- placa video: Nvidia GeForce 8200
- HDD: 250 Gb, 7200 rpm
- sistem de operare: Windows XP Service Pack 3
28
(a)
(b)
29
clase i s-a dorit evitarea cazurilor n care clasificatorul poate atribuii imaginea la doua clase
diferite n acelai timp.
De asemenea, Weka a fost utilizat i pentru verificarea implementrii clasificatoarelor
KNN (KNNC i KNNR) n Matlab.
Astfel, n etapa de testare, n Weka se obin urmtoarele matrice de confizie:
(a)
(b)
(c)
Figura 4.3 Matricele de confuzie pentru setul de testare (k=1,3 i 5) obinute n Weka
n figura 4.3 putem observa modul n care au fost atribuite imaginile din setul de testare
(format din 20% din imaginile fiecrei clase, adic 40 de imagini din fiecare clas) n urma
evalurii imaginilor cu ajutorul clasificatorului IBk. Astfel, pentru k=1 s-a obinut o acuratee de
clasificare de 86.25% (adic 138 de imagini clasificate corect din totalul de 160), pentru k=3 86.25%, iar pentru k=5 - 86.875% (adic 139 de imagini clasificate corect din totalul de 160).
n Matlab, n etapa de testare pentru ambele clasificatoare KNN (KNNC i KNNR) s-au
obinut urmtoarele matrice de confuzie:
(a)
(b)
(c)
30
i KNNR) n funcie de numrul de trsturi extrase (de combinaia de metode utilizat pentru
construirea vectorului de trsturi) poate fi observat att n figura 4.5, ct i n tabelul 4.1.
31
32
Numr
trsturi
Timp extragere
coeficieni
78
1 min, 11 sec
95
90
II
78
1 min, 41 sec
88
III
90
17 min
IV
72
2 h, 51 min
I II
156
2 min, 51 sec
I III
168
18 min
I IV
150
2 h, 52 min
II III
168
19 min
II IV
150
2 h, 53 min
10
III IV
162
3 h, 9 min
11
I II III
246
20 min
12
I II IV
228
2 h, 54 min
13
I III IV
240
3 h, 10 min
14
II III IV
240
15
I II III IV
318
Nr.
crt
Acuratee [%]
Garbage
Acurateea
medie
[%]
50
68
75.63
Timp
clasificare
KNNR
[s]
0.05
88
60
47
70.63
0.07
0.21
97
85
75
80
84.38
0.05
0.45
100
97
45
85
81.88
0.04
0.20
97
95
70
72
83.75
0.06
0.62
97
85
75
85
85.63
0.07
0.65
100
97
50
85
83.13
0.06
0.68
97
85
75
82
85
0.07
0.80
100
97
55
90
85.63
0.06
0.73
100
95
78
90
90.63
0.09
0.79
97
85
75
85
85.63
0.09
1.26
100
97
60
90
86.88
0.08
0.97
100
95
78
90
90.63
0.09
1.21
3 h, 10 min
100
95
78
90
90.63
0.09
1.27
3 h, 12 min
100
95
80
90
91.25
0.10
1.30
x
x
x
x
33
Timp
clasificare
KNNC
[s]
0.30
Numr
trsturi
78
II
78
III
90
Timp
extragere
coeficieni
1 min, 7
sec
1 min, 34
sec
16 min
IV
72
2 h, 51 sec
I II
156
I III
168
2 min, 41
sec
18 min
I IV
150
2 h, 52 min
II III
168
18 min
II IV
150
2 h, 52 min
10
III IV
162
3 h,8 min
11
I II III
246
19 min
12
I II IV
228
2 h, 54 min
13
I III IV
240
3 h, 9 min
14
II III IV
240
15
I II III IV
318
Nr.
crt
k
5
Masini
Pietoni
Animale
Garbage
95
90
50
68
Acurateea
medie
[%]
75.63
88
88
60
47
70.63
0.04
97
85
75
80
84.38
0.04
100
97
45
85
81.88
0.04
97
95
70
72
83.75
0.06
97
85
75
85
85.63
0.06
100
97
50
85
83.13
0.06
97
85
75
82
85
0.06
100
97
55
90
85.63
0.06
100
95
78
90
90.63
0.08
97
85
75
85
85.63
0.09
100
97
60
90
86.88
0.08
100
95
78
90
90.63
0.08
3h, 9 min
100
95
78
90
90.63
0.10
3 h, 11 min
100
95
80
90
91.25
0.10
Acuratee [%]
x
x
x
x
34
Timp
clasificare
KNNR[s]
0.04
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.
35
36
6. Bibliografie
[1] Smith, J.R., Chang, S.F., 1996. Local color and texture extraction and spatial query. Proc.
IEEE International Conference on Image Processing, Lausanne, Switzerland, September 1996.
[2]Shen, L., Bai, L., 2006. MutualBoost learning for selecting Gabor features for face
recognition, Pattern Recognition Letters, 27, 17581767.
[3] Jing, X.Y., Zhang, D., 2004. A Face and Palmprint Recognition Approach Based on
Discriminant DCT Feature Extraction. IEEE Transactions on Systems, Man, and Cybernetics,
34, 24052414.
[4] Pentland, A., Choudhury, T., 2000. Face recognition for smart environments. Computer, 33,
5055.
[5] Boland, M.V., Murphy, R.F., 2001. A Neural Network Classifier Capable of Recognizing the
Patterns of all Major Subcellular Structures in Fluorescence Microscope Images of HeLa Cells.
Bioinformatics, 17, 12131223.
[6] Awate, S.P., Tasdizen T., Foster N., Whitaker R.T., 2006. Adaptive Markov modeling for
mutualinformation-based, unsupervised MRI braintissue classification. Medical Image Analysis,
10,726739.
[7] Cocosco, A., Zijdenbos, P., Evans, A.C., 2004. A fully automatic and robust brain MRI tissue
classification method. Medical Image Analysis, 7, 513527.
[8] Ranzato, M., Taylor, P.E., House, J.M., Flagan, R.C., LeCun, Y., Perona, P., 2007.
Automatic recognition of biological particles in microscopic images. Pattern Recognition Letters,
28, 3139.
[9] http://www.phy.mtu.edu/~lshamir/publications/image_classifier.pdf
[10]http://www.upm.ro/facultati_departamente/stiinte_litere/conferinte/situl_integrare_european
a/Lucrari2/Ioan_Ispas.pdf
[11] http://www.dtic.upf.edu/~xserra/cursos/TDP/referencies/Park-DWT.pdf
[12] http://www.mathworks.com
[13] ac.upg-ploiesti.ro/cursuri/is/lab/IS_LUC%203.doc
[14] http://www.wisdom.weizmann.ac.il/~naor/COURSE/fft-lecture.pdf
[15] http://en.wikipedia.org/wiki/Fast_Fourier_transform#Cooley.E2.80.93Tukey_algorithm
[16] http://eivind.imm.dtu.dk/staff/ptoft/Radon/Radon.html
[17] http://imag.pub.ro/ro/cursuri/archive/radon.pdf
[18] http://ru.wikipedia.org/wiki/%D0%A4%D0%B0%D0%B9%D0%BB:Radon_transform.
png
37
[19]http://www.cs.auckland.ac.nz/compsci708s1c/lectures/Glecthtml/topic4c708FSC.htm#tamura
[20] http://en.wikipedia.org/wiki/Zernike_polynomials
[21] http://www.astronomy.ohio-state.edu/~martini/Astro890/Astro890L6.pdf
[22] http://inf.ucv.ro/~gorunescu/courses/curs/clustering.pdf
[23] Malab R2009b Help
[24] http://people.revoledu.com/kardi/tutorial/KNN/index.html
[25]http://www.autonlab.org/autonweb/14665/version/2/part/5/data/mooretutorial.pdf?branch=main&language=en
[26] http://www.mathworks.com/support/tech-notes/1600/1605.html#intro
38
7. Anexe
7.1 Anexa 1
Codul Matlab al funciei de transformare Wavelet
function [coef_img]=compresie_wavelet(imagine,nivel,tip_transformare)
%imagine= imaginea asupra careia se va aplica transformata wavelet dwt2
%nivel= nivelul de compresie al imaginilor
%tp_transformare= familia de wavelet-uri folosita
for i=1:nivel
% extragem coeficientii aproximati, de pe orizontala, verticala si
% diagonala
[cA1,cH1,cV1,cD1] = dwt2(imagine,tip_transformare);
imagine=cA1;
end;
coef_img=cA1;
return;
7.2 Anexa 2
Codul Matlab pentru obinerea fiierului cu vectorul de trsturi
clc
close all
clear all
%fis- fisierul in care va fi salvat vectorul de trasaturi
fis=fopen('fisier_caracteristici.txt','w' );
for i=1:4
% Lista contine numele imaginilor din baza de date
lista=strcat('Lista',num2str(i),'.txt');
% functia care realizeaza extragerea trasaturilor pentru fiecare
% clasa pe rand
citesteImaginiLista(lista,fis);
end
fclose all;
7.3 Anexa 3
Codul Matlab al funciei de extragere trsturi
function citesteImaginiLista(fisLst,fis)
%fisLst - fisierul txt care contine denumirea imaginilor
%fis - fisierul in care se va scrie vectorul de trasaturi
% preiau nr de imagini in functie de numarul de linii al fisierului Lista
numberOfLines = GiveNbOfLines(fisLst);
fid_imagesLst=fopen(fisLst);
% punem in variabila dirImagini folderul din care sa citeasca imaginile
nume_lista = {'Lista1.txt','Lista2.txt','Lista3.txt','Lista4.txt'};
T=strcmp(fisLst, nume_lista);
currentfolder=pwd;
dirImagini={strcat(currentfolder,'\cars\'),...
strcat(currentfolder,'\persons\'),...
strcat(currentfolder,'\animals\'),...
39
strcat(currentfolder,'\garbage\')};
[T,clasa]= sort(T,'descend');
clasa=clasa(1);
dirImagini=dirImagini{clasa};
for i = 1:numberOfLines-1
% preiau numele fiecarei imagini din fisierul fid_imagesLst
imgName = numeImagine(fid_imagesLst);
% citesc imaginea si o transform din color in gray
[imagine] = imread(strcat(dirImagini,imgName),'png');
imagine=rgb2gray(imagine);
imagine = im2double(imagine);
%metoda I de extractie
%aplicare transformata wavelet
caracteristici_wavelet1=compresie_wavelet(imagine,3,'bior1.3');
%aplicare first4moments, MultiScaleHistograms, TamuraTextures asupra
%transformatei wavelet a imaginii
first4moments = CombFirst4Moments(caracteristici_wavelet1);
multiscalehist = MultiScaleHistograms(caracteristici_wavelet1);
TamuraFeatures = TamuraTextures(caracteristici_wavelet1);
vect_caracteristici=[first4moments,multiscalehist,TamuraFeatures];
%metoda II de extractie
% aplicare FFT
fftTrans=FourierTransform(imagine);
caracteristici_wavelet_fft=compresie_wavelet(fftTrans(:,:,1),3,'bior1.3');
%aplicare first4moments, MultiScaleHistograms, TamuraTextures asupra
%transformatei wavelet a transformatei fft a imaginii
first4moments = CombFirst4Moments(caracteristici_wavelet_fft);
multiscalehist = MultiScaleHistograms(caracteristici_wavelet_fft);
TamuraFeatures = TamuraTextures(caracteristici_wavelet_fft);
vect_caracteristici=[vect_caracteristici,first4moments,multiscalehist,...
TamuraFeatures];
%metoda III de extractie
%aplicare first4moments, MultiScaleHistograms, TamuraTextures si
% RadonTransform asupra imaginii originale
first4moments = CombFirst4Moments(imagine);
multiscalehist= MultiScaleHistograms(imagine);
TamuraFeatures = TamuraTextures(imagine);
radonTransStat = RadonTransformStatistics(imagine);
vect_caracteristici=[vect_caracteristici,first4moments,multiscalehist,...
TamuraFeatures,radonTransStat];
% metoda IV de extractie
%aplicare polinoamele lui zernike asupra imaginii originale
zvalues = ZernikePolynomials(imagine);
40
vect_caracteristici=[vect_caracteristici,zvalues];
%% salvam rezultatul in fisier
lungime=size(vect_caracteristici,2);
for j=1:lungime
fprintf(fis,'%.3f', vect_caracteristici(j));
fprintf(fis,'%c',',');
end;
fprintf(fis,'%d%c\n',clasa,',');
end
fclose(fid_imagesLst);
7.4 Anexa 4
Codul Matlab pentru obinerea fiierului cu liniile vectorului de caracteristici permutate
close all
clear all
clc
calea=strcat(pwd,'\fisiere\');
% fisierul in care este salvat vectorul de trasaturi
fisierulmeu=strcat(calea,'fisier_caracteristici.txt');
% functia care realizeaza permutarea datelor precum si impartirea lor in
% 80% si 20% pentru invatare si testare
prelucrareFisierIN(fisierulmeu);
fclose all;
Codul Matlab pentru funcia prelucrarefisierIN
function prelucrareFisierIN(fisierulmeu)
% fac permutari de linii, pt ca sa nu-i dau posibilitatea
% clasificatorului sa invete inclusiv ordinea obiectelor
%preiau datele din fisier si le transform in 80% pentru invatare si 20 %
%pentru testare
xy=preiaDatelePtPrel(fisierulmeu);
lungime=size(xy);
clasa1=xy(1:lungime(1)/4,:);
clasa2=xy(lungime(1)/4+1:2*lungime(1)/4,:);
clasa3=xy(2*lungime(1)/4+1:3*lungime(1)/4,:);
clasa4=xy(3*lungime(1)/4+1:lungime(1),:);
size1=size(clasa1);
size2=size(clasa2);
size3=size(clasa3);
size4=size(clasa4);
clasa1_invatare=clasa1(1:0.8*size1(1),:);
clasa1_test=clasa1(0.8*size1(1)+1:end,:);
clasa2_invatare=clasa2(1:0.8*size2(1),:);
clasa2_test=clasa2(0.8*size2(1)+1:end,:);
clasa3_invatare=clasa3(1:0.8*size3(1),:);
41
clasa3_test=clasa3(0.8*size3(1)+1:end,:);
clasa4_invatare=clasa4(1:0.8*size4(1),:);
clasa4_test=clasa4(0.8*size4(1)+1:end,:);
date_invatare=[clasa1_invatare;clasa2_invatare;clasa3_invatare;clasa4_invatare];
date_testare=[clasa1_test;clasa2_test;clasa3_test;clasa4_test];
%permutare linii
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];
%salvez datele in alt fisier -fis_testare_random1.txt
calea=strcat(pwd,'\fisiere random\');
fid_scriere=fopen(strcat(calea,'fisier_caracteristici_random.txt'),'w');
%matricea cu parametrii imaginilor cu liniile permutate
%scrierea matricei in noul fisier-fisier_caracteristici_random1.txt
dim1=size(date);
for k1=1:dim1(1)
fprintf(fid_scriere,'%s',date{k1,1});
fprintf(fid_scriere,'\n');
end
fclose(fid_scriere);
Codul Matlab pentru functia preiaDatelePtPrel
function [xa] = preiaDatelePtPrel(fis)
% functie cu care citesc datele dintr-un fisier .txt, linie cu linie
% ca stringuri
numberOfLines = GiveNbOfLines(fis);
fid_imagesLst_app=fopen(fis);
clear xa;
clear ya;
clear nrul;
nr_instante=((numberOfLines-1));
for i = 1:nr_instante
%preluam fiecare linie ca un string si o salvam intr-o matrice de
%stringuri
tline = fgetl(fid_imagesLst_app);
xa{i,1}=tline;
end
fclose(fid_imagesLst_app);
Codul Matlab pentru funcia permutareLinii
function [rez] = permutareLinii(matrice)
% face permutarea liniilor matricei de la intrare; structura lui "matrice"
% ar trebui sa fie : pe linia se gaseste info despre obiectul 1 si tot asa,
% iar pe coloane sunt caracteristicile si clasa obiectelor
42
dim=size(matrice);
rez=matrice(randperm(dim(1)),:);
7.5 Anexa 5
Codul Matlab pentru clasificarea KNN
close all
clear all
clc
%fisierul in care salvam rezultatele clasificarii
calea=strcat(pwd,'/rezultate/');
fis1=fopen(strcat(calea,'rezultateknn.txt'),'w');
calea= strcat(pwd,'/fisiere/');
%fisierul din care preluam vectorul de trasaturi
fisierulmeu=strcat(calea,'fisier_caracteristici.txt');
[x y]=preiaDatelePtPrel(fisierulmeu);
[dim1,dim2]=size(x);
%din parametrii tuturor imaginilor 80% le retinem pentru antrenare si 20%
%pentru testare
number = round(8*dim1/10);
%xapp- matricea de antrenare
xapp=x(1:number,1:dim2-1);
%xtest- matricea de test
xtest=x(number+1:dim1,1:dim2-1);
%yapp- vectorul care contine clasele imaginilor de antrenare
yapp=y(1:number);
%ytest- vectorul care contine clasele imaginilor de testare
ytest=y(number+1:dim1);
timp=0;
accuracy=0;
% facem antrenarea si testarea KNN pentru k=1,3 si 5, unde k=numarul de
% vecini
for k=1:2:5
tic
%clasificatorul KNNC
%computedOutput=knnclassify(xtest,xapp,yapp,k);
% clasificatorul KNNR
DS.input=xapp';
DS.output=yapp';
TS.input=xtest';
knnrParam.k=k;
[computedOutput, combinedComputedOutput, nearestIndex, knnrMat] =...
knnr(DS, TS, knnrParam);
%timpul de clasificare
timp=toc;
accuracy=computeAccuracy(ytest,computedOutput')*100;
43
perf=0.5*timp+0.5*(1-accuracy/100);
%scrierea rezultatelor obtinute in fisier
fprintf(fis1,'%d %.2f %.2f %.2f\n',k,timp,accuracy,perf);
% matricea de confuzie
confusion=confusionmatrix(ytest',computedOutput);
% calculul acuratetii de clasificare pentru fiecare clasa
accuracy_cars=confusion(1,1)/40;
accuracy_persons=confusion(2,2)/40;
accuracy_animals=confusion(3,3)/40;
accuracy_garbage=confusion(4,4)/40;
%scrierea rezultatelor obtinute in fisier
fprintf(fis1,'%.2f %.2f %.2f
%.2f\n',accuracy_cars,accuracy_persons,accuracy_animals,accuracy_garbage);
end;
fclose all;
7.6 Anexa 6
Codul Matlab al aplicaiei GUI
function varargout = licentaexe(varargin)
% LICENTAEXE M-file for licentaexe.fig
%
LICENTAEXE, by itself, creates a new LICENTAEXE or raises the existing
% singleton*.
%
% H = LICENTAEXE returns the handle to a new LICENTAEXE or the handle to
% the existing singleton*.
%
%
LICENTAEXE('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in LICENTAEXE.M with the given input arguments.
%
%
LICENTAEXE('Property','Value',...) creates a new LICENTAEXE or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before licentaexe_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to licentaexe_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help licentaexe
% Last Modified by GUIDE v2.5 03-Jun-2010 12:06:20
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @licentaexe_OpeningFcn, ...
'gui_OutputFcn', @licentaexe_OutputFcn, ...
44
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- 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;
45
46
47
48
dim_vect=handles.dim_vect;
dim_vect=dim_vect-78;
handles.dim_vect=dim_vect;
set(handles.edit8,'String',num2str(dim_vect));
else
dim_vect=handles.dim_vect;
dim_vect=dim_vect+78;
handles.dim_vect=dim_vect;
set(handles.edit8,'String',num2str(dim_vect));
end
% hObject handle to radiobutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton8
49
%caracteristici
if (metoda3==0)
dim_vect=handles.dim_vect;
dim_vect=dim_vect-90;
handles.dim_vect=dim_vect;
set(handles.edit8,'String',num2str(dim_vect));
else
dim_vect=handles.dim_vect;
dim_vect=dim_vect+90;
handles.dim_vect=dim_vect;
set(handles.edit8,'String',num2str(dim_vect));
end
% hObject handle to radiobutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of radiobutton10
50
date_invatare=[clasa1_invatare;clasa2_invatare];
date_testare=[clasa1_test;clasa2_test];
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];
elseif (lungime(1)==600)
clasa1=xy(1:lungime(1)/3,:);
clasa2=xy(lungime(1)/3+1:2*lungime(1)/3,:);
clasa3=xy(2*lungime(1)/3+1:3*lungime(1)/3,:);
size1=size(clasa1);
size2=size(clasa2);
size3=size(clasa3);
clasa1_invatare=clasa1(1:round(procent_invatare*size1(1)),:);
clasa1_test=clasa1(round(procent_invatare*size1(1))+1:end,:);
clasa2_invatare=clasa2(1:round(procent_invatare*size2(1)),:);
clasa2_test=clasa2(round(procent_invatare*size2(1))+1:end,:);
clasa3_invatare=clasa3(1:round(procent_invatare*size3(1)),:);
clasa3_test=clasa3(round(procent_invatare*size3(1))+1:end,:);
date_invatare=[clasa1_invatare;clasa2_invatare;clasa3_invatare];
date_testare=[clasa1_test;clasa2_test;clasa3_test];
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];
51
elseif (lungime(1)==800)
clasa1=xy(1:lungime(1)/4,:);
clasa2=xy(lungime(1)/4+1:2*lungime(1)/4,:);
clasa3=xy(2*lungime(1)/4+1:3*lungime(1)/4,:);
clasa4=xy(3*lungime(1)/4+1:lungime(1),:);
size1=size(clasa1);
size2=size(clasa2);
size3=size(clasa3);
size4=size(clasa4);
clasa1_invatare=clasa1(1:round(procent_invatare*size1(1)),:);
clasa1_test=clasa1(round(procent_invatare*size1(1))+1:end,:);
clasa2_invatare=clasa2(1:round(procent_invatare*size2(1)),:);
clasa2_test=clasa2(round(procent_invatare*size2(1))+1:end,:);
clasa3_invatare=clasa3(1:round(procent_invatare*size3(1)),:);
clasa3_test=clasa3(round(procent_invatare*size3(1))+1:end,:);
clasa4_invatare=clasa4(1:round(procent_invatare*size4(1)),:);
clasa4_test=clasa4(round(procent_invatare*size4(1))+1:end,:);
date_invatare=[clasa1_invatare;clasa2_invatare;clasa3_invatare;clasa4_invatare];
date_testare=[clasa1_test;clasa2_test;clasa3_test;clasa4_test];
date_invatareperm = permutareLinii(date_invatare);
date_testareperm = permutareLinii(date_testare);
date=[date_invatareperm;date_testareperm];
end;
% scrierea datelor in fisierul random
dim1=size(date);
for k1=1:dim1(1)
fprintf(fid_scriere,'%s',date{k1,1});
fprintf(fid_scriere,'\n');
end
% preluarea datelor din fisierul random pentru clasificare KNN
[x y]=preiaDatelePtPrel(strcat(pwd,'\fisier_caracteristici_random.txt'));
[dim1,dim2]=size(x);
number = round(procent_invatare*dim1);
%xapp- matricea de antrenare
xapp=x(1:number,1:dim2-1);
%xtest- matricea de test
xtest=x(number+1:dim1,1:dim2-1);
%yapp- vectorul care contine clasele imaginilor de antrenare
yapp=y(1:number);
%ytest- vectorul care contine clasele imaginilor de testare
ytest=y(number+1:dim1);
%preluare valoare numar vecini
k=str2double(get(handles.edit4,'String'));
52
tic
%clasificare KNNR
DS.input=xapp';
DS.output=yapp';
TS.input=xtest';
knnrParam.k=k;
try
[computedOutput] =knnr(DS, TS, knnrParam);
catch error
disp(error);
errordlg('Numar vecini prea mare sau prea mic setul de date de antrenare',...
'Error');
enableButtons2(handles);
end
% timpul de clasificare KNNR
timp=toc;
% calculare performante
accuracy=computeAccuracy(ytest,computedOutput)*100;
perf=timp*(1-accuracy/100);
% afisarea rezultatelor obtinute in EDITBOX-uri
set(handles.edit5,'String',num2str(accuracy));
set(handles.edit6,'String',num2str(timp));
set(handles.edit7,'String',num2str(perf));
fclose all;
enableButtons2(handles);
53
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
54
55
56
strcat(currentfolder,'\animals\'),strcat(currentfolder,'\garbage\')};
clasa=[2,3,4];
elseif ((clasa3)&&(clasa4)&&(~(clasa1))&&(~(clasa2)))
dirImagini={strcat(currentfolder,'\animals\'),...
strcat(currentfolder,'\garbage\')};
clasa=[3,4];
end;
% metodele folosite la formarea vectorului de trasaturi
met1=get(handles.radiobutton8,'Value');
met2=get(handles.radiobutton9,'Value');
met3=get(handles.radiobutton10,'Value');
met4=get(handles.radiobutton11,'Value');
metoda=[met1 met2 met3 met4];
handles.metoda=metoda;
numar_clase=size(clasa);
fis=fopen('fisier_caracteristici.txt','w');
tic
% extragerea trasaturilor din imaginile claselor selectate
for i=1:numar_clase(2)
numberOfLines = GiveNbOfLines(strcat('Lista.txt'));
fid_imagesLst=fopen(strcat('Lista.txt'));
for j=1:numberOfLines-1
imgName = numeImagine(fid_imagesLst);
% citesc imaginea, o transformam din color in gray
[imagine] = imread(strcat(dirImagini{i},imgName),'png');
imagine = im2double(imagine);
imagine=rgb2gray(imagine);
% aplicarea metodelor selectate asupra imaginilor din clasele selectate
vect_caract=extractie_vect_trasaturi(met1,met2,met3,met4,imagine);
clear imagine;
% salvam rezultatul in fisier
lungime=size(vect_caract,2);
for k=1:lungime
fprintf(fis,'%.3f,', vect_caract(k));
end;
fprintf(fis,'%d%c\n',clasa(i),',');
end;
progressbar(i/numar_clase(2));
end;
% timpul de extragere a caracteristicilor
timp=toc;
timestr = sec2timestr(timp);
% afisare timp
set(handles.edit9,'String',timestr);
enableButtons2(handles);
set(handles.radiobutton12,'Enable','on');
set(handles.radiobutton13,'Enable','on');
57
set(handles.pushbutton2,'Enable','on');
handles.output=hObject;
guidata(hObject, handles);
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function disableButtons(handles)
%change the mouse cursor to an hourglass
set(handles.figure1,'Pointer','watch');
%disable all the buttons so they cannot be pressed
set(handles.edit1,'Enable','off');
set(handles.edit4,'Enable','off');
set(handles.pushbutton1,'Enable','off');
set(handles.pushbutton2,'Enable','off');
set(handles.pushbutton3,'Enable','off');
set(handles.radiobutton3,'Enable','off');
set(handles.radiobutton4,'Enable','off');
set(handles.radiobutton5,'Enable','off');
set(handles.radiobutton6,'Enable','off');
set(handles.radiobutton8,'Enable','off');
set(handles.radiobutton9,'Enable','off');
set(handles.radiobutton10,'Enable','off');
set(handles.radiobutton11,'Enable','off');
function enableButtons1(handles)
58
59
disp(error);
selection=questdlg('Nu a fost selectata nici o imagine.Stop proces?',...
'Stop process',...
'Yes','No','Yes');
switch selection,
case 'Yes'
[imagine_init,map]=imread('no_image.jpg');
imshow(imagine_init,map,'parent',handles.axes1);
set(handles.pushbutton5,'Enable','off');
return
case 'No'
pushbutton4_Callback(hObject, eventdata, handles);
return
end;
set(handles.pushbutton5,'Enable','on');
end;
set(handles.pushbutton5,'Enable','on');
handles.output=hObject;
guidata(hObject, handles);
60
DS.input=x';
DS.output=y';
TS.input=double(vect_caracteristici)';
knnrParam.k=1;
[computedOutput] =knnr(DS, TS, knnrParam);
% timp clasificare
timp2=toc;
% afisarea rezultatelor obtinute - clasa, timp extractie trasaturi,
% timp clasificare
set(handles.text42,'String',strcat(num2str(timp2),' s'));
if (computedOutput==1)
clasa='Masini';
elseif (computedOutput==2)
clasa='Pietoni';
elseif (computedOutput==3)
clasa='Animale';
elseif (computedOutput==4)
clasa='Garbage';
end;
set(handles.text43,'String',clasa);
%
elseif (stare13)
tic
% extragerea trasaturilor noii imagini prin metodele selectate pentru
% formarea fisierului online
metoda=handles.metoda;
vect_caracteristici=extractie_vect_trasaturi(metoda(1),metoda(2),...
metoda(3),metoda(4),S);
% timp extractie trasaturi
timp1=toc;
set(handles.text41,'String',strcat(num2str(timp1),' s'));
% preia datele din fisierul obtinut online pentru clasificare
[x y]=preiaDatelePtPrel(strcat(pwd,'\fisier_caracteristici_random.txt'));
tic
% computedOutput=knnclassify(double(vect_caracteristici),xapp,yapp,1);
dim1=size(x);
x=x(:,1:dim1(2)-1);
% clasificare KNNR
DS.input=x';
DS.output=y';
TS.input=double(vect_caracteristici)';
knnrParam.k=1;
[computedOutput] =knnr(DS, TS, knnrParam);
% timp clasificare KNNR
timp2=toc;
% afisare timp clasificare in EDITBOX-ul aferent
set(handles.text42,'String',strcat(num2str(timp2),' s'));
% stabilirea clasei din care face parte imaginea de test
if (computedOutput==1)
clasa='Masini';
elseif (computedOutput==2)
clasa='Pietoni';
61
elseif (computedOutput==3)
clasa='Animale';
elseif (computedOutput==4)
clasa='Garbage';
end;
set(handles.text43,'String',clasa);
end;
guidata(hObject, handles);
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
62
63
function [vect_caracteristici4]=metoda4(imagine)
% metoda IV
% % aplicare Zernike polinomials asupra imaginii originale
zvalues = ZernikePolynomials(imagine)*1000;
vect_caracteristici4=zvalues;
clear zvalues;
Codul Matlab pentru extracia trsturilor din fiecare imagine n funcie de metodele alese n
aplicaia GUI
function [vect_caract]=...
extractie_vect_trasaturi(met1,met2,met3,met4,imagine)
% met1 - 0 1 daca metoda I este folosita pentru formarea vectorului de
% trasaturi
% met2 - 0 1 daca metoda II este folosita pentru formarea vectorului de
% trasaturi
% met3 - 0 1 daca metoda III este folosita pentru formarea vectorului de
% trasaturi
% met4 - 0 1 daca metoda IV este folosita pentru formarea vectorului de
% trasaturi
% vect_caract- vectorul de caracteristici obtinut in urma plicarii
% metodelor de extractie asupra imainii
if ((met1)&&(~(met2))&&(~(met3))&&(~(met4)))
vect_caract=metoda1(imagine);
elseif ((met2)&&(~(met1))&&(~(met3))&&(~(met4)))
vect_caract=metoda2(imagine);
elseif ((met3)&&(~(met1))&&(~(met2))&&(~(met4)))
vect_caract=metoda3(imagine);
elseif ((met4)&&(~(met1))&&(~(met2))&&(~(met3)))
vect_caract=metoda4(imagine);
elseif ((met1)&&(met2)&&(~(met3))&&(~(met4)))
vect_caract=[metoda1(imagine),metoda2(imagine)];
elseif ((met1)&&(met3)&&(~(met2))&&(~(met4)))
vect_caract=[metoda1(imagine),metoda2(imagine)];
elseif ((met1)&&(met4)&&(~(met2))&&(~(met3)))
vect_caract=[metoda1(imagine),metoda4(imagine)];
elseif ((met2)&&(met3)&&(~(met1))&&(~(met4)))
vect_caract=[metoda2(imagine),metoda3(imagine)];
elseif ((met2)&&(met4)&&(~(met1))&&(~(met3)))
vect_caract=[metoda2(imagine),metoda4(imagine)];
elseif ((met3)&&(met4)&&(~(met1))&&(~(met2)))
64
vect_caract=[metoda3(imagine),metoda4(imagine)];
elseif ((met1)&&(met2)&&(met3))
vect_caract=[metoda1(imagine),metoda2(imagine),...
metoda3(imagine)];
elseif ((met1)&&(met2)&&(met4)&&(~(met3)))
vect_caract=[metoda1(imagine),metoda2(imagine),...
metoda4(imagine)];
elseif ((met1)&&(met3)&&(met4)&&(~(met2)))
vect_caract=[metoda1(imagine),metoda3(imagine),...
metoda4(imagine)];
elseif ((met2)&&(met3)&&(met4)&&(~(met1)))
vect_caract=[metoda2(imagine),metoda3(imagine),...
metoda4(imagine)];
elseif ((met1)&&(met2)&&(met3)&&(met4))
vect_caract=[metoda1(imagine),metoda2(imagine),...
metoda3(imagine),metoda4(imagine)];
end;
65