Documente Academic
Documente Profesional
Documente Cultură
Grupa 30643, An 4, TI
Contents
1 Introducere 2
2 Obiective proiect 2
3 Studiu bibliografic 2
6 Testare s, i validare 6
8 Concluzii 9
1
1 Introducere
Proiectul de fat, ă are ca scop crearea unei implementări proprii pentru metoda Harris de detect, ie
de colt, uri, atât ı̂n imagini grayscale, cât s, i ı̂n imagini color. Această metodă este utilizată cu precădere
ı̂n computer vision, deoarece se ocupa cu extragerea de feature-uri necesare pentru detect, ia mis, cărilor,
recunoas, terea de obiecte, reconstruct, ii 3D, image registration s, i video tracking.
2 Obiective proiect
Obiectivul principal pentru imaginile grayscale este să reus, im să obt, inem prin algoritmul nostru
(care respectă pas, ii descris, i ı̂n curs) aproximativ aceleas, i rezultate pe care le-am obt, ine dacă am utiliza
funct, ia Harris predefinită ı̂n librăria OpenCV.
Celălalt obiectiv al proiectului este să implementăm o metodă care să aplice algoritmul Harris s, i
să poată fi folosit pe imaginile color. Acest lucru nu poate fi ı̂ncă realizat de funct, ia predefinită ı̂n
librăria OpenCV.
3 Studiu bibliografic
Cercetările pentru metoda Harris de detect, ie de colt, uri pe imagini grayscale au ı̂nceput de la
documentat, ia din librăria OpenCV a funct, iei cv.cornerHarris() [1]. Aceasta a cont, inut, pe scurt, un
rezumat despre formulele din spatele funct, iei s, i despre senmificat, iile fiecărui termen ı̂n parte. Pentru
dezvoltările acestora (explicat, iile matematice din spatele obt, inerii matricei de autocorelat, ie), cât s, i
pentru obt, inerea detaliată a pas, ilor algoritmului am studiat Interact, iune Om-Calculator, Cursul 4,
Universitatea Tehnică din Cluj-Napoca [2] s, i Computer Vision, CUrsul 6.2, Universitatea Carnegie
Mellon [3]. Cursul de Interact, iune Om-Calculator a constituit baza pentru modificarea algoritmului
să funct, ioneze s, i pe imagini color.
1. Pentru fiecare pixel P(x, y) din imagine se calculează matricea M de autocorelat, ie.
Definit, ie: Matricea de autocorelat, ie este rezultatul maximizării prin funct, ii Taylor a variat, iei
intensităt, ii pentru o fereastră w(x, y) shiftată cu deplasamentul (u, v).
Figure 1: Variat, ia intensităt, ii ı̂n punctul P(x, y) pentru o fereastră w(x, y) shiftată cu deplasamentul
(u, v)
2
Figure 2: Aproximarea variat, iei intensităt, ii după aplicarea funct, iilor Taylor
Legendă:
•
Ix s, i Iy
= operatori diferent, iali care descriu geomatria ”suprafet, ei” ı̂n puntul (x, y) din punct de
vedere al variat, iei intensităt, ii; se pot obt, ine prin aplicarea unor matrici de tip Sobel.
•
w(x, y) = f ereastră cu ponderi gaussiene.
Legendă:
•
Rx s, i Gx s, i Bx
= operatori diferent, iali pe fiecare canal (RGB) care descriu geomatria ”suprafet, ei” ı̂n puntul
(x, y) din punct de vedere al variat, iei intensităt, ii; se pot obt, ine prin aplicarea unor matrici
de tip Sobel.
•
Sσ = f ereastră cu ponderi gaussiene.
2. Se calculează matricea de răspuns R(x, y) pentru fiecare pixel P(x, y).
3
4. Se aplică ”non-maximum supression”: se ret, in maximele locale, iar restul valorilor devin 0.
5. Toate puntele rămase sunt colt, uri.
Interpretarea matricei de răspuns (valoare a ”tăriei” colt, ului ı̂n punctul respectiv) se regăses, te mai
jos s, i ajută la clasificarea punctelor ı̂n una din cele 3 categorii: ”flat” point, ”edge” point s, i ”corner”
point.
SOBEL X = np . a r r a y ( (
[ −1 , 0 , 1 ] ,
[ −2 , 0 , 2 ] ,
[ −1 , 0 , 1 ] ) , dtype=” i n t 3 2 ” )
SOBEL Y = np . a r r a y ( (
[ −1 , −2, −1] ,
[0 , 0 , 0] ,
[ 1 , 2 , 1 ] ) , dtype=” i n t 3 2 ” )
4
GAUSS = np . a r r a y ( (
[1/16 , 2/16 , 1/16] ,
[2/16 , 4/16 , 2/16] ,
[ 1 / 1 6 , 2 / 1 6 , 1 / 1 6 ] ) , dtype=” f l o a t 6 4 ” )
5
5.3 Funct, ia convolve(img, kernel)
Această funct, ie este folosită pentru aplicarea de convolut, ii cu matricile Sobel s, i gaussiene, Img
reprezintă imaginea pe care se aplică convolut, ia (sau canalul de culoare), iar kernel-ul reprezintă ma-
tricea de convolut, ie care se aplică. Pas, ii aplicării operat, iei de convolut, ie sunt:
3. Se parcurge imaginea, se formează o matrice cu valorile din imagine corespunzătoare cu pozit, iile
kernel-ului s, i după se aplică convolut, ia.
4. Se normalizează imaginea rezultat ı̂ntre 0 s, i 255, dacă este cazul.
6 Testare s, i validare
Partea de testare a fost realizată prin intermediul funct, iei main(). S-au folosit 6 imagini diferite: 3
dintre ele ı̂n format grayscale, pentru apelul funct, iei harris() s, i celelalte 3 color pentru apelul funct, iei
harris rgb(). Pas, ii de testare sunt următorii:
1. Citirea cu ajutorul funct, iei imread() a imaginii pe care dorim să testăm.
2. Afis, area imaginii sursă cu ajutorul funct, iei imshow().
3. Aplicarea pe imaginea sursă a funct, iei harris() cu parametrul threshold specificat.
4. Afis, area imaginii cu colt, urile detectate.
Validarea rezultatelor obt, inute s-a putut realiza doar pe imagini grayscale prin compararea celor
produse de apelul funct, iei cornerHarris() ı̂n cadrul lucrării de laborator nr. 5, cu cele produse de apelul
funct, iei noastre. Câteva dintre aceste imagini finale vor fi redate mai jos.
Pentru k = 0.04 s, i threshold = 150.
6
Figure 8: Imaginea rezultat prin aplicarea cornerHarris()
Rezultat mult mai similar cu al nostru se obt, ine pentru k = 0.04 s, i threshold = 120.
Se observă, as, adar, că algoritmul nostru obt, ine performant, e asemănătoare decât funct, ia pre-
definită ı̂n OpenCV, doar că utilizează valori mai mari pentru a realiza filtrarea prin thresholding.
De asemenea, se observă, ı̂n cazul algoritmului pe imagini color că pe măsură ce ı̂ncercăm să
eliminăm fals pozitivele, se reduce s, i din numărul de real pozitive (dispar puncte din iarba, dar dispar
s, i de la colt, urile ferestrei).
7
Figure 10: Imagine color cu k = 0.04 s, i threshold = 45
8
După ce avet, i toate instrumentele necesare, rulat, i harris3.py cu opt, iunea de Current File.
8 Concluzii
În linii mari, proiectul a reus, it să-s, i atingă cele 2 obiective: crearea unei imprementări proprii
a algoritmului Harris de detect, ie de colt, uri pentru imagini grayscale s, i adaptarea lui pentru imagini
color. Din nefericire, implementarea noastră nu este la fel de bună comparativ cu funct, ia din OpenCV
(cornerHarris()), iar pe viitor ne gândim să ı̂ncercăm o abordare bazată pe kernel-uri de dimensiuni
mai mari (5x5, 7x7) decât cele de acum s, i să adaptăm threshold-ul s, i parametrul liber k la valori mai
potrivite.
9
References
[1] https://docs.opencv.org/4.x/dc/d0d/tutorial_py_features_harris.html
[2] https://users.utcluj.ro/~tmarita/HCI/C4.pdf
[3] https://www.cs.cmu.edu/~16385/s17/Slides/6.2_Harris_Corner_Detector.pdf
10