Documente Academic
Documente Profesional
Documente Cultură
PROIECT DE DISERTATIE
RECUNOASTEREA CONSTRUCTIILOR IN IMAGINI STATICE
COORDONATOR: ABSOLVENT:
S.L. Dr. Ing. Stefan Mocanu Alexandru Costache
BUCURESTI, 2016
CUPRINS
1. Introducere __________________________________________________1
1.1 Motivatia lucrarii
1.2 Solutii deja existente
2. Fundamente teoretice__________________________________________9
2.1 Canny Edge Detector
2.2 Corner Detection
2.3 SIFT
4. Concluzii___________________________________________________47
5. Bibliografie_________________________________________________50
1. Introducere
Prezenta lucrare isi propune sa prezinte, evolutiv, procesul de dezvoltare a unui algoritm
de recunoastere a constructiilor din imagini statice. Algoritmul se va concentra pe identificarea
cladirilor prin prelucrarea unor fisiere tip imagine. Vor fi urmarite atat etapele de documentare
asupra domeniului, cat si etapele de proiectare, implementare si testare a diverselor versiuni ale
algoritmului. Algoritmul va fi construit pe baza modelului matematic ce poate fi extras din
fisierul imagine.
Aceasta lucrare se inscrie in randul proiectelor de cercetare in domeniul Object
Recognition. Am ales acest proiect avand in vedere ca domeniul realitatii augmentate si virtuale,
in cadrul caruia recunoasterea obiectelor este o parte esentiala, este in plina dezvoltare. Desi
metode de identificare si recunoastere a diverselor componente de obiecte sau a obiectelor
propriu-zise din imagini au fost descrise inca din a doua jumatate a anilor 80’, doar recent
tehnologia a permis o cercetare amanuntita in acest domeniu. S-au facut progrese importante in
arii precum recunoasterea faciala, recunoasterea caracterelor scrise sau vedere artificiala. Totusi,
inca nu s-au stabilit solutii universal valabile, standarde in ceea ce priveste recunoasterea
obiectelor de orice tip.
O zona in care s-au propus foarte multe metode de recunoastere este cea a recunoasterii
cladirilor. In cazul fiecarora dintre aceste metode au fost demonstrate avantaje si dezavantaje.
Aceasta numar insemnat de metode, cu un numar mare de abordari ale problemei, se datoreaza
complexitatii imaginilor in care se incearca recunoasterile. Exista metode de recunoastere pentru
care imaginile trebuie capturate in conditii cat mai aproape de ideal (luminozitate buna,
distorsiuni de perspectiva foarte reduse sau inexistente), metode pentru care nu conteaza foarte
mult modul de obtinere a imaginii, insa care pot recunoaste doar obiecte cu forme unicat (asa
numite “landmarks”), metode ce prelucreaza imagini obtinute din satelit sau avion (cu precizie
foarte buna in identificarea cladirilor, insa redusa in recunoasterea lor propriu-zisa).
Algoritmul va analiza imaginile achizitionate de utilizatori cu ajutorul unei camere foto si
va incerca identificarea si recunoasterea cladirilor din respectivele imagini. Pornind de la acest
algoritm se va putea dezvolta o aplicatie de tip ghid turistic virtual.Algoritmul va fi dezvoltat fara
a ma axa indeosebi pe recunoasterea unor constructii, astfel incat acesta va putea fi utilizatsi
pentru a recunoaste o gama mult mai larga de obiecte.
Dezvoltarea algoritmului va trece prin mai multe etape. Din punct de vedere matematic,
imaginile vor fi prelucrate geometric, fiecare pixel reprezentand un punct al planului xOy. Voi
incepe cu comparatii foarte simple (suprapunerea pixelilor), apoi voi adauga calcule din ce in ce
mai complexe care sa ofere indicii tot mai bune spre recunoasterea obiectului cautat.
1
In vederea testarii rezultatelor oferite in diverse etape ale dezvoltarii, voi implementa
algoritmul utilizand cod Java. Rezultatele vor putea fi vizualizate fie numeric, in consola, fie
grafic, prin marcarea obiectului recunoscut in imaginea test.
2
1. Interpretation Trees – sunt folositi arbori de decizie, fiecare nod reprezentand
o pereche de trasaturi, una din imaginea test, una din imaginea de referinta
2. Invariance – sunt extrase trasaturi geometrice invariante la transformarile de
perspectiva, ce apoi sunt folosite in comparatie
3. Scale Invariant Feature Transform (SIFT) – sunt extrase trasaturi cheie ale
imaginilor de referinta si sunt salvate aceste trasaturi in baza de date; sunt
extrase trasaturi cheie ale imaginii test si sunt comparate cu cele din baza de
date alegandu-se cele mai apropiate pe baza distantei euclidiene
- Algoritmi genetici – metode de ultima generatie, ce isi pot construi singure (fara
interventie umana) baza de date si algoritmul de recunoastere pornind de la un set de
imagini.
Pentru a ilustra o parte dintre tehnologiile propuse in problema recunoasterii cladirilor,
am facut o selectie de 9 articole pe care le-am considerat potrivite pentru a ilustra istoria recenta
a domeniului. In continuare, am scris un rezumat al acestora, prezentand teoria din spatele
fiecarei metode, cateva aspecte tehnice si rezultatele obtinute de autori in testarea metodei
propuse.
3
2. Y. Chung – Building Recognition Using Sketch-Based Representations And Spectral
Graph Matching – Univ. Missouri
Articolul propune recunoasterea unei cladiri pe baza a doua imagini cu variatii
foarte mari de perspectiva (distanta si unghi). O astfel de aplicatie poate avea utilizari in
navigarea automata, geo-locatie si auto-etichetare a pozelor. Autorii propun o
reprezentare schematica a elementelor de identificare a cladirilor. Ei s-au concentrat
asupra recunoasterii cladirilor de birouri, care au in structura lor multe pattern-uri
repetitive. Pentru detectie, acestia au folosit algoritmul Multi-Scale Maximally Stable
Extremal Regions (MSER), care extrage componentele structurale majore ale cladirii si le
reprezinta schematic. Corespondenta intre doua imagini este determinata folosind analiza
spectrala.
Conform autorilor, contributiile majore ale articolului sunt: detectia modelelor
structurale majore ale cladirilor, constructia modelelor schematice si extinderea utilizarii
metodelor spectrale de analiza a grafurilor asupra imaginilor cu variatii importante de
perspectiva.
Pentru testare, autorii au folosit doua seturi de date: ZuBuD, care prezinta variatii
foarte mici ale perspectivei intre imagini si Ground-Aerial (GA), care contine poze
capturate la nivelul solului si poze capturate din aer asupra cladirilor. Pentru comparatie,
autorii au implementat si un algoritm Scale Invariant Feature Transform. In cazul bazei
de date GA, algoritmul propriu s-a comportat mai bine decat SIFT.[2]
4
4. Y. Li – Consistent Line Clusters For Building Recognition in CBIR – Univ. Washington
Articolul introduce conceptul de “consistent line cluster” ce este utilizat in
Content Based Image Retrieval (CBIR). Sunt analizate culoarea, orientarea si
caracteristicile spatiale ale segmentelor, cu scopul formarii de grupuri. Analiza relatiilor
dintre grupuri si a relatiilor dintre componentele fiecarui grup este folosita pentru
localizarea si recunoasterea cladirilor in imagini fotografice color.
Autorii se orienteaza spre dezvoltarea unui algoritm de indexare a bazelor de date
cu imagini, pentru a usura cautarea in aceste baze. Pana la aparitia acestui articol, ratele
de succes al unor astfel de algoritmi erau mult mai scazute fata de cautarea prin cuvinte
cheie. Autorii au dezvoltat un sistem ce poate extrage informatii, pattern-uri si concepte
dintr-o imagine, pe care apoi sa le foloseasca pentru a indexa baza de date. Elementul
inovator este generarea de “consistent line clusters” un tip de trasaturi locale, ce suporta
atat interogari bazate pe cuvinte cheie, cat si interogari bazate pe analiza spatiala.
Grupurile sunt create analizand trasaturi de culoare, orientare si spatialitate.
Algoritmul poate fi utilizat pentru doua sarcini: regasire de imagini pe baza de continut si
recunoastere de cladiri in imagini.
Desi algoritmul a obtinut rezultate bune in ceea ce priveste recunoasterea, teste
mai amanuntite au aratat ca acesta este vulnerabill la situatii de tip fals-pozitiv (de
exemplu, identificarea unui autobuz ca fiind un etaj de cladire din cauza numarului mare
de geamuri). Autorii au considerat ca aceste rezultate deschid posibilitatea utilizarii
algoritmului si in recunoasterea obiectelor non-cladire.[4]
5
In cazul recunoasterii de cladiri este folosita o imagine test continand o singura
fatada a cladirii obiect. Sunt calculate punctele de interes si este incercata asocierea
imaginii test la imaginea unei fatade din baza de date. Este ales rezultatul cu cele mai
multe puncte corespondente. Una dintre problemele ce pot aparea consta in identificarea
falsa de puncte de interes care sa apartina altor obiecte (masini, persoane sau alte cladiri)
din imagine. Problema este rezolvata in mare parte de modul propus de autori pentru
calcularea descriptorilor, insa acestia nu functioneaza si in cazul identificarii gresite a
punctelor pe alte fatade ale aceleiasi cladiri.
La testele efectuate in vederea recunoasterii cladirilor, autorii au obtinut rezultate
satisfacatoare, independente de conditiile de iluminare sau de starea vremii in momentul
achizitiei imaginilor. Restrictiile pe care le-au descoperit se refera la distanta de pana la
200m fata de cladire, unghiul de vedere a fatadei de pana la 40° si ascunderea a mai putin
de 30% din suprafata fatadei. Printre limitarile subliniate de autori se numara pozitia si
orientarea camerei foto care realizeaza captura si dificultatea identificarii cladirilor cu
modele repetitive.[5]
6
Autorii precizeaza ca algoritmul lor poate fi utilizat in trei tipuri de aplicatii:
aplicatii mobile ce ofera informatii turistice, modelare 3D a peisajelor urbane folosind
date extrase din imagini 2D, si analiza deformarilor de perspectiva din imagini cu
rezolutie mare. Contributia principala a autorilor a fost construirea unei metode pentru
detectia si clasificarea ferestrelor, vazuta ca o prima etapa in dezvoltarea unor programe
complexe de prelucrare vizuala.
Autorii au implementat o metoda de recunoastere bazata pe analiza pattern-urilor
si au testat-o asupra bazelor de date ZuBuD, TSG-20 si TSG-60. Cele mai bune rezultate
au fost obtinute pentru TSG-20, ferestrele fiind detectate cu o acuratete de aproximativ
60%, iar cele mai slabe pentru ZuBuD, cu o acuratede de aproximativ 30%.
Autorii se declara multumiti de rezultatele obtinute, considerand ca algoritmul le
ofera o baza promitatoare pentru recunoasterea cladirilor bazata pe context. Este subliniat
faptul ca sistemul ofera performante sporite in cazul unor perspective frontale aspura
cladirilor si in cazul unor ferestre clasice (nu cladiri de birouri). [7]
7
9. R. Hutchings – Building Recognition For Mobile Devices: Incorporating Positional
Information With Visual Features – Universitatea Bristol
Articolul descrie un sistem ce poate fi folosit pentru identificarea cladirilor in
imagini digitale capturate cu dispozitive mobile. Metodele de “computer vision”
prezentate sunt imbunatatite prin utilizarea informatiilor date de coordonatele GPS ale
persoanei care captureaza imaginea. Cladirile beneficiaza de asemenea de coordonate
GPS, extrase dintr-o baza de date. Fatada cladirii este reprezentata ca o suprafata plana,
pentru a permite efectuarea unor analize geometrice asupra perspectivei si a determina cu
acuratete corespondentul din setul de date.
Autorii descriu in articol un sistem ce poate recunoaste cladiri din imagini luate
sub perspective diferite, cu variatii importante ale distantei focale si unghiului vizual.
Localizarea si extragerea punctelor de interes din imagini este realizata utilizand
descriptori SIFT si metoda Harris Corner Detector. Punctele de interes extrase din
imaginea test sunt comparate cu cele din imaginile setului de date. Rezultatul este oferit
pe baza principiului “nearest neighbor”.
Sunt descrise diverse metode utilizate de autori pentru rectificare in cazul
diferentelor mari de scara si unghi. Pentru imbunatatirea rezultatelor se recomanda
existenta in baza de date a unui numar mare de imagini ale aceleiasi cladiri, capturate de
la distante diferite si sub unghiuri diferite. Daca mai multe cladiri sunt surprinse intr-o
imagine, punctele de interes sunt filtrate pastrandu-se cele din centrul imaginii (cladirea
obiect este cea pe care a fost focalizata imaginea). Autorii efectueaza si o filtrare a
rezultatelor fals-pozitiv utilizand metoda Random Sample Consensus. Odata cu numarul
de iteratii aplicate creste acuratetea rezultatelor.
Sistemul a fost testat pe o gama larga de imagini a unui numar mare de cladiri, cu
variatii importante de perspectiva, conditii de iluminare si obscuritate. Sistemul a
identificat corect majoritatea cladirilor, cu exceptia cazurilor in care variatiile au fost
foarte mari. Setul de imagini folosit pentru testare, la fel ca si baza de date asupra careia
s-au incercat identificarile, au fost create de catre autori, acestia obtinand imagini din
orasul Bristol, din Anglia, cu ajutorul unei camere foto. Ei au constatat ca sistemul
recunoaste corect cladirile daca imaginile sunt capturare de la o distanta de pana la 50 de
metri fata de planul cladirii, sub unghiuri de pana la 30°. [9]
8
2. Fundamente teoretice
Fig. 1.a – Imaginea Originala Fig. 1.b – Imaginea “blur”-ata (in timpul procesului
imaginea este convertita Grayscale)
9
Fig. 1.c – Imaginea binarizata (cu marginile detectate in alb)
Unghiul este aproximat catre una dintre cele 4 directii (orizontala = 0°, verticala =
90°, diagonala = 45° sau 135°).
10
3. “Non-maximum suppression” este o tehnica de “subtiere” a marginilor. Fiind
obtinute aproximari ale gradientilor imaginii, este efectuata o cautare pentru a determina,
daca se poate, un maxim local pe directia de gradient. In unele implementari, algoritmul
imparte directiile de gradient continuu intr-un grup restrans de directii discrete si
foloseste un filtru 3x3 aplicat peste rezultatul pasului 2. Acest filtru, pentru fiecare pixel,
elimina pixelii din margine ai caror “importanta” nu este mai mare sau egala cu a celor 2
pixeli vecini. Filtrul 3x3 este ales pentru a parcurge intreaga matrice imagine si va
contine, pentru fiecare pas, pixelul si cei 8 vecini.
Exemplu “Non-maximum suppression”:
- daca unghiul de gradient este rotunjit la 0° (marginea este orientata N-S),
punctul va fi considerat ca apartinand marginii daca valoarea gradientului
sau este mai mare decat a pixelilor vecini E-V
- daca unghiul de gradient este rotunjit la 90° (marginea orientata E-V),
punctul va fi considerat ca apartinand marginii daca valoarea gradientului
sau este mai mare decat a pixelilor vecini N-S
- daca unghiul de gradient este rotunjit la 45° (marginea orientata NV-SE),
punctul va fi considerat ca apartinant marginii daca valoarea gradientului
sau este mai mare decat a pixelilor vecini NE-SV
- daca unghiul de gradient este rotunjit la 135° (marginea este orientata
NE-SV), punctul va fi considerat ca apartinand marginii daca valoarea
gradientului sau este mai mare decat a pixelilor vecini NV-SE
In implementari mai precise, directia de gradient nu mai este aproximata la una
dintre cele 4 specificate anterior. Se vor efectua interpolari suplimentare pentru a obtine
informatii mai detaliate despre valorile gradientilor din apropierea pixelului de interes.
De exemplu, daca unghiul este intre 45° si 90°, interpolarea intre gradientii pixelior N si
NE va da una dintre valori, in timp ce interpolarea intre pixelii S si SV o va da pe a doua.
Valoarea gradientului pixelului central va trebui sa fie mai mare decat ambele valori
interpolate pentru ca pixelul central sa fie considerat ca apartinand marginii.
4. Cu cat folosim gradienti cu intensitate mai mare, cu atat avem mai multe sanse ca
marginea detectata sa se suprapuna cu cea reala. In cele mai multe cazuri este imposibil
de stabilit un prag al intensitatii, peste care trebuie sa trecem astfel incat marginea
detectata sa se suprapuna perfect peste cea reala.
Algoritmul Canny foloseste curbe de histerezis pentru a determina,cat mai precis,
intensitatea necesara. Avem doua praguri de histerezis: inferior si superior. Presupunem
ca marginile relevante din imagine se gasesc de-a lungul unor curbe continue. Astfel
11
putem elimina din pixelii zgomotosi care au valori mari de gradient fara a face parte
dintr-o linie. Incepem prin a aplica un prag inalt. Acesta ne va arata marginile de care
putem fi siguri ca exista si in imaginea originala (cele mai evidente). Pornind de la
acestea, folosind informatiile directionale de mai sus, putem incepe sa “urmarim”
marginile pe imagine. Aplicand pragul inferior este posibil sa urmarim si portiuni “slabe”
de margini atat timp cat gasim un punct de start.
Odata terminat procesul, am obtinut o imagine binarizata in care fiecare pixel este
marcat fie ca pixel de margine fie ca pixel ce nu apartine unei margini. Pentru analiza
ulterioara, aceasta imagine poate fi tratata si ca un set de curbe (reprezentand marginile),
care apoi pot fi grupate in poligoane.[10][14]
Rezultatul final al aplicarii algoritmului poate fi observat in Fig. 1.c, marginile fiind
desenate prin pixeli albi, pe fond negru. O metoda mai rafinata pentru obtinerea marginilor cu
acuratete ce coboara sub nivelul de pixel este folosirea detectiei diferentiale, unde non-maximum
suppression este efectuata la nivelul celei de a doua sau a treia derivate. Algoritmul Canny
contine niste parametrii ajustabili care influenteaza timpul de calcul si eficienta. Acestia sunt:
- marimea filtrului Gaussian
cu cat filtrul folosit in prima etapa este mai fin, cu atat se pot detecta linii din ce in
ce mai subtiri
un filtru mai mare cauzeaza un blur mai mare, ducand la pierderea unor detalii,
cum ar fi marginile cu latime foarte mica
- pragurile de histerezis
folosirea a doua praguri aduce un plus de flexibilitate fata de folosirea unui singur
prag, insa pot aparea diverse probleme
un prag prea inalt duce la ignorarea unor informatii importante
un prag prea scazut va duce la marcarea unor informatii irelevante (portiuni
zgomotoase vor fi identificate ca fiind margini)
deocamdata nu exita un mod generic de a alege pragurile, iar aceleasi praguri dau
rezultate diferite pe imagini diferite[10][11]
Algoritmul Canny se adapteaza usor la diverse cazuri de utilizare prin setarea
parametrilor corespunzator la imaginea pe care se aplica. Exista dezvoltari ulterioare ale
algoritmului specializate pe diverse tipuri de detectie, fiecare avand diverse avantaje si
dezavantaje in ceea ce priveste timpul de executie si numarul de margini detectate corect.
12
2.2 Corner Detection
Detectia colturilor (corner detection) este o procedura din computer vision folosita pentru
extragerea unor trasaturi ce pot fi folosite pentru detectia miscarii, detectia de pattern-uri, crearea
de panorame prin alipirea a doua sau mai multe imagini, modelare 3D, recunoasterea obiectelor,
etc. Detectia colturilor se inscrie in paradigma identificarii punctelor de interes.
Pentru a intelege de ce colturile sunt puncte de interes trebuie sa pornim de la definitia
unui colt. Intuitiv, colturile sunt punctele de intersectie a doua sau mai multe linii de contur.
Constituie puncte de interes in special datorita proprietatii de a-si pastra caracteristicile stabile in
momentul schimbarii perspectivei asupra obiectului din care fac parte.
Un punct de interes este un punct al imaginii care are o pozitie bine definita si poate fi
detectat in mod robust. Deci, un punct de interes poate fi un colt, dar poate fi si un punct izolat
cu intensitate minima sau maxima locala (de exemplu, capetele unei linii sau un punct de curbura
maxima). In practica, majoritatea metodelor de detectie a colturilor identifica toate punctele de
interes, iar termenii de “colt” si “punct de interes” sunt folositi simultan si adesea interschimbati.
Astfel, daca este imperios necesara detectia colturilor, trebuie realizata filtrarea rezultatelor unui
algoritm care intoarce toate punctele de interes.[11][12]
Detectoarele de colturi sunt de obicei putin robuste si au nevoie de introducerea unei mari
redundante in cautare pentru a reduce numarul de detectii eronate. Calitatea unui detector de
colturi este data de abilitatea acestuia privind identificarea aceluiasi colt in mai multe imagini
similare, intre care exista variatii de iluminare, translatie, rotire sau scalare.
Unul dintre primii algoritmi de detectie a colturilor a fost descris de Moravec. Acest
algoritm testeaza fiecare pixel al imaginii prin extragerea unui patch centrat in respectivul pixel
si compararea lui cu patch-uri apropiate, in care multi pixeli se suprapun cu patch-ul original.
Similaritatea este masurata prin efectuarea unor diferente de intensitati intre pixelii
corespunzatori din patch-uri. Cu cat variatiile sunt mai reduse, cu atat patch-urile sunt mai
similare, deci sunt sanse mai slabe ca pixelul verificat sa fie colt.
Daca pixelul este situat intr-o regiune cu intensitate uniforma, atunci toate patch-urile
invecinate vor arata similar celui centrat in pixelul de verificat. Daca pixelul se afla pe o margine
(edge), atunci patch-urile alese pe directie perpendiculara pe margine vor avea variatii mari in
intensitate, iar cele alese pe aceeasi directie cu marginea vor avea variatii mici sau foarte mici.
Pentru un punct de interes, este nevoie ca variatiile intensitatii in toate cele patru directii sa fie
mari. Pentru imbunatatirea alegerii punctelor de interes, se pot verifica si patch-uri situate in
diagonala fata de pixelul verificat, obtinand astfel rezultate in 8 directii principale.
Harris Corner Detector este algoritmul care a incercat sa ofere o abordare matematica
detectiei colturilor, printr-un mod de lucru similar detectorului Moravec.[11]
13
Fig. 2 – Patch-uri centrate intr-un pixel de fundal (imaginea din stanga),
intr-un pixel de margine (imaginea centrala) si intr-un pixel de colt (imaginea din dreapta)
Asa cum se observa in Fig. 2, daca alegem un pixel intr-o regiune de fundal, nu vom avea
variatii in intensitate la translatarea patch-ului in oricare directie. Daca pixelul ales este pe
margine, variatiile vor fi importante doar la translatarea patch-ului de o parte si de alta a marginii
respective, in timp ce daca pixelul este un colt, intensitatea variaza important indiferent de
directia translatiei.
Din punct de vedere matematic, algoritmul Harris este definit prin urmatoarea formula:
E(u, v) =
M=
Unde M este matricea intensitatilor, λ1 si λ2 sunt valorile proprii ale acesteia, iar k este o
constanta intre 0,04 si 0,06. Functia R poarta numele de “raspuns al coltului” (corner response).
Algoritmul lui Harris este aplicat, de obicei, asupra imaginilor grayscale. In figura de mai
jos se pot observa, intr-o reprezentare tridimensionala, intensitatile unor pixeli punct de interes,
margine si zona de fundal.[11][12]
14
Fig. 3.a – punct de interes (variatii mari ale intensitatii in toate directiile)
SIFT este un algoritm din domeniul Computer Vision, utilizat pentru a detecta si descrie
trasaturi ale imaginilor, publicat de David Lowe in 1999. Domeniile de aplicare ale algoritmului
SIFT includ, dar nu se limiteaza la: recunoasterea obiectelor, modelare 3D, recunoasterea
gesturilor, construirea hartilor din imagini satelit, etc.
Pentru orice obiect dintr-o imagine pot fi extrase puncte de interes care ofera o
“descriere” a caracteristicilor acelui obiect. Descrierea, extrasa dintr-o imagine de training, poate
fi apoi folosita pentru identificarea obiectului si localizarea acestuia intr-o imagine de test, ce
poate contine multe alte obiecte. Pentru a putea face o recunoastere viabila este important ca
trasaturile extrase din imaginea de training sa poata fi detectate si daca intervin modificari in
ceea ce priveste marimea, orientarea, luminozitatea sau zgomotul asociat obiectului in imaginea
15
test. Astfel de puncte de interes se gasesc, de obicei, in zone ale imaginii cu contrast mare (de
exemplu, margini sau colturi).
O alta caracteristica importanta a acestor trasaturi este ca pozitia relativa dintre ele nu
trebuie sa varieze de la o imagine la alta. De exemplu, daca pentru recunoasterea unei ferestre se
folosesc doar cele 4 colturi ale ferestrei, relatiile dintre ele sunt valabile indiferent de pozitia
ferestrei. Daca insa se folosesc si puncte ale pervazului, recunoasterea va esua daca fereastra este
inchisa sau deschisa.
Algoritmul SIFT original poate identifica obiecte chiar si daca acestea sunt partial
ascunse in imagine. Descriptorii de trasaturi folositi sunt invarianti in ceea ce priveste orientarea,
scalarea uniforma si partial invarianti in ceea ce priveste deformarea de perspectiva si
schimbarile de iluminare.[12][13]
Punctele de interes ale obiectelor sunt extrase dintr-un set de imagini de referinta si
stocate in baza de date. Un obiect este recunoscut intr-o imagine noua prin compararea
individuala a fiecarei trasaturi identificate in noua imagine cu trasaturile din baza de date. Pentru
efectuarea comparatiei, se calculeaza distanta euclidiana dintre vectorii trasaturilor (feature
vectors). Din totalitatea asocierilor se identifica subseturi care determina locatia, scara si
orientarea obiectului in noua imagine. Astfel, se pot elimina asocieri incorecte. In algoritmul
SIFT aceste subseturi se obtin utilizand tabele hash ale transformatei lui Hough. Fiecare cluster
de 3 sau mai multe trasaturi, care identifica un obiect si pozitia sa, este verificat in detaliu si
asocierile false sunt eliminate. In final, se calculeaza probabilitatea ca un set particular de
trasaturi sa indice prezenta obiectului cautat in imaginea test.
16
Etapele principale ale algoritmului SIFT sunt:
1. Detectia trasaturilor invariante: metoda lui Lowe presupune transformarea imaginii
intr-o mare colectie de vectori de trasaturi, fiecare dintre acestia invariant la translatie,
scalare si rotatie si partial invariant la schimbari de luminozitate si distorsiuni. Dintre
acesti vectori se aleg cei corespunzatori punctelor cheie (puncte de minim si maxim ale
Gaussienilor). Descriptori SIFT robusti se obtin prin blur-area si re-esantionarea zonelor
din jurul punctelor cheie. S-a constatat ca acesti descriptori se comporta bine in cazul
distorsiunilor de perspectiva.
2. Asocierea si indexarea trasaturilor: se identifica si stocheaza puncte cheie ale imaginii
test. Se compara descriptorii obtinuti in imaginea test cu descriptorii din baza de date. Cel
mai bun candidat pentru asociere este obtinut prin regula “nearest neighbor”, respectiv
candidatul care stabileste cea mai mica distanta Euclidiana intre vectorul sau si un vector
din imaginea test. Lowe a filtrat asocierile posibile in functie de distanta pana la “second
nearest neighbor”, eliminand toate asocierile pentru care distanta pana la al doilea cel mai
apropiat vecin este mai mare de 80% din distanta pana la cel mai apropiat. El a constatat
astfel o reducere cu 90% a asocierilor false si o pierdere de 5% a asocierilor bune. Pentru
a imbunatati timpul de executie, a oprit algoritmul dupa testarea, pentru fiecare punct, a
200 de posibile asocieri. Acesta a constatat o imbunatatire de pana la 100 de ori a
timpului de executie raportata la o pierdere de sub 10% a asocierilor care altfel ar fi fost
obtinute.
3. Identificarea clusterelor prin transformata Hough: se creeaza un tabel hash in care
fiecare intrare este creata prin prezicerea locatiei, orientarii si scalarii modelului de
cautat. In tabel, se incearca identificarea clusterelor cu cel putin trei trasaturi (features).
Clusterele sunt sortate in ordine descrescatoare a numarului de trasaturi.
4. Verificarea modelului prin metoda celor mai mici patrate: se efectueaza pentru
detectarea deformarilor de perspectiva ce pot aparea in imagine.
5. Detectia si eliminarea punctelor externe obiectului (outliers): considerandu-se ca, in
urma primilor 4 pasi, s-au obtinut suficiente informatii privind orientarea, scalarea si
pozitia obiectului, se incearca eliminarea acelor puncte asociate gresit (puncte care nu fac
parte din obiectul tinta). Pe masura ce se elimina cate unul dintre aceste puncte, se reiau
calculele parametrilor prin transformarea Hough. Daca in final raman mai putin de 3
puncte asociate, se considera ca nu s-a putut identifica obiectul.
6. Se calculeaza probabilitatea identificarii obiectului in functie de dimensiunea estimata
a modelului, numarul de trasaturi identificate si acuratetea cu care acestea se potrivesc in
model. O asociere este acceptata de catre algoritmul SIFT ca fiind finala daca
probabilitatea este mai mare de 98%.[16]
17
3. Dezvoltarea evolutiva a algoritmului
18
In urma stabilirii acestor restrictii, am inceput proiectarea, implementarea si testarea a trei
tipuri de algoritmi, pe care ii voi descrie in continuare. Scopul principal a fost obtinerea unor
rezultate care sa indice “apropierea” dintre doua imagini, rezultate ce vor putea fi apoi folosite in
identificarea unei cladiri pe baza datelor dintr-un storage.
Cele 4 imagini fiind prezentate mai jos, rezultatele dorite au fost obtinerea unui indice de
apropiere foarte ridicat intre cele doua imagini ale turnului Eiffel (bineinteles, de dorit, avand in
vedere ca se doreste recunoasterea cladirii din imagine), si a unor indici scazuti intre imaginile
celor doua turnuri cu ceas, si foarte scazuti in restul cazurilor.
19
Pentru a putea intelege mai bine ce fel de rezultate ofera utilizarea unor filtre gaussiene
diferite in cadrul aplicarii algoritmului Canny Edge Detector, mai jos am introdus imaginea
originala (de fapt, o fotografie) a palatului Taj Mahal din India, alaturi de imaginile binarizate
obtinute utilizand primul, al cincilea si al zecelea filtru. Diferentele in ceea ce priveste numarul si
calitatea marginilor detectate sunt evidente.
Fig. 6.a – Imaginea originala Fig. 6.b – Imaginea binarizata cu filtrul 1 (cel mai slab)
Fig. 6.c – Imaginea binarizata cu filtrul 5 (considerat Fig. 6.d – Imaginea binarizata cu filtrul 10 (cel mai
potrivit cerintelor lucrarii de fata) puternic)
20
de slabe. Chiar si in cazul a doua poze in care diferenta de perspectiva era minima (cele doua
poze ale turnului Eiffel), desi s-a obtinut cel mai bun procentaj, acesta nu poate fi luat serios in
calcul de nici un algoritm de recunoastere. In tabelul urmator pot fi observate procentajele de
corespondenta pixel la pixel:
Imagine 1 Imagine 2 Rezultat
Eiffel1 Eiffel2 17.76 %
Eiffel1 BigBen 12.86 %
Eiffel1 Mecca 11.00 %
Eiffel2 BigBen 13.91 %
Eiffel2 Mecca 14.25 %
BigBen Mecca 12.11 %
Tabel 1 – Rezultatele comparatiei pixel la pixel
Pentru a face mai usoara lectura lucrarii, in ceea ce urmeaza, imaginea stanga-sus va fi
numita Eiffel1, cea din dreapta-sus Eiffel2, cea din stanga-jos BigBen, iar cea din dreapta-jos
Mecca. Imaginile utilizate pot fi vizualizate in continuare:
Fig. 7 – Imaginile de test, obtinute prin aplicarea algoritmului Canny Edge Detection
21
B. Comparatia folosind limita de distanta
A doua metoda dezvoltata ofera un interval de corespondenta a pixelilor, sub forma unei
distante. Suprapunand matricile celor 2 imagini, daca un pixel din prima matrice se gaseste la o
distanta acceptabila (care intra in interval) de un pixel din a doua imagine, acei doi pixeli sunt
considerati corespondenti (formeaza o pereche de puncte identificate ca apartinand aceleiasi
cladiri). Particularizand, putem spune ca metoda comparatiei pixel la pixel utilizeaza acelasi
algoritm, cu interval nul.
O prima etapa a algoritmului presupune aflarea distantei minime generale, intre oricare
punct din prima imagine si oricare punct din a doua imagine. Dupa ce este aflat, este calculata
valoarea limitei de corespondenta, obtinandu-se un interval inchis intre distanta nula si aceasta
valoare.
A doua etapa presupune calculul distantei de la fiecare punct din prima imagine la fiecare
punct din a doua imagine. Distanta calculata este verificata pentru a apartine de intervalul definit
mai sus. In cazul in care distanta se incadreaza in interval, sunt generate doua matrice de raspuns,
una pentru prima imagine si una pentru a doua, iar punctele intre care a fost stabilita distanta se
marcheaza in cele doua matrice. Fiecare punct din fiecare imagine poate corespunde nici unuia,
unuia sau mai multor puncte din cealalta imagine.
Matricile rezultat sunt suprapuse, in final obtinandu-se o imagine rezultat, o reprezentare
vizuala a punctelor identificate ca fiind corespondente in cele doua imagini de intrare. Punctele
pentru care s-au gasit corespondenti sunt marcate cu negru, cele pentru care nu s-au gasit
corespondenti sunt marcate cu gri, iar fondul imaginii este alb. O imagine rezultat de acelasi tip
este obtinuta si in cazul comparatiei pixel la pixel.
Diferentele oferite de cei doi algoritmi pot fi vizualizate in figura 8. Cele doua metode au
fost aplicate imaginilor Eiffel1 si Eiffel2, respectiv Eiffel1 si BigBen (rezultatele metodei 1 sunt
in stanga, iar ale metodei 2 in dreapta).
Asa cum se observa, aceasta metoda are dezavantajul ca, desi imbunatateste substantial
procentajul in prima comparatie (57.66 %), il imbunatateste si in cea de-a doua (42.08 %), fapt
ce poate duce la identificari eronate.
In tabel sunt prezentate toate procentajele obtinute de aceasta metoda:
Imagine 1 Imagine 2 Rezultat
Eiffel1 Eiffel2 57.66 %
Eiffel1 BigBen 42.08 %
Eiffel1 Mecca 36.01 %
Eiffel2 BigBen 46.26 %
Eiffel2 Mecca 44.84 %
BigBen Mecca 41.81 %
Tabel 2 – Rezultate comparatie cu limita de distanta
22
Fig. 8 – Comparatie rezultate metoda 1 (stanga) si metoda 2 (dreapta)
23
C. Aproximarea conturului si eliminarea zgomotelor
Asa cum se poate observa in figura 7, in cazul imaginii BigBen, deoarece imaginea a fost
prelucrata rudimentar, in stanga si in dreapta obiectului de interes exista doua linii de zgomot
semnificative. Pentru eliminarea acestora am luat in considerare o detectie a limitelor obiectului
de interes din imagine. Avand in vedere restrictia ca obiectul de identificat (cladirea) sa se afle in
centrul imaginii si gandindu-ma si la modalitati de a imbunatatii rezultatele identificarii fata de
primele doua metode, mi-a venit ideea de a extrage conturul cladirii si de a-l folosi atat pentru
eliminarea zgomotului, cat si ca input intr-o noua metoda de comparatie.
Primul pas a fost identificarea unei limite de zgomot, o valoare a distantei intre doi pixeli
dincolo de care unul dintre ei poate fi considerat zgomot si nu punct de interes. Identificarea a
fost realizata dupa urmatorul algoritm:
- am parcurs imaginea pixel cu pixel
- pentru fiecare pixel de interes identificat (toti pixelii din imagine care nu sunt pixeli
de fond) am calculat distanta catre cel mai apropiat pixel, tot de interes, in cele 8
directii principale, asa cum sunt ele reprezentate in figura urmatoare (pixelul
identificat fiind marcat cu rosu)
- dintre cele 8 distante calculate, am memorat-o pe cea mai mare in cazul fiecarui pixel
identificat in imagine
- am calculat limita de zgomot in functie de media aritmetica a maximelor memorate la
punctul anterior
Ca prim rezultat, am folosit 10 limite diferite (1 x limita, 2 x limita, s.a.m.d) si am filtrat
zgomotul din imagine. Desi metoda s-a dovedit foarte eficienta la eliminarea zgomotului, si chiar
a detaliilor din interiorul obiectului, apropiindu-ma substantial de tinta – obtinerea conturului, am
constatat ca metoda nu putea elimina zgomotul puternic (de tipul celor doua linii observate in
imaginea BigBen). Din cele patru seturi de imagini obtinute la primul pas, am ales manual cate o
imagine pe care am considerat-o potrivita pentru a o utiliza la pasul al doilea.
Avand in vedere ca analiza generala a imaginii nu m-a condus la rezultate ideale in ceea
ce priveste detectia conturului cladirii, pentru a doua metoda am folosit o alta abordare. Avand
imaginea obtinuta la pasul anterior si utilizand restrictia ca obiectul de interes sa se afle in centrul
24
imaginii, am considerat ca adevar general valabil pozitionarea punctului central al imaginii in
interiorul marginilor cladirii. Pasii urmati in aceasta a doua etapa au fost urmatorii:
- am identificat (aproximativ) punctul central al imaginii (indiferent daca acest punct
era un pixel de fond sau nu), dupa care,pornind de la fiecare dintre cei 8 vecini ai sai,
in cele 8 directii principale prezentate anterior, am cautat primul pixel de interes
- astfel, sunt obtinute maxim 32 de puncte – cate 3 pe directie N, S, E si V, respectiv
cate 5 pe directie NV, NE, SV si SE (pot fi mai putine puncte daca la cautarea pe o
anumita directie este atinsa marginea imaginii fara a se gasi pixeli de interes)
- am aplicat filtrul de zgomot de la pasul anterior, de aceasta data, insa, pornind
recursiv de la cele (maxim) 32 de puncte – orice punct aflat la distanta mai mica decat
limita de unul dintre punctele de la care incepe cautarea, este marcat ca punct de
interes si este folosit apoi ca punct de plecare
- dupa aplicarea recursiva a filtrului, punctele care nu au fost marcate sunt sterse
In urma acestui pas am reusit eliminarea zgomotelor puternice din imaginea de input. In
imaginea rezultat, aproximarea conturului este in acest moment vizibila ca o multime de puncte
difuzate in jurul conturului real, la distante situate intr-un interval acceptabil.
A treia, si ultima etapa a aproximarii conturului, a constat in unirea prin linii a punctelor
din imaginea rezultat a etapei a doua aflate la o distanta, unul fata de celalalt, mai mica decat
jumatate din limita etapei anterioare. Rezultatele finale ale procesului (in urma celor 3 etape)
pentru imaginile Eiffel1 si BigBen, pot fi observate in figura urmatoare.
25
D. Comparatia folosind punctele de variatie a conturului
A treia si ultima metoda de comparatie implementata, este cea care se apropie cel mai
mult de metodele consacrate de identificare a cladirilor. Aceasta metoda tine cont de rapoartele
calculate intre distantele dintre punctele de interes din cele doua imagini. Punctele de variatie a
conturului, in conceptia in care am descris aceasta metoda, sunt reprezentate de pixelii extremi
spre est si spre vest, apartinand liniilor din imagine pentru care latimea lor variaza important fata
de liniile vecine la nord si la sud.
Pasii urmati in dezvoltarea acestui algoritm au fost:
- am parcurs pe rand cele doua imagini si am memorat, pentru fiecare dintre ele,
distanta intre cel mai vestic si cel mai estic punct al fiecarei linii de pixeli, precum si
coordonatele pixelilor limita ai fiecarei linii
- pentru fiecare imagine, am extras din lista obtinuta la pasul anterior, valorile minima
si maxima ale lungimilor liniilor; pe baza acestor valori am calculat o variabila
- am generat o multime a liniilor de interes pentru fiecare imagine, astfel:
am adaugat prima linie a imaginii
am parcurs restul liniilor (din lista obtinuta la primul pas) si am calculat diferenta,
in valoare absoluta) intre distanta de pe prima linie si cea de pe linia curenta
daca diferenta a fost mai mica decat variabila, am adaugat linia curenta multimii
- o prima variabila luata in calcul la procentajul final de corespondenta, a fost raportul
(in procente) intre numerele liniilor de interes identificate in cele doua imagini
- suprapunand cele doua imagini, am stabilit o limita de distanta fata de care o linie din
prima imagine poate fi corespondenta unei linii din a doua imagine (distanta a fost
exprimata in pixeli, fiind usor calculata, liniile de interes fiind perfect orizontale),
asemanator utilizarii distantei intre pixeli, in cea de-a doua metoda descrisa
- daca liniile puteau fi considerate in pereche, am calculat raportul (in procente) intre
lungimile celor doua
- rezultatul final a fost stabilit ca media aritmetica a tuturor rapoartelor lungimilor, la
care am adaugat rapotul numerelor de linii identificate
Rezultatele aplicarii acestei ultime metode se sunt trecute in tabelul de mai jos:
Imagine 1 Imagine 2 Rezultat
Eiffel1 Eiffel2 90.51 %
Eiffel1 BigBen 49.31 %
Eiffel1 Mecca 41.12 %
Eiffel2 BigBen 56.64 %
Eiffel2 Mecca 51.09 %
BigBen Mecca 48.87 %
Tabel 3 – Rezultatele comparatiei folosind puncte de variatie a conturului
26
Asa cum se poate observa, toate procentajele au crescut comparativ cu a doua metoda,
ceea ce inseamna ca nici aceasta metoda nu ofera rezultate perfect corecte. Cu toate acestea,
rezultatul obtinut la compararea celor doua imagini ale turnului Eiffel este unul foarte bun, de
peste 90 %.
Am constatat o imbunatatire vizibila a rezultatelor cu cat algoritmul utilizat a fost mai
elaborat. Am reusit, prin intermediul ultimului algoritm, sa obtin un rezultat satisfacator in ceea
ce priveste recunoasterea pozelor in care apare aceeasi cladire, respectiv turnul Eiffel. De
asemenea, prin acest algoritm, am “evitat” destul de bine imperecherea celor doua imagini ale
turnurilor cu ceas, Big Ben din Londra si turnul din Mecca.Programele propriu -zise ale
algoritmilor au o executie destul de lenta, nefiind optimizate. Astfel, efectuarea inseriata a celor
3 tipuri de comparatii intre doua imagini (cu toate transformarile necesare) poate dura pana la 5
minute.
27
Tip procesor (Nr. core-uri) Timp executie secventiala Timp executie paralelizata
Intel Core 2 Duo (2 core-uri) 13.695 secunde 10.054 secunde
Intel i7 (8 core-uri) 7.845 secunde 4.372 secunde
Numar filtru Durata executie filtru secvential (s) Durata executie filtru paralel (s)
0 1.521 1.574
1 1.501 2.766
2 1.366 1.499
3 1.371 2.555
4 1.358 1.722
5 1.335 2.51
6 1.348 1.479
7 1.305 2.138
8 1.300 1.381
9 1.284 1.312
Durata totala 13.695 10.054
Tabel 5 – Timpi executie per filtru
28
Start Time Duration
Total0.000 10.054
F9 8.742 1.313
F8 7.356 1.382
F7 6.903 2.138
F6 5.392 1.479
F5 4.846 2.510
F4 3.121 1.722
F3 2.825 2.555
F2 1.595 1.500
F10.012 2.767
F00.000 1.575
29
Paralel Paralel Paralel Paralel
Nr. filters i7 filters i2 filters i2 chunks i2
Filtru
Serial i7 Serial i2
(8 threads) (2 threads) (4 threads) (2 threads)
0 2.148622 2.900876 4.138173 4.399402 7.330664 2.444313
1 2.023615 3.503556 3.962237 7.292701 12.04707 2.513426
2 1.976363 3.423894 3.709585 6.900801 7.355898 2.612804
3 1.912773 3.498221 3.690699 4.006474 12.68713 2.717537
4 1.860552 2.875541 3.742221 6.721639 4.159536 2.484887
5 1.884549 2.874634 3.765435 4.032763 11.60995 2.35209
6 1.857546 3.464917 3.673519 7.161307 6.950757 2.389345
7 1.848078 3.447185 3.609062 3.731587 8.265111 2.32113
8 1.832363 2.082726 3.574646 3.327191 7.646464 1.806541
9 1.828625 2.021104 3.518029 3.660501 4.519846 1.866741
T 19.174 4.959 37.384 26.284 23.014 11.834
A. Optimizarea metodelor
Am optimizat metodele in principal prin eliminarea redundantei. Functiile, in forma lor
initiala, prelucrau pe rand toti pixelii imaginii, prin aplicarea unui filtru. Timpul era irosit prin
aplicarea filtrului asupra tuturor pixelilor, cand era evident ca aceasta aplicare nu va avea nicio
influenta asupra rezultatului final.
Am rescris cele doua metode care aveau aceasta problema. Durata de executie a scazut
drastic, de pana la 400 de ori in cazul primei functii, respectiv de pana la 200 de ori in cazul celei
de-a doua. Durata totala de executie a algoritmului de comparatie a scazut de la aproximativ 10
minute la aproximativ 10 secunde.
30
Durata Algoritmul dupa Algoritmul dupa
Algoritmul original
executie imbunatatirea metodei 2 imbunatatirea metodei 3
Metoda 1 0.249 sec 0.252 sec 0.281 sec
Metoda 2 412.182 sec 0.941 sec 0.939 sec
Metoda 3 54.991 sec 59.557 sec 0.204 sec
Total 467.452 sec 60.778 sec 1.453 sec
Tabel 7 – Optimizarea metodelor de prelucrare a imaginilor
B. Eliminarea restrictiilor
Algoritmul de asociere dezvoltat anterior are un numar mare de restrictii impuse. Una
dintre cele mai importante restrictii este prezenta unui singur obiect, pozitionat central, in
imagine, pentru care se incearca recunoasterea (asocierea lui cu un alt obiect). Am incercat
eliminarea acestei restrictii, anume posibilitatea recunoasterii obiectului de interes chiar daca
acesta nu este singurul din imagine. Am pastrat conditia ca obiectele existente in imagine sa nu
fie suprapuse.
Pentru a identifica mai usor obiectele existente in imagine am inceput prin inlaturarea
unor detalii de care, in contextul noilor restrictii impuse, am considerat ca ma pot lipsi. Primul
detaliu pe care am urmarit sa il elimin a fost suportul (ground-ul) pe care erau pozitionate
obiectele. Desi prin impunerea restrictiei, obiectele de interes nu erau suprapuse, era aproape
imposibil sa izolez total obiectele, astfel incat intre ele sa nu existe nicio sursa de zgomot. Prin
calcularea unui filtru bazat pe densitatea de pixeli albi per coloana din imagine, am ales o limita,
un rand efectiv al imaginii, sub care am considerat ca se gaseste presupusa zona zgomotoasa ce
cuprinde atat partile de jos ale obiectelor, cat si posibilele surse de zgomot dintre acestea.
Dupa inlaturarea zonei zgomotoase, am ales o latime minima de 10 pixeli ca fiind
distanta necesara intre doua obiecte din imagine pentru care acestea sunt considerate obiecte
independente. In urma identificarii acelor benzi, am impartit imaginea in mai multe sub-imagini,
fiecare continand un presupus obiect. Rezultatele acestei metode au fost foarte promitatoare.
Desi exista si cateva zone de zgomot (ce nu au putut fi eliminate prin filtrarea preliminara)
identificate drept obiecte, adevaratele cladiri din imaginea originala sunt izolate aproape perfect,
asa cum se poate observa in figura de mai jos.
31
Fig. 11.b. – Imaginea dupa aplicarea Canny Edge Detector
32
Fig. 13.a – Imaginea originala Fig. 13.b – Imaginea transformata
Totusi, tehnica nu functioneaza foarte bine in imagini cu foarte multe nuante de gri, asa
cum se vede in exemplul urmator (multi dintre pixelii “cerului” nu au componenta dominanta
albastru).
De asemenea, tehnica nu are niciun efect asupra imaginilor grayscale sau alb-negru. In
plus, pot aparea probleme in detectarea marginilor prin Canny Edge Detector, daca obiectul are o
culoare foarte apropiata de alb, asa cum se observa in partea dreapta a cupolei Taj Mahal-ului.
33
Pragul de 25 a fost stabilit prin incercari succesive, asa cum se observa mai jos. Alte
valori fie eliminau prea putin din fundal (de exemplu, pragul 100), fie incepeau sa elimine
portiuni importante din obiect (a se observa partea centrala a turnului in cazul pragului 0).
Fig. 16.a – Prag 0 Fig. 16.b – Prag 25 Fig. 16.c – Prag 100
In urma aplicarii acestei metode, ideal, intre obiectele existente in pagina, vor aparea
coloane de pixeli cu foarte multi pixeli albi, ceea ce ar deschide calea aplicarii unei metode de
impartire a imaginii asemanatoare cu cea anterior descrisa.
Am construit o imagine formata din trei poze lipite (o poza a turnului Eiffel, o poza a
turnului Big Ben si o poza a turnului CN), asupra careia am aplicat algoritmul de eliminare a
“cerului”, apoi un algoritm de impartire a imaginii in chunks continand obiecte de detectat.
Rezultatele au fost bune, desi zgomotul in cazul algoritmului de impartire in chunks a fost ridicat
(pe langa cele trei imagini continand obiectele de detectat, am obtinut inca 75 de imagini
zgomotoase).
34
Fig. 17.b – Imaginea cu fundalul sters
Din testele ulterioare efectuate in vederea identificarii cladirilor, acest al doilea algoritm
de izolare a obiectelor distincte din imagine este mai degraba potrivit pentru o abordare de tip
Scale Invariant Feature Transform, decat o abordare bazata pe identificarea formelor, intrucat,
asa cum se observa in imaginea turnului Eiffel de mai jos, partile laterale ale acestuia au fost
trunchiate, astfel incat forma cladirii din imagine a suferit o distorsiune importanta.
35
Desi am implementat cu succes cateva metode de reducere a restrictiilor, acestea au
dezavantajul de a fi foarte sensibile la zgomotele prezente in imaginea binarizata. De asemenea,
restrictia ca intre doua cladiri sa existe o distanta (sa nu aiba margini comune) este foarte greu de
respectat in realitate. Utilizarea in continuare a acestei metode mi-ar fi redus foarte mult numarul
de obiecte (cladiri) asupra carora se poate efectua identificarea.
In urma celei de-a doua etape am obtinut rezultate foarte bune in detectarea cladirilor din
imagini. O restrictie foarte importanta pe care am reusit sa o elimin este cea legata de prezenta
unei singure cladiri in imaginea binarizata. Sunt separate cu succes mai multe chunk -uri dintr-o
imagine, fiecare continand o cladire. Recunoasterea cladirilor decurge bine in conditii optime de
iluminare, insa un mare impediment este necesitatea, in continuare, ca poza sa fie obtinuta
perpendicular pe cladire.
In cea de-a treia etapa a cercetarii, am inceput dezvoltarea unui algoritm complex de
recunoastere, inspirat din cele mai apreciate metode prezentate pana in acest moment in literatura
de specialitate. M-am orientat spre detectarea unor puncte de interes ce sunt utilizate in alcatuirea
unor descriptori ai obiectelor ce se doresc identificate. Apoi, se vor folosi acesti descriptori, prin
comparatii de tip nearest-neighbor, pentru a decide prezenta sau nu a unei constructii intr-o
imagine test.
36
Fig 19 – Canny Edge Detector
3. Am considerat automat orice pixel cu exact 4 vecini albi ca fiind colt, din nou pentru
a reduce numarul de calcule.
37
4. Pentru fiecare dintre ceilalti pixeli albi identificati, am construit un patch, in care
pixelul respectiv este centrul. Patch-ul are dimensiunea 11x11 pixeli, stabilita in urma
testelor efectuate (teste ce au verificat numarul de colturi detectate si precizia cu care
s-au detectat). Valorile intensitatilor pixelilor, de la 0 (negru) la 255 (alb), sunt
copiate in patch din imaginea binarizata.
5. Pornind recursiv de la pixelul central, cel pentru care vreau sa determin daca este colt
sau nu, am pastrat in patch doar acei pixeli albi la care pot ajunge din vecin in vecin,
stergandu-i pe ceilalti (Fig. 20). Dupa cum se observa, pixelul central al patch-ului
(marcat cu verde) poate fi considerat colt. Cu toate acestea, pixelii din stanga patch-
ului, care nu sunt legati direct de punctul central pot influenta rezultatele pasilor
urmatori ai algoritmului.
38
imediata apropiere a pixelului negru exista cel putin un alt pixel, alb sau negru, ce fusese deja
identificat ca fiind colt). Bineinteles, odata cu cresterea numarului de pixeli a crescut exponential
si timpul de executie, ceea ce m-a nemultumit. Am luat decizia ca pasii de identificare a
colturilor sa fie aplicati numai pixelilor albi, de pe margini (edges).
Asa cum se observa in figura de mai sus, rezultatele procesului de corner detection sunt
destul de bune. Toti pixelii identificati ca fiind colturi sunt foarte aproape de colturile observate
in imaginea initiala. Desi exista unele colturi identificate perfect (un singur pixel), cele marcate
cu cerculet verde, exista si zone unde foarte multi pixeli au fost marcati ca fiind colt, de exemplu
zona marcata cu cerculet rosu. Am observat ca acest lucru se intampla atunci cand unghiul de
intersectie a dreptelor ce determina coltul este foarte mic.
Pentru a reduce si mai mult numarul colturilor detectate in imagine, am creat o metoda de
filtrare care, identificand o aglomerare de colturi, precum cea marcata cu rosu mai sus, alege
doar unul sau doua dintre acestea ca fiind puncte de interes. Pasii algoritmului de filtrare a
punctelor de interes sunt urmatorii:
1. Se parcurge imaginea “colturilor”, cautand pixelii albi (marcati ca fiind colturi)
2. Pentru fiecare pixel marcat, decupam un patch de 21x21 pixeli cu acesta in centru
3. Numaram pixelii albi din patch, pornind din vecin in vecin de la pixelul central, si
marcam puncte de interes astfel:
- daca gasim maxim 10 pixeli albi in patch, punctul de interes este centrul de
greutate al dreptunghiului ce incadreaza pixelii albi
- daca gasim mai mult de 10 pixeli albi in patch, punctele de interes sunt cele 4
colturi ale dreptunghiului ce incadreaza pixelii albi
Toate dimensiunile au fost stabilite experimental, iar rezultatele se observa in figura 22.
39
Fig. 22 – Corner Detection – fara filtrare (stanga) si cu filtrare (dreapta)
B. Recunoasterea obiectelor
Pentru identificarea obiectelor am ales sa calculez si sa compar distantele dintre punctele
de interes identificate prin Corner Detection si filtrare. M-am bazat pe caracteristicile multor
cladiri de a contine, fie prin alcatuirea proprie sau prin alcatuirea componentelor lor, una sau mai
multe axe de simetrie. Primele incercari efectuate au fost cele de determinare si identificare ale
formelor geometrice simple, de tip triunghi isoscel, triunghi echilateral, patrat, romb, dreptunghi,
paralelogram, trapez si cerc.
Triunghiul isoscel este forma determinata de trei pixeli ai imaginii, in care doua dintre
distantele dintre pixeli sunt egale (Fig. 23.a). Triunghiul echilateral este forma determinata de
trei pixeli ai imaginii, in care toate trei distantele dintre pixeli sunt egale. In implementare am
admis o eroare de 10% in ceea ce priveste relatiile de egalitate ale laturilor (Fig. 23.b).
Fig. 23.a – Identificarea triunghiurilor isoscele Fig. 23.b – Identificarea triunghiurilor echilaterale
40
Paralelogramul este forma determinata de patru pixeli ai imaginii, notati generic A, B, C,
D, intre care se stabilesc relatiile AB = CD, AD = BC, dar AC != BD (Fig. 23.c). Dreptunghiul
este forma determinata de patru pixeli ai imaginii, notati generic A, B, C, D, intre care se
stabilesc relatiile AB = CD, AD = BC si AC = BD (Fig. 23.d).
Trapezul este forma determinata de patru pixeli ai imaginii ce formeaza doua segmente
paralele, neegale intre ele (Fig. 23.g). Cercul este forma determinata de minim opt pixeli ai
imaginii pentru care suma intre patratul componentei verticale si patratul componentei orizontale
este egala.
Cercul este singura forma pentru care nu am aplicat Corner Detection, efectuand cautarea
direct pe imaginea binarizata alb-negru (Fig. 23.h). Asta deoarece procesul de extragere a
colturilor nu identifica nici un punct al curbelor ca fiind colt.
41
Fig. 23.g – Identificarea trapezelor Fig. 23.h – Identificarea cercurilor
Asa cum se observa in unele imagini, se pot face imbunatatiri pentru eliminarea
rezultatelor de tip fals-pozitiv. Aceste rezultate apar datorita utilizarii in recunoastere doar a
colturilor (nu si a capetelor de linie sau a punctelor de pe linie). De asemenea, in unele situatii,
rezultatul fals-pozitiv a fost obtinut deoarece s-a verificat, in acel moment, un numar de puncte
care a determinat forma, desi acestea nu erau toate punctele de interes ale obiectului (trapezul din
dreapta). In cazul cercurilor, rezultatele fals-pozitiv apar datorita numarului mic de puncte care
trebuie identificate (opt).
Avantajul recunoasterii formelor este acela ca nu avem nevoie de o imagine obiect cu
care sa comparam imaginea test. Toate trasaturile definitorii ale formelor pot fi scrise pur
matematic. Astfel, vom putea descrie un obiect de identificat prin forma, sau cumulul de forme
care ii alcatuiesc conturul. Descrierea obiectului poate fi redusa la un sir de caractere ocupand
cativa octeti in baza de date.
In partea a doua a dezvoltarii metodei de recunoastere am incercat sa identific un obiect
putin mai complex, o “casuta” formata dintr-un patrat si un triunghi isoscel a carei baza este una
dintre laturile patratului, fara insa a ma baza pe identificarea formelor din care aceasta este
compusa. Am efectuat teste folosind imagini asupra carora am aplicat transformari de scalare,
rotire sau amandoua.
Initial, am incercat identificarea unei functii care sa reprezinte transformarea suferita de
fiecare pixel (translatia pe verticala si orizontala) in urma scalarii si rotirii simultane a imaginii,
insa calculul s-a dovedit foarte dificil. Am incercat o solutie mai simpla, aceea de a determina
mai intai orientarea obiectului de interes, pentru ca apoi sa stabilesc modul in care acesta a fost
scalat.
Una dintre proprietatile obiectelor de care m-am folosit este prezenta axelor de simetrie.
Intuitiv, pentru punctele de interes ale oricarei cladiri exista un dreptunghi de suprafata minima
care le incadreaza pe toate. In cazuri speciale, se poate alege, in loc de dreptunghi un triunghi
isoscel fata de laturile caruia toate punctele de interes exterioare triunghiului se afla in apropiere.
Pentru determinarea orientarii obiectului de tip “casuta” in imagine, am considerat forma
de baza un triunghi isoscel, format din “fundatie” si varful “acoperisului”. Asa cum se observa in
42
Fig. 24.a, si se poate demonstra matematic, cele doua puncte ramase in exteriorul triunghiului
isoscel se afla la distante egale de laturile acestuia. Am considerat ca, in cazul in care pentru
obiect folosesc ca forma de baza triunghiul isoscel, pot sa testez in vederea asocierilor doar acele
puncte exterioare care se afla la distante mai mici decat media fata de cele doua laturi, eliminand
astfel posibile puncte de zgomot.
In vederea identificarii bazei triunghiului isoscel, am ales pe rand cate doua puncte de
interes ale obiectului. Varful triunghiului isoscel a fost determinat ca fiind punctul cel mai
indepartat de baza (perpendiculara dusa din acesta pe baza sa aiba lungimea mai mare decat orice
alta perpendiculara dusa din alt punct de interes din imagine). In cazul in care baza nu a fost
aleasa corespunzator, nu toate punctele de interes vor respecta regula de a se afla mai aproape
decat media de laturile triunghiului (Fig. 24.b).
a) b) c)
Fig. 24 – Alegerea bazei pentru incadrarea in triunghi isoscel corecta (a),
incorecta (b) si incadrarea in dreptunghi (c)
Daca aleg forma de baza dreptunghi, consider din nou cate doua puncte ca fiind baza, iar
latura paralela cu baza o determin ca fiind dreapta paralela care trece prin cel mai indepartat
punct de interes fata de baza. Desigur, lungimea dreptei respective va fi egala cu baza. Din
regula dreptelor perpendiculare (produsul pantelor este -1), voi determina celelalte doua laturi ale
dreptunghiului (Fig. 24.c).
In final, am incercat identificarea obiectului intr-o imagine cu mai multe astfel de
“casute”, sub diverse orientari si de diverse dimensiuni. Am constatat ca, desi sunt identificate
toate obiectele reale, am si foarte multe situatii de tip fals-pozitiv. De asemenea, asa cum era de
asteptat, timpul de prelucrare este extrem de mare.
Algoritmul propriu-zis de recunoastere cuprinde urmatorii pasi:
1. Se obtine o lista a tuturor punctelor de interes din imagine. Lista este ordonata “de
sus in jos” in functie de distanta de la celelalte puncte de interes la baza aleasa. Exista o
lista ordonata in acelasi mod a obiectului din baza de date (obiectul fata de care se
incearca recunoasterea).
2. Se obtine o lista a egalitatilor in care este implicat fiecare punct. Prin egalitati se
intelege identificarea segmentelor (distantelor) egale intre doua puncte de interes. Am
ales aceasta caracteristica bazandu-ma pe proprietatile de simetrie ale componentelor
cladirilor.
43
3. Se parcurg cele doua liste de puncte ordonate top-down si se incearca gasirea
asocierilor, comparand numarul de egalitati in care este identificat fiecare punct. Se
repeta ciclul comparatiilor cu punctele ramase neasociate pana cand se termina una dintre
liste. Procentajul de incredere al asocierii scade odata cu diferenta intre numarul de
egalitati pentru acelasi punct in cele doua liste si odata cu numarul de bucle parcurse in
vederea asocierii.
Pentru fiecare obiect (cel de start si cel de test) am ales pe rand doua puncte ca fiind baza
triunghiului isoscel de incadrare. Desi puteam sa consider deja cunoscuta baza triunghiului de
start am dorit sa vad efectul pe care il au procesarile suplimentare in eficienta algoritmului. Desi
rezultatele asocierilor au fost bune, timpul de executie a avut de suferit, fiind mult mai ridicat.
In cazul in care una dintre imagini contine mai multe puncte de interes decat cealalta, se
vor efectua verificari luand combinari din punctele de interes (de exemplu, daca prima imagine
are 6 puncte, iar a doua 4, vom lua din prima imagine combinari de cate 4 puncte, pe care vom
incerca sa le asociem cu a doua imagine)
In imaginea de mai sus sunt prezentate niste versiuni aproximative ale imaginilor cu
puncte de interes folosite la verificare (imaginea considerata cunoscuta este cea din stanga sus).
Algoritmul a dat rezultate foarte bune in identificarea corecta a asocierilor in doua imagini, sub
transformari de tipul: scalare uniforma, scalare neuniforma, rotatie, scalare uniforma urmata de
rotatie, scalare neuniforma urmata de rotatie. Toate celelalte 5 imagini au fost asociate cu prima
imagine cu o probabilitate mai mare de 80%. Se observa ca modificarile de tip translatie nu au
nici un fel de influenta in procesul de recunoastere. In plus, fata de algoritmii descrisi in lucrarile
anterioare, dimensiunea imaginilor nu mai reprezinta o restrictie.
Algoritmul functioneaza si pentru identificarea mai multor obiecte de acelasi tip in
aceeasi imagine test (marcate cu verde). Cu toate acestea, am observat si un numar important de
asocieri fals-pozitiv (marcate cu rosu).
44
Fig. 26 – Cautarea mai multor instante ale aceluiasi obiect in imaginea test
45
In urma testarii acestei metode, am obtinut o reducere intre 75 si 100% din rezultatele
fals-pozitive din imagini.
O problema provocatoare aparuta a fost gasirea unui mod de estompare a deformarilor de
perspectiva, care apar, de exemplu, daca imaginea este intai rotita si apoi scalata neuniform,
transformari ce duc la modificarea substantiala a unghiurilor dintre marginile obiectului (Fig 12).
Se observa ca deformarea este, de fapt, o transformare oblica aplicata imaginii (skew).
Orice obiect poate fi incadrat intr-un dreptunghi, cu “latimea” egala cu baza aleasa a
obiectului si “lungimea” egala cu distanta intre baza si cel mai indepartat punct de aceasta.
Transformarile pentru “indreptarea” obiectului se vor aplica in sistemul de coordonate
determinat de laturile dreptunghiului. Fiecare punct va fi translatat, pe orizontala si pe verticala,
cu o distanta proportionala cu distanta de la punct la una dintre laturile dreptunghiului. Fiecare
distanta se calculeaza cu ajutorul teoremei cosinusurilor. In urma corecturilor, se recupereaza o
mare parte dintre relatiile de egalitate necesare in algoritm, care au fost sterse din cauza
distorsiunii de perspectiva.
Una dintre marile probleme ale acestui algoritm este timpul foarte mare de executie, dat
de numarul de operatii necesare. Considerand ca vrem sa identificam un obiect despre care stim
ca are x puncte de interes, intr-o imagine test cu y puncte de interes, prin algoritmul in forma
actuala vom testa obiecte, un numar imens pentru un y nu foarte ridicat. Aceasta survine
ca urmare a utilizarii prelucrarilor geometrice, in care calculele se aplica pentru fiecare pixel in
parte. Se poate obtine un timp de executie mult mai scurt prin utilizarea calculelor pe matrice.
46
4. Concluzii
47
Algoritmul final ofera rezultate bune in ceea ce priveste identificarea obiectelor:
- pot fi identificate mai multe obiecte de acelasi tip intr-o imagine
- pot fi identificate mai multe obiecte diferite in aceeasi imagine
- recunoasterea constructiilor din imagini nu este influentata de transformari de rotatie,
scalare sau translatie
- in functie de calibrarea filtrului Canny Edge Detector, conditiile de iluminare si
vizibilitate influenteaza foarte putin sau deloc rezultatele algoritmului
In cadrul testelor efectuate, au fost identificate corect toate perechile true-pozitive incluse
in cazurile de testare. Toate aceste asocieri au un procent de siguranta oferit de algoritm de peste
80%. Am constatat ca algoritmul functioneaza mai bine in cazul constructiilor cu forme bine
definite, in care toate punctele de interes pot fi detectate. In aceste cazuri, procentele de asociere
sunt de aproximativ 95%.
Algoritmul ofera rezultate bune, de aproximativ 70%, in cazul capturarii imaginii test sub
unghiuri de pana la 45 o. In obtinerea acestui procentaj un rol important il are insasi structura
cladirii. Pentru cladirile in imaginile carora schimbarea perspectivei nu duce la ascunderea unor
puncte de interes metoda de recunoastere ofera rezultate foarte bune.
Puterea de recunoastere a algoritmului nu se limiteaza la constructii. Am testat algoritmul
utilizand imagini continand diverse obiecte de mobilier, litere de tipar sau vehicule. Desi
rezultatele in unele cazuri au fost reduse (sub 50%), cu cateva mici imbunatatiri, algoritmul poate
performa foarte bine intr-o gama larga de aplicatii. Singurele obiecte care pun intr-adevar
probleme algoritmului sunt cele cu forme neregulate (de exemplu, copaci); in acest caz gradul de
recunoastere este sub 10%.
Principalul avantaj al metodei propuse este nevoia redusa de spatiu de stocare pentru
baza de date. In cazul metodelor putin complexe, utilizate la inceputul cercetarii, dimensiunile
imaginilor binarizate ce trebuiau salvate in baza de date erau cu peste 90% mai mici decat in
cazul algoritmului SIFT (care utilizeaza imagini grayscale). Spatiul a fost redus chiar si mai mult
in urma stabilirii descriptorilor utilizati pentru comparatii. Acestia pot fi salvati sub forma unor
siruri de caractere, astfel incat informatiile pentru cateva zeci de constructii ocupa cativa kilobiti.
Principalul dezavantaj al algoritmului este timpul foarte mare de executie, datorat in
principal numarului mare de operatii efectuate. Acest numar se datoreaza metodelor geometrice
de prelucrare, in dauna celor matriceale. Prin implementarea calculelor la nivel de matrice a
transformarilor de rotatie si translatie din algoritm, estimez o imbunatatire cu pana la de 10 ori a
timpilor de prelucrare. Este posibil ca acest tip de calcule sa imbunatateasca si precizia cu care
pixelii sunt asezati in imagine in urma transformarilor.
Ca directii de imbunatatire al algoritmului am implementat si cateva metode de
identificare a formelor. Acestea pot fi folosite ca punct de plecare pentru recunoasterea
constructiilor bazata pe seturile de componente care le alcatuiesc (de exemplu, numarul de
48
ferestre si usi ale cladirii). Aceste metode mai trebuie imbunatatite, oferind in continuare un
numar important de rezultate fals-pozitiv.
Un alt neajuns care consider ca mai poate fi tratat pe viitor este sensibilitatea algoritmului
la ocluziune. Rezultatele scad semnificativ in momentul in care peste 15% dintre punctele de
interes nu pot fi identificate.
Bazandu-ma pe rezultatele obtinute si pe cele anticipate in urma imbunatatirilor mai sus
mentionate, consider ca prezentul algoritm performeaza bine in problema propusa a recunoasterii
constructiilor in imagini statice. Comparativ cu alte lucrari din domeniu, acesta functioneaza in
conditiile unor transformari substantiale in ceea ce priveste rotatia, scalarea, translatia obiectelor,
diferentelor de iluminare si perspectiva, etc. Algoritmul poate fi utilizat cu succes in alcatuirea
unei aplicatii de realitate augmentata.
49
5. Bibliografie
50