Sisteme de Recunoastere a Formelor Laborator 5 Histograma Orientarilor Gradientilor 1. Obiectie Descriptorii de tip histograma a orientarii gratientilor, sau descriptori HOG, sunt descriptori de trasatori folositi in iziunea artificiala si in procesarea imaginilor in scopul detectiei obiectelor. Aceasta tehnica numara de cate ori apare o orientare anume a gradientului intr-o anumita regiune din imagine. Scopul lucrarii de laborator este de a implementa algoritmul de extragere a trasaturilor de tip HOG. Aceste trasaturi or fi utilizate pentru clasificarea si recunoasterea obiectelor. 2. Fundamente teoretice Trasaturile HOG au fost introduse de Naneed Dalal si Bill Triggs [1] care au dezoltat si au testat mai multe ariante de descriptori HOG, cu diferite organizari spatiale, diferite metode de calcul a gradientilor, si diferite metode de normalizare. Ideea esentiala care sta la baza descriptorilor HOG este ca aspectul local si forma unui obiect intr-o imagine poate fi descrisa de distributia intensitatii gradientilor si de distributia orientarii muchiilor. Implementarea acestor descriptori poate fi obtinuta prin impartirea imaginii in regiuni conexe mai mici, numite celule, si calcularea, pentru fiecare celula, a histogramei orientarii muchiilor (sau a directiei gradientilor) pe baza pixelilor apartinand celulei. Combinarea histogramelor din celule reprezinta descriptorul imaginii. Pentru o mai buna performanta, histogramele locale pot fi normalizate prin calcularea unei masuri a intensitatii pe o regiune mai mare a imaginii, numita bloc, si apoi folosind aceasta masura pentru normalizarea tuturor celulelor din acel bloc. Aceasta normalizare are ca efect o inarianta sporita la schimbarea iluminarii, sau la umbre. 3. Implementarea algoritmilor 3.1. Calculul gradientului Primul pas pentru obtinerea HOG este calculul alorilor gradientului. Cea mai folosita metoda este aplicarea mastilor de deriare unidimensionala pe directie erticala si pe directie orizontala, adica filtrarea imaginii cu urmatoarele doua nuclee de conolutie: D = [ 1 0 1] și 1 D Y = 0 1
Figura 3.1 Imagine initiala Figura 3.2 stanga: deriate pe orizontala; dreapta deriate pe erticala Dandu-se o imagine I, om obtine deriate orizontala si deriate erticala folosind un operator de conolutie: I = I D si I Y = I DY Magnitudinea gradientului este Orientarea gradientului este: G = I + I I θ = arctan Y I 2 2 Y 3.2. Discretizarea orientarii Al doilea pas consta in crearea histogramelor pentru fiecare celula. Fiecare pixel din fiecare celula are un ot in histograma. Pozitia in histograma care a fi incrementata de un anume pixel este data de aloarea orientarii gradientului acestui pixel. Dalal si Triggs au gasit ca este suficient ca histograma sa aiba 9 pozitii, iar daca orientarea gradientului ia alori intre 0 si 360 grade, pozitia in histograma este calculata prin impartirea cu 40. In procesul de otare fiecare ot poate fi ponderat cu aloarea magnitudinii gradientului, cu radacina patrata sau cu patratul magnitudinii. Figura 3.3 Imaginea initiala
Figura 3.4 Magnitudinea gradientului Figura 3.5 Impartirea in celule Figura 3.6 Histograma orientarii gradientului
3.3. Blocuri de descriptori Pentru a tine cont de ariatiile de iluminare si contrast, magnitudinea gradientilor trebuie normalizata local, ceea ce inseamna gruparea celulelor in structuri spatiale mai mari, numite blocuri. Descriptorul HOG este ectorul format din componentele normalizate ale histogramelor din fiecare celula din bloc. De obicei blocurile se suprapun partial, astfel ca fiecare celula contribuie de mai multe ori la descriptorul final. Exista doua tipuri principale de blocuri: blocul rectangular, R-HOG, si blocul circular, C-HOG. Blocurile R-HOG sunt grile patrate, definite de trei parametri: numarul de celule din bloc, numarul de pixeli intr-o celula, si numarul de pozitii in histograma unei celule. 3.4. Normalizarea blocurilor Exista mai multe metode de normalizare a blocurilor. Daca notam cu ectorul nenormalizat ce contine toate histogramele unui bloc, iar k este norma k pentru k = 1, 2 si e este o constanta de aloare foarte mica (ce nu a influenta rezultatele), factorul de normalizare se calculeaza cu una din ecuatiile de mai jos: L2-norm: f = 2 2 2 + e L1-norm: f = 1 + e L1-sqrt: f = 1 + e
4. Masura de similaritate Pentru a se masura similaritatea dintre doi ectori, se pot utiliza mai multe metrici. 1. Distanta Euclidiana Aand doi ectori P = (p1, p2, pn) si Q = (q1, q2, qn) distanta este: d = (p q ) +(p q ) + L +(p q ) 2 2 2 1 1 2 2 n n 2. Cosinusul unghiului dintre ectori: asemanarea dintre doi ectori este data de cosinusul unghiului dintre ei. Aand doi ectori A si B, cosinusul unghiului este dat de produsul lor scalar, normalizat cu produsul magnitudinilor lor. A B similarity = cos( θ ) = A B Ecuatia de mai sus se poate detalia in functie de atributele fiecarui ector, A = (p1, p2, pn) si B = (q1, q2, qn): p1q 1 + p2q 2 + + pnq1n cos( θ ) = 2 2 2 2 2 2 p + p + L+ p q +q + L+q 1 2 n 1 2 n 5. Detalii de implementare 2 2 Aand o imagine, gradientul se calculeaza gradientul cu magnitudine: = I + I unde: I = I D, IY = I D Y, D = [ 1 0 1], D [ 1 0 1] T Y =, este operatorul de conolutie G, Pentru orientare, se foloseste functia atan2 care returneaza alori in interalul [ π,π]. Astfel, orientarea gradientului este θ =atan2(iy, I) radiani. Unghiul transformat in grade este α=θ*180/π, cu alori in interalul [-180, 180] grade. Valorile orientarii in interalul [-180, 180] se transforma in alori in interalul [0, 360] astfel: α,if α 0 α signed = α+ 360,if α < 0 Y
6. Actiitate practica Ca date de intrare eți utiliza următoarele imagini de 8 biți/pixel: car1.bmp, car2.bmp, pedestrian1.bmp, pedestrian2.bmp, other.bmp 1. Adăugați in Diblook o noua functie, care a calcula magnitudinea si orientarea gradientilor cu formulele date. Afișați magnitudinea gradientului normalizată în interalul [0, 255]. 2. Adăugați o nouă funcție, care a reprezenta orientarea gradienților după următoarea codificare de culoare: Bin number Orientation degrees range Color {R,G,B} 0 [0, 40) {255, 0, 0} 1 [40, 80) {255, 128, 0} 2 [80, 120) {255, 255, 0} 3 [120, 160) {0, 255, 0} 4 [160, 200) {0, 255, 128} 5 [200, 240) {0, 255, 255} 6 [240, 280) {0, 0, 255} 7 [280, 320) {128, 0, 255} 8 [320, 360) {255, 0, 255}
Pentru a putea realiza o astfel de reprezentare, a fi neoie de modificarea paletei de culori. Rezultatul acestei reprezentari pentru imaginea car1.bmp ar trebui să arate în felul următor: Rezultate similare pentru imaginile: pedestrian1.bmp pedestrian2.bmp other.bmp 3. Implementati o functie care calculeaza trasaturile HOG pentru o imagine data, pentru care s-a specificat numărul de celule în care să fie diizată. Fiecare celulă a fi colorată în culoarea asociată poziției cu aloarea maximă din histogramă (conform codului de culori prezentat mai sus). Nu folositi normalizarea (folosiți doar pasii 1 si 2 din algoritmul prezentat in sectiunea teoretică). Pentru aceasta operatie, implementati o caseta de dialog prin care eti citi latimea, inaltimea, si numarul de alori in histograma unei celule. Rezultatul de mai jos este obtinut pe imaginea car1.bmp cu parametrii nr_alori_histograma = 9, latime_celula = 16, inaltime_celula = 16:
Rezultatele pentru celelalte imagini arată astfel: pedestrian1.bmp pedestrian2.bmp other.bmp 4. Găsiți similaritatea dintre două imagini (obiecte) folosind metrica bazata pe cosinusul unghiului aplicată pe ectorii ce conțin trăsăturile HOG. Fiecare astfel de ector conține o concatenare a tuturor alorilor din histograma orientărilor gradienților, însemnând că ectorul a aea dimensiunea nr_alori_histograma nr_celule. Folosiți următorii parametrii: nr_alori_histograma = 9, latime_celula = 16, inaltime_celula = 16: Pentru imaginile pedestrian1.bmp și pedestrian2.bmp, aloarea de similaritate cosinus folosind parametri specificati este de aproximati 0.8. Pentru imaginile pedestrian1.bmp and other.bmp, aloarea de similaritate cosinus ar trebui să fie de aproximati 0.39. 7. Bibliografie [1] Dalai, N. Triggs, B. : Histograms of oriented gradients for human detection, IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2005.