Sunteți pe pagina 1din 52

UNIVERSITATEA POLITEHNICA BUCURESTI

FACULTATEA DE AUTOMATICA SI CALCULATOARE


MASTER MANAGEMENTUL SI PROTECTIA INFORMATIEI

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

3. Dezvoltarea evolutiva a algoritmului____________________________18


3.1 Metode simple de recunoastere
3.2 Imbunatatiri si optimizari
3.3 Metode complexe de recunoastere

4. Concluzii___________________________________________________47

5. Bibliografie_________________________________________________50
1. Introducere

1.1 Motivatia lucrarii

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.

1.2 Solutii deja existente

“Computer Vision” este domeniul informaticii care se ocupa cu achizitionarea si


procesarea imaginilor din lumea reala in vederea stocarii informatiilor din acestea sub forma
simbolica, informatii ce vor fi apoi utilizate in luarea de decizii.
“Object Recognition” (recunoasterea obiectelor) este subdomeniul “Computer Vision”
care se ocupa cu localizarea si identificarea obiectelor in imagini statice sau fluxuri video.
Oamenii pot recunoaste, cu relativa usurinta, diferite obiecte de diverse marimi, privite sub
diverse unghiuri, in variate conditii meteorologice si de iluminare, avand parti mai mult sau mai
putin ascunse vederii. Totusi, aceste sarcini reprezinta inca o provocare importanta la adresa
calculatoarelor. Pana in prezent, nu s-a stabilit un standard in domeniu, insa au fost documentate
multe abordari, mai mult sau mai putin eficiente.[13]
Metodele folosite in recunoasterea obiectelor se pot imparti in:
- Metode bazate pe aparenta (Appearance Based Methods)
folosesc imagini sablon ca baza a comparatiei in urma careia se face
recunoasterea
sunt sensibile la variatii de perspectiva si iluminare
este imposibil sa reprezinti toate aparentele unui obiect, astfel incat acesta sa
poata fi recunoscut independent de orientarea din imagine
principalele metode bazate pe aparenta sunt:
1. Edge Matching – sunt extrase marginile (edges) din imaginea template si
imaginea test si sunt comparate, incercandu-se gasirea marginilor comune
2. Grayscale/Color Matching – sunt identificate imaginile pe baza diferentelor de
contrast si luminozitate intre pixeli
3. Histograms Responses – sunt comparate histogramele celor doua imagini
- Metode bazate pe trasaturi (Feature Based Methods)
sunt extrase trasaturi specifice ale imaginilor: colturi, segmente, pete (patches)
pentru detectie este nevoie ca trasaturile sa se regaseasca atat in imaginea din baza
de date, cat si in imaginea ce se doreste recunoscuta
principalele metode bazate pe trasaturi sunt:

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.

1. N. Groeneweg – A Fast Offline Building Recognition Application – Univ. Amsterdam


Articolul porneste subliniind rolul telefonului mobil in societatea contemporana,
in care acesta a devenit un accesoriu aproape nelipsit. Avand in vedere progresul
tehnologic al ultimilor ani indeosebi in ceea ce priveste camera foto-video, echipa
olandeza s-a gandit la posibilitatea implementarii unei aplicatii de tip “computer vision”
pe dispozitivele mobile. Ei au considerat propice o astfel de aplicatie in domeniul
turismului.
Groeneweg si echipa sa au dezvoltat o aplicatie locala, cu consum redus de
resurse. Pentru aceasta, ei au creat un algoritm care prelucreaza imagini cu rezolutii mici,
respectiv 160x120 pixeli. Acestia au identificat cladirile punand accent pe proprietatile
intrinsece (forma, culoare, textura), ignorandu-le pe cele extrinsece (perspectiva,
iluminare). Abordarea lor s-a bazat pe achizitia de trasaturi locale (local features) ale
cladirii.
Avantajele principale ale metodei sunt robustetea la ocluziune (parti din cladiri ce
nu se vad in poza) si invarianta trasaturilor locale la proprietatile extrinsece (de exemplu,
dimensiunea cladirii in imagine). Pentru validare, ei au folosit doua teste, primul utilizand
o implementare in Matlab a algoritmului si aplicarea lui asupra bazei de date “Zurich
Building Database” (ZuBuD), iar al doilea utilizand imagini achizitionate chiar de ei si
folosind algoritmul implementat pe un telefon mobil. In cadrul primului test, metoda lor a
identificat corect 91% dintre cladiri, iar in cel de-al doilea 80%, procentaje foarte bune.[1]

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]

3. M. Sheresht – Automatic Building Recognition From Digital Aerial Images – U. Teheran


Articolul se concentreaza pe problema recunoasterii si reconstructiei 3D a
cladirilor pe baza imaginilor aeriene. In ultimii ani s-a reusit dezvoltarea unor metode de
extragere a informatiilor de altimetrie din astfel de imagini. Autorii au incercat ca, din
aceleasi imagini, sa extraga componente liniare, cum ar fi cladiri si drumuri.
Autorii au prezentat diverse metode de recunoastere si reconstructie si au propus o
metoda semi-automata de identificare a cladirilor din imagini aeriene cu rezolutie mare.
Extragerea de informatii se face incremental, mai intai fiind identificate regiunile mari,
chiar intreaga cladire, apoi fiind rafinat modelul prin identificarea de detalii arhitecturale.
Sunt folosite imagini aeriene color, astfel incat sa poata fi efectuate analize spectrale
RGB si sa poata fi grupate mai usor diverse segmente ale imaginii. In prima etapa, sunt
analizate texturile si umbrele din imagine, iar in a doua etapa sunt extrase detaliile,
marginile si colturile.
Algoritmul restrictiv in ceea ce priveste cladirile apropiate sau lipite. Cazurile
descrise ca fiind cele pentru care algoritmul functioneaza contin multe restrictii impuse
de catre dezvoltatori. De asemenea, algoritmul nu raspunde la intrebarea “ce cladire este
aceasta?”, ci mai degraba la intrebarea “este aceasta o cladire?”.[3]

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. W. Souleiman – Buildings Recognition And Camera Localization Using Image Texture


Description – Univ. Saint-Etienne
Articolul adreseaza problema inregistrarii automate a imaginilor 2D in modelul
Geographic Informatic System (GIS). Este prezentata o metoda pentru imbunatatirea si
completarea bazei de date GIS cu descriptori ai texturilor cladirilor, extragand
informatiile din imagini de referinta. Autorii descriu cuplajele efectuate intre modele 3D
GIS si imagini 2D ca fiind o buna metoda de identificare a cladirilor in imagini statice
sau fluxuri video.
Procesul de clasificare este bazat pe asocierea primitivelor geometrice (margini,
colturi) intre modelul 3D si imaginea 2D. Acuratetea depinde foarte mult de precizia cu
care a fost construit modelul 3D, observandu-se erori de clasificare in cazul unor modele
nerafinate (margini neliniare, colturi rotunjite, etc). Articolul presupune ca setul de date
folosit pentru identificare a fost deja construit.

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. W. Zhang – Localization Based On Building Recognition – George Mason University


Acest articol adreseaza problema utilizarii imaginilor (a cladirilor identificate in
imagini) in determinarea locatiei. Problema propusa este determinarea locatiei curente a
unei persoane care face o poza cu telefonul mobil. Pentru determinarea locatiei este
efectuata intai o identificare a cladirii capturate in imagine si apoi o analiza a pozitionarii
persoanei fata de cladire (distanta si unghi).
Identificarea cladirilor se face prin extragerea unor descriptori locali din imaginea
test, care sunt apoi comparati cu descriptori din baza de date. Descriptorii sunt obtinuti
prin construirea histogramelor de culoare. Lucrarea se concentreaza asupra descrierii
algoritmului de identificare a cladirii, sugerand doar cateva abordari pentru determinarea
pozitiei. Autorii au folosit trei histograme: in spatiul YCbCr, monocrom si RGB.
Algoritmul a fost testat pe baza de date ZuBud, intai folosind o singura imagine
candidat si o singura imagine test per cladire, crescand apoi numarul de imagini candidat.
In testele cu o singura imagine candidat, rezultatele obtinute au fost cu 15-20% mai
bune.[6]

7. H. Ali – Semantic Indexing For Visual Recognition Of Buildings – Univeristatea Tehnica


Vieneza
In articol este abordata problema recunoasterii ferestrelor de cladiri in imagini din
mediul urban. Metoda descrisa de autori contine prelucrarea preliminara a imaginilor,
utilizarea unor reprezentari prin functii “Haar wavelet” pentru determinarea unor bucati
din imagine ce apoi sunt testate folosind un clasificator in scopul detectiei ferestrelor.

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]

8. Y. Zheng – Tour The World: Building A Web-Scale Landmark Recognition Engine –


Universitatea Singapore
Acest articol se apropie cel mai mult de utilizarea in domeniul turistic a
aplicatiilor de recunoastere de cladiri. Este adresata problema identificarii si recunoasterii
“landmark”-urilor, o serie de obiective turistice de mare interes la nivel continental si
global. Autorii au ales cladirile ce vor putea fi identificate pe baza numarului de poze
disponibile pe internet in care aceste cladiri erau etichetate.
Imaginile au fost grupate in seturi de date in functie de coordonatele GPS si de
informatiile din diverse ghiduri turistice. Aceste grupuri au fost prelucrate in seturi de
date mai mici, fiecare apartinand unui anumit landmark. Aceste setudi au format baza de
comparatie pentru recunoasterea landmark-urilor. Algoritmii folositi pentru identificare
se bazeaza pe gasirea celui mai apropiat vecin (nearest neighbor), pe baza trasaturilor
locale (local features).
Autorii au utilizat pentru testare 728 de imagini si doua abordari: identificarea
obiectului din imagine ca fiind landmark si recunoasterea efectiva a landmark-ului. Desi
81% dintre cladiri au fost identificate corect ca fiind landmark-uri, doar 46% dintre
acestea au fost si recunoscute, in principal din cauza conditiilor variabile de iluminare si
obscuritate din imaginile test.
Autorii au catalogat rezultatele drept satisfacatoare, subliniind insa dificultatile
intampinate in obtinerea seturilor de date, avand in vedere aria geografica de raspandire a
landmark-urilor si multitudinea de limbi in care se gaseau informatiile.[8]

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

2.1 Canny Edge Detector

Canny Edge Detector este un mecanism de detectie a pixelilor de contur al diverselor


forme dintr-o imagine, dezvoltat de catre John Canny, in 1986. Scopul lui Canny a fost
construirea unui algoritm optim de detectie a marginilor, lucru care pentru el insemna:
- detectie buna – algoritmul trebuie sa indice cat mai multe margini reale in imagine
- localizare buna – marcajele efectuate trebuie sa fie cat mai apropiate de marginile
reale din imagine (ideal ar trebui sa fie suprapuse)
- raspuns minimal – fiecare margine reala din imagine trebuie sa fie marcata o singura
data si, pe cat posibil, zgomotul din imagine nu trebuie sa duca la obtinerea unor
marcaje false
Pentru a indeplini aceste cerinte, Canny a folosit tehnica de calcul variational. Functia
optima a detectorului este scrisa ca o suma de 4 termeni exponentiali, dar poate fi aproximata
prin derivata de ordinul I a unui Gaussian.
Etapele procesului de detectie Canny:
1. Se aplica un Gaussian blur pentru a elimina eventualele pete si zgomotul din imagine
2. Se aplica un operator pentru a obtine intensitatea si directia gradientului
3. Prin “non-maximum suppresion” se determina daca un anumit pixel este un candidat
pentru a face parte din margine mai bun decat vecinii sai
4. Se aplica praguri de histerezis pentru a determina cele 2 limite ale unei margini [10][14]

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)

In continuare, sunt detaliate cele patru etape ale algoritmului:


1. Pentru ca detectorul este sensibil la zgomotul prezent in imagini neprocesate,
acesta foloseste un filtru bazat pe curbe Gaussiene, intre imagine si filtrul Gaussian
realizandu-se un produs de convolutie. Rezultatul este o versiune a imaginii initiale, usor
neclara (blurred), care nu mai este afectata in mod semnificativ de nici un pixel de
zgomot.
Mai jos este un exemplu de filtru Gaussian 5x5, care a fost aplicat asupra imaginii
din Fig. 1.a, pentru a obtine imaginea din Fig. 1.b.

2. O margine din imagine poate fi orientata dupa o multime de directii. Algoritmul


Canny foloseste 4 filtre pentru a detecta margini orizontale, verticale si diagonale in
imaginea blurred. Operatorii de detectie a marginilor (ex: Roberts, Prewitt, Sobel)
returneaza o valoare pentru prima derivata pe directia orizontala (G x) si verticala (Gy). Cu
ajutorul acestora se pot determina gradientul marginii si directia dupa care aceasta este
orientata.

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

In aceasta formula wreprezinta functia “window”, ce are valoare 1 in interiorul ferestrei si


0 in afara acesteia. Poate fi o functie tip treapta sau o gaussiana. I(x,y) reprezinta intensitatea
imaginii in punctul P(x,y), iar I(x+u, y+v) reprezinta intensitatea punctului translatat cu u pe
verticala si cu v pe orizontala. Se observa ca functia lui Harris, E(u,v), va avea valori mai ridicate
cu cat diferenta intre intensitatea orginala si cea translatata va fi mai mare, iar pentru diferente
mici in intensitate, functia va tinde catre zero. Deci, pentru detectarea punctelor de interes este
nevoie de maximizarea valorilor functiei E(u, v).
Algoritmul lui Harris mai poate fi scris si sub forma:
R = det M – k * (tr M)2 det M = λ1 * λ2 tr M = λ1 + λ2

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)

Fig. 3.b – margine (variatii mari ale intensitatii perpendicular pe margine)

Fig. 3.c – fundal (variatii mici ale intensitatii in toate directiile)

2.3 Scale Invariant Feature Transform

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]

Fig. 4 – Asocieri prin aplicarea algoritmului SIFT

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

3.1 Metode simple de recunoastere

In prima perioada a dezvoltarii, am incercat implementarea unor solutii simple de


recunoastere. Prima prelucrare a imaginii consta in aplicarea Canny Edge Detector. Astfel,
reducem imaginea la o colectie de pixeli apartinand marginilor obiectelor. Primii algoritmi iau in
considerare pixelii imaginii in ansamblu, fara a incerca o identificare a punctelor de interes.
Pentru aceasta etapa, mi-am autoimpus o serie de restrictii pe care le enumerez in
continuare:
- pentru prelucrare am descarcat de pe internet un numar de 4 imagini, 2 apartinand
turnului Eiffel din Paris, una a ceasului Big Ben din Londra si una a turnului cu ceas
din localitatea saudita Mecca
- fiecare imagine a fost redimensionata la dimensiunea de 480x640 de pixeli pentru a
face mai usoara prelucrarea (prin eliminarea necesitatilor de redimensionare am putut
folosi mai putine variabile in codul scris, ducand la o simplificare a intelegerii
programului)
- asupra fiecarei imagini a fost aplicat Canny Edge Detector, obtinandu-se o imagine
binarizata (linii albe pe fond negru)
- asupra imaginilor cu Big Ben si cu turnul din Mecca, precum si asupra unei imagini
cu turnul Eiffel a fost mai intai efectuata redimensionarea, pentru ca apoi sa fie
aplicat Canny Edge Detector; la cea de-a doua imagine a turnului Eiffel, cele doua
operatii au fost efectuate in ordine inversa
- toate imaginile sunt capturate din perspectiva frontala – perpendicular pe una dintre
fetele cladirii
- in urma utilizarilor repetate ale algoritmului Canny Edge Detector asupra unui numar
mare de imagini diferite, am constatat ca, cu cat rezolutia este scazuta, cu atat
numarul de detalii fiind redus, contururile trasate in urma algoritmului fac, paradoxal,
mai usoara identificarea vizuala a obiectelor din imagine
- tot in urma utilizarilor repetate ale algoritmului (in implementarea mea, asupra
fiecarei imagini sunt aplicate 10 filtre gaussiene, obtinandu-se 10 imagini cu din ce in
ce mai putine detalii), am constatat ca al cincilea dintre aceste filtre ofera un numar
rezonabil de “edges”, astfel incat imaginea binarizata sa nu contina nici prea multe
detalii redundante sau nefolositoare (de exemplu, limitele umbrelor obiectelor), nici
prea putine (la filtre superioare, incepeau sa fie eliminate zone importante din
marginile reale ale obiectului)

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.

Fig. 5 – Imaginile originale


(stanga-sus: Turnul din Mecca; dreapta-sus: Big Ben; jos: Turnul Eiffel)

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)

In continuare, am descris cele primele patru metode de recunoastere implementate.


Acestea au o complexitate redusa, neefectuandu-se o recunoastere bazata pe trasaturi locale.

A. Comparatia pixel la pixel


Prima si cea mai triviala metoda implementata a fost cea a comparatiei pixel la pixel.
Pornind de la doua imagini binarizate, aduse ca date de intrare in program, am comparat, prin
relatie de egalitate 1 la 1, fiecare pixel din prima imagine, cu pixelul situat pe aceeasi pozitie in
cea de-a doua imagine. Am implementat aceasta metoda, nu deoarece as fi considerat ca sansele
de reusita ar fi fost foarte ridicate, ci mai degraba pentru a obtine un prim etalon in dezvoltarea
unui algoritm eficient de recunoastere. Utilizarea acestei metode a fost posibila datorita restrictiei
de utilizare a aceleiasi rezolutii pentru cele 2 imagini.
Ca intrari au fost utilizate, doua cate doua, cele 4 imagini binarizate de filtru 5, obtinute
din imaginile originale, color, aratate anterior. Asa cum era de asteptat, rezultatele au fost extrem

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.

Fig. 9 – Rezultatele procesului de aproximare a conturului

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.

3.2 Imbunatatiri si optimizari

In cea de-a doua etapa a cercetarii am incercat sa imbunatatesc timpii de executie ai


algoritmilor dezvotati in prima etapa. De asemenea, am incercat sa reduc numarul restrictiilor
impuse, acestea facand algoritmii destul de greu de utilizat pentru o aplicatie finita.
Primul program pe care am incercat sa-l imbunatatesc a fost cel in care am implementat
algoritmul Canny Edge Detector, pentru detectia marginilor dintr-o imagine. Initial, acest
algoritm a fost scris pur secvential, astfel incat timpul de executie era foarte mare. Algoritmul
aplica asupra unei imagini, un numar ales de filtre, din ce in ce mai puternice. Programul este
scris utilizand limbajul de programare Java, versiunea 1.7.

A. Paralelizarea aplicarii filtrelor


O prima varianta de imbunatatire a programului, pe care am implementat-o, consta in
procesarea in paralel a aplicarii acestor filtre, utilizand numarul de core-uri disponibile pe masina
care ruleaza programul.
Am ales un numar de 10 filtre ce au fost aplicate aceleiasi imagini, intai folosind
algoritmul scris initial, apoi folosind algoritmul paralelizat. Numarul de core-uri disponibile pe
masina a fost obtinut utilizand metoda Runtime.getRuntime().availableProcessors(). La orice
moment de timp, erau deschise maximum un numar de thread-uri egal cu numarul de core-uri ale
masinii (de exemplu, daca masina avea un procesor DualCore, la un moment dat rulau in paralel
maxim doua thread-uri). Fiecare thread reprezenta prelucrarea imaginii prin aplicarea unui alt
filtru (din cele 10). Asa cum era de asteptat, am obtinut o imbunatatire importanta a timpului de
executie. Rezultatele pot fi observate in tabelul de mai jos.

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

Tabel 4 – Timpi executie per procesor

In continuare, am detaliat duratele de executie pentru fiecare iteratie (aplicare de filtru),


atat secvential, cat si paralel, utilizand un procesor Intel Core 2 Duo, cu doua core-uri
disponibile.

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

In cazul executiei secventiale, se observa incadrarea timpilor de aplicare a fiecarui filtru


intr-un interval restrans, cu largimea de aproximativ 0.2 secunde. Durata totala a executiei in
acest caz este egala cu suma timpilor individuali.
In cazul executiei paralele observam ca timpii de executie sunt mai mari decat la executia
secventiala, iar intervalul de variatie este mare, de aproximativ 1.3 secunde. Acest fapt se
datoreaza instructiunilor suplimentare de sincronizare a thread-urilor. Totusi, se observa, asa cum
ne asteptam, ca timpul total de executie in paralel este mai mic decat timpul total de executie
secventiala. In graficul urmator se observa cum este compusa durata totala de executie prin
paralelizarea duratelor de executie ale fiecarei iteratii. Timpul de start este considerat 0, iar
duratele sunt masurate in secunde.

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

Fig. 10 – Obtinerea timpului total de executie prin paralelizare

B. Paralelizarea prelucrarii matricei imagine


A doua varianta de imbunatatire a timpului de rulare pe care am testat-o este cea a
impartirii matricei imagine in bucati (chunks) si prelucrarea paralela a acestora, urmata de
imbinarea matricilor obtinute in matricea rezultat.
Matricea originala este impartita pe latime in exact atatea bucati cate nuclee avem
disponibile pentru procesare. Momentan, algoritmul utilizat are dezavantajul ca, in cazul in care
latimea imaginii, in pixeli, nu se imparte exact la numarul de core-uri, pixelii ramasi ca rest sunt
pierduti. Va fi necesara o imbunatatire a algoritmului de impartire, insa deocamdata, avand in
vedere ca testele sunt efectuate pe o masina cu 2 core-uri, poate fi pierduta maxim o coloana de
pixeli, ceea ce nu influenteaza evident rezultatul final.
Pentru a obtine rezultate concludente in vederea comparatiei metodei originale cu cea
paralelizata, am aplicat ambele metode asupra unei imaginii cu rezolutie mare (1920x1080 px).
In primul caz, cel secvential, aplicarea unui singur filtru a durat 19.431 secunde. In cazul
aplicarii algoritmului paralelizat, timpul de executie a fost de 10.057 secunde, de aproape doua
ori mai bun.
In tabelul de mai jos se pot observa duratele (exprimate in secunde) ale aplicarii a 10
filtre de tip Canny Edge Detector, asupra aceleiasi imagini, cu dimensiunea 950x410 px. Se
observa ca, in cazul procesorului DualCore, cel mai bun rezultat se obtine pentru paralelilzarea
prelucrarii matricei (impartirea acesteia in chunks si prelucrarea lor in paralel). Singurul timp de
executie mai scurt este cel pentru rularea in paralel pe 8 thread-uri, folosind procesorul i7.
Interesanta este si imbunatatirea timpului de executie la utilizarea a 4 thread-uri, desi procesorul
are doar 2 core-uri.

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

Tabel 6 – Rezultate aplicare Canny Edge Detector serial / paralel

Dezvoltarea unei metode de impartire a imaginii originale in chunks imi ofera


posibilitatea de a imbunatati metodele dezvoltate de identificare a obiectelor din imagini, prin
eliminarea restrictiei privind existenta unui singur obiect in imagine.

Apoi, am incercat sa imbunatatesc algoritmii de recunoastere dezvoltati. Prelucrarile


imaginii in vederea aplicarii algoritmilor descrisi mai sus erau facute utilizand functii
neoptimizate, a caror durata de executie crestea exponential cu dimensiunea imaginii prelucrate.

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.

Fig. 11.a. – Imaginea originala

31
Fig. 11.b. – Imaginea dupa aplicarea Canny Edge Detector

Fig. 11.c. – Cele doua obiecte identificate


In paralel, am incercat o alta metoda pentru diminuarea numarului de detalii. In contextul
noii restrictii, ca obiectele (in cazul in care exista mai multe) din pagina sa nu fie suprapuse, am
considerat ca pot elimina fundalul imaginii. Pentru acest test, am ales cazul simplu al eliminarii
“cerului” din imagini. Avand in vedere ca metoda folosita de mine in prezent pentru detectie nu
pune accent pe culorile din imagine, am creat o functie care coloreaza cu alb pixelii din imagine
a caror componenta albastra, din spatiul RGB, depaseste cu minim 25 (in valori de la 0 la 255)
valorile uneia dintre componentele rosie sau verde (componenta albastra a acelui pixel este
dominanta). Asa cum se observa in imaginile de mai jos, rezultatele au fost incurajatoare. Cerul a
fost, in mare parte, sters, iar obiectul de interes a suferit modificari neesentiale pentru detectie.

Fig. 12.a – Imaginea originala Fig. 12.b – Imaginea transformata

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

Fig. 14.a – Imaginea originala

Fig. 14.b – Imaginea transformata

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.

Fig. 15.a – Imaginea originala Fig. 15.b – Imaginea prelucrata

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

Fig. 17.a – Imaginea originala

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.

Fig. 18 – Imaginile nezgomotoase rezultate in urma impartirii

Marea reusita a acestei etape a fost reducerea substantiala a timpului de executie.


Utilizarea paralelizarii, a unei puteri mai mare de prelucrare a procesorului si optimizarea
algoritmilor au dus la obtinerea unei metode eficiente de prelucrare a imaginilor, ce poate fi
folosita in aplicatii complexe, oferind un timp acceptabil de raspuns.

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.

3.3 Metode complexe de recunoastere

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.

A. Detectia punctelor de interes


Primul pas al algoritmului a constat in determinarea punctelor de interes dintr-o imagine.
Primele puncte de interes pe care le-am putut identifica au fost colturile din imagine. Pentru
aceasta, pornind de la o imagine color, am aplicat initial algoritmul Canny Edge Detector, descris
in amanunt in lucrarile precedente.
Spre deosebire de algoritmii de Corner Detection ai lui Harris si Moravec, nu am pornit
identificarea punctelor de interes de la o imagine grayscale, ci de la o imagine binarizata (alb-
negru). Astfel, am redus considerabil cantitatea de informatii din imagine si necesitatea calcularii
unei multimi foarte variate de intensitati. Considerand imaginea turnului Eiffel din figura 19,
imaginea originala (color) ocupa 193kb, imaginea grayscale 160kb, iar imaginea binarizata doar
15kb, deci o reducere de peste 90% a dimensiunii.

36
Fig 19 – Canny Edge Detector

Asemanator cu algoritmii descrisi, am pornit cautarea colturilor prin stabilirea unor


patch-uri din imagine. Drept posibile colturi am considerat numai punctele situate pe margini
(considerand definitia coltului ca intersectie de margini). Pasii algoritmului creat sunt descrisi in
continuare:
1. Am parcurs imaginea binarizata pixel cu pixel si, pentru fiecare pixel alb intalnit, am
calculat numarul pixelilor albi vecini in cele 8 directii (vertical, orizontal si cele doua
diagonale).

2. Am eliminat din imagine urmatorii pixeli:


- pixelii fara vecini albi, considerati zgomote ramase in urma Edge Detection
- pixelii cu un singur vecin alb, capete de segment, despre care am observat ca
produc foarte multe calcule suplimentare in algoritmul de recunoastere
- pixelii cu 7 vecini albi, desi aproape intotdeauna colturi (in triunghiuri concave,
care “patrund” in “corpul” obiectului de identificat), am observat ca erau detectati
drept colturi si multi dintre vecinii acestora; din nou, am luat decizia eliminarii lor
pentru reducerea numarului de calcule necesar
- pixelii cu 8 vecini albi, ce nu pot fi colturi, fiind situati in interiorul unui blob
- pixelii cu exact 2 vecini albi, daca vecinii sunt situati pe aceeasi linie (orizontala,
verticala sau diagonala), ceea ce inseamna ca pixelul verificat apartine unui edge
si nu este colt

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.

Fig. 20 – Eliminarea zgomotului din patch

6. Am impartit patch-ul in 9 suprafete mai mici, astfel:


- o suprafata centrala compusa din pixelul central si vecinii sai (in total 9 pixeli)
- cate o suprafata in directia fiecarui vecin, astfel:
pentru vecinii de pe orizontala si verticala cate 12 pixeli, respectiv cele trei
coloane/linii a cate patru pixeli, vecine cu suprafata centrala pe orizontala si
verticala
pentru vecinii de pe diagonala cate 16 pixeli, in colturile patch-ului original,
suprafetele ramase dupa prima impartire
Pentru fiecare dintre cele 8 suprafete (excluzand zona centrala) am numarat cati pixeli
albi se afla in aceasta. Am considerat aceste numere ca reprezentand intensitati ale
vecinatatilor pixelului central in cele 8 directii

7. Am marcat pixelul central ca fiind colt daca:


- intensitatile in mai mult de 2 directii au fost mai mari decat 4
- intensitatile in exact 2 directii au fost mai mari decat 4, iar cele doua directii nu
sunt corespunzatoare pixelilor vecini pe verticala, orizontala sau diagonala (regula
initiala de filtrare a punctelor, acum aplicata pe valorile intensitatilor)
Considerand imperfectiunile Canny Edge Detector, anume aparitia intreruperilor intr-o
margine identificata, chiar daca aceasta ar trebui sa fie continua, am considerat si posibilitatea ca
pixelul asupra caruia aplic pasii descrisi anterior sa fie negru. Am constatat insa o crestere
spectaculoasa a zgomotului, tradusa prin colturi identificate eronat si multe colturi “dublate” (in

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

Fig. 21 – Corner detection

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

Fig. 23.c – Identificarea paralelogramelor Fig. 23.d – Identificarea dreptunghiurilor

Rombul este forma determinata de patru pixeli ai imaginii, notati generic A, B, C, D,


intre care se stabilesc relatiile AB = BC = CD = DA, dar AC != BD (Fig. 23.e). Patratul este
forma determinata de patru pixeli ai imaginii notati generic A, B, C, D, intre care se stabilesc
relatiile AB = BC = CD = DA si AC = BD (Fig. 23.f).

Fig. 23.e – Identificarea romburilor Fig. 23.f – Identificarea patratelor

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)

Fig. 25 – Transformari ale pozitiilor relative ale punctelor de interes

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

Pentru diminuarea numarului de rezultate fals-pozitiv am adaugat informatii suplimentare


in descriptori. In prelucrarea fiecarui set de puncte in vederea identificarii, am urmat urmatorii
pasi:
1. Se alege un set de k puncte din totalul de n puncte ale imaginii test. Numarul k este ales in
functie de numarul de puncte al imaginii din baza de date.
2. Se considera, pe rand, cate 2 puncte din cele k, reprezentand baza obiectului
3. Se transforma intreg sistemul de puncte, prin rotatie, astfel incat baza sa fie orizontala
(coordonatele X ale celor doua puncte ale bazei sa fie egale)
4. Se identifica distante egale, care se adauga in descriptor, astfel:
- distante intre puncte, indiferent de orientarea dreptelor determinate de puncte
- distante intre puncte pe axa Ox
- distante intre puncte pe axa Oy
5. Se obtine o mapa, cu cheile reprezentand punctele, iar valorile reprezentand listele de
egaliati in care sunt implicate acele puncte
6. Se stabilesc relatii de ordine intre lungimile distantelor pe Ox, respectiv pe Oy
7. Punctele din mapa sunt ordonate, in general, “de sus in jos”, in ordine crescatoare a
coordonatelor X
In vederea stabilirii unei relatii de egalitate, se accepta o marja de 10% din valorile
distantelor implicate in relatie (una dintre distante este intre 90% si 110% din cealalta).
Pentru identificarea obiectului, sunt parcursi simultan descriptorii de baza si de test si se
compara punct cu punct, cautandu-se acele perechi de puncte pentru care descriptorii sunt foarte
apropiati sau identici. In functie de gradul de corespondenta intre descriptori, se aloca fiecarei
perechi de puncte identificate un procentaj. Punctajul total al procesului de recunoastere se
calculeaza ca media aritmetica a procentajelor acordate. Am considerat identificat un obiect cu
punctaj peste 80%.

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.

Fig. 27 – Estomparea deformarilor 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

Domeniul “Building Recognition” reprezinta o preocupare actuala a cercetatorilor si


dezvoltatorilor in “Computer Vision”. Au fost propuse o multitudine de abordari asupra
domeniului, fiecare dintre acestea oferind rezultate mai mult sau mai putin satisfacatoare.
Deocamdata nu exista un standard in domeniu, insa sunt cateva metode consacrate de analiza,
cea mai folosita dintre acestea fiind Scale Invariant Feature Transform (SIFT). [12]
In cadrul acestei lucrari am prezentat etapele urmate in dezvoltarea unui algoritm de
recunoastere a constructiilor in imagini statice. Am prezentat, pe rand, diversele metode de
recunoastere implementete si testate. Toate metodele au pornit de la prelucrarea imaginii prin
aplicarea Canny Edge Detector. Astfel, calculele ulterioare s-au efectuat asupra unor imagini
binarizate, mult reduse fata de cele originale. Pe langa avantajul dimensiunii reduse a spatiului de
stocare necesar, logica prin care s-au prelucrat datele este de tip binar, cu pixeli albi si negri,
astfel incat regulile pot fi implementate foarte usor.
Primele variante dezvoltate au avut o complexitate redusa. Analiza imaginilor a fost
efectuata la nivel de pixel, iar metodele de identificare au fost simple, pornind de la gradul de
suprapunere a doua imagini, una cu un obiect cunoscut si cealalta cu un obiect de test.
Rezultatele in ceea ce priveste recunoasterea corecta a obiectelor au fost foarte bune. In
ultima etapa de testare a acestor metode putin complexe am obtinut asocieri cu o precizie de
peste 90%. Cu toate acestea, si in cazul compararii a doua imagini cu cladiri diferite, procentajul
de asociere era ridicat, de peste 70%.
In urma optimizarii algoritmilor implementati in prima parte a cercetarii, timpul de
executie obtinut a fost bun, de aproximativ 10 secunde pentru identificarea unei constructii intr -o
imagine cu dimensiunea 480x640 pixeli.
Dezavantajul principal al algoritmilor dezvoltati in prima etapa consta in multitudinea de
restrictii impuse in ceea ce priveste obtinerea imaginilor. Obiectul de identificat trebuia sa fie
situat central in imagine, sa nu fie rotit, diferentele de scara sa fie foarte mici, etc.
In partea a doua a cercetarii, am implementat un algoritm bazat pe identificarea
trasaturilor invariante. Am reusit sa construiesc un algoritm de identificare a obiectelor, ce
cuprinde o parte de alegere a punctelor de interes, in acest caz printr-un Corner Detector, si o
parte de asociere a punctelor de interes intre doua imagini cu scopul identificarii unui obiect
comun.
Metodele utilizate in algoritm au fost inspirate din detectoarele lui Harris si Moravec, in
ceea ce priveste alegerea punctelor de interes, si de algoritmul Scale Invariant Feature
Transform, un algoritm despre care s-a demonstrat ca ofera rezultate foarte bune in asocierea
trasaturilor definitorii a doua imagini.

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

[1] – N. Groeneweg, B. de Groot – A Fast Offline Building Recognition Application on a Mobile


Telephone – University of Amsterdam
[2] – Y. Chung, T. Han – Building Recognition Using Sketch-based Representations and
Spectral Graph Matching – University of Missouri
[3] – M. Seresht, A. Azizi – Automatic Building Recognition From Digital Aerial Images –
University of Tehran
[4] – Y. Li, L. Shapiro – Consistent Line Clusters for Building Recognition in CBIR – University
of Washington
[5] – W. Suleiman, E. Favier, T. Joliveau – Building Recognition and Camera Localization
Using Image Texture Description – Université Jean Monnet, Saint Etienne
[6] – W. Zhang, J. Kosecka – Localization Based on Building Recognition – George Mason
University, Virginia
[7] – H. Ali, G. Paar, L. Paletta – Semantic Indexing for Visual Recognition of Buildings –
Vienna University of Technology
[8] – Y. Zheng, M. Zhao – Tour the World: Building a Web-scale Landmark Recognition Engine
– National University of Singapore, Google Inc.
[9] – R. Hutchings, W. Mayol – Building Recognition for Mobile Devices: Incorporating
Positional Information with Visual Features – Bristol University
[10] – C. Harris, M. Stephens – A Combined Corner And Edge Detector – 1988
[11] – R. Collins – Harris Corner Detector – 2008
[12] – R. Collins – Feature Detection And Matching – 2008
[13] – D. Frolova, D. Simakov – Matching With Invariant Features – 2004
[14] – http://www.tomgibara.com/computer-vision/canny-edge-detector
[15] – http://tech.puredanger.com/2007/10/12/images-java2d/
[16] – http://cs.brown.edu/courses/cs143/results/proj2/valayshah/
[17] – http://en.wikipedia.org/wiki/Canny_edge_detector
[18] – http://en.wikipedia.org/wiki/Scale-invariant_feature_transform
[19] – http://en.wikipedia.org/wiki/Outline_of_object_recognition
[20] – https://en.wikipedia.org/wiki/Corner_detection

50

S-ar putea să vă placă și