SPECIALIZAREA: SPECIALIZAREA: Informatică
Lucrare de licenţă
Sistem de identificare a plantelor din imagini bidimensionale
Coordonator ştiinţific:
Absolvent:
Asistent dr. Szidónia Lefkovits
Ţifrea Anca-Gabriela Anca-Gabriela
24 iunie 2014
UNIVERSITATEA UNIVERSIT ATEA “PETRU MAIOR” TG.MUREŞ
LUCRARE DE LICENŢĂ
FACULTATEA DE ŞTIINŢE ŞI LITERE
Candidat ul (a): Ţifrea Anca-Gabriela
Programul de studiu: Informatică Conducătorul ştiinţific ştiinţif ic :
Anul absolvirii : 2014 Viza facultăţii
Asistent dr. Szidónia Lefkovits a)
Tema lucrării de licenţă : Sistem de recunoaştere a frunzelor
b) Problemele principale tratate :
- procesarea imaginilor; imaginilor; - extragerea proprietăţilor proprietăţ ilor caracteristice frunzelor(momentele frunzelor(momentele Hu); - clasificarea şi recunoaşterea imaginilor cu ajutorul algoritmului K-NN. c)
Bibliografia recomandată : 1. Csurka G., Dance C.R., Fan L., Willamowski J., Bray C.. Visual categorization with bags of keypoints. In Workshop on Statistical Learning in Computer Vision , ECCV, 1 –
22, 2004. Theory, 2. M. K. Hu, Visual Pattern Recognition by Moment Invariants , IRE Trans. Info. Theory, vol. IT-8, 1962. 3. M. Fowler, Patterns of Enterprise Application Architecture, Addison Wesley, 2002. Processing and Computer Vision, 2011. 4. J. R. Parker, Algorithms for Image Processing 5. Azriel Rosenfeld, Avinash Kak, Digital Picture Processing , 1982. d) Termene obligatorii de consultaţii : de două ori pe lună e) Locul şi durata practicii : Laboratorul de informatică, patru informatică, patru ore pe săptămână săptămână Primit tema la data de :
3 mai 2013 Termen de predare :
13 iunie 2014 Semnătura şefului de catedră
Semnătura candidatului
Semnătura conducătorului conducător ului
CUPRINS
1. INTRODUC INTRODUCERE ERE .................................. .................................................. ................................. ................................. ................................. ........................6 .......6 1.1 Motivaţie ............................... ................................................ .................................. .................................. .................................. ................................8 ...............8 1.2 Obiectiv Obiectivee ............................... ................................................ .................................. .................................. .................................. ................................9 ...............9 1.3. Domenii de cercetare ...............................................................................................9 2. PROBLEMATICA DETECTĂRII DE PLANTE DIN IMAGINI .............................. ................................. ...10 2.1. Procesarea imaginilor ............................................................................................ 10 2.2. 2.2. Extragerea proprietăţilor Hu ................................. ................................................. ................................. ................................. ................15 2. Momentele centrale - momente momente în jurul valorii medii sunt definite definite astfel: ast fel: ................... ......... .............. 16 2.3. Algoritmul de învăţare şi detecţie.............. detecţie ............................... ................................. .................................. ............................ ..........18 2.3.1. Distanţa euclidiană ................................. ................................................. ................................. ................................. ........................ ........18 2.3.2. Algoritmul K-NN ............................................................................................ 19 2.4. Descrierea bazei de date necesara aplicaţiei ............................... ................................................ ............................ ...........20 3. PROIECTAREA APLICAŢIEI ............................... ................................................ ................................... .................................. ....................23 3.1. Arhitectura aplicaţiei ................................ ................................................. .................................. ................................. ........................... ...........23 3.1.1. Proiectarea Nivelului Nivelului Prezentare ................... .......... ................... .................. .................. ................... ................... .............. .... 24 3.1.2. Proiectarea Nivelului Logică de Gestiune ............................... ................................................ ......................... ........27 3.1.3. Nivelul Acces la Date ...................................................................................... 27 3.1.4. Nivelul Baza de Date ....................................................................................... 27 3.2. Configurarea aplicaţiei .................................. .................................................. ................................. ................................. ........................ ........28 4. IMPLEMENTAREA IMPLEMENTAREA APLICAŢIEI ................................. ................................................. .................................. ............................ ..........30 4.1. Limbajul C# şi Platforma .NET ................................. ................................................. .................................. ............................ ..........30 4.2. Implementarea nivelelor ........................................................................................ 32 4.2.1. Implementarea Implementarea Nivelului Prezentare ................... .......... ................... ................... .................. ................... ................. ....... 32 4.2.2. Implementarea Nivelului Logică de gestiune ................................. ................................................. ....................32 4.2.3. Implementarea Nivelului Nivelului Acces la Date ................... ......... ................... ................... ................... ................... .............. 37 5. TESTAREA PERFORMANŢELOR ............... PERFORMANŢELOR ................................ ................................. .................................. ............................ ..........39 5.1. Rezultate ale calculării distanţelor d istanţelor euclidiene ................................. ................................................. ........................ ........39 5.1.1. Aplicarea calculului distanţei euclidiene în interiorul unei categorii ................. .......... ....... 39 5.1.2. Aplicarea calculului distanţei euclidiene între categorii ................................. .....................................40 5.2. Rata de recunoaştere ................................. .................................................. .................................. ................................. ........................... ...........41 6. CONCLUZ CONCLUZII II ............................... ................................................ .................................. .................................. .................................. .............................. .............42 BIBLIOGRAF BIBLIOGRAFIE IE................................. ................................................. ................................. ................................. .................................. ............................ ..........44
1. INTRODUCERE
Plantele reprezintă una dintre cele mai importante forme for me de viaţa de pe pământ. pământ. Pot fi clasificate în funcţie de formă, culoare, textură şi structura frunzelor, scoarţa de copac , flori, etc. Cercetări cu privire la clasificarea plantelor am mai fost realizate, o atenţie mai mare dându-se dându-se utilizării momentelor invariante pentru caracterizarea obiectului. obiectului. Wu şi colaboratorii [24] [24] au extras 12 caracteristici morfologice digitale utilizate în mod obişnuit care au care au fost ortogonalizate în 5 variabile principale folosind PCA [17]. Ei au folosit 1800 de frunze pentru a clasifica 32 de tipuri de plante , folosind reţ ele neuronale probabilistice. probabilistice. [3]. Wang şi colaboratorii[33] colaboratorii[33] s-au s-au ocupat de curba distanţei dintre contur şi centrul de greutate(CCD), excentricitate şi cod unghi histogramă (ACH). Fu şi colaboratorii [4 [4] au utilizat, de asemenea, curba distanţei dintre contur şi centrul de greutate pentru a reprezenta formele frunzei unde este propusă o abordare integr ată ată pentru pent ru o ontologie - bazată pe un sistem de clasificare a frunzelor. frunzelor. Pentru clasificarea contururilor frunzelor, o recunoaştere a plantelor scalate de imaginea frunzei care foloseşte momentul invariant şi un sistem de analiza a texturii este propus să clasifice forma de bază şi tipul de margine a frunzei folosind principiul taxonomie similare adoptată de către botanişti. Apoi o reţea neuronală învăţată este delegată să recunoască tiparele detaliate. Du şi colaboratorii [15 [ 15]] propun o abordare eficientă de d e identificare a speciilor asistată de calculator(CAPSI), bazată pe imaginile frunzelor utilizând tehnica potrivirii formelor. Mai întâi este adaptat un algoritm de aproximare Douglas-Peucker la formele originale a frunzelor şi o nouă formă de reprezentare este utilizată pentru a forma secvenţa de atribute invariante. Apoi un algoritm de programare modificat pentru potrivirea formelor este propus pentru recunoaşterea frunzelor. frunzelor. Gu şi colaboratorii [31] au utilizat rezultatul segmentării scheletului frunzei bazat pe o combinaţie combinaţie de transformarea wavelet (WT ) şi interpolarea Gaussiană. Este o nouă abordare pentru recunoaşterea frunzelor, utilizându-se utilizându -se clasificarea, clasificarea prin detectarea celui mai apropiat vecin (1-nn), clasificarea prin identificarea celui de-al k-lea vecin (k-NN) (k-NN) şi o reţea neuronală probabilistică în mod radial (RBPNN) în funcţie de lungimea de rulare caracteristică (RLF) extrasă din schelet pentru a recunoaşte frunzele. frunzele.
Wang şi colaboratorii [32] [ 32] extrag mai multe caracteristici geometrice, cum ar fi rectangularitatea, circularitatea, excentricitatea şi şapte momente invariante pentru clasificare. El prezintă o metodă de recunoaştere a imaginilor frunzelor bazată pe funcţii ale formei, folosind un clasificator de tip hipersferă. Du şi colaboratorii şi colaboratorii [16] [16] au introdus recunoaşterea formei bazate pe reţea neuronală probabilistică probabilistică în mod radial, care este antrenată de algoritmul celor mai mici pătrate ortogonale (OLSA) şi optimizat prin recursivitatea OLSA . Hu [20] a publicat prima lucrar e importantă cu privire la utilizarea momentelor invariante pentru analiza de imagine şi reprezentarea obiectului în 1961. Abordarea Hu a fost bazată pe munca matematicienilor secolului XIX Boole, Cayley şi Sylvester cu privire la teoria formelor algebrice. algebrice . Teorema de unicitate Hu afirmă că, dacă f ( x , y ) este continuă pe porţiuni şi are valori diferite de zero numai în partea finită a planului f ( x , y ), atunci există momente geometrice de toate ordinele. T.H. Resis [29] [29] a declarat că momentul invariant pentru recunoaşterea formelor prezentat de Hu este incorect. Al patrulea moment moment absolut absolut invariant invariant în transformarea liniară generală este eronat. Aşa că a prezentat teorema fundamentală revizuită şi a dat momentul absolut invariant corespunzător în transformarea t ransformarea liniară generală. Sidhartha Maître [26] ia în considerare schimbarea efectului de contrast într-o imagine şi modificata cele şapte momente invariante date de Hu care sunt independente de schimbare schimbare de translaţie, t ranslaţie, mărime, mărime, rotaţie şi de contrast, de asemenea. de asemenea. Dr. Dinesh P Mital [2] [2] a propus o tehnică de segmentare a texturii t exturii nesupravegheată nesupravegheată folosind filtrarea cu canale multiple. Aceasta simplitate se datorează rezultatului direct de descompunere a imaginii originale în mai multe imagini filtrate cu i nformaţii spectrale limitate. Somkait Udomhunsakul şi Pichet Wongsita [ 27] 27] a propus o abordare de extracţie a caracteristicilor caracteristicilor din imaginile medicale medicale prin rezonanţa magnetică(IRM). magnetică(IRM). Jan Fusser [19] a propus un nou set de momente invariante raportate la rotaţie, translaţie, translaţie, şi mărime adecvat pentru recunoaşterea obiectelor obiectelor care au simetrie de rotaţie. Du şi Zhang [18 [18]] propun o nouă abordare pentru o nouă metodă de clasificare, numită ca şi centrii de miscare medie(MMC), clasificator hipersferă, pentru baz a de date a frunzelor bazat pe caracteristica morfologică digitală. Clasificatorul MMC poate salva nu numai spaţiul de stocare, dar, de asemenea, reduce timpul de clasificare. Abdul Kadir [1] [1] a construi construi un sistem sistem de identificare identificare a frunzişului frunzişului plantelor pentru p entru 60 de tipuri de frunze. Acesta s-a s- a axat pe studierea a două sau mai multe plante care au
aceeaşi formă/formă similară dar culorile de pe frunze au fost diferite. În acest caz , momentele Zernike au fost combinate cu alte caracteristici: caracteristici geometrice, momente de culoare şi matricea de co -apariţie a nivelelor de gri ( GLCM ). Aplicaţia Liefsnap revoluţionează domeniul recunoaşterii frunzelor. Liefsnap este un sistem de recunoaştere vizuală utilizat pentru identificarea automată a speciilor de plante. Aplicaţie disponibilă gratuit pentru dispozitivele dispozitivele mobile, acoperă toate cele 184 specii de copaci din partea nord-vestică nord- vestică a Statelor Unite. Procesul de recunoaştere utilizat parcurge patru etape în realizarea acesteia: clasificarea, segmentarea, segmentare a, extragerea caracteristicilor curburilor şi compararea cu imaginile din baza de date. Clasificarea se referă la validarea imaginii şi decizia de a merge sau nu mai departe cu procesarea, utilizând o clasificare binară aplicată pe caracteristicile esenţiale. Segmentarea presupune separarea frunzei de fundal obţinându -se o imagine binară, utilizând aproximarea distribuţiei culorii primului plan şi fundalului în spaţiul saturaţie saturaţie--valoare al spaţiului de culoare HSV. Extragerea caracteristicilor curburilor di n imaginea binarizată ss-a realizat pentru a obţine forma compactă şi caracteristică a frunzei. Pentru compararea şi returnarea rezultatului a fost utilizat aproximarea celui mai apropiat vecin prin calcularea distanţei metrică dintre histograme. Întregul proces se realizează în aproximativ 5 secunde.[11]
1.1 Motivaţie Ceea ce m-a m-a determinat să aleg aceasta temă sunt eu însumi, nu eu ca şi programator, ci eu ca şi om care face parte din generaţia tânără şi care, deşi familiarizată destul de bine cu plantele şi natura, merg pe strada şi nu recunosc sau nu îmi amintesc numele copacului de pe marginea străzii. Şi am convingerea că nu sunt singura în aceasta situaţie, ci, la fel ca şi mine, tu, programator, profesor, turist, vrei să ştii ceea ce te înconjoară. De aceea, voi realiza un sistem de recunoaştere a frunzelor care să îmi rezolve ”problemele”. O altă cauză a deciziei mele de a realiza acest sistem este utilitatea lui în cadrul medical. Este binecunoscut faptul că la baza medicamentelor stau plantele cu proprietăţile lor tămăduitoare. Dar ce folos au plantele dacă persoana care are nevoie de ele nu le cunoaşte? Nu vreau să încurajez îndepărtarea de medic sau tratarea bolilor după capul
fiecăruia, ci utilizarea plantelor cu aceleaşi proprietăţi ca ş i medicamentele recomandate. Iar sistemul de recunoaştere a frunzelor poate fi adaptat şi pentru acest lucru.
1.2 Obiective
Urmăresc să realizez un sistem de recunoaştere a frunzelor, varianta desktop, care să funcţioneze în timp real sau în timp foarte scurt de la iniţierea cererii. Ca şi funcţionalitate, aşteptările pe care le am de la această aplicaţie sunt: utilizatorul introduce o poză în aplicaţie, iar aceasta este supusă procesării. procesării. La încheierea procesării, aplicaţia va fi capabilă, cu o probabilitate foarte mare, să returneze utilizatorului un răspuns, specia din care face parte frunza. Deşi existente deja, acest tip de aplicaţii sunt într într -o continuă dezvoltare şi îmbunătăţire a performanţelor. De aceea, realizarea acestei aplicaţii este o provoca re, obiectivul fiind obţinerea unor rezultate cel puţin asemeni celor obţinute o bţinute deja.
1.3. Domenii de cercetare
• Detecţia de trăsături tr ăsături (Feature Detection) Detection) • Reprezentarea contururilor (Contour Representation) • Analiza profunzimii imaginilor (Range image ima ge analysis) • Modelarea şi reprezentarea formelor (Shape modeling and representation) • Viziunea stereo (Stereo vision) • Viziunea color (Color vision) vision) • Vizi Viziunea activă (Active/Purposi ( Active/Purposive ve vision) • Invarianţi (Invariants) • Detecţia obiectelor (Object (Object detection) • Analiza mişcării (Motion analysis) • Urmărirea mişcării obiectelor (Trackin (Tr acking) g) • Recunoaşterea obiectelor 3D (3D object recognition) • Adnotarea semantică a imaginilor/video (Image annotation) • Arhitectura sistemelor de viziune (Vision architectures) (Vision architectures) [ 17]
2. PROBLEMATICA DETECTĂRII DE PLANTE DIN IMAGINI 2.1. Procesarea imaginilor
Imaginea digitală este o reprezentare numerică a unei imagini bidimensionale. Imaginile pot fi împărţite în două două categorii: raster - imagini alcătuite din din pixeli, cunoscute şi sub numele de bitmap - hărţi de biţi biţ i sau imagini matriceale, sau vector imagini construite în funcţ ie de formulele matematice folosite pentru a stoca liniile, culorile şi formele imaginii; fişiere fiş iere de coordonate. Imaginea digitală se referă în în general la imaginea raster.
ț
ț
Pentru a fi cât mai clare, imaginile raster trebuie să con ină ină cât mai mul i pixeli,
ț
claritatea lor crescând direct propor ional ional cu numărul acestora. Monitoarele actuale folosesc 72 pixeli/inch, iar imaginile pot fi alb-negru sau color.
ț
Procesarea imaginilor se ocupă cu studiul proprietă ile ile imaginilor transformarea acestora (a imaginilor).
ț ş ț
ş
i cu
Imaginea color con ine ine trei valori pentru fiecare pixel din imagine, reprezentând
ş
valorile culorilor din tripletul ro u-verde-albastru u-verde-albastru (RGB) i măsoară intensitatea
țț
ş
i
crominan a de lumină. Informa ia ia de luminozitate din fiecare bandă spectrală reprezintă reprezintă de
ş ş ț ş ț
fapt informa ia ia reală stocată în imaginea digitală. Este stocată în memorie ca i un tablou bidimensional bidimensional din triplete de valori întregi mici (o hartă raster) sau că i trei hăr i raster separate,
câte
una
pentru
fiecare
canal.
Imaginea în tonuri de gri este, de fapt o imagine în care cele trei culori, ro u-verdeu-verde-
ț
albastru, au o intensitate egală în spa iul iul RGB. Este necesară ob inerea inerea acestei imagini deoarece imaginea color este mult mai greu de procesat, fiecare pixel având mai multe
ț
ț
informa iiii de transmis - trei valori ale intensită int ensită ii, ii, pe când imaginea în tonuri de gri are o singură intensitate/pixel. intensitate/pixel. Intensitatea tonuri de gri este stocată ca un număr număr întreg pe 8 biţ i dând dând 256 nuanţe diferite de gri posibile, de la negru la alb. Cele 256 nivele nive le de gri reprezentate pe 24 biţi/pixel biţi /pixel sunt reprezentate în Figura 1: Alb 255,255,255
Negru ...
1,1,1
Figura 1. Nivelele de gri
0,0,0
ț
A converti o imagine color într-una în nuan e de gri înseamnă a emite o singură valoare care reflectă strălucirea fiecărui pixel. Cea mai la îndemână metodă este de a calcula o medie medie aritmetică a celor trei canale, rezultând astfel o singură valoare a
ț
intensită ii: ii: (R+G+B)/3, însă, în majoritatea cazurilor luminozitatea percepută este dominată de canalul verde, o metodă mai potrivită ar fi calcularea unei medii aritmetice ponderate:
[13]
Algoritm: Pentru fiecare pixel din imaginea sursă: 1. Extragem componentele r, g, b ale pixelului. 2. Calculăm nivelul de gri n = media aritmetică a componentelor r, g, b. 3 .Înlocuim n ca valoare a celor trei componente r, g, b ale pixelului destinaţie.[5] destinaţie.[5] Histograma unei imagini reprezintă numărul de pixeli (frecvenţa) pentru fiecare intensitate din imaginea respectivă. Din punct de vedere statistic histograma este funcţia de densitate de probabilitate a unei variabile aleatoare asociat ă nivelelor de gri. Din punct de vedere practic histograma conţine numărul diferitelor nivele de gri întâlnite în imagine. [9]
Figura 2. Histograma imaginii în nivele de gri
O imagine având histograma distribuită neuniform, neuniform , de obicei, prezintă obicei, prezintă contrast slab pe anumite anumite porţiuni. Scopul egalizării de histogramă este de a obţine o imagine având
histograma uniformă pe toată gama nivelelor de gri pornind de la ideea că o astfel de imagine ar arăta bine. bine. Egalizarea histogramei este o metodă de modificare neadaptivă a histogramei imaginilor şi are rolul de a scoate în evidenţă informaţii care pot fi greu identificate î n imaginea originală. Reprezintă, Reprezintă , de fapt, procesul de normalizare a imaginii. Etapele algoritmului de rescala r escalare re sunt următoarele: 1. Se determină histograma imaginii; 2. Se construieşte histograma cumulativă; 3. Se determină vectorul de transformare a histogramei; 4. Se modifică imaginea conform vectorului de transf t ransformare. ormare. Dacă Da că numărul de niveluri de rescalare a imaginii originale e mare, e posibilă modificarea nivelelor de gri în aşa fel încât histograma imaginii îmbunătăţite să fie aproape constantă.[13] constantă.[13] Deşi operatorul de egalizare de histogramă seamănă cu un operator punctual, punctual, operaţia de egalizare de histogramă poate fi considerată o operaţie integrală pentru că foloseşte toată imaginea pentru calculul operatorului. Histograma rezultată va fi numai aproximativ uniformă din cauza naturii discrete a valorilor pixelilor. Practic operatorul de egalizare de histogramă nu poate mări numărul de nivele de gri distincte din imagine. [9]
Figura 3. Histograma egalizată egalizat ă a imaginii Normalizarea imaginilor are ca şi efect o invarianţă invarianţă sporită la schimbarea luminii sau la umbre.
ş
Imaginea binară, cunoscută i sub numele de imagine alb-negru, este o imagine
ț
ş
digitală a cărei pixeli pot avea doar două valori ale intensită ii, ii, de obicei 0 pentru negru i
ț
1 sau 255 pentru alb. Scopul ob inerii inerii acestei imagini este de a separă un obiect de fundal.
ş
Mai este cunoscută i sub numele de imagine pe două nivele, cea ce înseamnă că fiecare pixel este stocat stocat pe un singur singur bit: 0 sau 1.
ț
ț ț
De obicei, imaginile binare se ob in in pornind de la un prag al imaginii în nuan e de gri: pixelii care au o nuntă de gri peste valoarea pragului vor fi transforma i în 1, iar cei cu
ț ț ț
valoarea sub prag vor fi transforma i în 0, ob inându-se inându-se astfel, de obicei, un obiect negru
țş
pe un fundal alb. În func ie ie de intensitatea pixelilor se poate ob ine ine i un obiect alb pe un fundal negru. Algoritm: 1. Se determină un nivel de prag n. 2. Pentru fiecare pixel din imaginea sursă: 2.1. Extragem valoare nivelului de gri. 2.2. Dacă valoarea de gri depăşeşte nivelul de prag, noul nivel este 255. 2.3. Dacă valoarea de gri se află sub nivelul ales, noul nivel este 0. 2.4. Se înlocuieşte înlocuieşte noul nivel în pixelul destinaţie.[5] destinaţie. [5]
Figura 4. Imagine binar ă Una dintre etapele importante în procesarea imaginilor este eliminarea zgomotului.
ț
ț
Zgomotul, aleator, datorat varia iei iei de luminozitate sau a informa iei iei culorii din imagine, de obicei un aspect de zgomot electronic, produce alterarea rezultatului în urma prelucrării
ş
imaginii. Deoarece nu se dore te te acest lucru, acesta trebuie eliminat.
Filtrul gaussian este un filtru de tip “trece“trece- jos”/”l jos”/”low ow-- pass”, pass”, utilizat ut ilizat pentru netezirea nete zirea şi/sau filtrarea zgomotului. Mai exact, aceste ac este filtre permit trecerea frecvenţelor frecvenţelor joase. Rezultatul acestui filtru este o imagine netezită, obţinută prin medierea pixelului curent cu valorile vecinilor săi, numărul acestora depinzând de mărimea mă rimea filtrului. Deoarece nucleele au doar elemente pozitive, pentru pent ru ca rezultatul să fie scalat în în intervalul valorilor intensităţilor intensităţilor pixelilor imaginii de ieşire, se practică împărţirea rezultatului rezultatului funcţiei la suma elementelor elementelor nucleului funcţiei. Filtrul gaussian are proprietatea de a nu avea depăşiri la intrarea unei funcţii pas atâta timp cât minimizează timpul de creştere şi de cădere. Pentru două dimensiuni, filtrul gaussian de defineşte astfel:
unde x reprezintă distanţa de la origine la axa orizontală, y - distanţa de la origine la axa verticală şi σ - deviaţia standard. O altă metodă de eliminare a zgomotului este şi aplicarea filtrului de netezire
ț
(Smooth). Acesta presupune crearea unei func iiii de aproximare care încearcă să capteze modelele importante din date, în timp ce ignoră zgomotele sau alte structuri la scară fină. La netezire , punctele de date ale unui semnal sunt modificate astfel încât punctele individuale ( reprezentând cel mai probabil zgomotul ) sunt reduse , iar punctele care sunt mai mici decât punctele adiacente sunt crescute ducând la un semnal mai lin. Netezirea Netezirea poate fi utilizată în două moduri importante care pot ajuta la analiza datelor: prin posibilitatea posibilitatea de a extrage informaţii din date atâta timp cât ipoteza de netezire este rezonabilă şi prin posibilitatea de a oferi analize care sunt atât flexibile, cât şi robuste.[8] Imaginea este caracterizată de marginile care pot fi identificate în cadrul aceste ia.
ț
ț
Ele sunt caracterizate de varia ia ia foarte mare a intensită ii ii pixelilor, realizându-se un
ş
contrast puternic de la un pixel la altul. Datorită acestui lucru se reduce cantitatea de date i
ț ş ț
filtrează informa ia ia utilă, păstrând în acelaşi timp t imp importante proprietăţile structurale dintr o imagine.
Dezvoltat de John F. Canny în 1986, algoritmul de detectare a marginilor Canny
ț
este cunoscut ca i algoritmul optim de detectare a marginilor, de la început inten ionând ionând să îmbunătă ească ească detectoarele de margini d eja existente. Are ca şi şi obiective atingerea a trei tr ei criterii:
1. Rata Rata de eroare scăzută - ceea ce înseamnă o bună bună detectare doar a marginilor marginilor existente; 2. Localizarea bună - distanţa dintre pixeli de margine detectaţi şi pixelii pixeli i de margine reali trebuie să fie redusă la minimum; 3. Răspunsul minimal - a avea un singur răspuns la o singură muchie. Pentru a satisface aceste cerinţe Canny folosit calculul variaţiilor - o tehnică tehnică care are ca şi utilitate optimizarea utilitate optimizarea unui funcţ funcţional dat. dat . Funcţia optimă pentru detectorul Canny este descrisă de suma a patru termeni exponenţiali, exponenţiali, dar poate fi aproximată prin prima derivată a unui Gaussian. Algoritmul Canny este adaptabil la diferite medii. medii. Parametrii săi îi permit să fie adaptat la recunoaşterea de marginile caracterizate diferit, în funcţie de cerinţele specifice ale unei anumite implementări.
2.2. Extragerea propriet ăţilor Hu
Momentul unei imagini este o medie ponderată a intensităţii pixelilor din imagine sau o funcţie de astfel de medii ponderate. Momentele unei imagini sunt utile pentru a descrie obiectele după segmentare. Momentele pot oferi caracteristici ale unui obiect care reprezintă în mod unic forma. Recunoaşterea Recunoaşterea formei invariante este realizată de clasificarea în spaţiul caracteristic caracteristic multidimensional al momentului invariant. Ideea principală în generarea formei invariante a unei imagini este obţ inerea unui set compact de descriptori suficienţi cat să poată descrie toate eleme ntele relevante din imaginea respectivă. Proprie respectivă. Proprietăţile tăţile invariante importante sunt translaţia, rotaţia şi mărimea. Au fost dezvoltate mai multe tehnici care derivă caracteristicile invariante din momente pentru recunoaşterea şi reprezentarea obiectului. Aceste tehnici sunt deosebite prin definiţia definiţia momentelor momentelor lor, cum ar fi tipul de dată exploatat şi metoda de obţinere obţ inere a valorilor invariante din momentele imaginii. Putem diferenţia mai multe tipuri de momente: 1. Momentele prime - definite astfel:
∫ ∫
O teoremă unică afirmă că dacă f (x, y) este continuă pe porţiuni şi are valori diferite de zero numai într-o într- o parte finită din planul XY, există momente de toate ordinele, şi secvenţa momentului (M pq) este unic determinată prin f (x, ( x, y). Invers, (M pq) determină în mod unic f (x, y)(Hu [1962]).[7] Pentru funcţii discrete (imagini) discrete (imagini) momentele se definesc astfel:
Primul moment, M00, reprezintă aria imaginii binare sau suma nivelelor niv elelor de gri pentru imaginile în gri, iar centrul de greutate al imaginii este reprezentat de perechea: perechea: (M10/M00,M01/M00) 2. Momentele centrale - momente în jurul valorii medii sunt definite astfel:
unde
̅ ∫ ∫ ̅ şi
sunt componentele centrului geometric geometr ic al regiunii
bidimensionale. bidimensionale.
Pentru funcţii discrete(imagini) momentele centrate se definesc astfel:
∑ ∑ ̅ Momentele centrate până la până la ordinul trei sunt:
̅ ̅ ̅ ̅ ̅
[22]
̅ ̅
unde:
este numit dispersie(variaţie) dispersie(variaţie) reprezintă coeficientul de asimetrie
este indicele de aplatizare
Momentele centrate cent rate sunt invariante la translaţ ie. 3. Momentele invariante la mărime -i+j
≥
2 pot fi construite astfel încât să fie
invariante şi la translaţie şi la mărime, împărţ ind momentul central corespunză corespunz ător la scala corespunză corespunz ătoare celui de-al (00) moment, definit prin urmă urm ătoarea formulă formulă:
Bazându-se pe momentele centrate normalizate, Hu define şte 7 momente invariante la translaţie, schimbarea mărimii şi rotaţ rot aţie, ie, fiind derivate din momentele geometrice. Independenţa momentelor faţă de translaţie este realizată prin calculul momentelor care sunt normalizate faţă de centrul de greutate, astfel încât centrul de masă al distribuţiei este la origine (momentele centrale). Independenţa momentelor momentelor la schimbarea mărimii este derivată din invarianţii algebrici, dar aceştia se pot manifesta manifesta ca fiind rezultatul unei simplă normaliză normaliz ări. De la al doilea şi al treilea ordin al momentelor centrale normalizate poate fi calculat un set de şapte momente invariante care sunt independente de rotaţie. Aceste momente momente sunt definite definite astfel:
Primul moment, I1 este analog cu momentul de inerţ ie din jurul centrului de greutate al imaginii, în cazul în care intensitatea inte nsitatea pixelilor este similară cu densitatea fizică. fizică . Ultimul invariant, I7, este invariant oblic, permiţându permiţându--i să f acă acă distincţia între imaginile în în oglinda a imaginilor identice. Primele şase momente momente sunt invariante în ceea ce priveşte prive şte rotaţia şi reflecţia, pe când al şaptelea şaptelea moment îşi schimbă semnul la reflecţ ie.
ş ț
J. Flusser şi T. Suk au propus o teorie t eorie generală generală de de derivare der ivare a unor seturi complete i
ț ț
independente a invarian ei ei la rota ie ie a momentelor. Ei au arătat că setul de momente Hu nu este nici independent, nici complet. I 3 nu este foarte util deoarece depinde de ceilal i
ț
ş
invarian i,i, iar cel de-al 8-lea moment lipse te, te, acesta fiind definit definit astfel:
Dezavantajele acestor momente se referă la valorile mari ale momentelor geometrice geometrice şi cantitatea mare de informaţii informaţ ii redundante din cauză că nu că nu sunt derivate dintr-o familie de funcţii ortogonale ,ceea ortogonale ,ceea ce atrage după dup ă sine instabilitate numerică şi sensibilitate la zgomot. Tot din din cadrul acestui domeniu fac parte şi momentele Zernike şi momentele ortogonale Fourier-Mellin.
2.3. Algoritmul de învăţare şi detecţie 2.3.1. Distanţa euclidiană În matematică, distanţa euclidiană reprezintă distanţa dintre două puncte, adică lungimea segmentului care le uneşte. Această Această distanţă poate fi calculată pentru una sau mai multe dimensi uni. Într-un spaţiu n-dimensional, n-dimensional, unde p=(p 1,p2,p3,...,pn) şi q=(q1,q2,q3,...,qn), distanţa euclidiană se calculează astfel:
√
2.3.2. Algoritmul K-NN K-NN este o metodă neparametrică de clasificare şi detecţie. Aceasta presupune includerea în setul de date de antrenare care vor deveni modelelor, cât şi a clasificărilor dorite. Pasul esenţial în crearea algoritmului este reprezentat de alegerea lui k. K repr ezintă numă numărul cazurilor care vor fi analizate, pornind de la el mai apropiat caz/cel mai apropiat vecin şi influenţează puternic calitatea predicţiei. La introducerea unui element nou (model), algoritmul analizează întregul întregul set de date pe care îl deţine pentru a găsi o categorie, cea mai apropiată de modelul introdus, în care săsă-l poată încadra. Decizia de încadrare a elementului într într -o anumită categorie este luată astfel: 1. Se alege o valoare pentru k; 1. Noul element introdus se compară cu elementele d in baza de date; 2. Se creează creează un vector cu rezultatul comparaţiei în ordine crescătoare faţă de apropierea de elementul introdus; 3. Se selectează primele k apropieri din vector; 4. Se contorizează eleme elem entele în funcţie de categoria din care fac parte; 5. Noul element se încadrează încadrează în categoria din care fac parte cele mai multe elemente dintre cele k analizate. K trebuie setat la o valoare suficient de mare pentru a minimiza posibilitatea de clasificare eronată şi suficient de mică astfel încât cei k vecin i sa fie suficient de aproape de punctul de interogare. Există un algoritm de aproximare a valorii optime a lui k, cunoscut sub numele de cross-validation (Bishop, 1995). Algoritmul k-NN are la bază conceptul de distanţă, necesitând o metrică de determinar e a distanţelor. Cea mai utilizată metrică a distanţelor pentru pe ntru atributele continue este distanţa euclidiană. euclidiană. Un exemplu de clasificare cu algoritmul k-NN este reprezentat în Figura 5.
Figura 5. Clasificarea k-NN În acest exemplu, numărul de vecini analizaţi la introducerea unui element nou este 10. Deoarece dintre cele 10 cazuri analizate, 7 fac parte din clasa pătrat, iar 3 din clasa triunghi, elementul nou va fi încadrat în clasa pătrat. Printre dezavantajele algoritmului se numără inexactitatea în date şi suprapunerea unor categorii. Mai exact, algoritmul are o dificultate în a alege în î n ce categorie să includă elementele aflate la graniţa dintre cat categorii. De asemenea, noţiunea de vecini devine fără sens dacă masurile de similaritate se realizează pe date de dimensiuni foarte mari. Realizându-se recalcularea pentru fiecare caz nou introdus, algoritmul are un timp de calcul de ordinul factorialului numărului total de puncte.
2.4. Descrierea bazei de date necesara aplica ţiei
Pentru aplicaţie voi utiliza setul de date Flavia, introdus în
”
Stephen Gang Wu,
Forrest Sheng Bao, Eric You Xu, Yu-Xuan Wang, Yi-Fan Chang and Chiao-Liang Shiang, A Leaf Recognition Algorithm for Plant classification classif ication Using Probabilistic Neural Network, IEEE 7th International Symposium on Signal Processing and Information Technology, Dec. 2007, Cario, Egypt.
Acesta conţine 1907 imagini cuprinzând frunzele a 32 specii de
plante. Pentru fiecare specie setul de date cuprinde între 50 şi 77 imagini, fiecare având av ând o rezoluţie de 1600x1200 pixeli. Acest set de date este disponibil public pe adresa: http://flavia.sourceforge.net/.
În Tabelul 1 se regă reg ăsesc cele 32 specii de plante: Numele
Numele
Nr. de
Numele
Numele
Nr. de
ştiinţific
comun
imagini
ştiinţific
comun
imagini
Deodar
77
Phyllostachys edulis (Carr.) Houz.
Cedrus Bambus pufos
59
(Roxb.) G. Don
Aesculus
Castan
chinensis
chinezesc
63
Berberis anhweiensis
deodara
Ginkgo biloba
Ginkgo
L.
biloba
62
Lagerstroemia Cătină
65
Ahrendt
indica (L.)
Mirt
61
Oleandru
66
Pin
60
Pers.
Cercis
Chinese
chinensis
redbud
72
Nerium oleander L. Podocarpus
Indigofera
True
tinctoria L.
indigo
72
macrophyllus (Thunb.) Sweet Prunus
Acer Palmatum
Arţar japonez
serrulata 56
Lindl. var. lannesiana
Cireş japonez
55
auct. Phoebe nanmu (Oliv.) Gamble
Nanmu
63
Ligustrum lucidum Ait. f.
Mălin negru
55
Mahon
65
Kalopanax septemlobus (Thunb. ex A.Murr.) Koidz.
Castor aralia
52
Tonna sinensis M. Roem.
Cinnamomum japonicum Sieb. Koelreuteria paniculata Laxm.
Scorţişoar ă chinezeasc
Goldenrai n tree Big-
macrocarpa
fruited
Oliv.
Holly
Pittosporum
Japanese
tobira (Thunb.)
cheesewo
Ait. f.
od
Chimonanthus
Winterswe
praecox L.
et
camphora (L.)
Prunus persica (L.) Batsch
Piersic
54
Lotus
52
Arţar
53
ă
Ilex
Cinnamomum
55
59
Manglietia fordiana Oliv. Acer
50
buergerianum Miq. Mahonia
63
bealei
Beale’s
(Fortune)
barberry
55
Carr.
Arbore de camfor
51
Magnolia
Magnolie
grandiflora L.
australiană
Populus 64
×canadensis Moench
J. Presl
Viburnum
Japan
Liriodendron
awabuki
Arrowwoo 60
chinense
K.Koch
d
(Hemsl.) Sarg.
Osmanthus
Sweet
fragrans Lour.
osmanthus
Plop canadian
Tulipier chinezesc
57
64
53
Citrus 56
Tabelul 1 - Specii de plante
reticulata Blanco
Mandarină
56
3. PROIECTAREA APLICAŢIEI 3.1. Arhitectura aplicaţiei O metodă eficientă de structurare şi implementare a aplicaţiilor este utilizarea mai multor nivele, cum este şi arhitectura n-tire. n -tire. Acest tip de arhitectură dă dezvoltatorului posibilitatea de a crea aplicaţii flexibile cu componente componente reutilizabile. De asemenea asemenea rezolvă probleme, cum ar fi: scalabilitatea, securitatea, toleranţa toleranţa la erori, iar printre avantajele ei se numără şi posibilitatea de a actualiza actu aliza un singur nivel, f ără ără a afecta restul r estul nivelelor, nivelelor, uşurinţa şi eficienţa in dezvoltare, uşurinţa în întreţinere şi uşurinţa la adăugarea unei componente noi. Fiecare strat logic adăugat are un scop precis, cu responsabilităţi proprii şi este cunoscut cunoscut pentru acesta modul de interacţiune cu straturile adiacente. În Î n astfel de arhitecturi sunt foarte uşor de separat funcţionalităţi care nu ar trebui să depindă unele de altele. Spre exemplu, clasele ce formează interfaţa cu utilizatorul, nu trebuie să ştie cum se realizează accesul la baza de date, altfel spus, în clasele în care se afişează informaţii, nu este nevoie să avem cod care lucrează cu baza de date, realizându -se astfel o separare logică benefică pentru înţelegerea înţelegerea mai uşoară şi întreţinerea întreţinerea mai eficientă a software software-ului.[21] -ului.[21] În aplicaţia curentă, soluţia a fost structurată în patru nivele, după cum urmează: ● Nivelul Prezentare Prezentare (Presentation Layer) Layer) - Cuprinde grafica programului, programului, ceea ce este vizibila utilizatorului (numită GUI - Graphical User Interface); ● Nivelul Logică de Gestiune (Business Logic Layer) - Cuprinde Cuprinde funcţionalităţile funcţionalităţile de bază ale aplicaţiei; ● Nivelul Acces la Date (Data Access Layer) - Este nivelul la care se realizează conexiunea la baza de date; ● Nivelul Bază de Date (Database (Database Layer) - Cuprinde baza de date propriu-zisă propriu- zisă ce conţine toate datele stocate.
Figura 6. 6. Arhitectura aplicaţiei pe 4 nivele
3.1.1. Proiectarea Nivelului Prezentare Nivelul Prezentare conţine conţine aplicaţii de diferite naturi (aplicaţii desktop sau web) prin care utilizatorul comunică cu acestea direct sau indirect prin intermediul browser -ului. -ului. Comunică direct cu nivelul Logică de Gestiune şi indirect cu alte niveluri, punând rezultatele la dispoziţia nivelului client (în acest caz nivelului prezentare) sau pentru celorlalte niveluri. Practic, nivelul prezentare este un strat pe care utilizatorul îl poate accesa direct asemeni unei aplicaţii web sau interfaţa unui sistem de operare, fără a fi nevoie să ştie ce se întâmplă în spate, iar răspunsul cererilor sale este unul pe care îl poate înţelege fără nici o problemă. În aplicaţia curentă, nivelul prezentare este alcătuit din doua subproiecte, unul pentru partea de administrare administrare care nu nu prezintă interes pentru pentru utilizatorul obişnuit, obişnuit, iar cel deal doilea subproiect este este destinat utilizatorului obişnuit. Arhitectura pe două nivele, frontfront -end şi back -end este cea mai bună metodă de a elimina problemele cu prioritate pr ioritate înaltă.
Back-End Back-End este nivelul care cuprinde puterea de procesare a sistemului care execută cererile şi menţine logica de gestiune a aplicaţiei. Procesarea cererilor statice prin nivelul back-end back-end este foarte mare consumatoare de resurse şi timp, de aceea este foarte importantă funcţia de reducere a cererilor statice de către nivelul front -end. Practic, configurarea de tip front-end – back-end reduce la minimum consumul de memorie, timpul de procesare a cererilor şi permite bazei de date să primească mai multă memorie pentru o mai mare performanţă. per formanţă. Diagrama componentelor nivelului Back-End Back- End este reprezentată în î n Figura 7.
Figura 7. Diagrama de componente Nivelul Front-End Front-End reprezintă partea publică a unui proiect care primeşte cererile de la client, le transmite nivelului back-end back- end şi afişează conţinutul utilizatorului. Punctele forte ale acestui nivel sunt: minimizarea cererilor către serverul back -end, -end, reducerea consumului de memorie în timpul procesării cererilor statice, eliminarea efectului de canal lent din
performanţa sistemului şi protejarea prot ejarea nivelului back -end -end de cererile numeroase. Acest nivel permite eliminarea eliminarea câtorva riscuri riscuri şi urmăreşte să atingă atingă condiţiile favorabile favorabile pentru sistem. În Figura 8. 8. este reprezentată reprezentată arhitectura nivelului prezentare:
Figura 8. Arhitectura nivelului nivelului prezentare Din punct de vedere al utilizatorului obişnuit, diagrama Use Case arată ca şi în Figura 9.
Figura 9. Diagrama Use Case
3.1.2. Proiectarea Nivelului Logică de Gestiune Nivelul Logică de Gestiune este nivelul care coordonează aplicaţia, procesează comenzile, ia deciziile logice, evaluările şi efectuează calcule. De asemenea mişcă şi procesează datele datele între cele cele două straturi două straturi vecine. Acest nivel conţine toate librăriile care fac aplicaţia funcţională.
3.1.3. Nivelul Acces la Date Acest nivel face legătura între nivelul baza de date şi alte nivele superioare, în cazul aplicaţiei curente, nivelul logica de gestiune. Este utilizat ca şi nivel abstract pentru structurile de date, astfel că în momentul în care este făcută o modificare în tabelele din baza de date, restul aplicaţiei nu este afectată. Altfel spus, nivelul data este un nivel suplimentar pentru securitatea bazei bazei de date; deţine credenţiale şi alte date sensibile, informaţii care celelalte straturi nu au nici un motiv să le deţină.
3.1.4. Nivelul Baza de Date Pentru a avea o integrare completă a tehnologiilor ce funcţionează în tandem, serviciul de baza de date ales a fost MS SQL Server. Acest serviciu poate lucra ce aplicaţii de tip-ul client-server, presupunând accesul continuu la anumite baze de date. SQL Server dispune şi de un sistem de securitate propriu, pe bază de identificatori şi utilizatori ai bazei de date. Informaţiile sunt stocate în cadrul bazei de date, fişiere şi grupuri grupur i de fişiere. Această tehnologie t ehnologie suporta suport a baze de date de mărimi enorme e norme şi cu un acces la informaţie informaţ ie în timp util. Baza de date a aplicaţiei este una portabilă şi conţine cinci tabele: Genera, LeafGeometricProperty, LeafMoment, LeafData, EuclidianDistance,
datele utilizate. În Figura 10. 10. este reprezentată modelul logic al bazei de date:
în care se stochează
Figura 10. Modelul logic al bazei de date
3.2. Configurarea
aplicaţiei
Filtrele aplicate pe imagini utilizează anumite valori potrivite pentru această aplicaţie. Pentru o manipulare mai uţoară a acestora, ele vor fi modificate manual în fişierele de configurări, acestea având nume asemănător cu numele componentei alese.
Funcţionalitatea Funcţionalitatea de creare a fişierelor care conţin configurări specifice fiecărei aplicaţii, dar şi de a le citi cit i aparţine programului programului Visual Visua l Studio şi, implicit, platformei .NET.
4. IMPLEMENTAREA APLICAŢIEI Soluţia curentă conţine o serie de subsub - proiecte, proiecte, fiecăruia corespunzându corespunzându--i librării cu clase, fiecare clasă acoperind un anumit domeniu.
4.1. Limbajul C# şi Platforma .NET C# este un limbaj de programare progra mare simplu, cu scop general, general, orientatorientat - obiect, care oferă dezvoltatorilor posibilitatea de a dezvolta aplicaţii sigure şi robuste care să ruleze pe platforma .NET (.NET Framework). Framework). Este construit pe sintaxa şi semantica limbajului de programare C/C++, dar de aseamănă într -o oarecare măsură şi cu Java. Complexitatea oferită de C++ este mult simplificată, acest lucru atrăgând după sine o mai mare uşurinţă de învăţare a limbajului de către un dezvoltator. Suportă enumeratori (enumerators), delegaţi (delegates), expresii lambda (lambda experessions) şi acces direct la memorie, dar şi metode şi tipuri generice care oferă o performanţă şi o siguranţă sporită, iteratori care ca re permit definirea de componente ale iteraţiei specifice, ce pot fi utilizate cu uşurinţă de dezvoltatorul final. Furnizează suport complet pentru programarea orientate -obiect, inclusiv concepte precum: încapsularea, încapsularea, moştenirea şi polimorfismul. Orice metodă sau variabilă este încapsulată într -o clasă. O clasă poate implementa o multitudine de interfeţe, însă poate fi moştenită direct doar de la un singur părinte. Pentru evitarea redefinirii accidentale, metodele care suprimă alte metode virtuale dintr dintr -o clasă părinte au nevoie de modificatorul „override”, însă mai există şi alte mecanisme pentru asigurarea consistenţei codului scris.[24][28] Platforma Platfo rma .NET este o componentă integrată a WindowsWindows -ului, în momentul de faţă şi portabilă, care include un sistem de execuţie virtualizată numit Common Language Runtime (CLR) , varianta varianta implementată de Microsoft a standardului internaţional CLI (Common Language Infrastructure) - baza în care limbajele de programare şi librăriile din mediile de creare, execuţie şi dezvoltare lucrează într într -o simbioză simbioză perfectă; perfectă; şi un set de biblioteci biblioteci şi clase. C# rulează pe acea ace astă platformă, iar codul este compilat într -un -un limbaj intermediar(IL) care este în conformitate cu standardele standardele CLI. Resursele (imagini ( imagini,, tabele t abele tip cheie/valoare, cheie/valoar e, sire de caractere) caracter e) şi codul IL sunt stocate pe disk înt r-un r-un fişier executabil cu denumirea în limba engleza de assembly (ansamblu de clase, metode), de
obicei cu extensia .exe sau .dll. Un astfel de fişier mai conţine un manifest ce oferă detalii legate de cerinţele de securitate, tipul asamblului, versiunea acestuia şi limba. Când programul scris scris în C# este lansat în execuţie, ansamblul este încărcat în CLR, care pe baza informaţiilor din manifest poate realiza diferite acţiuni. Apoi se verifică cerinţele de securitate şi dacă acestea sunt îndeplinit e, CLR-ul CLR-ul execută aşa numita compilare “Just-in“Just -in-Time”(JIT) Time”(JIT) pentru a converti codul intermediar în cod maşină nativ.
Figura 11. Arhitectura platformei .NET
Interoperabilitatea limbajului este unul dintre cele mai importante avantaje şi cheia platformei .NET. Fiind în conformitate cu Common Common Type Specifications (CTS), codul generat, codul generat poate interacţiona cu codul generat de către alte variante ale .NET ului mai vechi sau mai noi, cum ar fi Visual Basic, C++ şi cu alte 20 limbaje compatibile la r ândul ândul lor cu CTS. Altfel spus, un ansamblu poate conţine module scrise în diferite limbaje ale .NET, iar tipurile pot fi referite reciproc ca şi cum ar fi fost scrise în acelaşi limbaj.
Printre avantajele se mai numără şi similaritatea cu C/C++ a sintaxei şi a cuvintelor cheie, sistemul automatizat de curăţare a obiectelor fără referinţe din memorie, tipul de siguranţă foarte puternic. puternic. Pe lângă acestea, platforma .NET mai deţine o librărie extinsă ce conţine o multitudine de clase organizate în spaţii de nume, care oferă o varietate de funcţionalităţi, dar şi controale Windows Form, ce permit crearea aplicaţiilor cu interfaţa într într -o manieră facilă. [23] [23]
4.2. Implementarea nivelelor
4.2.1. Implementarea Nivelului Prezentare Datorită faptului că este împărţit în două subproiecte, fiecare va avea utilitate proprie, fiind adresată adresată unui anumit anumit tip de utilizatori. BackEnd
Este o aplicaţie cu interfaţă prin intermediul căreia administratorul are acces la un set de funcţionalităţi destinate administrării aplicaţiei. Aceste funcţionalităţi constau în procesarea setului setului de imagini şi extragerea datelor, dar şi clasificarea lor în funcţie de speciile plantelor din care fac parte. Figura 12. FrontEnd
Reprezintă interfaţarea funcţiei de recunoaştere a aplicaţiei, accesibilă utilizatorilor obişnuiţi. Pentru buna funcţionare a aplicaţiei, utilizatorului i se cere să realizeze anumite acţiuni. Se cere introducerea unei imagini a unei frunze care se doreşte a fi recunoscută şi se aşteaptă rezultatul. În spate, aplicaţia va încerca să încadreze imaginea introdusă într -una într -una dintre categoriile deja existente prin intermediului algoritmului k-NN şi va emite rezultatul cu cea mai mare probabilitate de adevăr. Figura 13.
4.2.2. Implementarea Nivelului Logică de gestiune ge stiune
Librăriile Emgu Emgu CV este o platformă de trecere în .NET a librăriei OpenCV destinată procesării imaginilor. imaginilor. Astfel, funcţiile din OpenCV pot fi chemate în limbajele compatibile cu platforma .NET, cum ar fi C#, VB, VC++, IronPython, etc. Acest înveliş poate fi compatibil compatibil cu orice platformă Mono şi rulează pe Windows, Linux, Mac OS X, iPhone, iPad şi dispozitivele cu android, beneficiu al faptului că este scris în întregime în C#. Au fost depuse o mulţime de eforturi pentru a avea o implementare pură C#, din moment ce antetele antetele trebuiau să fie portabile, în comparaţie cu reuşitele implementării în C++, unde antetele pot fi pur şi simplu incluse. Emgu CV cuprinde două straturi: 1. Stratul de bază, care conţine funcţii, mapările structură şi enumerare, care le reflectă direct pe pe cele din OpenCV. 2. Al doilea strat conţine clase care amestecă avantajele din lumea .NET.
Figura 14. Arhitectura Emgu CV Printre avantajele librăriei Emgu CV se numără şi: culoarea şi adâncimea generică pentru clase clase de imagini, colectarea colectarea automată a gunoiului, serializarea unei imagini în XML, documentaţie XML şi suport IntelliSense, posibilitatea de a alege fie clasa imaginii, fie funcţii funcţii directe de apelare de la OpenCV, operaţii generice asupra pixelilor imaginii. [30] Librăriile DracoolaArt.Experiments.OpenCV.BLL DracoolaArt.Experiments.OpenCV.BLL au fost create pentru a asigura funcţionalităţile pentru procesarea, detecţia şi recunoaşterea imaginilor. Ele au la bază librăria Emgu Cv. Următoarele librării înglobează clase cu funcţionalităţi, după cum urmează:
D r acoo coolaA laA r t.E xper xper i ments.Ope nts.OpenC nCV V .B L L .B usine usi nessCom ssComp ponents nents
Pentru a analiza rezultatele obţinute în urma calculului distanţelor euclidiene în interiorul unei categorii sau între categorii am utilizat metoda ComputeEuclidianDistance din clasa EuclidianDistanceHelper. În aceeaşi clasă se regăseşte şi metoda RecognizeImageClassBySmallestValue
a cărei utilitate este reprezentată de identificarea şi
recunoaşterea clasei din care face parte o imagine nou introdusă. Acest lucru se realizează după calcularea distanţelor euclidiene de la imaginea în cauză la toate imaginile existente în baza de date şi aplicarea algoritmului k-NN de recunoaştere a clasei din care face parte. Clasa LeafSpeciesResolver conţine un dicţionar în care sunt reţinute numele speciilor, identificatorii şi intervalele care fac parte din acea categorie. Pe baza acestui dicţionar se realizează clasificarea şi recunoaşterea, rezultatul depinzând de corectitudinea datelor pe care acesta le conţine. Clasa Controllers organizează toţi managerii prezenţi în aplicaţie. Conţine o clasă internă care activează manager -ul dorit împreună cu o serie de proprietăţi pe care le emite manager-ul, manager-ul, iar fiecare proprietate instanţiază câte un manager prin intermediul acestui controller. Prin intermediul managerului se realizează real izează comunicarea cu baza de date date din care se pot lua date sau se pot pune date. D r acoo coolaA laA r t.E xper xper i ments.Ope nts.OpenC nCV V .B L L .Co .C ommon.UI n.U I
Conţine clasele corespunzătoare controalelor prezente în aplicaţie. Aceste clase implementează funcţionalităţile de bază cerute de clasele care transmit informaţia ImageBoxProcessedGroupControl ntrol , prin intermediul utilizatorului. Aici se regăseşte clasa ImageBoxProcessedGroupCo
căreia, în urma aplicării pe imagine a filtrelor, rezultatul este afişat în câte un imageBox separat. În acest fel rezultatele procesării proce sării unei imagini sunt mai uşor vizibile de către utilizator. Clasa LeafRecognitionControl intermediază cerinţa utilizatorului care introduce o imagine pentru recunoaştere şi procesul de recunoaştere propriu -zis, la terminarea acestuia afişând într -un textBox un rezultat pe care utilizatorul îl poate înţelege. DatabaseSyncronizerControl este
clasa clasa unde se realizează sincronizarea fişierelor
.xml cu baza de date D r acoo coolaA laA r t.E xper xper i ments.Ope nts.OpenC nCV V .B L L .Co .C ommon
Conţine clase ajutătoare ce conţin metode extinse, având acelaşi tip cu metode din clasele respective, fără a le afecta definiţia. Metodele extinse reprezintă metode statice ca şi
metode de instanţă, foloseşte în lista lista de parametrii cuvântul cheie “this” şi trebuie plasate în clase statice. Sunt chemate ca şi metode de instanţă, dar sunt, de fapt, metode statice, singura diferenţă fiind apariţia cuvântului cheie “this” Acestea afectează sintaxa, nu execuţia. În
aplicaţia
curentă
sunt
prezente
patru
clase
cu
metode
extinse:
ImageRagBagExtentions, ByteArrayExtentions, StringExtentions, ImageExtentions.
Dintre
acestea, un rol important îl are metoda StringExtentions, utilizată ca o măsură de siguranţă. Prin intermediul metodei GetMd5Hash este generat un cod unic de identificare a unei imagini pe baza conţinutului acesteia, nu un cod aleator, aşa cum generează GUID -ul (Globally Unique Identifier). Clasa ChainedImageFilterUtil înglobează metodele prin intermediul cărora se realizează procesarea imaginilor. Asupra unei imagini vor fi aplicate mai multe filtre care vor reduce cantitatea de date, eliminând eliminând datele redundante. Mai întâi imaginea este convertită din spaţiul de culoare RGB în spaţiul de culoare Gray. Pentru această acţiune am utilizat metoda _BaseImage2GrayScale.
Următorul
pas
este
aplicarea
filtrului
BinaryThreshold,
numit
GrayScale2BinaryThreshold, asupra imaginii din spaţiul de culoare Gray, care _ GrayScale2BinaryThreshold,
segmentează şi cree cre ează imaginea binară pentru imaginea respectivă. După binarizarea imaginii se aplică egalizarea de histogramă, _Thrashold2Equalize, care are ca şi scop normalizarea normalizarea imaginii. În urma aplicării acestor filtre din imagine nu va fi eliminat tot zgomotul. Pentru eliminarea zgomotului rămas este aplicat filtrul _Equalized2Smooth. _Smooth2Canny prin Pentru imaginea alb-negru alb- negru şi fără zgomot se apelează metoda _Smooth2Canny
intermediul căreia este extras conturul imaginii. Filtrele menţionate mai sus au la bază filtrele din librăria Emgu CV. MathUtils
este clasa în care se implementează metoda pentru calculul distanţei
euclidiene, EuclidianDistance. Această distanţă se calculează pentru momentele Hu extrase de pe două imagini albalb -negru după eliminarea zgomotului. Clasa ImageBoxUtils înglobează funcţionalităţi pentru rescalarea imaginilor în momentul în care utilizatorul utilizatorul redimensionează redimensionează fereastra aplicaţiei. XmlSerializerUtil este
clasa care înglobează metode pentru serializarea obiectele în
fişiere .xml şi deserializarea fişierelor .xml în obiecte. D raco racoolaA laA r t.E xper xper i ments.Op nts.Ope enCV .B L L .B ase.UI se.UI
Clasele DebuggerForm, DebuggerHelper şi MetroTextBoxTraceListener au ca şi scop urmărirea pas cu pas a activităţii aplicaţiei, afişarea treptată a statusului, iar în caz de eroare, afişarea locaţiei exacte a acesteia. Altfel spus este un urmăritor de eroare cu rol important în partea de depanare, depanare, deoarece se poate face debug aplicaţiei fără a fi direct conectat la debuger-ul mediului de dezvoltare integrat.
4.2.3. Implementarea Nivelului Acces la Date În mod normal, nivelul acces la date furnizează o interfaţă (API – Application Programming Interface) pentru nivelul aplicaţie, aplicaţie, care expune metode de organizare a datelor stocate, fără a expune sau a crea dependenţe în mecanismul de stocare a datelor. Datorită evitării dependenţelor, schimbările care sunt făcute nu vor afecta nivelul client (nivelul prezentare). .XmlDAL Librăria DracoolaArt.Experi DracoolaArt.Experiments.OpenCV ments.OpenCV .XmlDAL
a fost realizată tocmai cu
acest scop şi cuprinde o serie de clase care simulează structura unei baze de date. IDataStoreManager este
interfaţa care expune metodele pentru stocarea datelor
extrase de pe imagini şi pentru stocarea distanţelor calculate între imagini. Un exemplu de clasa este LeafData, care are următoarea următoarea structură: [Serializable] public class LeafData { public LeafData(){} public int ID{get; set; } public String Hash{get; set; } public LeafGeometricProperties LeafGeometricProperties GeometricProperties{get; GeometricProperties{get; set; } public MomentsHolder Hu{get; set; } [XmlIgnore] public NkSURFFeature[] NkSURFFeature[] SURFFeatureCollection{get; SURFFeatureCollection{get; set; } }
unde proprietăţil unde proprietăţilee „ID” - identificatorul identificatorul unic din baza de date, „Hash” – identificator – identificator unic al imaginii, „GeometricProperties” – proprietăţile – proprietăţile geometrice ale imaginii, „Hu” – cele şapte momente momente Hu extrase de pe imagine, stochează aceste informaţiile. EuclidianDistance
conţine imaginile grupate câte două, respectiv valoarea distanţei
euclidiene obţinută pentru acele două imagini. Claselor Claselor prezente în această librărie le este atribuit atributul [Serializable] [Serializable] pentru ca datele extrase de pe frunze să poată fi serializabile în format XML şi salvate în fişiere de acest tip. Aceasta a fost prima implementare, una experimentală. Următoarea abordarea fost stocarea datelor într-o baza de date SQL portabilă şi compactă. Versiunea curentă permite salvarea datelor în ambele variante, acestea acestea fiind sincronizate. Sincronizarea Sincronizarea se realizează manual în partea de administrare, putându-se putându -se realiza în ambele sensuri. Librăria DracoolaAr DracoolaArt.Experiments t.Experiments.OpenCV.SqlD .OpenCV.SqlDAL AL
Această librărie librărie cuprinde scriptul utilizat pentru pentru generarea tabelelor din bazei de date. Conţine atât modelul conceptual al bazei de date, cât şi maparea acesteia. Chiar dacă unele componente component e sunt doar experimentale, pot fi private ca şi concept.
5. TESTAREA
PERFORMANŢELOR
5.1. Rezultate ale calculării distanţelor euclidiene Pentru a analiza rezultatele obţinute în urma calculului distanţelor euclidiene şi a observa clar cum anume se comportă acestea, am aplicat calculul distanţei euclidiene în doua cazuri: pentru cazuri: pentru imagini care care fac parte din aceeaşi aceeaşi categorie, categorie, deci imagini cu frunze frunze care aparţin aceleiaşi specii de plante şi pentru imagini care fac parte din categorii diferite. 5.1.1. Aplicar ea ea calculului distanţei euclidiene euclidie ne în interiorul unei categorii Pentru specia Bambus( Bamboo), calculul distanţei euclidiene a fost aplicată pe fiecare două imagini din cele 53, calculându-se calculându -se astfel 1378 valori ale acesteia pentru specia în cauză. Valoarea medie a distanţelor euclidiene obţinute este dist_euclid_med. Specia Castan( Aesculus) cuprinde 63 de imagini, pentru acestea calculându-se 1953 valori ale distanţei euclidiene şi a fost obţinută o valoare medie de dist_euclid_med dist_euclid_med.. Tabelul 2. 2. conţine valorile medii obţinute ale distanţei euclidiene calculată în interiorul unei categorii: Categoria
Bamboo Aesculus Barberry Redbud Indigo Maple Nanmu Castor Cinnamon Goldenrain Holly Cheesewood Wintersweet Camphortree
Distanţa medie
Arrowwood Osmanthus Deodar Ginkgo Myrtle Oleander Pine Cherry Privet Toon Peach Woodlotus TridentMaple Beal Magnolia Poplar Tulip Tangerine Tabelul 2. 2. Valori medii ale distanţei euclidiene în interiorul unei categorii
Deşi specii diferite, valorile medii obţinute sunt apropiate şi nu depăşesc valoarea 1, deoarece imaginile pe care s-a s- a aplicat calculul distanţei euclidiene fac parte din aceeaşi aceeaş i specie, deci sunt asemănătoare. Dacă distanţa euclidiană calculată între o imagine şi ea însăşi este 0, atunci şi distanţa euclidiană calculată între imaginile care fac parte din cadrul aceleiaşi specii trebuie să fie apropiată de 0.
5.1.2. Aplicar ea ea calculului distanţei euclidiene euclidie ne între categorii Tabelul 3. 3. conţine valorile medii obţinute ale distanţei euclidiene calculată între categorii: Categoria 1
Categoria 2
Distanţa medie
Tabelul 3. 3. Valori medii ale distanţei euclidiene între categorii
Deoarece distanţa euclidiană a fost aplicată pe două imagini care aparţin unor specii diferite, valoarea medie obţinută în urma calculului distanţ ei dintre toate imaginile celor două specii vizate este una mai mare decât valorile medii obţinute în urma calculului distanţei aplicate pe fiecare două imagini aparţinând aceleiaşi specii. Acest lucru demonstrează că imaginile pot fi clasificate în funcţie de distanţa euclidiană calculată, deoarece se poate face distincţia uşor între imaginile care aparţin unei categorii şi cele care nu aparţin aceleiaşi categorii prin valorile obţinute.
5.2. Rata de
recunoaştere
În urma testelor realizate pe baza de date ce conţine un număr total de imagini cu frunze de 1592, care fac parte din 32 specii diferite, aplicaţia implementată a returnat un procent de recunoaştere recunoaştere de XXX%. Imaginile introduse pentru testare fac parte din imaginile deja existente în baza de date. Al doilea test realizat a fost încercarea de recunoaştere a ZZZ imagini care nu fac parte din baza de date deja existentă. Dintre acestea au fost recunoscute, adică YYY% din numărul total de imagini de imagini testate.
6. CONCLUZII
Recunoaşterea imaginilor este un domeniu vast, iar de-a de -a lungul timpului s-au realizat mai multe studii cu privire la îmbunătăţirea performanţelor algoritmilor de clasificare, recunoaştere şi detecţie. Interoperabilitatea Interoperabilitatea platformei .NET mi-a mi-a influenţat alegerea limbajului C# ca şi limbaj de dezvoltare a aplicaţiei, deşi, la acel moment, cunoştinţele mele despre acest limbaj erau foarte puţine. Astfel, realizarea acestei aplicaţii a reprezentat o provocare pentru mine, fiind fiind nevoită să dobândesc într într -un timp limitat atât cunoştinţe cu privire la dezvoltarea unei aplicaţii în C#, cât şi cunoştinţe din domeniul procesării şi recunoaşterii imaginilor. În urma unei încercări eşuate de recunoaştere a frunzelor prin extragerea proprietăţilor proprietăţilor geometrice de pe imaginile acestora, adică aria, perimetrul, diametrul, lungimea şi lăţimea frunzelor, încercare în urma căreia am obţinut valori eronate din cauza conturului fragmentat detectat, decizia de a alege clasificarea şi recunoaşter ea recunoaşter ea frunzelor pe baza algoritmului k-NN aplicat pe momentele momentele Hu extrase de asemenea de pe imaginile frunzelor s-a s-a dovedit a fi una promiţătoare. Acest lucru nu ar fi fost posibil daca imaginea nu ar fi fost supusă unei procesări stricte, în urma căreia să se obţină o imagine curată, fără zgomot, zgomot , care ar fi putut influenţa rezultatul acţiunii de procesare şi recunoaştere, informaţii pe care, fiind fiind un utilizator obişnuit, obişnuit, nu le cunoşteam. cunoşteam. Munca mi-a mi-a fost uşurată datorită librăriei Emgu CV, care are implementate funcţionalităţile din OpenCV, scris integral in C++, în C#. Documentarea completă a acesteia a făcut posibil utilizarea ei cu uşurinţă, iar înţelegerea principiului de funcţionare a fost relativ uşor de înţeles. înţ eles. Timpul de implementare al aplicaţiei a fost mai lung datorită faptului ca nu deţineam o mare parte din cunoştinţele necesare, în comparaţie cu timpul de care ar fi avut nevoie un dezvoltator ce cunoştea limbajul înainte de a începe dezvoltarea aplicaţiei. Obţinerea unui procent de recunoaştere de xxx% este un rezultat care egalează obiectivele obiectivele propuse la începerea proiectului. Acest procent prezice posibilitatea obţinerii unor procente mai mari şi pentru o bază de date extinsă, având în vedere că procentul
amintit mai sus a fost obţinut pentru o bază de date restrânsă din punct de vede re a numărului de specii pe care îl conţine. Direcţia care se doreşte a fi urmată este aceea de a dezvolta aplicaţia care serveşte utilizatorului obişnuit şi pentru dispozitivele mobile, astfel fiind mai uşor accesibilă şi, în acelaşi timp mai utilă. Avantajul Avant ajul acestor dispozitive este posibilitatea utilizatorului de a le utiliza oriunde şi oricând, deci posibilitatea de a se folosi aplicaţia oriunde. Pentru acest lucru este necesar perfecţionarea aplicaţiei atât din punct de vedere funcţional, cât şi vizual .
BIBLIOGRAFIE
[1]Abdul [1]Abdul Kadir, L.E. Nugroho, A.susanto, P.Insap Santosa, “Experiments of Zernike Moments for Leaf Identification”, Journal of Theoretical and Applied Information I nformation Technology, 15 July 2012. [2]Cho-Huak [2]Cho-Huak Teh, and Roland T. Chin, “On Image Analysis by the Methods of Moments”, IEEE transaction on pattern analysis and machine intelligence vol.10 no.4 july 1988. [3]Csurka G., Dance C.R., Fan L., Willamowski J., Bray C.. Visual categorization with bags of keypoints. keypoints. In Workshop on Statistical Statistical Learning in Computer Computer Vision, ECCV, 1 – 22, 22, 2004. [4]H. [4]H. Fu, Z. Chi, D. Feng, and J. Song, “Machine learning techniques for ontology -based leaf classification,” IEEE 2004 8th International International Conferenc Co nferencee on Control, Automation, Robotics and Vision, Kunming, China, 2004. [5]http://beta.wikiversity.org/wiki/Prelucrarea_imaginil [5]http://beta.wikiversity.org/wiki/Prelucrarea_imaginilor_-or_--_Lab _Laboratorul_2_--_2007oratorul_2_--_20072008_--_info.uvt.ro [6]http://beta.wikiversity.org/wiki/Prelucrarea_imaginil [6]http://beta.wikiversity.org/wiki/Prelucrarea_imaginilor_-or_--_Lab _Laboratorul_2_--_2007oratorul_2_--_20072008_--_info.uvt.ro [7]http://en.wikipedia.org/wiki/Image_moment [8]http://en.wikipedia.org/wiki/Smoothing [9]http://etc.unitbv.ro/~csaba.kertesz [9]http://etc.unitbv.ro/~csaba.kertesz/pds/curs/PI-curs02.pdf /pds/curs/PI-curs02.pdf [10]http://etc.unitbv.ro/~csaba.ke [10]http://etc.unitbv.ro/~csaba.kertesz/pds/curs/PI-curs02.pdf rtesz/pds/curs/PI-curs02.pdf [11]http://homes.cs.washington.edu [11]http://homes.cs.washington.edu/~neeraj/pap /~neeraj/papers/nk_eccv ers/nk_eccv2012_leafsnap.pdf 2012_leafsnap.pdf [12]http://users.utcluj.ro/~tmarita/IPL/IPCurs/C1.pdf [13]http://webspace.ulbsibiu.ro/arpad.gellert/html/PI.pdf [14]http://webspace.ulbsibiu.ro/arpad.gellert/html/PI.pdf
[15]J. Du, D. Huang, Huang, X. Wang, and X. Gu, “Computer -aided -aided plant species identification (CAPSI) based on leaf shape matching technique,” Transactions of the Institute of Measurement Measurement and Control. 28, 3 (2006) pp. 275-284. [16]J. [16]J. Du, D. Huang, X. Wang, and X. Gu, “Shape re cognition based on radial basis probabilistic probabilistic neural network and application application to plant plant species identification,” identification,” in Proceedings Proceedings of 2005 International Symposium of Neural Networks, ser. LNCS 3497. Springer, 2005. [17] J. Slens, “A Tutorial on Principal Principa l Component Co mponent Analysis”, [Online] Available: Avai lable: http://www.snl.salk.edu/~shlens http://www.snl.salk.edu/~shlens/pca.pdf /pca.pdf [18]J.-X. Du, X.-F. Wang and G.-J. Zhang, "Leaf shape based plant species recognition," Applied Mathematics and Computation, vol. 185, 2007. [19]Jan [19]Jan Flusser, “Rotation Moment Invariants for Recognition of Symmetric S ymmetric Objects,” Objects,” IEEE Trans. On image processing, vol. 15, no. 12, pp. 3784-3790, December 2006. [20]M [20]M K HU, “Visual pattern recognition by moment invariants,” IRE Trans. Info Theory, vol IT-8, pp. 179-187, Feb. 1962. [21]M. Fowler, Patterns of Enterprise Application Architecture, Addison Addison Wesley, 2002 [22]M. K. Hu, "Visual Pattern Recognition by Moment Invariants", IRE Trans. Info. Theory, vol. IT-8, pp.179 – 187, 187, 1962 [23]P. Drayton, B. Albahari, T. Nevard, C# in a Nutshell, O'Reilly Media, 2002 [24]P. Drayton, B. Albahari, T. Nevard, C# in a Nutshell, O'Reilly Media, 2002. [25]S. [25]S. Wu, F. Bao, E. Xu, Y. Wang, Y. Chang, and Q. Xiang, “A Leaf Recognition Algorithm for Plant Classifica C lassification tion Using Probabilis Pro babilistic tic Neural Network,” Netw ork,” IEEE 7th International Symposium on Signal Processing and Information Technology, December 2007. [26]Sidhartha [26]Sidhartha Maître, ”Moment invariant ”,IEEE Preceding vol. 67, no. 4,april 1979. [27]Somkait [27]Somkait Udomhunsakul, Pichet Wongsita,” Feature Extraction in Medical M edical MRI Images" Proceedings of the 2004 IEEE Conferenc on Cybernetics and Intelligent Systems Singapore, 1-3 December, 2004.
[28]T. Northrup, Microsoft .NET Framework – Application Development Foundation, Microsoft Press, 2009 [29]T.H. [29]T.H. Reiss, “The Revised Fundamental Theorem of Moment Invariants”, IEEE Trans. Pattern Anal. Anal. Machine Intell., Vol. Vol. PAMI-13, No. 8, 8, August August 1991, pp 830-834. [30]www.emgu.com [31]X. [31]X. Gu, J. Du, and X. Wang, “Leaf recognition based on the combination of wavelet transform transform and gaussian interpolation,” in Proceedings of International Conference on Intelligent Computing 2005, ser. LNCS 3644. Springer, 2005. [32]X. [32]X. Wang, J. Du, and G. Zhang, “Recognition of leaf images based on shape features using a hypersphere classifier,” in Proceedings of International Conference on Intelligent Computing 2005, ser. LNCS 3644. Springer, 2005. [33]Z. Wang, Z. Chi, and D. Feng, “Shape based leaf image retrieval,” IEEE Proceedings Vision, Image and Signal Processing, vol. 150, no. 1, February February 2003.