Cuprins ………………………….. ………………………….. ………………………….. ………………………….. …… 1… [623112]
1
Cuprins
Cuprins ………………………….. ………………………….. ………………………….. ………………………….. …… 1
1. Stadiul actual ………………………….. ………………………….. ………………………….. ……………………. 2
1.1 Introducere ………………………….. ………………………….. ………………………….. ………………….. 2
1.2 Indexarea bazată pe conținutul imaginilor ………………………….. ………………………….. …… 2
1.3 Metode de indexare a imaginilor ………………………….. ………………………….. ………………… 3
1.3.1 Filtrele Gabor ………………………….. ………………………….. ………………………….. ………… 3
1.3.2 Fractalii ………………………….. ………………………….. ………………………….. ………………… 4
1.3.3 Câmpurile Markov ………………………….. ………………………….. ………………………….. …. 4
1.3.4 Matricile de co -ocurență ………………………….. ………………………….. ……………………… 5
1.4 Domenii de utilizare ………………………….. ………………………….. ………………………….. …….. 5
2. Fundamentare teoretică ………………………….. ………………………….. ………………………….. ……… 6
2.1 Textura ………………………….. ………………………….. ………………………….. ……………………….. 6
2.1.1 Definiții ………………………….. ………………………….. ………………………….. ……………………. 6
2.1.2 Percepția texturii ………………………….. ………………………….. ………………………….. ……. 7
2.1.3 Ca racteristicile texturii ………………………….. ………………………….. ……………………….. 8
2.1.3 Metode de analiză a texturii ………………………….. ………………………….. ………………… 9
2.2 Matricea de co -ocurență ………………………….. ………………………….. ………………………….. .. 9
2.2.1 Distanța ………………………….. ………………………….. ………………………….. ………………. 10
2.2.2 Orientarea matricilor de co -ocurență ………………………….. ………………………….. …… 10
2.2.3 Exemplu de calcul a matricilor de co -ocurență ………………………….. …………………. 11
2.3 Caracteristicile lui Haralick ………………………….. ………………………….. ……………………… 13
2.4 Distanța Euclidiană ………………………….. ………………………….. ………………………….. …. 16
3. Implementarea soluției adoptate ………………………….. ………………………….. …………………….. 17
3.1 Construirea bazei de date ………………………….. ………………………….. …………………………. 17
3.2 Calcul matricilor de co -ocurență ………………………….. ………………………….. ………………. 18
3.3 Calcul caracteristicilor ………………………….. ………………………….. ………………………….. … 22
3.4 Indexarea imaginilor ………………………….. ………………………….. ………………………….. …… 24
4. Rezultate experimentale ………………………….. ………………………….. ………………………….. …… 27
Concluzii ………………………….. ………………………….. ………………………….. ………………………….. .. 37
Bibliografie ………………………….. ………………………….. ………………………….. ………………………… 38
2
1. Stadiul actual
1.1 Introducere
O dată cu dezvoltarea internetului și a dispozi tivelor de captare a imaginilor, numărul
imaginilor digitale cre ște conside rabil. O căutare mai eficient ă a imaginilor, navigare a si
recuperare a imagi nilor , a devenit necesar ă pentru utilizatori i din diverse domeni i precum
medicin ă, criminalistic ă, arhitectur ă, modă, etc. În ajutorul lor au fost dezvoltate mai multe
tehnici de recuperare sau indexare a imaginilor. Tehnicile respective au dou ă abord ări: una
orientată pe text și alta bazată pe con ținut.
Abordarea orientată pe text a fost folosit ă pană în anii 70. În tehnicile care folosesc o astfel
de abordare, imaginile sunt adnotate manual cu descriptori text, care sunt folosi ți apoi de un
sistem de management a l bazei de date pentru a efectua recupera rea imaginii . Abordarea orientată
pe text are doua dezavantaje. Primul dezavantaj îl constituie nevoia unui număr mare de oameni
pentru adnotarea manual ă a imaginilor, iar al d oilea dezavantaj este reprezentat de inacurateț ea
adnot ărilor dat orită subiectivit ății percep ției umane. Pentru a rezolva aceste dezavantaje , ale
abordării orientate pe text, la începutul anilor 80 a fost introdusă abordarea bazat ă pe con ținut. În
tehnicile care folosesc o astfel de abordare , imaginile sunt indexate folosind conținutului lor
vizual precum culoarea, textura, forma [1]. În continuare, va fi prezentată doar cea de -a doua
tehnică.
1.2 Indexarea bazată pe conținutul imaginilor
Indexarea , sau recuperarea bazată pe conținutul imaginilor , utilizează conținutul vizual pentru
a căuta imagini asemănătoare în baze de date cu număr mare de imagini folosindu -se de
informația dată de culoare, textură, formă . Tehnica indexării s-a dezvolt at o dată cu creșterea
conținutului bazel or de date în care metodele tra diționale de indexare s-au dovedit a fi ineficiente,
laborioase și consumatoare de timp. În recuperarea imaginilor bazat ă pe conținut, fiecărei imagin i
stocată în baza de date îi sunt extrase caracteristicile si comparate apoi cu caracteristicile imaginii
interogate. Aceasta implică doi pași: primul pas îl reprezintă calcularea caracteristicilor atât
pentru imaginea indexat ă, cât și pentru celelalte imagini din baza de date. Al doilea pas constă în
compararea caracteristicilor imaginii interogate cu caracteristici le fiecarei imagini din baza de
date pentru a obține o imagine cu caracteristici cât mai apropiate de imaginea indexată [2].
Conform lui J ohn Eakins [3], există 3 nivele de interogari în recuperarea bazat ă pe conținutul
imaginilor:
• Nivelul 1: cuprinde recuperarea imaginilor prin caracteristici precum culoare, textura,
form ă sau locatia spa țială a elementelor din imagine. Un exemplu de astfel de
interogare poate fi „g ăsiti imagini care arat ă așa”.
• Nivelul 2: cuprinde recuperarea de obiecte de tipul dat, id entificate prin caracteristici ,
necesitând un anumit timp pentru a fi analizate și înțelese . Un e xempl u pentru acest
nivel este găsirea de obiecte sau persoane , „găsiți o imagine cu Coloseumul ”, fiind
nevoie de cunoașterea faptului că o str uctură a fost numită Coloseumul. Acest nivel
de interogare este cel mai des întâlnit .
• Nivelul 3: cuprinde recuperarea prin atribute abstracte, fiind nevoie de un timp
îndelungat de gândire asupra semnificației și a scopului obiectelor sau scenelor
descrise . Ca exemplu putem menționa recuperarea evenimentelor denumite, picturilor
cu semnificație religioasă sau emoțională.
Împreună nivele 2 si 3 se refer ă la identificarea semantic ă a imaginii iar decalajul dintre
nivelele 1 si 2 se numește decalaj semantic. Decalajul semantic este discrepanța dintre limita
descriererii caracteristilor de nivel redus a imaginilor și nivelul de înțelegere a imaginii. De
3
exemplu în cazul unei imagini c are reprezintă o zebră , calculatorul poate identifica pixelii albi
respectiv negr i dar nu ar putea înțelege apartenența lor la acel ași lucru (zebra) [3,4].
Tehnicile de recuperare a imaginilor bazate pe conținut efectueaz ă două sarcini importante
prezentat e in figura 1 . Prima sarcin ă este extragerea de caracteristici, în care un set de
caracteristici , numit si vector de caracteristici, este generat pentru a reprezenta con ținutul fiec ărei
imagin i din baza de date. A doua sarcină este măsurarea asemănăr ii, calcularea unei distan țe
dintre imaginea interogată si fiecare imagine din baza de date , astfel încât imaginile cu distanța
cea mai mică să poată fi recuperate.
Figura 1. Principiul index ării bazate pe conținut
În secțiunea următoare, vor fi prezentate câteva dintre cele mai utilizate metode de indexare
bazată pe conținut.
1.3 Metode de indexare a imaginilor
1.3.1 Filtr ele Gabor
Filtrele Gabor sunt folosite pentru procesarea imaginilor si extragerea de caracteristici,
reușind sa extragă inform ația cu o mare precizie [5]. Acestea pot fi văzute ca un grup de funcții
wavelet care captează energia la o f recvență și direcție specifica tă. Datorită celor doi parametri,
scala de analiză și orientarea, filtrele Gabor sunt adesea folosite pentru descrier ea texturilor.
Pentru o imagine dată I(x, y), de dimensiune 𝑃𝑥𝑄, transformata Gabor discretă este dată de
convoluția:
𝐺𝑚𝑛(𝑥,𝑦)=∑∑𝐼(𝑥−𝑠,𝑦−𝑡)∗𝜓𝑚𝑛∗
𝑡 𝑠 (1)
unde s și t sunt dimensiunea măștii filtrului, 𝑚 și 𝑛 specifică scala și orientarea funcției
wavelet, 𝜓𝑚𝑛∗ este conjugata complexă a lui 𝜓𝑚𝑛, care este o clasă de funcții asemănătoare ,
generate de dilatarea și rotația următo arei funcții wavelet :
𝜓𝑚𝑛(𝑥,𝑦)=1
2𝜋𝜎𝑥𝜎𝑦∗𝑒𝑥𝑝 [−1
2(𝑥2
𝜎𝑥2+𝑦2
𝜎𝑦2)]∗𝑒𝑥𝑝 (𝑗2𝜋𝑊𝑥 ) (2)
unde W este frecvența de modulație.
4
După aplicarea filtrelor Gabor pe o imagine cu orientări diferite la scală diferită, obținem un
set de m ărimi :
𝐸(𝑚,𝑛)=∑∑|𝐺𝑚𝑛(𝑥,𝑦)| 𝑦 𝑥 (3)
m=0,1,…….,M -1; n=0,1,……..,N -1
Aceste mărimi reprezintă conținutul energiei la diferite sc ale și orientări ale imaginii. Scopul
principal al recuperării bazate pe textură este să găsească imagini sau regiuni cu texturi
asemănatoare. Se presupune că suntem interesați de imagini sau regiuni care au textură omogenă,
prin urmare deviați ile standard 𝜎𝑚𝑛 și medi a 𝜇𝑚𝑛 din marimile coeficienților transformați sunt
folosite [5].
𝜇𝑚𝑛=𝐸(𝑚,𝑛)
𝑃∗𝑄 (4)
𝜎𝑚𝑛=√∑∑(|𝐺𝑚𝑛(𝑥,𝑦)|−𝜇𝑚𝑛)2𝑦 𝑥
𝑃∗𝑄 (5)
1.3.2 Fractali i
Multe suprafețe naturale au o calitate statistică a rugozită ții și asemănării la diferite scale.
Fractalii sunt foarte utili și au devenit populari în modelarea proprietăților în procesarea
imaginilor. Mandelbrot [ 6], este cel care a propus noțiunea de geometrie fractală și este primul
care a observat existența lor în lume . Sunt folosiți și în indexarea imaginilor.
Un fractal determinist este definit pentru a introduce câteva concepte fundamentale.
Asemăn area dintre scale în geometria fractală este un concept crucial, fractalul determinist fiind
definit pe baza aces tui concept.
Un alt concept este d imensiunea fractală , 𝐷, care oferă o m ăsură a rugozității unei suprafețe .
Cu cât dimensiunea fractală este mai mare, cu atât te xtura are o rugozitate mai mare . Cele mai
multe suprafete naturale nu sunt determinis te dar au o varia ție statistică, ceea ce face calculul
dimensiunii fractale mai dificil [9]. Dimensiunea fractală se calculează conform relației :
𝐷=𝑙𝑜𝑔 𝑁
𝑙𝑜𝑔 (1
𝑟) (6)
unde N reprezintă numărul de copii al unei suprafețe , iar r raportul cu care sunt reduse
acestea .
1.3.3 Câmpurile Markov
Câmpurile Markov sunt populare pentru modelarea imaginilor. Ele sunt capabile s ă preia
informația locală dintr-o imagine. Aceste a presupun c ă intensitatea fiecărui pixel din imagine
depind e doar de intensități le pixelilor vecini. Câmpurile Markov au fost folosite în diferite
aplicatii de procesare a imaginilor printre care și indexarea [7,23].
Imaginea este reprezentată ca o structura 𝑀𝑥𝑁 , indicată de L={(i,j)|1 i j (i,j) este
o variabilă aleatoare care reprezint ă nivelul de gri a l pixelului (𝑖,𝑗) din structura L. Aceasta este
simplificată pentru calculul matematic la 𝐼𝑡, care reprezintă variabile aleatoare, cu t=(i-1)N+j . A
care reprezintă intervalul stabilit pentru toate variabilele aleatoar e 𝐼𝑡 și Ω={(𝑥1,𝑥2,…𝑥𝑀𝑁)|𝑥𝑡 ∈
𝐴,∀ 𝑡 }, indicând toate seturile de etichete ale lui L. A este specificat în funcție de aplicatie,
pentru o imagine cu 256 de nivele de gri diferite, A poate fi setul {0,1,…,256 } [9].
5
1.3.4 Matric ile de co -ocurență
Matricile de co -ocurență pentru imaginile pe nivele de gri, reprezintă una din cele mai
cunoscute metode de analiz ă a imaginilor, fiind aplicat ă cu succes în indexarea imaginilor [24].
Acestea estimează car acteristicile de ordin secundar ale imaginii, p rin calcularea probabilităților
de apariție a perechilor de nivele de gri, plasate în imagine la o locație si distanță specificată .
Fiecare intrare (𝑖,𝑗) din matricea de co -ocurență corespunde numărului de apariți din perechea de
nivele de gri 𝑖 si 𝑗 care sunt separate de o distanță 𝑑 [8].
Aceasta este metoda utilizată în lucrare și va fi descrisă amănunțit pe parcurs.
1.4 Domenii de utilizare
Recuperarea bazată pe conținutul imaginilor este utilizată în mai multe domenii precum
medicină, si steme informatice, prevenirea criminalității, biblioteci digitale, etc.
În medicină numărul imaginilor este în continuă creștere. Un spital de dimensiun i medii
efectuează proceduri care generează imagini ce ocupă spațiu de ordinul miilor de gigaocteți într –
un interval scurt de timp. Sarcina de a avea grijă de o cantitate atât de mare de date este gre a și
consumatoare de timp , ceea ce a motivat cercetările în recuperarea imaginilor bazate pe conținut.
Medicina este unul din domeniile principale în care recup erarea imaginilor bazate pe conținut
este mereu menționată.
Există biblioteci digitale care folosesc servicii bazate pe conținut ul imaginilor . Un exemplu
este muzeul digital de fluturi din Taiwan [27], care vizează construirea unei colecții digitale de
fluturi. Această bibliotecă digitală include un modul responsabil pentru recuperarea imaginilor pe
bază de conținut folosind culoare a, textura și model ele.
6
2. Fundamentare teoretică
2.1 Textura
2.1.1 Definiții
Textura este una dintre cele mai importante caracteristici ale unui material, definind suprafața
acestuia. În viziunea computerizată reprezint ă un indiciu important , ea ne oferă informații în
legătură cu suprafața și caracteristicile obiectului. Deși recunoaștem o textura când o vedem, încă
nu există o definiț ie generală a ei. Există mai multe definții concepute de diferiți oameni , în
funcție de scopul pentru care textura este utilizată . Toate aceste definiții au fost preluate de
Coggins [1 1], care a elaborat un catalog cu definiții le texturii . Câteva dintre definiții sunt
urmatoarele:
• „Putem considera textura ca o regiune macroscopică, structura sa fiind atribuită
modelelor care se repetă , în care elementele sunt aran jate conform unei reguli de
plasare” [12].
• „Textura imaginii pe care o considerăm este nonfigurativă, mai greu de înteles, și
celulară. O textură a imaginii este descrisă de numărul și tipurile de primitive (tonuri) ,
dispunerea si aspectul lor . O caracteri stică fundametală a texturii este: nu poate fi
analizată fără un cadru de referință a primitivei declarate sau implicite. Pentru orice
suprafață netedă de tonuri de gri , există o scală la care suprafața examinată nu are
textură. Pe masură ce rezoluția cre ște, trece la o textură fină apoi la una aspră ” [13].
• „Textura este definită pentru scopurile noastre , ca o caracteristică a unei suprafețe
care nu are componente ce se repetă . Relatiile dintre componente nu sunt evidente.
Intenția definiției este de a atr age atenția observatorului asupra proprietăților globale
de afișare precum asprimea sau finețea ” [14].
Toate aceste definiții demonstrează că „definiția” texturii este formulată de oameni diferiți în
funcție de aplicația pentru care o utilizează și că nu există un acord pentru o definiție general.
Textura este cel mai important indiciu în identificarea regi unilor omogene dintr -o imagine ,
precum în figura 2 . Scopul ei este de a produce o hartă de clasificare , în care fiecare textură
uniformă dintr -o regiune a imaginii să corespundă unei anumite clase de texturi.
Figura 2. Imagine cu 5 regiuni diferite de texturi [ 9].
Un alt lucru pe care textura urmăreș te să-l rezolve este segmentarea, cu scopul de a identifica
și delimita regiunile unei imaginii corespunzăto are unui anumit tip de texturi . Alt scop este
realizarea unei sintez e a texturii , care este des f olosită în aplicații de compresie a imaginilor sau
în grafic a asistată de calculator pentru a face obiectele cât mai realiste. Textura este prezentă în
7
aproape orice lucru ajutând la întelegerea și identificarea lui [9]. Aceasta este văzută și înțeleasă
în diferite moduri, în cele ce urmează va fi prezentat modul în care oamenii vad textura .
2.1.2 Percepția texturii
Texturile sunt repere vizuale importante cu privire la proprieta tea unei suprafețe. Percepția
lor în viziunea umană este unul dintre primii pași spre identificarea și înțelegerea lor. Textura si
efectul ei asupra percepț iei vizuale a omului a fost studiat în discipline pr ecum neuroștiința,
psihofizica sau informatica. În neuroștiință și psihofizică, s tudiile asupra texturii se concentrează
pe modul în care creierul uman percepe imaginea vizuală , pe înțeleger ea metodelor de detectare a
imaginii . În viziunea computerizată, studi ul texturii se bazeaz ă pe simularea percepției umane
prin intermediul tehnolo giilor pentru a uș ura procesarea si clasificarea . Acestea se bazează pe
studiile din domeniul n euroștiinței și psihofizicii.
Primii pași în analiza texturii au fost făcuți de Julesz [1 6]. El a studiat percepti a proprietăților
texturii , ale mai multor imagi ni, folosindu -se de mărimi statistice pentru a putea stabilii modul în
care sistemul vizual uman răspunde la variația unui anumit ordin statistic. Mărimile statistice
folosite de Julesz[1 6] sunt :
• Statisticile de ordinul întâi calculează probabilitatea de aparitie a unei valori de gri la
o locatie alea toare din imagine. Ele pot fi calculat e folosind histograma intensități i
pixelilor din imagine. Depind numai de valoarea unui pixel, nu și de interacțiunea
valorilor pixelilor vecini. Un exemplu de statistică de prim ordin este intensitatea
medie dintr -o imagine.
• Statisticile (momentele) de ordin doi, calculează probabilitatea de apariție a perechilor
de nivele de gri, plasate în imagine la o locație si distanță specificată. Ac estea sunt
proprietățile valorilor perechilor de pixeli. Un exemplu de statistică de ordin al doilea
este omogenitatea.
Julesz [16] a presupus inițial că două texturi nu sunt ușor de diferențiat dacă statisticile de
ordin doi sunt identice . Imaginea di n figura 3 a) este un astfel de exemplu, unde statisticile sunt
identice. J umătatea de sus a imaginii are textura diferită fa ță de cea din partea de jos , fără o
examinare atentă este mai greu de observat. Mergând mai departe cu cercetările, obține rezulta te
care contrazic ipoteza inițială. Pentru a susține noua ipoteză folosește o imagine, precum cea din
figura 3 b) în care cele două regiuni cu texturi diferite sunt ușor de identificat chiar dacă
momentele de ordin doi sunt identice. Din acest motiv define ște noțiunea de texton.
a) b)
Figura 3. a) Imagine cu texturi apropiate ca asemănare, mai greu de observat la prima vedere
b) Imagine c u texturi diferite, ușor de observat [16].
8
Aceasta afirmă că texonii sunt un ități de perceptie a texturii, legate de trăsături locale
precum capetele de linie, pete, etc. Teoria texonilor a condus la o abordare structurală care
extrage caracteristicile texturii ca trăsături locale pentru a o descrie.
În ansamblu , studiul percep ției vizuale a texturii este un subiect important, multe teori i fiind
dezvoltate pentru a înțelege modul în care este vazută și înțeleasă de oameni [9,16]. Textura unei
imagini este de folos în o mulțime de aplicații, iar una importantă este recunoasterea unei regiuni
utilizând caracteristicile texturii.
2.1.3 Caracteristicile texturii
Din punct de vedere al percepției, textura poate fi descrisă de 6 caracteristici diferite:
asprimea, contrastul, direcționalitatea, linearitatea, regularitatea și rugozitatea, prezentate în
figura 4, cunoscute sub denumirea de caracteristicile texturale ale lui Tamura [25]. Modalitatea
cea mai obișnuită de a cataloga texturi le este după gradul lor de regularitate de -a lungul unui
spectru care merge de la uniform până la stohastic, precum în figura 5. Majoritatea texturilor din
lumea reală se află între aceste două extreme.
Figura 4. Tipuri de caracteritici ale texturi: a) asprimea b) contrast c) linearitate
d) regularitate e) rugozitate f) direcționalitate
Figura 5. Spectru de textură în ordinea uniformității texturii [1 5].
9
Texturile uniforme arată ca modele uniforme/structurate. Trăsătura lor distinctivă este , că
forma și culoare a/intensitatea tuturor elementelor texturale conținute în textură se repetă la
intervale egale. Un exemplu de textură obișnuită este t apetul. Texturile aproape uniforme pot fi
văzute ca deplasări ale texturilor uniforme de -a lungul a diferite dimensiuni. Majoritatea
texturilor din lume sunt aproape uniforme precum texturile hainelor, pereților de cărămidă,
covoarelor etc. Texturile sto chastice arată precum zgomote le, ca puncte de culoa re împrăștiate
aleator prin toată imaginea, specificate de intensitate minimă sau maximă și culoare medie.
Multe texturi arată precum cele stochastice când sunt văzute de la distanță rezultând alte două
tipuri de texturi. Primele sunt micro texturile, sun t în principal texturi stochastice, exemple tipice
de astfel de texturi sunt imaginile cu nisip, nori sau suprafața apei. Al doilea tip sunt macro
texturile, imagini cu texturi compuse din mai multe grupuri mici. Clasificarea în texturi micro sau
macro nu depinde doar de natura obiectelor observate ci și de dis tanța de la care sunt vizionate
[15]. În sec țiunea următoare urmeză a fi prezentate câteva metode de analiză a texturii.
2.1.3 Metode de analiză a texturii
Texturile sunt imagini caracterizate de modele diferite, care nu sunt mereu uniforme.
Creșterea complexității texturilor unei imagini reprezintă o provocare mai mare pentru tehnicile
de recunoaștere a modelelor și de analiză a imaginii. Exemple de texturi includ blana unei zebre ,
lemn, țesăturile hainelor, tabla de șah , detalii de pe pereți, etc . Există o mulțime de metode de
analiză a acestor tipuri de texturi din imagini, iar acestea pot fi clasificate în 4 tipuri: struturale,
statistice, spectrale si bazate pe model [17].
Meto dele structurale văd texturile ca elemente ierarhice , bine definite , care ne oferă o
descriere simbolică a imaginii. Sunt aplicate operații precum deschiderea, închiderea sau
detectar ea puncte lor de interes cu scopul de a g ăsi și a descrie aranjarea eleme ntelor din imagine
[17].
Metodele spectrale au scopul de a reprezenta textura folosind informațiile spectrale . Pentru a
face acest lucru, estimează frecvența spectrală a intesității pixelilor și legătura textur ilor fine cu
frecvențe ridicate, texturil or aspre cu frecvențe joase. Metode le din această categorie se bazează
pe filtre precum filtrele Gabor sau wavelet [17].
Metodele bazate pe modele utilizează un model construit pentru extragerea caracteristici lor
pe baza acest uia și pentru a reprezenta texturile. Pentru acest tip de metode, cei mai folosiți sunt
fractali i, deoarece oferă cele mai bune rezultate dintre toate metodele din această categorie [17].
În cazul metodelor statistice , texturile sunt descrise prin proprietățile statistice a nivelelor de
gri. Primele metode propuse din această categorie folose sc calculul bazat pe histograma imaginii.
Ulterior a u fost înlocuit e cu metode mai eficiente precum modelele binare locale [17] sau
matricea de co -ocurență a nivelelor de gri [8].
Metodele structurale funcționează numai pe texturi periodice, ele presupun ca toate texturile
au elemente bine definite, ceea ce nu e mereu adevărat. C elelalte trei metode sunt capabile să se
ocupe și de modele neperiodice [18]. În această lucrare, p entru analiza textur ii, am ales folos irea
unei metod e statistic e și anume matricile de co -ocurență a nivelelor de gri , deoarece oferă o
abordare simplă și eficientă care urmează a fi prezentată.
2.2 Matricea de co -ocurență
Matricile de co -ocurență pentru imaginile pe nivele de gri, reprezintă una din cele mai
cunoscute metode de analiză a texturii. Acestea estimează caracteristicile de ordin secundar ale
imaginii, prin calcularea probabilităților de apariție a perechilor de nivele de gri, plasate în
imagin e la o locație si distanță specificată. Fiecare intrare (i,j) în matricea de co -ocurență
corespunde numărului de apariți din perechea de nivele de gri i si j care sunt separate de o
distanță 𝑑. Matricile de co -ocurență se calculează în funcție de o distanță și orientare .
10
2.2.1 Distanța
Unul din parametrii necesari în calculul matricilor de co -ocurență este distanța dintre doi
pixeli. Aceasta reprezintă poziția pixelului cu care este comparat pix elul de referință într -o
imagine. Cea mai des folosită valoare a distanței în calculul matricilor de co -ocurență este 1,
valoare folosită și în această lucrare. În caz ul distanței egale cu 1, pixelii cu care este comparat
cel de referință , se află pe poziț ia de lângă el , pixelii vecin i cu acesta. Dacă distanța este 2, ei se
află cu două poziții deplasați față de poziția celui de referință . În figura 6 sunt prezentate
exemple de distanțe dintre pixeli .
Figura 6. Definirea distanței dintre doi pixeli
2.2.2 Orientare a matricilor de co -ocurență
Al doilea parametru necesar pentru calculul matricilor de co -ocurență este orientare a. Există
4 orientării, ș i anume 00 , 450, 900 și 1350 prezentate în figura 7. Cele patru valori reprezintă
unghiul față de orizontală pentru care se calculează matricile . Matricea cu orienta rea de 00 se
calculează prin aflarea numărului de apariții a perechilor de pixeli din imagine pe orizontală . Se
verifică în ambele direcți , pixelul de referinț ă este comparat cu cel vecin d in stânga și cu cel din
dreapta . Fiecare pereche găsită este contorizată, după parcurgerea imaginii, numărul de apariții a
perechii respective este trecut în matrice. Procedura este aceeași pentru găsirea numărului fiecărei
perechi de pixel i pentru a compl eta întreaga matrice .
Dacă se verifică pixelii doar într -o direcție , există șanse ca o pa rte din perechi sa fie omise și
numărul rezultat sa fie mai mic decât e în realitate. Un exemplu este perechea de pixeli (0,0) , doi
pixel i vecini care au valoarea 0. Calculul într -o singură directie, compararea numai cu pixelul
vecin din dreapta, înseamnă contoriza rea perechii o singură dată. Dacă pixelul de referință se
compară și cu cel din partea stângă, atunci perechea este contorizată de două ori , calculul
număr ului de apariții fiind corect. În cazul perechi i de pixeli (1, 2), dacă în imagine există doi
pixeli vecini cu valoarea de 2 și 1 , verificarea într-o singură directie , de la stânga la dreapta , nu
duce la găsirea perechii de pixeli cautată, perechea (2, 1) nu este aceeași cu perechea (1, 2).
Verificând și în sens opus, de la dreapta la stânga, perechea căutată este găsită și contorizată. L a
final numărul total de apariții a acestei perechi de p ixeli este cel corect .
Pentru orientarea de 450 perechile de pixeli se calculează pe diagonala secundară, conform
exemplului din figura 7. Precum la orientarea de 00, pixelii se compară în ambele direcții, pe
diagonala secundară. Pixelul de referință este comparat cu cel de pe poziția superioară de pe
diagonală secundară și cu cel de sub el de pe diagonală. Numărul total de apariții a fiecărei
perechi de pixeli este trecut în matricea pentru această orientare.
Pentru orientarea de 900 perechile de pixeli se calculează pe verticală, precum în exemplul
prezentat în figura 7. Pixelul de interes se compară cu cei doi pixeli vecini, cel situat deasupra și
cel de sub el, pentru a găsi numărul de apariții a fiecărei perechi în imagine.
11
Figura 7. Cele 4 direcți de analiză pentru construirea matric ilor de co-ocurență
Pentru orientarea de 1350 perechile se calculează pe digonal a principală , un exemplu de
orientare este prezentat în figura 7. Precum la celelalte orientări, se verifică ambii vecini ai
pixelului de interes , cel situat deasupra pe diagonala principală și cel de sub acesta de pe aceeași
diagonală. [19]. Pentru a întelege mai bine modul de calcul a matricilor de co -ocurență, î n
secțiunea următoare va fi prezentat un exemplu .
2.2.3 Exemplu de calcul a matricilor de co -ocurență
Fie o imagine oarecare de dimensiune 4×4, 4 linii și 4 coloane, având valorile pixelilor
cuprinse între 0 și 3, prezentat ă în figura 8.
Figura 8. Imagine de dimensiune 4×4 cu valorile fiecărui pixel .
Pe baza pixelilor din imagine se calculează matric ile de co -ocurență. Aceasta se calculează în
funcție de o distanță 𝑑 și 4 orientări, 00 , 450, 900 respectiv 1350. Pentru acest exemplu se
consideră distanța 𝑑=1, fiecare pixel este comparat cu vecinii de lângă el pentru a completa
matricile. Rezultă 4 matrici, fiecare matrice corespunde unei orientări și unei distanțe 𝑑 care este
aceeași pentru calculul fiecărei matrice. Dimensiunea matricilor este dată de numărul de valori
posibile diferite ale valorilor pixe lilor. Pentru acest exemplu dimensiunea matricilor este 4,
pixel ii iau valori cuprinse î ntre 0 și 3 inclusiv .
Calculul matric ilor de co -ocurență pentru distanța 𝑑=1 și orientarea de 00 se face prin
compararea pixel ilor pe orizontală. Fiecare pixel este comparat cu pixelii vecini din st ânga și din
dreapta pentru a găsi numărul de apariții a fiecărei perechi în imagine. Apariția unei perechi de
pixeli este contorizată, după parcurgea imaginii, numărul de apariții a perechii respe ctive este
trecut în matric e. Procedeul este același pentru calculul tuturor perechilor de pixeli , matricea este
12
completată cu numărul de apariții a perechilor în imagine . În figura 9 este prezentat modul de
calcu l și matricea rezultată pentru orientarea de 00.
Pentru matricea calculată pe orientarea de 450 și distanța 𝑑=1, calculul se face asemănător
precum cel din orientarea de 00. Fiecare pixel este comparat pe diagonala secundară, cu pixelii
vecini , aflați pe poziția superioară și inferioară acestuia pe diagonala secundară. Figura 9 prezintă
principiul de calcul pentru această orientare și matricea rezultată după efectuarea calculelor.
Figura 9. a) Imaginea cu valorile pixelilor b) Exemplu de calcul c) matricea rezultată pentru
orientarea de 00 și distanța 𝑑=1.
Figura 10. a) Imaginea cu valorile pixelilor b) Exemplu de calcul c) matricea rezultată pentru
orientarea de 450 și distanța 𝑑=1.
Matricea pentru orientarea de 900 se face la fel precum la celelalte matrici. Singura diferență
este direcția de comparare a pixelilor. Ei sunt verificați pe verticală, fiecare pixel cu pixelul aflat
pe poziția de deasupra și sub el. Modul de calcul și matricea rezultată pentru această orientare
este prezentat în figura 11.
Calculul matricei pentru orientarea de 1350 se face în același mod precum la celelalte
orientări . Diferența este făcută de direcția de comparare dintre pixel ul interogat și pixelii vecini .
Aceștia sunt comparați pe diagonal a principală . Modul d e calcul și matricea rezultată este
prezentată în figura 1 2 [19].
13
Figura 11. a) Imaginea cu valorile pixelilor b) Exemplu de calcul c) matricea rezultată pentru
orientarea de 900 și distanța 𝑑=1.
Figura 12. a) Imaginea cu valorile pixelilor b) Exemplu de calcul c) matricea rezultată pentru
orientarea de 1350 și distanța 𝑑=1.
Acesta este modul de calcul al matricilor de co -ocurență în funcție de cele patru orientări și
distantă. În final se poate observa că matricile sunt simetrice față de diagonala principală. Toate
informațiile despre textura unei imaginii sunt conținute în aceste matrici de co -ocurență . Pentru a
extrage aceste informații , Haralick [ 19] a introdus 14 caracteristici care vor fi prezentate în cele
ce urmează.
2.3 Caracteristicile lui Haralick
Caracteristicile lui Haralick [ 19] descriu relația în intensitate a pixelilor poziționați unul
lângă altul . Sunt folosite pentru a extrage informați i despre textura unei imagini din matricile de
co-ocurență calculate pentru imaginea respectivă. Înainte de a extrage informații le, matricile sunt
normalizate pentru a avea în fiecare celulă a matricilor o probabilitate . Caracteristicile lucrează cu
probabilității . Normalizarea se face prin adunarea tuturor valorilor dintr -o matrice și împărț irea
fiecărui element din matrice la totalul valorilor elementelor . Aceasta se face pentru fiecare
matrice prin aplicarea formul ei:
𝑝𝑑(𝑖,𝑗)=𝑝𝑑(𝑖,𝑗)/𝑅 (6)
unde i și j reprezintă valorile pixelilor, 𝑝𝑑(𝑖,𝑗) reprezintă elementele matricii normalizate 𝑝𝑑,
iar R suma tuturor valorilor din matrice.
14
După normalizarea fiecărei matrice se poate trece la extragerea caracteristici lor. Haralick a
propus 14 caracteristici : Contrastul, Co relația, Energia, Omogenitatea, Entropia , Suma pătratelor:
Varia nța, Media sumei , Varia nța sumei, Entropia sumei, Diferen ța varianțe i, Diferența entropiei,
Inform ații d espre măsurarea corelației 1 și 2 și Coeficientul de corelație maxim [20], descrise în
continuare:
1. Contrastul este o măsură a intensității sau a variației nivelelor de gri dintre pixelul de
referință si vecinul lui. Contrastul este 0 pentru o imagine uniformă. Reprezintă cantitatea
variației locale prezente într -o imagine. Dacă variația locală este mare , contrastul are
valori mari și textura este aspră. Valori mici ale contrastului prezintă o textur ă rugoasă .
Poate fi calculată cu următoarea formulă:
𝑓1=∑∑(𝑖−𝑗)2
𝑗𝑖 ∗ 𝑝𝑑(𝑖,𝑗) (7)
2. Corelația reprezintă o masură a dependenței liniare a valorilor nivelelor de gri din
imagini . Valorile ei varia ză între -1 și 1 indicând corelați a perfectă negativă si pozitivă.
Dacă imaginea are texturi orizontale, corelația calculată pentru orientarea de 00 este mai
mare decât pentru celelalte orientări . Poate fi calculată astfel:
𝑓2=∑∑𝑝𝑑(𝑖,𝑗)(𝑖−𝜇𝑥)(𝑗−𝜇𝑦)
𝜎𝑥𝜎𝑦𝑗𝑖 (8)
unde 𝜇𝑥 și 𝜇𝑦 sunt mediile iar 𝜎𝑥 și 𝜎𝑦 sunt deviațiile standard , având expresiile:
𝜇𝑥=∑∑𝑖∗𝑝𝑑 𝑗 (𝑖,𝑗) 𝑖 𝜇𝑦=∑∑𝑗∗𝑝𝑑(𝑖,𝑗) 𝑗𝑖
𝜎𝑥=√∑∑(𝑖−𝜇𝑥)2∗𝑝𝑑(𝑖,𝑗) 𝑗𝑖 𝜎𝑦=√∑∑(𝑗−𝜇𝑦)2∗𝑝𝑑(𝑖,𝑗) 𝑗𝑖 (9)
3. Energia măsoară uniformitatea locală a nivelelor de gri. Când pixelii sunt similari , aceasta
are o valoare mare , iar imaginea are o textură omogenă. Se calculează conform formulei:
𝑓3=∑∑𝑝𝑑2
𝑗𝑖 (i,j) (10)
4. Omogenitatea măsoară asemănările pixelilor, cât de aproape se află dist ribuția
eleme ntelor din matricile de co -ocurență a nivel elor de gri de diagonala matricilor . Pe
măsură ce omogenitatea creste co ntrastul scade. Se calculează cu ajutorul formulei
următoare:
𝑓4=∑∑1
1+(𝑖−𝑗)2 𝑗𝑖 𝑝𝑑(𝑖,𝑗) (11)
5. Entropia este o măsură a gradului de dezordine din imagine . Aceasta are valoarea cea mai
mare când toate elementele matric ilor de co -ocurență sunt identice . Dacă elementele sunt
inegale entropia are valoare mică. Se calc ulează conform formulei:
𝑓5=−∑∑𝑝𝑑(𝑖,𝑗)∗𝑙𝑛 𝑗𝑖 𝑝𝑑(𝑖,𝑗) (12)
6. Varia nța:
𝑓6=∑∑(𝑖−𝜇)2
𝑗𝑖 ∗𝑝𝑑(𝑖,𝑗) (13)
15
7. Suma medie:
𝑓7=∑ 𝑖∗𝑝𝑥+𝑦 (𝑖) 𝑖=2 (14)
unde x și y sunt coordonatele unei intrări în matricea de co -ocurență, 𝑝𝑥+𝑦(𝑖) este
probabilitatea apariției coordonatelor 𝑥 și y adunate în matrice .
8. Varia nța sumei:
𝑓8=∑ (𝑖−𝑓9)2∗𝑝𝑥+𝑦(𝑖) 𝑖=2 (15)
9. Entropia sumei:
𝑓9=−∑ 𝑝𝑥+𝑦 𝑖=2 (𝑖)∗𝑙𝑜𝑔 {𝑝𝑥+𝑦(𝑖)} (16)
10. Diferența varianțe i:
𝑓10=∑𝑖2
𝑖∗𝑝𝑥+𝑦(𝑖) (17)
11. Diferența entropiei :
𝑓11=−∑ 𝑝𝑥−𝑦 𝑖=0 (𝑖)∗𝑙𝑜𝑔 {𝑝𝑥−𝑦(𝑖)} (18)
12. Informații despre măsurarea corelației 1 :
𝑓12=𝐻𝑋𝑌 −𝐻𝑋𝑌 1
𝑀𝐴𝑋 {𝐻𝑋,𝐻𝑌} (19)
unde 𝐻𝑋 și 𝐻𝑌 sunt entropiile lu i 𝑝𝑥 și 𝑝𝑦, iar
𝐻𝑋𝑌 =−∑∑𝑝(𝑖,𝑗)∗𝑙𝑜𝑔(𝑝(𝑖,𝑗)) 𝑗𝑖
𝐻𝑋𝑌 1=−∑∑𝑝(𝑖,𝑗)∗𝑙𝑜𝑔 {𝑝𝑥(𝑖)∗𝑝𝑦(𝑗)} 𝑗𝑖 (20)
13. Informații despre măsurarea corelației 2 :
𝑓13=(1−𝑒𝑥𝑝[−2(𝐻𝑋𝑌 2−𝐻𝑋𝑌 )])1/2 (21)
unde
𝐻𝑋𝑌 2=−∑∑𝑝𝑥(𝑖)∗𝑝𝑦(𝑗)∗𝑙𝑜𝑔(𝑝𝑥𝑝(𝑖)𝑝𝑦(𝑗)) 𝑗𝑖 (22)
14. Coeficientul de corelație maxim :
𝑓14=𝑄(𝑖,𝑗)=∑𝑝(𝑖,𝑘)∗𝑝(𝑗,𝑘)
𝑝𝑥(𝑖)𝑝𝑦(𝑘)𝑘 (23)
Dintre cele 14 caracteristici, Energia, Contrastul, Entropia, Omogenitatea și Corelația sunt
cele mai folosite în extragerea informației despre texturile unei imagini. Din cauza tipurilor
diferite de texturi, caracteristicile sunt strâns legate una de alta. De exemplu energia generată de
nivelele de gri din matricea de co -ocurență este cunosctă ca omogenitate, iar variația este o
măsură a contrastului în imagine [21]. Folosirea mai multor caracteristici și co mbinarea lor, cresc
șansele de a obtine rezultate mai bune . În cazul folosirii unei singur e caracteristici există
16
posibilitatea unor rezultate slabe . Aceste caracteristici calcul ate pe baza matricilor de co -ocurență
pot fi aplicate pe diferite tipuri de imagini.
După calcularea matricilor de co -ocurență și extragerea caracteristicilor, pentru indexarea
imaginilor și găsirea celor mai apropiate imaginii de o imagine interoga tă se foloseste distanța
euclidiană .
2.4 Distanța Euclidiană
Fie doi vectori x=[x 1, x2,…..,x n] și y=[y 1,y2,…..,y n] cu n elemente. Fiecare element din cei doi
vectori reprezintă descriptorii lui Haralick [19] , calculați pentru două imagini diferite . Distanța
Euclidiană dintre cele două imagini se calculează ca și distanța Euclidiană dintre decriptorii
conținuți de vectorii x și y. Aceasta se calculează făcând radical din suma diferențelor la pătrat a
descriptori lor conținuți de cei doi vectori [22].
𝑑𝐸(𝑥,𝑦)=√(𝑥1−𝑦1)2+(𝑥2−𝑦2)2+⋯+(𝑥𝑛−𝑦𝑛)2 (24)
17
3. Implementarea soluției adoptate
Metoda implementată în această lucrare poate fi împarțită în 4 etape: construirea bazei de
date, calculul matricelor de co -ocurență, calcul descriptori lor lui Haralick și indexarea
imaginilor. Metoda a fost implementată folosind limbajul de programare Matlab. Schema din
figura 12 conține legătura dintre etape , urmând în cele ce urmează a fi explicate .
Figura 12. Etapele principale și legătura dintre ele
3.1 Construirea bazei de date
Pentru testarea metodei de indexare este folosită o bază de date creată de MIT Media Lab,
denumită VisTex [26]. Aceasta conține o colecție de 40 de imagini cu texturi diferite.
Cele 40 de imagini cu texturi diferite din baza de date VisTex sunt împărțit e, fiecare imagine
în câte 64 de subimagini, pentru a obține 40 de clase de texturi . Fiecare textură reprez intă o clasă,
iar fiecare clasă conține 64 de imagini . Rezultă o bază de date cu 2560 de imagini. Scopul
împărțirii acestor imagini în mai multe subimagini este de a avea mai multe clase , ce conțin e
fiecare un număr de imagini . După indexare, fiecărei imagini îi este atribuită o imagine care face
parte din aceeași clasă cu imaginea interogată. Modul d e creare a subimaginilor este următorul:
folder = fullfile( 'D:\Licenta\Proba\VisTex');
Name = { 'D001', 'D002', 'D003', 'D004', 'D005', 'D006', 'D007', 'D008',
'D009', 'D010', 'D011', 'D012', 'D013', 'D014', 'D015', 'D016', 'D017',
'D018', 'D019', 'D020', 'D021', 'D022', 'D023', 'D024', 'D025', 'D026',
'D027', 'D028', 'D029','D030', 'D031', 'D032', 'D033', 'D034', 'D035', 'D036',
'D037', 'D038', 'D039', 'D040'};
for i= 1:40;
baseFileName=[Name{i}, '.ppm'];
c=0;
fullFileName = fullfile(folder, baseFileName);
if ~exist(fullFileName, 'file')
fullFileName = baseFileName;
if ~exist(fullFileName, 'file')
errorMessage = sprintf( 'Error: %s does not exist.' , fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
18
Variabil a folder conține calea spre locația fișierului cu ce le 40 de imagini cu texturi . Cu
ajutorul funcți ei fullfile se obține calea spre locația fisierul ui. Funcți a construiește calea s pre
locația fisierului din directoarele și fisierele specificate. Name conține numele tuturor imaginilor
din fisierul respectiv . baseFileName include numele tuturor imaginilor cu extensia lor, .ppm în
acest caz . fullFileName conține calea spre locația imaginilor cu numele si extensia acestora . Se
parcurge întreg fisierul, imagine cu imagine . Variabila c conto rizeaza numărul de subimagini
pentru fiecare imagine parcursă, 64 pentru fiecare. Se citește pe rând câte o imagine cu ajutorul
funcți ei imread . Pentru a găsi dimensiunea imagini lor se folosește funcția size.
Image = imread(fullFileName);
[rows columns] = size(Image);
blockSizeR = 64;
blockSizeC = 64;
wholeBlockRows = floor(rows / blockSizeR);
wholeBlockCols = floor(columns / blockSizeC);
for row = 1 : blockSizeR : rows
for col = 1 : blockSizeC : columns
c=c+1;
row1 = row;
row2 = row1 + blockSizeR – 1;
col1 = col;
col2 = col1 + blockSizeC – 1;
oneBlock = Image(row1:row2, col1:col2);
nume_img=[Name{i}, '_', num2str(c), '.ppm'];
safe_folder=[ 'D:\Licenta\Proba\Newfolder \',nume_img];
imwrite(oneBlock, safe_folder);
end
end
end
După aflarea di mensiunii imaginilor se setează dime nsiunil e subimaginilor . O subimagine
are dimensiune a de 64×64. Variabilele wholeBlockRows și wholeBlockCols cu ajutorul funcț iei
floor obțin numărul total de subimagini egale ca dimensiune din fiecare imagine. O imagine este
împarțită în 64 de su bimagini. Funcția floor rotunjește fiecare element la cel mai apropiat număr
întreg mai mic sau egal cu acel element . După setarea dimensiunii subimaginilor și aflarea
numărului de părți egale în care este împărțită fiecare imagine, se creaza subimaginil e.
Se parcurge fiecare imagine pe linii și coloane pan ă la dime nsiunea specificată subimaginilor .
blockSizeR și blockSizeC indic ă aceste valori, 64 . La atinge rea valori lor se extrage subimaginea
respectivă . Variabila c contoriz ează fiecare subimagine extrasă, procesul continu ă până sunt
extra se toate subimaginile.
Subimagin ile extras e sunt cosiderat e ca o imagine având dimesiunile specificate . Le sunt
atribui te numele imaginii din care a fost extrasă, un număr pentru a fi deosebit e una de celelalte,
și extensia imagini. Variabila nume_img realizează atribuirea acestora imaginilor cu ajutorul
funcțiilor Name{i} și num2str(c) . Name{i} , atribuie numele imaginilor din care sunt extrase
subimaginile . num2str(c) , atribu ie subimagini i numărul contorizat de variabila c în momentul
extragerii subimaginii respective . Acest num ăr încep e de la 1 până la 64 . Fiecare subimagine are
extensia .ppm . Un exemplu de nume a subimaginilor sunt D001_01.ppm, D028_56.ppm.
Fiecare subimagine extrasă este salvată într -un fișier numit Newfolder . Variabila safe_folder
conține calea spre locația fisierului . Cu ajutorul funcției imwrite se salvează noile imagini în
fișierul respectiv rezultând noua baze d e date folosită pentru calculul matricilor de co -ocurență.
3.2 Calcul matrici lor de co -ocurență
Matricile de co -ocurență se calculează pentru fiecare imagine din noua bază de date creată.
Variabila Poze conține locația fișierului cu imaginile asupra cărora se calculează matricile. Se
parcurge întrega bază de date, imagine cu imagine . Variabila filena me conțin ând, pe rând, numele
tuturor imaginilor.
19
Matricile de co -ocurență se pot calcula doar pe imagini pe nivele de gri. Deoarece toate
imaginile sunt color, acestea trebuie modificate în imagini ce conțin nivele de gri . Variabila U cu
ajutorul funcți ei imread citește pe rând fiecare imagine , variabila Igray cu ajutorul funcți ei
rgb2gray modifică toate aceste imagini în imagini pe nivele de gri .
Poze = dir( 'E:\Licenta\Proba\Newfolder \*.ppm');
for v= 1 : length(Poze)
filename = strcat( 'E:\Licenta\Proba\Newfolder \',Poze(v).name);
U = imread(filename);
Igray=double(rgb2gray(U));
I_dif=(32 -1)/(256-1);
I=round(I_dif*Igray);
Pentru rezultate mai bune numărul nivelelor de gri din imagini este redus de la 256 la 32 .
Acest proces se numeste cuantizare și este prezentat in cele ce urmează. Variabila I_dif conține
raportul dintre numărul de nivele dorit, 32, scăzut cu 1 deoarece nivelele sunt numerotate
începând de la 0 și numărul de nivele existente în im agini, 256, având valori de la 0 la 255.
Varibila I este egală cu produl dintre I_dif , care conține raportul dintre nivelul dorit și cel existent
și Igray , care con ține valorile imagini pe nivele de gri. Prin raportul celor două se obțin noile
valori ale pixelilor . Acestea a u 32 nivele de gri cu valori cuprinse între 0 și 31. Pentru a lucra cu
numere întregi și nu cu numere fracționare se folosește funcția round pentru a rotunj i fiecare
element la cel mai apropiat număr întreg .
După modificarea imaginilor în imagini pe nivele de gri și reducerea nivelelor de gri se
calcul ează matric ile de co -ocurență pentru fiecare imagine din baza de date.
Primul calcul este pentru matrice a de 00. Se crează o matrice de zerouri GLCM0 , de
dimensiune 32×32, 32 este numărul nivelele de gri din imagini, cu valori între 0 și 31 . Matricea
urmeză să fie completată cu numărul de apariții a perechilor de pixeli din imagini.
Variabilele m și n cu ajutorul funcției size obțin dimesiunea imaginil or. Se parcurge fiecare
imagine . Cu i se parcurge pe linii de pe poziția doi până la m-1, m este dimesiunea maximă a
imaginilor pe linie. Nu se iau în considerare elementele de pe prima și ultima linie. Cu j se
parcurg imaginile pe coloane de pe poziția do i pâna la n-1, n este poziția maximă a imaginilor pe
coloane . Nu se iau în considerare elementele de pe prima și ultima coloană.
GLCM0= zeros(32, 32);
[m, n]= size(I);
for i=2:m-1
for j=2:n-1
GLCM0(I(i,j)+1, I(i,j+1)+1)=GLCM0(I(i, j)+1, I(i, j+1)+1)+1;
GLCM0(I(i,j)+1, I(i,j -1)+1)=GLCM0(I(i, j)+1, I(i, j -1)+1)+1;
end
end
Se calculează numărul de apariții a fiecărei perechi de pixeli din imagine . Pentru matricea
corespunzătoare orientării de 00, pixelii sunt comparați pe ori zontală . I(i, j) reprez intă
coordonatele unui pixel . I(i, j+1 ) coordonatele pixelului vecin din dreapta , I(i, j-1) pe ce le ale
pixelului din stânga . Un exemplu de coordonate este prezentat în figura 1 3, distanța dintre pixeli
est de o poziție , 𝑑=1. Numărul de apariții a fiecărei perechi de pixeli din imagine este trecut în
matricea GLCM0 .
Această secvență de cod se repetă până ce este calculată și completată matricea GLCM0 cu
numărul de apariții a perechi lor de pixeli din imagine. Procesul se repetă pentru toate imaginile
din baza de date. După calculul matrice i pe direcția de analiză de 00 pentru o imagine, aceasta
este salvată într -o variabilă de tip cell numită glcm0 . Variabila conține un număr de celule egal cu
numărul total de imagini din baza de date. numfiles cu ajutorul funcției length ne dă numărul total
de imagini. Matricile calcul ate sunt salvat e în una din celulele din variabila respectivă. Prima
celulă conține matricea calculată pentru prima imagine. A doua celulă pe cea calculată pentru a
doua imagine. Ultima celulă conține matricea calculată pentru ultima imagine. V-ul dintre
acoladele variabilei glcm{v} reprezintă numărul imaginii pentru care este calculată matricea.
Indică astfel și numărul celului în care este salvată matricea calculată.
numFiles = length(Poze);
20
glcm0 = cell(1,numFiles);
glcm0{v} = GLCM0;
Figura 13. Coordonate ale pixelilor dintr -o imagine în calculul matricelor de co -ocurență
pentru direcția de analiză de 00.
Calculul matricilor pe direcția de 900. Se declară o matrice de zerouri GLCM90 de dimesiune
32×32 , care urmeză a fi completată cu n umărul de apariții a perechilor de pixeli. Se parcurge
fiecare imagine pe linii și coloane . cu i pentru linie și j pentru coloană, în același mod precum la
matricea GLCM0 .
GLCM90= zeros(32, 32);
for i=2:m-1
for j=2:n-1
GLCM90(I(i, j)+1, I(i+1, j)+1)=GLCM90(I(i, j)+1, I(i+1, j)+1)+1;
GLCM90(I(i, j)+1, I(i -1, j)+1)=GLCM90(I(i, j)+1, I(i -1, j)+1)+1;
end
end
Calculul aparițiilor fiecărei perechi de pixeli din imagini e fiind următorul: I(i, j) reprez intă
coordonatele unui pixel . I(i+1, j) coordonatele pixelului vecin de sub pixelul respectiv, iar
I(i-1, j) coordonatele pixelului vecin de deasupra acelui pixel , precum în figura 14 . Distanța
dintre pixeli este 𝑑=1. După parcurgerea imaginii pentru căutarea numărului de apariții a
fiecărei perechi de pixeli , se completează matricea GLCM90 cu numărul total de apariții a
perechilor găsite .
Secvența de cod se repetă până când întreaga matrice GLCM90 este completată. La fe l se
calculează matricea și pentru restul imaginilor. După ce matricea pentru o imagine este calculată
aceasta este salvată în variabia de tip cell glcm90, în celula corespunzătoare imaginii pentru care
a fost calculată, procedeul este la fel pentru fiecar e matrice calculată.
glcm90 = cell(1,numFiles);
glcm90{v} = GLCM90;
21
Figura 14. Coordonate ale pixelilor dintr -o imagine în calculul matricelor de co -ocurență
pentru direcția de analiză de 900.
Pentru matricile calculate pe direcția de 450, procedeul este același. Se crează o matrice
GLCM45 de zerouri de dimensiune 32×32 ce urmează a fi completată . Se parcurge fiecare
imagine, pe linii și coloane .
GLCM45= zeros(32, 32);
for i=2:m-1
for j=2:n-1
GLCM45(I(i, j)+1, I(i -1, j+1)+1)=GLCM45(I(i, j)+1, I(i -1, j+1)+1)+1;
GLCM45(I(i, j)+1, I(i+1, j -1)+1)=GLCM45(I(i, j)+1, I(i+1, j -1)+1)+1;
end
end
Calculul matricilor se face pe diagonală . I(i, j) reprezintă coordonatele unui pixel din imagine .
I(i-1, j+1) coordonatele pixelului aflat pe linia de sub poziția pixelului de referință și deplasat cu
o poziție spre stănga . I(i+1, j -1) coordonatele pixelului situat pe linia de deasupra poziției
pixelului de referință, deplasat spre dreapta cu o poziție . Un exemplu este prezentat în figura 15 .
Figura 15.Coordonate ale pixelilor dintr -o imagine în calculul matricelor de co -ocurență
pentru direcția de analiză de 450.
22
Secvența de cod se repetă până când numărul de apariții a fiecărei perechi de pixeli este
calculat și matricea este completat ă. Rezultatele sunt salvat e în variabila glcm45 , în celula
destinată imaginii pentru care care a fost calculată .
glcm45 = cell(1,numFiles);
glcm45{v} = GLCM45;
Ultima matrice calculată este pentru direcția de analiză de 1350. Modul de calcul este precum
la celelate matrici . Se declară o matrice de zerouri GLCM135 de dimensiune 32×32, imagin ile
sunt parcurse pe linii și coloane.
GLCM135= zeros(32, 32);
for i=2:m-1
for j=2:n-1
GLCM135(I(i, j)+1, I(i+1, j+1)+1)=GLCM135(I(i, j)+1, I(i+1, j+1)+1)+1;
GLCM135(I(i, j)+1, I(i -1, j-1)+1)=GLCM135(I(i, j)+1, I(i -1, j-1)+1)+1;
end
end
Numărul de apariții a perechilor de pixeli se calculează pe diagonală precum la matricea
GLCM45 , dar diferă pozițiile pixelilor vecini față de modul de calcul pentru matricea de 450.
I(i, j) reprezintă coordonatele pixelului de referință . I(i+1, j+1) poziția pixelului aflat pe linia de
sub pixelul de referința, deplasat cu o poziție spre dreapta față de pixelul de referință . I(i-1, j-1)
este coordonatele pixelului situat deasupra poziției pixelului de referință deplasat cu o poziție
spre stânga față de acesta . Un exemplu este prezentat în figura 16 .
Figura 16.Coordonate ale pixelilor dintr -o imagine în calculul matricelor de co -ocurență
pentru direcția de analiză de 1350.
Secvența de cod se repetă până matric ea GLCM135 este completată cu numărul aparițiilor
din imagine a fiecărei perechi de pixeli . Rezultatele sunt salvat e în variabila de tip cell glcm135
în celula destinată imaginii pentru care a fost calculată . Modul de calcul pentru restul maginilor
este ac elași, se calculeze matrice a și rezultatele sunt salvate în variabila glcm135 .
Glcm135 = cell(1,numFiles);
glcm135{v} = GLCM135;
După calculul matricilor de co -ocurență pentru toate imaginile, urmează calculul
descriptorilor pe baza acest or matrici.
3.3 Calcul caracteristicilor
Înainte de a începe calculul caracteristicilor, sau descriptorilor, matricile de co -ocurență
trebuie normalizate . Normalizarea se face prin prin împărțirea numărului de apariții a fiecărei
perechi din matrice la numă rul total de apariții a tuturor perechilor din matrice. Normalizare a
23
matricilor se face folosind funcția bsxfun pentru a împărți fiecare element al unei matrici cu suma
tuturor elementelor din matrice. Aceasta se face pentru ficare matrice în parte, variab ilele p0, p90,
p45 și p135 reprez intă matricile normalizate și direcțiile lor de analiză.
p0 = bsxfun(@rdivide,GLCM0,sum(sum(GLCM0,1),2));
p90 = bsxfun(@rdivide,GLCM90,sum(sum(GLCM90,1),2));
p45 = bsxfun(@rdivide,GLCM45,sum(sum(GLCM45,1),2));
p135 = bsxfun(@rdivide,GLCM135,sum(sum(GLCM135,1),2));
După realizarea normalizar ii se trece la calculul descriptorilor. Primul descriptor calculat este
entropia. Aceasta se calculează conform relației (12) . Pentru a putea calcula logaritmul,
elemen tele matricilor trebuie sa fie pozitive . Cu entropy0 am notat entropia calculată pentru
matricile de co -ocurentă de 00, entropy90 pentru matricile pe direcția de 900, entropy45 pentru
cele calculate pe direcția de 450, iar entropy135 pentru cele pe direcți a de 1350.
entropy0 = -sum(p0(p0>0).*log2(p0(p0>0)));
entropy90 = -sum(p90(p90>0).*log2(p90(p90>0)));
entropy45 = -sum(p45(p45>0).*log2(p45(p45>0)));
entropy135 = -sum(p135(p135>0).*log2(p135(p135>0)));
Entropiile tuturor imaginilor pentru toate cele 4 direcții de analiză sunt salvate în variabile de
tip cell. Fiecare entropie calculată pentru matrici de o anumită direcție este salvată în variabila
corespunzătoare direc ției respective, și în celula corspunzătoare imaginii pentru care a fost
calculată.
Entropy0 = cell(1,numFiles);
Entropy90 = cell(1,numFiles);
Entropy45 = cell(1,numFiles);
Entropy135 = cell(1,numFiles);
Entropy0{v} = entropy0;
Entropy90{v} = entropy90;
Entropy45{v} = entropy45;
Entropy135{v} = entropy135;
Pentru a dezvolta un algoritm care nu este influențat de orientarea texturilor se calculează
media e ntropiilor obținute pentru cele 4 direcții. Rezultatul pentru fiecare imagine este salvat în
variabila de tip cell Entropymed , în celula corespunzătoare imaginii p entru care a fost calculată.
Entropymed = cell(1,numFiles);
Entropymed{v} =(Entropy0 {v}+Entropy90{v}+Entropy45{v}+Entropy135{v})/4;
Un alt descriptor calculat este energia. Aceasta se calculează implementând relația (10) .
Formula este aplicată de patru ori, pentru fiecare matrice . Variabilele energy0 , energy90 ,
energy45 și energy135 reprezintă energiile calculate pe baza matricilor de co -ocurență pe cele
patru direcți de analiză .
energy0 = sum( sum( p0.^2 ) );
energy90 = sum( sum( p90.^2 ) );
energy45 = sum( sum( p45.^2 ) );
energy135 = sum( sum( p135.^2 ) );
După calcularea energiei pentru toate cele patru matrici , rezultatele sunt salvat e în variabilele
specifice fiecăreia.
Energy0 = cell(1,numFiles);
Energy90 = cell(1,numFiles);
Energy45 = cell(1,numFiles);
Energy135 = cell(1,numFile s)
Energy0{v} = energy0;
Energy90{v} = energy90;
Energy45{v} = energy45;
Energy135{v} = energy135;
Se calculează media energiei celor patru matrici, pentru fiecare imagine , rezultatele obținute
sunt salvate în variabila Energymed .
Energymed = cell(1,numFiles);
Energymed{v} = (Energy0{v}+Energy90{v}+Energy45{v}+Energy135{v})/4;
Un alt descriptor calculat este contrastul. Calculul acestuia se face conform relației (7).
Valorile rezultate pentru fiecare m atrice sunt salvate în variabil ele Contrast0 , Contrast90 ,
24
Contrast45 și Contrast135 , fiecare în variabila corespunzătoare direcției pentru care a fost
calculată matricea .
contrast0=sum(sum(aux));
Contrast0{v} = contrast0;
contrast45=sum(sum(aux));
Contrast45{v} = contrast45;
contrast90= sum(sum(aux));
Contrast90{v} = contrast90;
contrast135=sum(sum(aux));
Contrast135{v} = contrast135;
Se calculează valoarea medie a contrastului din cele patru matric i rezultate pentru fiecare
imagin e. Fiecare valoare rezultată este salvat ă în variabila Contrastmed .
Contrastmed{v} = (Contrast0{v}+Contrast90{v}+Contrast45{v}+Contrast135{v})/4;
Alt decriptor este om ogenitatea. Calculul ei se face conform relației (11) . Fiecare rezultat este
salvat în variabilele Homogeneity0 , Homogeneity90 , Homogeneity45 și Homogeneity135 .
Homogeneity0=sum(sum(aux));
Homogeneity0{v} = homogeneity0;
Homogeneity90=sum(sum(aux));
Homogeneity90{v} = homogeneity90;
Homogeneity45=sum(sum(aux));
Homogeneity45{v} = homogeneity45;
homogeneity135=sum(sum(aux));
Homogeneity135{v} = homogeneity135;
Se face o medie a omogenită ții pentru fiecare imagine . Rezultatele sunt salvate în variabila
Homogeneitymed .
Homogeneitymed{v}=(Homogeneity0{v}+Homogeneity45{v}+Homogeneity90{v}
+Homogeneity 135{v})/4;
Ultimul descriptor calculat este corelația. Calcul ul acesteia se face conform relației (8).
Rezulta tele sunt salvate în variabilele de tip cell Correlation specifice fiecărei direcții de analiză
pentru care au fost calculate matricile si din care au rezultat valorile corelației.
correlation0=sum(sum(aux));
Correlation0{v}=correlation0;
Se calculează mediea corelației pentru fiecare imagine . Valorile rezultate sunt salvate în
variabila Correlaționmed .
Correlationmed{v}=(Correlation0{v}+Correlation45{v}+Correlation90{v}+Correlati
on135{v})/4;
După calculul valorilor medii ale acestor descriptori, toate valorile lor sunt salvate în
variabila Descriptori . Aceasta conține în fiecare celulă câte cinci valori, fiecare valoare reprez intă
valoarea unuia din cei cinci descriptori calculați pentru o imagine. O celulă conține descriptorii
unei imagini.
Descriptori{v} = [Energymed{v}; Entropymed{v}; Contrastmed{v};
Homogeneitymed{v}; Correlationmed{v}];
Pe baza descr iptorilor calculați urmează indexarea imaginilor.
3.4 Indexarea imaginilor
Imaginile sunt indexate pe baza distanț ei Euclidi ene, cu ajutorul căreia calculăm distanța
dintre fiecare imagine . După indexar e, fiecărei imagin i îi rezult ă imaginea cu distanța E uclidiană
cea mai apropiată de imagin ea respectiv ă. Declarăm o matrice de zerouri, numită matrice_dist ,
având ca dimensiune numărul total de imagini din baza de date, 2560×2560 . După calculul
distantei Euclidiene dintre imagini , matricea este completată cu distanțele respective. Distanța
euclidiană se calculează folosind descriptorii fiecărei imagini calculați anterior.
Se parcurge baza de date pentru a calcula distanța Euclidiană folosind două bucle for. În
cadrul primei bucle for se ia o ima gine, cu descriptorii calculați imaginii respective , desc_o
conține descriptori i fiecărei imagini . A doua buclă ia pe rand fiecare imagine din baza de date ,
desc_p conține descriptorii acestora, pentru a calcula distanța dintre acest a și fiecare imagine .
25
După calcularea distanț ei dintre o imagine și toate celelalte, se trece la următoarea imagine și se
calculează distanța dintre aceasta și toate imaginile . Procesul continuă pană se calculează
distanța dintre toate imaginile.
matrice_dist= zeros(2560, 256 0);
for o=1:length(Poze);
desc_o=[Energymed{o} Entropymed{o} Contrastmed{o} Homogeneitymed{o}
Correlationmed{o}];
for p=1:length(Poze);
desc_p=[Energymed{p} Entropymed{p} Contrastmed{p} Homogeneitymed{p}
Correlationmed{p}];
Pentru a evita după clasificare , imaginilor să le fie atribuit ă ca imagine , propria imagine, distanța
Euclidiană dintre aceleași imagini este zero , aceasta este înlocuită cu NaN, not a number . Astfel
acestea nu se iau în considerare evitând ca o imagin e sa aibă atribuită propria imagine.
if o==p
matrice_dist(o,p)=NaN;
Se trece la calculul distanței . Se calcul ează folosind funcția norm , care returnează distanța
euclidiană dintre două imagini. Aceasta calculează distanța dintre descriptorii unei imagini,
notată cu desc_o , și descriptorii altei imagini notata cu desc_p , facând radical din diferența
acestora la pătrat.
matrice_dist(o,p)=norm(desc_o -desc_p);
Se crează un vector care conțin e imaginea cu distanța cea mai apropiată de fiecare imagine.
Vectorul valoare conține valoarea imaginii cu distanța cea mai apropiată de fiecare imagine .
Vectorul index conține numărul imaginii respective.
[valore, index] = min(matrice_dist,[],2);
După calcula rea distanțel or dintre imagini, se grupează imaginile în clasele de care aparțin . Cele
40 de imagini cu texturi care compun baza de date folosită sunt împărțite fiecare în câte 64 de
imagini rezultând noua bază de date . Imaginile sunt denumite și ordonate în ordinea în care au
fost create . Primele 64 de imagini aparțin primei imagini din care au rezultat . Următoarele 64
aparțin celei de a doua imagini , etc. Se crează cele 40 de clase, fiecare clasă având c âte 64 de
imagini.
Se declară variabilele nr_imagini_clasă care conține numărul de imagini din fiecare clasă, 64
și variabila nr_clase care conține numărul de clase, 40. Variabila etichete_corecte cu ajutorul
funcției repmat , care returnează o matrice , conține pe fiecare coloană numărul clasei . Clasele
sunt nume rotate de la 1 pană la 40 pe fiecare linie, sunt 64 de linii, imaginile numerotate cu
numărul clasei din care fac parte . Se obține o matrice de dimensiune 64×40, 40 de coloane
numerotate de la 1 la 40 și 64 de linii, unde fiecare linie conține numărul clas ei din care face parte
o imagine. La clasificarea imaginilor este nevoie de un vector care să conțină clasele cu imaginile
care fac parte din ele și nu o matrice . Se crează un vector coloană numit etichete_corecte_final , în
care primele 64 de elemente repr ezintă imaginile din prima clasă, fiind notate toate cu 1 .
Următoarele 64 de imagini notate cu 2, f ac parte din a doua clasă . Procedeul este același pentru
toate clasele .
nr_imagini_clasa=64;
nr_clase=40;
etichete_corecte=repmat(1:nr_clase,[nr_imagini_clasa, 1]);
etichete_corecte_final = etichete_corecte(:);
Dupa forma rea clasel or cu imaginile grupate pe clase, se dorește aflarea clasei din care
aparțin imaginile rezultate cu distanța cea mai apropiată de f iecare imagine. Se crează o var iabilă
index_copie care copiază din variabila index numărul imaginilor cu distanța cea mai mică de
fiecare imagine. Se folosește un contor pentru a numerota imaginile cu numărul clasei din care
fac parte, inițial are valoarea 0. Se parcurge baza de date, începând de la 1 din 64 în 64, și se iau
pe rând c âte 64 de imagini. Valorile din variabila index_copie sunt redenumite cu numărul clasei
din care fac parte . Dacă imaginile sunt numerotate între 1 și 64 sunt redenum ite cu 1, contorul
fiind egal cu 1 la prima parcurgere . Dacă au un număr între 65 și 128 sunt redenumite cu 2,
contorul este egal cu 2 după a doua parcurgere . Procesul este același și se continuă până când
26
toate numerele imaginilor sunt înlocuite cu numărul clasei din care fac parte . La final rămân doar
numărul clasei din care face parte imaginea cu distața cea mai apropiată de fiecare imagine.
index_copie = index;
contor = 0;
for i=1:64:length(Poze)
contor = contor+1;
index_copie(index_copie>=i & index_copie<i+64)=contor;
end
Pentru clasificarea imaginilor și aflarea procentului de indexare se folosește funcția classperf.
Acasta c ompară rezultatele din etichete_corecte_final care conține clasele cu imaginile
corespunzăt oare fiecărei a, cu cele din index_copie care conține clasa din care face parte imaginea
cu distanța cea mai apropiată de fiecare imagine . Ele sunt transpuse pentru a avea doi vectori linie
care sunt comparați . Rezult ă procentul de indexare corectă a imagin ilor. Prin acesta găsim
procentul în care imagini le cu distanța cea mai mică și imaginile de care sunt atribuite fac parte
din aceeași clasă.
cp = classperf(etichete_corecte_final', index_copie');
cp.CorrectRate*100
După aflarea procentului de indexare se dorește aflarea procentul ului de imagini corect
indexate. Se folosește un contor pentru a înregistra fiecare parcurgere. Se parcurg imaginile din
64 în 64. Se ia fiecare valoare din etichete_corecte_final și index_co pie și se face diferența lor .
variabila diferenț ă este egală cu diferența dintre elementele acestora. Indexarea este corectă dacă
diferența dintre valori este zero. Pentru a găsi numărul de indexări corecte pentru fiecare clasă,
variabila indexare_corectă este egal ă cu suma valorilor de zero dintr -o clasă, calculate în
variabila diferență . Pentru a afla procentul de indexare corectă din fiecare clasă, se folosește
variabila indexare_corecta_procent care este egal ă cu raportul dintre numărul imaginilor index ate
corect din fiecare clasă, aflate în variabila indexare_corectă , și numărul de imagini din fiecare
clasă, totul înmulțit cu 100. Rezultă procentul pentru fiecare clasă în parte.
c=0;
for i=1:64:length(Poze);
c=c+1;
diferenta(:,c)=etichete_corecte_final(i:i+63) -index_copie(i:i+63);
end
indexare_corecta=sum(diferenta==0);
indexare_corecta_procent=(indexare_corecta / nr_imagini_clasa)*100;
Pentru a obține clasa cu procentul cel mai mic de indexare se folosește funcția min pe care o
aplicăm la indexare_corecta_procent . Val_min conține procentul de indexare cel mai mic și
index_min numărul clasei care are procentul respectiv.
[val_min, index_min]=min(indexare_corecta_procent)
Pentru a găsi clasa cu procentul cel mai mare de indexare se aplică funcția max asupra
variabilei indexare_corecta_procent . Ca rezutate val_max conține procentul cel mai mare de
indexare . index_max numărul clasei cu procentul respectiv.
[val_max, index_max]=max(indexare_corecta_procent)
27
4. Rezultate experimentale
În acest capitol vor fi prezentate rezultatele obținute folosind metoda descrisă anterior.
Algoritmul a fost testat pe imaginile din baza VisTex.
Baza de date inițială, folosită de la VisTex conține 40 de imagini cu diferite texturi. Pentru a
putea clasifica imaginile în diferite clase, cele 40 de imagini sunt împărțite în câte 64 de imagini
fiecare . Rezult ă un număr de 40 de clase, fiecare având 64 de imagini . În figura 17 sunt
prezentate imagini din baza de date VisTe x. În figura 18 sunt prezentate o parte din imagini le
rezultate în urma împ ărțirii a cestora în mai multe imagini . Noile imagini sunt imagini pe nivele
de gri pentru a se putea calcula matricile de co -ocuren ță asupra lor . Matricile pot fi aplicate doar
pe imagini pe nivele de gri , nu și pe imagini color . Noua bază de date formată conține 2560 de
imagini, ordonate după clasa din care fac parte.
D001.ppm D002.ppm D003.ppm D004.ppm D005.ppm
D006.ppm D007.ppm D008.ppm D009.ppm D010.ppm
D011.ppm D012.ppm D013.ppm D014.ppm D015.ppm
D016.ppm D017.ppm D018.ppm D019.ppm D020.ppm
D021.ppm D022.ppm D023.ppm D024.ppm D025.ppm
28
D026.ppm D027.ppm D028.ppm D 029.ppm D030.ppm
D031.ppm D032.ppm D033.ppm D034.ppm D035.ppm
D036.ppm D037.ppm D038.ppm D039.ppm D040.ppm
Figura 17. Imagini din baza de date VisTex
a) b) c)
Figura 18. O parte din imaginile rezultate în urma împărțirii imaginilor în subimagini :
a) Subimagini ale imaginii D001 .ppm , b) Subimagini ale imaginii D002 .ppm c) Subimaginii ale
imaginii D003 .ppm
Pentru a obține rezultate mai bune numărul nivelelor de gri din fiecare imagine este redus la
32 de la 256 . Fiecare pixel dintr -o imagine ia valori cuprinse între 0 și 31 . În figura 19 sunt
prezentat e valori ale pixelilor înainte și după reducerea numărului nivelelor de gri pentru
imaginea D001_0 1, acestea au dimensiune prea mare pentru a putea fi prezentate toate valorile
dintr -o imagine.
În cele ce urmează vor fi prezentate rezultatele calculului matricilor de co -ocurență obținute
asupra imagini D001_01.ppm ilustrate in figura 20.
Se calculează matricile de co -ocurență pentru fiecare imagine din baza de date, patru matri ci
pentru fiecare imagine, câte una pentru fiecare din cele patru direcți de analiză. Toate matricile
calculate pentru direcția de analiză de 00 sunt salvate în variabila glcm0 de tip cell care conține
matricea calculată pentru această direcție pentru fiec are imagine. În figura 21 sunt prezentate
valorile din matricea calculată și salvată în variabila glcm0 , pentru imaginea D001_01.ppm, sunt
29
prezentate doar o parte din valorile matricei, acestea având dimesiune prea mare pentru a fi
prezentate toate.
a) b)
Figura 19. O parte din valorile pixelilor înainte și după reducere a numărului nivelelor de gri,
pentru imagin ea D001_0 1.ppm a) inainte de reducere și b) după red ucere numărului nivelelor de
gri.
Figura 20. Imaginea D001_01.ppm
Figura 2 1. O parte din valorile m atrici lor de co -ocurență calculate pe direcția de analiză de 00
pentru imagin ea D001_0 1.ppm
În figura 22 sunt prezentate o parte din valorile matric ei de co -ocurență calculat e pe direcția
de analiză de 450 pentru imagin ea D001_01.ppm și salvate în varaibila glcm4 5.
30
Figura 2 2. O parte din valorile matric ei de co -ocurență calculat ă pentru imagin ea
D001_0 1.ppm pe direcția de analiza de 450
Figura 2 3 conține o parte din valorile matric ei de co -ocurență calculate pe direcția de analiză
de 900 pentru imagin ea D001_01.ppm și salvate in variabila glcm90 .
a) b)
Figura 2 3. O parte din valorile matric ei de co -ocurență calculate pentru imagin ea
D001_0 1.ppm pe direcția de analiza de 900.
Figura 24 prezintă o parte din valorile matric ei calculate pentru imagin ea D001_01.ppm pe
direcția de analiză de 1350 și salvate în variabila glcm135 .
Figura 2 4. O parte din valorile matric ei de co -ocurență calculate pentru imagin ea
D001_0 1.ppm pe direcția de analiză de 1350.
31
Matricile de co -ocurență calculează numărul de apariții a perechilor de pixeli într -o imagine.
În urma rezultatelor obținute se poate observa că în partea de sus toate matricile au valoarea 0.
Rezultă că în imaginea D001_01.ppm, în partea de sus, nu sunt perechi de pixeli de aceeași
valoare vecini . Perechile de pixeli au valori diferite. Asta se datorează și pentru că nu sunt luați în
calcul toți pixeli, cei de pe prima si ultima linie, respectiv de pe prima și ultima coloană nu sunt
luați în calcul
După calculul matricelor de co -ocurență, pe baza acestora se calculează descriptorii,
caracteristicile lui Haralick. Rezultatele obținute pentru calculul omogenității pe baza celor 4
matrici de co -ocurență ale fiecărei imagini sunt prezentate în tabelul 1.
Prima linie conține numărul texturii din care face parte imaginea. A doua linie conține
numele fiecărei imaginii . Pe a treia sunt valorile omogenității calculate pe baza matricil or pe
direcția de 00. Pe a patra linie sunt valorile calculate pe baza matricilor pe direcția de 450. Linia
cinci prezintă valorile calculate pentru matricile pe direcția de 900, iar pe ultima linie pe cele
pentru matricile de 1350. Figura 25 prezinta tex turile și imagin ile menționate în tabelul 1.
Textura 1 2 3 4 5
Imagine D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Homogeneity0 0.4640 0.7246 0.3200 0.3149 0.4848
Homogeneity45 0.3994 0.6367 0.2674 0.2683 0.4349
Homogeneity90 0.5963 0.6700 0.3410 0.3454 0.4803
Homogeneity135 0.4438 0.6060 0.2788 0.3045 0.4341
Tabelul 1. O parte din valorile omogenității .
Textura 1 Textura 2 Textura 3 Textura 4 Textura 5
D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Figura 25. Texturile si imaginile din tabelul 1.
Tabelul 2 conține rezultatele calculelor entropiei pe baza celor patru matrici de co -ocurență
ale fiecărei imagini.
Num ăr textura 1 2 3 4 5
Imagine D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Entropy0 7.4870 5.6259 8.5001 7.9785 5.4391
Entropy45 7.8055 6.1926 8.7222 8.2023 5.5719
Entropy90 6.9316 5.8877 8.3685 7.8636 5.4577
Entropy135 7.5420 6.0101 8.6414 8.0460 5.5665
Tabelul 2. O parte din valorile entropiei .
32
Prima linie conține numărul texturii de care aparține imaginea. A doua numele fiecărei
imaginii . Pe a treia sunt valorile entropiei calculate pe baza matricilor pe direcția de 00. A patra
linie conține valorile calculate pe baza matricilor pe direcția de 450. Pe a cincia linie pe cele
pentru matricile pe direcția de 900,iar pe ultima linie pe cele pentru matricile de 1350. Texturile si
imaginile din tabelul 2 sunt prezentate în figura 25.
Tabelul 3 conține valorile energiei calculate pe baza matricilor de co -ocurență rezultate
pentru fiecare imagine din baza de date. Prima linie conține numărul texturii de care aparține
imaginea. A doua numele fiecărei imaginii. Pe a treia sunt valorile energiei calculate pe baza
matricilor pe direcția de 00. A patra linie conține valorile calculate pe baza matricilor pe direcția
de 450. Pe a cincia linie pe cele pentru matricil e pe direcția de 900, iar pe ultima linie pe cele
pentru matricile de 1350. Texturile si imaginile din tabelul 3 sunt prezentate în figura 25.
Numar Textura 1 2 3 4 5
Imagine D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Energy0 0.0163 0.0098 0.0074 0.0079 0.0076
Energy45 0.0131 0.0076 0.0058 0.0056 0.0052
Energy90 0.0195 0.0118 0.0096 0.0088 0.0087
Energy135 0.0156 0.0087 0.0066 0.0062 0.0065
Tabelul 3. O parte din valorile energiei .
Rezultatele valorilor calculate pentru contrast pe baza matricilor de co -ocurență ale
imaginilor sunt prezentate în tabelul 4.
Numar Textura 1 2 3 4 5
Imagine D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Contrast0 7.5653 8.0710 6.1830 4.6475 4.2624
Contrast45 12.0317 12.9348 10.4667 8.2176 8.9168
Contrast90 3.0159 3.3742 3.3373 3.2599 3.3796
Contrast135 7.9536 8.6911 7.5891 6.8306 5.4707
Tabelul 4. O parte din valorile contrastului .
Prima linie conține numărul texturii de care aparține imaginea. A doua numele fiecărei
imaginii. Pe a treia sunt valorile contrastului calculate pe baza matricilor pe direcția de 00. A
patra linie conține valorile calculate pe baza matricilor pe direcția de 450. Pe a cincia linie pe cele
pentru matricile pe direcția de 900, iar pe ultima linie pe cele pentru matricile de 1350. Texturile si
imaginile din tabelul 3 sunt prezentate în figura 25.
Rezultatele valorilor calculate pentru corelație, rezultate pe baza matricilor de co -ocurenț ă,
sunt prezentate în tabelul 5.
Numar Textura 1 2 3 4 5
Imagine D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Correlation0 0.9197 0.9253 0.9563 0.9344 0.9430
Correlation45 0.8724 0.8802 0.9260 0.8839 0.8809
Correlation90 0.9679 0.9688 0.9764 0.9540 0.9548
Correlation135 0.9256 0.9295 0.9463 0.9036 0.9268
Tabelul 5. Tabelul 11. O parte din valorile corelației .
Prima linie conține numărul texturii de care aparține imaginea. A doua numele fiecărei
imaginii. Pe a treia sunt valorile corelației calculate pe baza matricilor pe direcția de 00. A patra
linie conține valorile calculate pe baza matricilor pe direcția de 450. Pe a cincia linie pe cele
33
pentru matricile pe direcția de 900, iar pe ultima linie pe cele pentru matricile de 1350. Texturile si
imaginile din tabelul 3 sunt prezentate în figura 25.
În urma calculului descriptorilor, se calculează valoarea medie a fiecăruia. Valoarea medie se
calculează prin împărțirea la patru a celor patru valori obținute pentru fiecare de scriptor pentru
fiecare imagine.Acesta sunt salvate toate în variabila descriptori . Tabelul 6 conține valorile medii
ale caracteristicilor calculate pentru fiecare imagine.
Numar Textura 1 2 3 4 5
Imagine D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Energymed 0.0161 0.0295 0.0055 0.0062 0.0300
Entropymed 7.4415 5.9291 8.5580 8.0226 5.5088
Contrastmed 7.6416 1.5183 32.3075 18.1172 3.7495
Homogeneitymed 0.4759 0.6593 0.3018 0.3083 0.4586
Correlationmed 0.9189 0.9629 0.7929 0.6059 0.3592
Tabelul 6. O parte din valorile medii ale descriptorilor calculați pentru fiecare imagine.
După calcularea energie i, emogenit ăți, contrast ului, entropie i si corelație i, pe baza acestora se
dorește clasificarea imaginilor folosind distanța Euclidiană. În urma clasificării imaginilor, în
tabelul 7 sunt prezentate procentele obținute pentru imaginile corect indexate , în funcție de
descriptorii folosiți. Pentru ca clasific area sa fie facută corect, imaginea rezultată trebuie să facă
parte din aceeași clasă cu imaginea interogată. Precentele obținute sunt rezultatul combinării
acestor descriptori pentru a găsi cazul pentru care se obțin cele mai bune rezultate.
Energia Entropia Omogenitatea Contrast Corelația Procente
rezultate
1 x x x x x 57.26%
2 x x x x 49.64%
3 x x x x 62.34%
4 x x x x 55.85%
5 x x x x 55.19%
6 x x x x 57.14%
7 x x x 50.23%
8 x x x 54.37%
9 x x x 59.80%
10 x x x 58.35%
11 x x x 49.33%
12 x x x 50.42%
Tabelul 7. Procentele obținute în urma indexării imaginilor.
Prima coloană din tabel reprezintă numărul încercărilor efectuate pentru a găsi cazul pentru
care se obțin cele mai bune rezultate. Cu x sunt marcați descriptorii folosiți în fiecare caz. Ultima
coloană prezintă procentele rezultate în urma fiecărui caz.
În urma rezultatelor obținute, după cum se poate observa din tabelul 7, cel mai bun procent
rezultat este de 62.34% folosind descriptorii: energie, entropie, omogenitate și corelație.
Procentul cu cea mai mică rată de clasificare este de 49.33% folosind d escriptorii: entropie,
omogenitate și contrast.
Folosind distanța Euclidiană calculată pe baza descriptorilor, dintre imagini, putem găsi
cea mai apropiată imagine de fiecare imagine din baza de date . Tabelul 8 prezintă imaginea
rezultată fiecărei imagini în urma indexării imaginilor . Fiecărei imagini îi este atribuită imagine a
cu distanța euclidiană, cea mai mică, cea mai apropiată de ea.
34
Pe prima linie se află imaginea interogată. A doua linie conține clasa din care face parte
aceasta. Linia trei conține imagin ea rezultat ată cu distanța cea mai apropiată de imagin ea
interogată. Linia patru conține clasa din care face parte imaginea rezultată. Ultima linie conține
valoarea distanței dintre imagini.
Imaginea
interogată D001_01.ppm D002_06.ppm D003_10.ppm D004_20.ppm D005_45.ppm
Clasa din care
face parte
imaginea
interogată 1 2 3 4 5
Imaginea rezultată D036_05.ppm D002_27.ppm D023_30.ppm D004_58.ppm D005_46.ppm
Clasa din care
face parte
imaginea rezultată 36 2 23 4 5
Distanța
Euclidiană dintre
cele două imagini 0.1924 0.1039 0.1020 0.0567 0.1601
Tabelul 8. O parte cu rezultatele finale ale index ării după aflarea clasei din care fac parte
imaginile.
Cu a jutorul rezultatelor obținute anterior putem găsi numărul de imagini corect indexate și
procentul acestora pentru fiecare clasă. Aceste rezultate sunt prezentate în tabelul 9.
Număr clasă Număr Imagini Corect
indexate Procent
Imagini corect indexate
1 21 32.81%
2 41 64.06%
3 8 12.50%
4 14 21.87%
5 41 64.06%
6 51 79.68%
7 59 92.18%
8 40 62.50%
9 51 79.68%
10 22 34.37%
11 34 53.12%
12 45 70.31%
13 22 34.47%
14 46 71.87%
15 48 75%
16 49 76.56%
17 56 87.50%
18 22 34.37%
19 42 65.62%
20 25 39.06%
21 32 50%
22 30 46.87%
23 24 37.50%
24 15 23.43%
25 18 28.12%
35
26 26 40.62%
27 10 15.62%
28 52 81.25%
29 55 85.93%
30 56 87.50%
31 46 71.87%
32 13 20.31%
33 54 84.37%
34 36 56.25%
35 29 45.31%
36 20 31.25%
37 56 87.50%
38 60 93.75%
29 33 51.51%
40 64 100%
Tabelul 9. Rezultatele obținute cu numărul și procentul de imagini corect indexate pentru
fiecare clasă.
Conform rezultatelor din tabelul 9, clasa cu cele mai multe imagini corect indexate este cea
cu numărul 40, având un număr de 64 de imagini cor ect indexate și un procent de 100%. Figura
26 conține imagini cu rezultatele clasificării imaginilor din aceasta clasă. Clasa cu cele mai mici
rezultate este clasa cu numărul 3, cu 8 imagini corect indexate și un procent de 12.5%. Rezultate
din aceasta cla să sunt prezentate în figura 27.
Imagini interogate Imagini rezultate
D040_10.ppm D040_19.ppm
D040_40.ppm D040_24.ppm
D040_58.ppm D040_33.ppm
Figura 26. Rezultate în urma clasificării imaginilor, din clasa 40, cu procentul cel mai mare
de indexare
Imaginile din partea stangă reprezinta imaginile interogate, iar cele din partea dreapta sunt
imaginile rezultate în urma indexării.
36
Imagini interogate Imagini rezultate
D003_05.ppm D023_37.ppm
D003_33.ppm D023_33.ppm
D003_53.ppm D016_ 24.ppm
Figura 27.Rezultate în urma clasificării imaginilor din clasa 3, cu procentul cel mai mic.
Imaginile din stânga reprezintă imaginile interogate iar cele din dreapta, imaginile rezultate
în urma indexării.
Aceste rezultate diferite se datorează te xturilor pe care le conțin imaginile din acest e clase.
Cele din clasa 40 au o textură mai simplă, ușor de identificat, în timp ce textura imaginilor din
clasa 3 este mai complexă, mai greu de diferențiat.
37
Concluzi i
În concluzi i indexarea imaginilor ne ajută foarte mult în găsirea unor imagini asemănatoare
cu cele despre care vrem să cautăm , într -un timp scurt , într-o bază de date mare. Este folosită în
multe domenii, dintre cele mai importante precum medicina pentru a putea desc operi boala de
care suferă uni i pacienți prin compararea imaginilor rezultate cu cele din baza de date , sau în
poliție pentru a putea identifica un infractor, pană la aflarea adreselor poștale sau înțelegerea
hărților.
Este important ă baza de date folosită pentru căutarea imagini lor. O bază de date mai
complexă, în care imaginile seamănă mult între ele și este greu de făcut o diferență, va avea
rezultate obținute mai slabe. Vor rezulta imagini care nu au legătură cu imaginea despre care se
caută imagini simi lare.
La soluția aleasă și implementată în această lucrare se po t aduce îmbunătățiri ulterioare
precum alegerea unei distanțe diferite dintre pixeli în calculul matricilor de co -ocurență , pentru a
găsi o distanță optimă pentru care se obțin cele mai bu ne rezultate. Se pot folosi mai mulți
descriptori, în această lucrare fiind folosiți doar 5 din cei 14: energia, entropia, omogenitatea,
contrast și corelația. Cei despre care în urma cercetărilor efectuate se spune că dau cele mai bune
rezultate. Se poate implementa soluția aleasă pe o bază de date cu texturi care nu sunt complexe .
Ce se pot diferenția ușor între ele, și rezultatele pot fi mai bune decât cele obținute în această
lucrare.
38
Bibliografie
[1] Liu Y., Zhang D., Lu G., Ma W. „A survey of content -based image retrieval with high –
level semantics ”, Pattern Recognition vol. 40, pp 262 – 282. Publi cat de Elsevier Ltd , 2007
[2] Deepak S., Dr. Chavan M.S., „Content Based Image Retrieval: Review ”, International
Journal of Emerg ing Technology and Advanced Engineering Vol. 2, cap. 9, Septemb rie 2012
[3] Eakins J., Graham M., „Content -Based Image Retrieval ”, Education -line database , 1999
[4] Tyagi V., Contend -Based Image Retrieval: Ideas, Influences and Current Trend , Springer
Nature Singapore Pte Ltd. , 2017
[5] Singh M. S. , Hemachandran K., „Content -Based Image Retrieval using Color Mome nt
and Gabor Texture Feature ”, International Journal of Comput er Science Issues , Vol. 9, Cap. 5,
Nr. 1, Septemb rie 2012
[6] Mandelbrot, B. B., The Fractal Geometry of Nature , Freeman, San Francisco, 1983.
[7] Llorente A., Manmatha R., Rüger S., „Image Retrieval using Markov Random Fields and
Global Image Features” , Proceedings of the ACM International Conference on Image and Video
Retrieval , pp. 243 -250, 2010
[8] Partio M, Cramariuc B., Gabbouj M., Visa A.,” Rock Texture Retrieval using Gray Level
Co-occurrence Matrix”, Proc. of 5th Nordic Signal , 2002
[9]Tuceryan M., „Texture Analysis”, The Handbook of Pattern Recognition and
Computer Vision (2nd Edition), pp. 207 -248, 1998
[10] Augusto da Silva Júnior J., Marçal R. E. , Batista M. A. , „Image Retrieval: Importance
and Applications”, X Workshop de Vis˜ao Computacional – WVC ,pp. 311 -315, 2014
[11] Coggins, J. M., “A Framework for Texture Analysis Based on Spatial Filtering,” Ph.D.
Thesis, Computer Science Department, Michigan State University, East Lansing, Michigan,198 2.
[12] Tamura H., Mori S., Yamawaki T. , „Textural Features Corresponding to Visual
Perception”, IEEE Transactions on Systems, Man, and Cybernetics , vol. 8, cap 6, pp. 460 – 473,
1978
[13] Haralick, R.M., “Statistical and Structural Approaches to Texture,” Proceedings of the
IEEE , vol. 67, pp. 786-804, 1979.
[14] Richards, W. and Polit A., “Texture matching,” Kybernetic , vol. 16, pp. 155 -162, 1974.
[15] Urs R. D., „Non -parametric synthesis of volumetric textures from a 2D sample”,
L’Universite Bordeaux 1, Bordeaux, Franța, Martie, 2013
[16] Julesz, B., “Textons, the Elements of Texture Perception, and Their Interactions,”
Nature , vol. 290, pp. 91 -97, 1981.
39
[17] Pietikäinen M., Hadid A., Zhao G., Ahonen T., „Computer Vision Using Local Binary
Patterns ”, Springer, vol. 40, 2011,
[18] Florindo J. B. , Assirati L., Bruno O. M. , „Enhancing texture descriptors by a
neighborhood approach to the non -additive entropy”, Digital Signal Processing 44, pp.14 –25,
2015
[19] Haralick R. M. , Shanmugan K., Its'Hak D . ,”Textural Features for Image Classification”,
Ieee Transactions on Systems , Man, and Cybernetics , volum SMC -3, Nr. 6, N oiembrie 1973
[20] Nourhan Zayed, Heba A. Elnemr, „ Statistical Analysis of Haralick Texture Features to
Discriminate Lung Abnormalities ”, International Journal of Biomedical Imaging ,vol. 2015,
Artic ol ID 267807, pp. 7 , 2015
[21] Kamarasan M. ,”Content Based Color Image Retrieval Based on Statistical Methods
using Multiresolution Features ”, Annamalai University , Tamil Nadu, India, Iunie 2014
[22] Le J., Lu B. , „An adaptive image Euclidean distance”, Pattern Recognition vol. 42, pp.
349 – 357, 2009
[23] Wang T., Pan H., Xie X., Zhang Z., Feng X., „A New Method for Medical Image
Retrieval Based on Markov Random Field”, Springer Nature Singapore Pte Ltd., vol. 727, 2017
[24] Kishore D., Srinivas K . S., Srinivasa C. R., „Content Based Image Retrieval Using Gray
Level Co -occurrence Matrix with SVD and Local Binary Pattern”, International Journal on
Cybernetics & Informatics (IJCI) ,Vol. 5, N r. 4, August 2016
[25] Tamural H., Mori S., Yamawaki T., „Textural features corre sponding to visual
perception”, IEEE Transations on Systems, Man and Cybernetics , Vol. 8, Nr. 6, pp. 460 -473,
1978.
[26] http://vismod.media.mit.edu/vismod/imagery/VisionTexture/vistex.html
[27] Jen-Shin H. , Herng -Yow C. , and Jieh H., „A Digital Museum of Taiwanese
Butterflies ” DL '00 Proceedings of the fifth ACM conference on Digital libraries , pp. 260 -261,
Iunie 2000
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Cuprins ………………………….. ………………………….. ………………………….. ………………………….. …… 1… [623112] (ID: 623112)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
