Vaja 4: Robustno iskanje 2D objektov

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