33PVR 2007 - DU-02 - Korespondence sekvence obrazů planární scény |
Vstup: Sekvence fotografií planární (tj. rovinné) scény, sejmutá kamerou z různých míst. Po sobě následující snímky byly sejmuty z blízkých míst.
Výstup: Sekvence
homografií, kde t-tá homografie popisuje transformaci mezi (t-1)-ním a
t-tým obrazem. Korespondence Harrisových bodů (rohů) přes celou sekvenci.
Úkolem je napsat automatický algoritmus v MATLABu, který tuto sekvenci
homografií najde.
Obrázky je možno před zpracováním převést na černobílé.
Pro nalezení korespondence a homografie mezi obrazy I1 a I2
použijte následující postup:
Detekované rohy v prvních dvou snímcích sekvence by měly
vypadat přibližně takto. V Harrisově
detektoru jsme použili parameter sigma=3.
Lineární korelační koeficient (také nazývný normalized
cross-correlation, zkratka NCC) je invariantní vůči lineárním
transformacím jasu a jeho hodnota leží v intervalu <-1,+1> (viz teoretický návod), proto se často používá jako
míra podobnosti okének.
Matice r má tedy rozměr N1xN2. Její prvek r(n1,n2) udává, jak
moc je okolí bodu n1 v obraze I1 podobné okolí bodu n2 v obraze
I2. Pokud je hodnota r(n1,n2) blízká jedné, je to evidence, že
body korespondují.
Přesněji řečeno, nemusíte počítat všech N1*N2 korelačních
koeficientů. Protože sousední obrázky sekvence jsou od sebe málo
vzdálené, bod v obraze I1 nemůže být od svého korespondujícího
bodu v obrázku I2 příliš daleko. Tudíž pokud body n1 a n2 jsou od
sebe příliš daleko, koeficient r(n1,n2) můžeme položit roven -1
(nebo stačí i 0) bez jeho počítání.
Homografii H ještě můžete zpřesnit, tak že je přepočítáte ze
všech bodů, které byly inliers (v pásmu tolerance) nejlepšího
vzorku RANSACu. (Toto je nepovinné, ale stejně to budete dělat u
třetí úlohy.)
Uvědomte si, že výstupem RANSACu nejsou jen homografie. Neméně
důležité je, že RANSAC rozdělí množinu kandidátů na "správné" a
"špatné".
Dejme tomu, že naše sekvence má pouze tři obrázky. Nechť roh o
souřadnicích [120.1,86.5] v prvním obrázku koresponduje s rohem o
souřadnicích [150.6,74.2] ve druhém obrázku, který zase koresponduje s
rohem o souřadnicích [170.3,56.7] ve třetím obrázku. Tedy do prvního
obrázku vykreslíme lomenou čáru s vrcholy [120.1,86.5], [150.6,74.2],
[170.3,56.7].
Takovou lomenou čáru (track) nakreslíte z každého rohu v prvním
obrázku, pro který byla nalezena korespondence. Někdy může mít track
méně vrcholů než je obrázků v sekvenci, protože korespondence
nepřežila celou sekvenci. Vykreslete pouze 10 vybraných (dobrých)
tracků, rozumně rozprostřených po celé ploše obrázku. Pokud najdete
méně než 10 tracků, které přežily celou sekvenci, nevadí.
Termíny
Všimněte si, že datum odevzdání se kryje s datem cvičení. Je to
proto, že na tomto cvičení můžeme vyřešit případné problémy s vložením
do odevzdávacího systému. Proto úlohu zkuste vložit již před tímto
cvičením.
Podrobnosti řešení
Zpracujte vždy dvojici obrazů t-1 a t, pro t=2...17. Označme obrazy v
čase t-1 a t jako I1 a I2. V těchto dvou obrazech máme najít množinu
korespondujících dvojic bodů (každý z jednoho obrázku), tj. těch,
které odpovídají stejnému bodu ve scéně. Tyto korespondující body
najdeme na základě toho, že musí splňovat dvě podmínky:
Až budete umět najít korspondence ve dvojici obrázků, zpracujete celou
sekvenci takto:
Tyto dvojice mají velkou pravděpodobnost, že
korespondují. Budeme je nazývat kandidáty na korespondenci.
Upozornění
Tato úloha je složitější než DU-01. Není to tak moc programování, ale
je nutno tomu rozumět. Kdo si nechá úlohu na poslední chvíli, nemá
šanci to stihnout (čímž nesplní podmínky pro absolvování
předmětu). Proto doporučujeme průběžnou kontrolu
implementovaných výsledků v následujících třech cvičeních takto:
Kdo bude rychlejší (např. už na 6. cvičení ukáže kandidáty na
korespondenci), tím lépe pro něj.