Univerza v Ljubljani, Fakulteta za elektrotehniko Robotski vid (RV) 26. marec, 2014 Vaja 4: Robustno iskanje 2D objektov ˇ ˇ Pripravil: Ziga Spiclin | | http://lit.fe.uni-lj.si/RV Datum oddaje poroˇcila: 2. april 2014 Navodila Pri vaji bomo obravnavali postopek za iskanje oz. detekcijo ogliˇsˇc v 2D slikah. Ogliˇsˇca so izraziti strukturni elementi slike oz. objektov na sliki in jih lahko uporabimo v aplikacijah kot so sledenje objektov v zaporednih posnetkih, doloˇcanje preslikave med razliˇcnimi pogledi enakega objekta, kot refereˇcne toˇcke za geometrijske meritve, za kalibracijo optiˇcnih sistemov itd. Ogliˇsˇce je definirano kot preseˇciˇsˇce dveh robov, pri ˇcemer rob v sliki v sploˇsnem lahko opiˇsemo kot veliko lokalno spremembo sivinske vrednosti. Robove lahko detektiramo na podlagi odvodov slike. Prvi odvod za poljubno 2D funkcijo f (x, y) zapiˇsemo v obliki vektorja: gx (x, y) ∂f (x, y)/∂x ∇f (x, y) = ~g (x, y) = = . gy (x, y) ∂f (x, y)/∂y Vektorska slika gradienta ~g (x, y) v vsaki toˇcki (x, y) vsebuje vektor, ki s koordinatno osjo x oklepa kot α in ima dolˇzino G: q gy (x, y) , G(x, y) = gx2 (x, y) + gy2 (x, y) . α(x, y) = arctan gx (x, y) Gradient ~g (x, y) kaˇze v smeri najveˇcje spremembe funkcije f (x, y), torej pravokotno na dani rob v sliki. Komponenti gradienta gx (x, y) in gy (x, y), ki predstavljata parcialna odvoda, na digitalni sliki izraˇcunamo z digitalnimi filtri, naprimer s Sobelovim jedrom. Vektorsko sliko ~g (x, y) odvodov dobimo z dvema 2D diskretnima konvolucijama med vhodno sivinsko sliko in Sobelovima jedroma. Robovi v slikah imajo velik gradient v smeri pravokotno na rob, v ogliˇsˇcih pa je gradient slike velik v veˇc smereh, zato veˇcina detektorjev ogliˇsˇc temelji na primerjavi velikosti komponent gradienta v x in y smeri slike. V praksi se pogosto uporablja Harrisov detektor ogliˇ sˇ c, pri katerem za vsako toˇcko (x, y) izraˇcunamo lokalno strukturno matriko M : gx2 (x, y) gx (x, y)gy (x, y) A(x, y) C(x, y) M (x, y) = ∗ N (x, y | σ) = ∗ N (x, y | σ) gx (x, y)gy (x, y) gy2 (x, y) C(x, y) B(x, y) Komponente lokalne strukturne matrike M , tj. slike A(x, y), B(x, y) in C(x, y) predstavljajo druge odvode slike, ki jih zgladimo z Gaussovim jedrom N (x, y | σ) z uporabo diskretne 2D konvolucije (∗). Kriterijsko funkcijo za detekcijo ogliˇsˇc v vsaki toˇcki slike (x, y) doloˇcimo z analizo lastnih vrednosti λ1 in λ2 matrike M : s 2 trace(M ) trace(M ) ± − det(M ) , λ1,2 = 2 2 1 kjer sta trace(·) in det(·) funkciji za sled in determinanto matrike M . Na podroˇcjih slike s konstantno sivinsko vrednostjo bo M = 0 in λ1 = λ2 = 0, pri enakomerno naraˇsˇcujoˇci sivinski vrednosti v eni smeri pa bo λ1 > 0 in λ2 = 0. Lastni vrednosti λ1 in λ2 torej kodirata izrazitost roba, pripadajoˇca lastna vektorja pa smer roba. V ogliˇsˇcih je rob izrazit v smeri obeh lastnih vektorjev, lastni vrednosti sta veliki in velja |λ1 | ≈ |λ2 |, rob pa je tem bolj izrazit, ˇcim manjˇsa je razlika med lastnima vrednostima. Od tod sledi kriterijska funkcija za detekcijo ogliˇsˇc: 2 QH (x, y) = λ1 λ2 − κ(λ1 + λ2 )2 = det(M ) − κ (trace(M )) . Parameter κ doloˇca obˇcutljivost detektorja in ga izberemo na intervalu [0, 41 ]. Toˇcke roba detektiramo kot lokalne maksimume v QH (x, y), nadalje pa detektirana ogliˇsˇca preˇcistimo z upragovljanjem Q(x, y) > Tmin , kjer je Tmin obiˇcajno na intervalu od 104 do 106 . Pri vaji boste napisali funkcije za izraˇcun odvodov 2D slik z diskretno 2D konvolucijo in za izraˇcun odziva Harrisovega detektorja ogliˇsˇc ter funkcije za preˇciˇsˇcevanje seznama detektiranih toˇck. Harrisov detektor ogliˇsˇc boste uporabili za sledenje objektu na enostavnem prizoru. 1. Napiˇsite funkcijo za izraˇcun 1. odvoda vhodne sivinske slike iImage: function [oGx, oGy] = imageGradient( iImage ) . Funkcija vrne sliki parcialnih odvodov oGx in oGy, ki imata enako velikost kot vhodna slika iImage. Naloˇzite barvno RGB sliko slika1.jpg v okolje Matlab in jo pretvorite v sivinsko sliko po enaˇcbi S = 0, 299R + 0, 587G + 0, 114B. Izraˇcunajte prvi odvod sivinske slike in ga prikaˇzite kot vektor v vsaki toˇcki slike tako, da uporabite ukaza hold on in quiver(). 2. Napiˇsite funkcijo za izraˇcun odziva Harrisovega detektorja ogliˇsˇc na vhodni sivinski sliki iImage: function oQH = responseHarris( iImage, iAlpha, iSigma ) , kjer je iAlpha obˇcutljivost detektorja ogliˇsˇc, iSigma pa standardna deviacija Gaussove funkcije za glajenje odziva. Funkcija vrne sliko oQH, ki predstavlja odziv detektorja ogliˇsˇc. Preizkusite delovanje funkcije za razliˇcne vrednosti parametrov iAlpha in iSigma. 3. Napiˇsite funkcijo za iskanje lokalnih maksimumov v poljubnem 2D polju iArray: function oLocalMax = findLocalMax( iArray ) , Funkcija vrne matriko oLocalMax dimenzij 2 × n, ki vsebuje (x, y) koordinate n lokalnih maksimumov. Lokalni maksimumi v 2D polju so tiste toˇcke, v katerih je vrednost veˇcja od vrednosti v sosednjih 8 elementih slike. Pri tem ne upoˇstevajte elementov slike, ki leˇzijo na robu ali izven slike. 4. Napiˇsite funkcijo za detekcijo ogliˇsˇc na vhodni sivinski sliki iImage: function oCorners = cornerHarris( iImage, iAlpha, iTmin ) , kjer je iAlpha obˇcutljivost detektorja ogliˇsˇc, iTmin pa prag za detekcijo ogliˇsˇc. Funkcija vrne matriko oCornersdimenzij 2 × n, ki vsebuje (x, y) koordinate n detektiranih ogliˇsˇc. Pri tem uporabite funkciji responseHarris() in findLocalMax(). Parameter iSigma v funkciji responseHarris() postavite na vrednost 3. Naloge in vpraˇ sanja Poroˇcilo v obliki Matlab skripte naj izvede zahtevane izraˇcune oz. klice funkcij in izriˇse pripadajoˇce slike oz. grafe. Koda naj se izvaja po blokih (npr. %% Naloga 1), po en blok za vsako nalogo, odgovore na vpraˇsanja pa zapiˇsite kot komentar v ustrezen blok (npr. % Odgovor: ...). 1. Sliko prvega odvoda sivinske slike v vsaki toˇcki (x, y) zapiˇsite s kotom zasuka α(x, y) in velikostjo G(x, y). Prikaˇzite α in G kot sivinski sliki. 2. Izraˇcunajte druge odvode sivinske slike f (x, y): ∂ 2 f (x, y)/∂x2 , ∂ 2 f (x, y)/∂y 2 , ∂ 2 f (x, y)/∂x∂y in ∂ 2 f (x, y)/∂y∂x. Prikaˇzite te odvode kot sivinske slike. 2 3. Razˇsirite funkcijo cornerHarris() tako, da bo imela dodaten vhodni parameter iMinDist. Parameter iMinDist naj doloˇca minimalno razdaljo med ogliˇsˇci v slikovnih elementih. Preˇcistite seznam ogliˇsˇc tako, da bodo ogliˇsˇca med seboj oddaljena vsaj za razdaljo iMinDist, pri ˇcemer ohranite ogliˇsˇca z veˇcjim odzivom Harris detektorja. Izriˇsite sivinsko sliko z vrisanimi detektiranimi ogliˇsˇci, in sicer za vrednost iMinDist = 0 in iMinDist = 20. 4. Z drugaˇcno kriterijsko funkcijo, kot jo za analizo lastnih vrednosti λ1 in λ2 matrike M uporablja Harrisov detektor ogliˇsˇc, lahko iˇsˇcemo, detektiramo ali poudarjamo podolgovate strukture v sliki. Ena od tovrstnih funkcij je linearna anizotropiˇcnost: QLA = λ1 − λ2 , λ1 + λ2 + β (1) kjer je β > 0 poljubna konstanta. Napiˇsite funkcijo za poudarjanje podolgovatih struktur v vhodni sivinski sliki iImage: function oQLA = emphasizeLinear( iImage, iSigma, iBeta ) , kjer je iSigma standardna deviacija Gaussove funkcije za glajenje elementov matrike M , iBeta pa poljubna nenegativna konstanta. Naloˇzite barvno RGB sliko slika2.jpg v okolje Matlab in jo pretvorite v sivinsko sliko po enaˇcbi S = 0, 299R + 0, 587G + 0, 114B. Uporabite funkcijo emphasizeLinear() za poudarjanje struktur oˇzilja tako, da doloˇcite optimalne vrednosti parametrov iSigma in iBeta. Prikaˇzite po vaˇsem optimalen odziv oQLA s poudarjenimi podolgovatimi strukturami. 3
© Copyright 2024