Druhá laboratorní práce PVI - REKONSTRUKCE

Vypracovali: Václav Těšínský & Jiří Sedláček, letní semestr 2002

Úkol: Cílem úlohy je zrekonstruovat označené korespondující body ze dvou různých snímků a provést jejich zpětnou projekci do snímků a určit chybu reprojekce.

Postup: Pomocí toolboxu corrgui jsme označili souřadnice osmi korespondujících bodů v obou obrázcích. Počet osmi bodů je minimální počet, pro který je úloha řešitelná. Korespondující body musí splňovat vztah:

kde F je fundamentální matice. Prvky fundamentální matice jsme získali jako pravý nulový prostor matice M, jenž má následující tvar:

K určení pravého nulového prostoru využijme SVD. Získaná fundamentální matice F (3x3) by měla mít hodnost 2. Bohužel vlivem nepřesností označování bodů vychází hod(M)=3. Je proto potřeba ještě výslednou matici F rozložit pomocí SVD, vynulovat poslední prvek matice D a pracovat dále s novou maticí F. Tímto se ale do výpočtu vnáší chyba. Ta se projeví když se z fundamentální matice pokusíme dopočítat rovnice epipolár a epipólů. Epipóly jsou pravým, resp. levým nulovým prostorem matice F. Můžeme je tedy dopočítat pouze z matice F jejíž hodnost je 2. Epipoláry můžeme dopočítat jak ze staré tak z nové F.

Získané vektory l jsou vlastně rovnicemi přímek ve tvaru l[1]x+l[2]y+l[3]=0. Pokud epipoláry spočítáme z původní matice F, procházejí přesně označenými body, ale neprotínají se v jediném bodě. Naopak epipoláry spočítané pomocí upravené F neprocházejí přesně označenými body, ale zato se protnou v epipólu. Situace je patrná z obrázků: (zeleně první případ, modře druhý)

Poměrně značná chyba je podle našeho názoru způsobena jednak nepřesností při označování bodů a jednak jejich nízkým počtem. Pokoušeli jsme se zlepšit situaci přenásobením vstupních hodnot tak, aby byly srovnatelné s jedničkou, ale zvýšení definitnosti matice vizuálně příliš nepomohlo.

Rekonstrukce

V druhé části úlohy jsme se snažili o prostorovou rekonstrukci bodů z obrázku. Cílem bylo získat projekční matice kamer a pak dopočítat projektivní hloubky. Nejdříve jsme sestrojili projekční matici R více kamer. Pro dvě kamery má tvar:

Matice R se dá rozložit jako , kde P je vektor projekčních matic jednotlivých kamer a X je vektor bodů v prostoru. Koeficienty alfa jsou projektivní hloubky. Protože obě matice P a X mají hodnost 4, má i R hodnost 4. Pomocí SVD R rozložíme a z matice D vezmeme pouze 4 první diagonální prvky a jim odpovídající sloupce, resp. řádky z matic U a V odpovídají maticím P a X. Projekční matice vzniklé z toho postupu ale nezajistí, že pravé úhly na reálných objektech se objeví jako pravé úhly ve zrekonstruované scéně. Muselo by se vycházet ze vztahu , kde matice H je kalibrační maticí kamery. Získá se z porovnání prostorových a obrazových souřadnic bodů, u kterých obě tyto souřadnice známe. Protože tuto matici jsme pro kamery neznali, spokojili jsme se s projekční maticí P a souřadnicemi bodů v prostoru ve tvaru H-1X'. Pomocí nich jsme provedli reprojekci a zjistili průměrnou chybu. Průměrná chyba reprojekce se dala silně ovlivnit správným "naváhováním" vstupních souřadnic, čímž se zlepšovala definitnost vstupní matice M. Pro neupravené hodnoty byla chyba reprojekce přibližně 5 pixelů na bod. Při úpravě souřadnic do intervalu <0,1> se chyba snížila na 0,78 pixelů na bod. (křížek je původní bod, kolečko je reprojekce)

Projektivní hloubky:

Projektivní hloubky v z matice R lze dopočítat rekurentním vzorcem

kde e je epipól a F je fundamentální matice. Výpočet odstartujeme tak, že v prvním řádku matice R zvolíme všechny alfa rovné 1. Tato korekce matice R se provede ještě před její faktorizací. Po té je postup výpočtu projekčních matic stejný jako už bylo popsáno. Výsledná chyba reprojekce nám pro každý obrázek vyšla značně nesymetrická. Bez úprav vstupních souřadnic vyjde pro obrázek, jehož epipól jsme ve vztahu pro projektivní hloubky použili, ke snížení chyby na řádově 1e-6 pixelu na bod. Ve druhém však chyba stoupne na 30 pixelů na bod. Chybu si vysvětlujeme nepřesným určením polohy epipólu (vzniká z upravené matice F), které je patrné z obrázků výše.

Kompletní zdrojový kód je zde.

Závěr: Na úloze jsme si názorně ukázali problémy spojené s rekonstrukcemi. Uvědomili jsme si vliv formátu vstupních údajů na přesnost metody. Bohužel se nám nepovedlo úspěšně dokončit rekonstrukci, jednak kvůli problému při výpočtu projektivních hloubek, ale hlavně kvůli tomu, že jsme neobjevili postup jak provést rozklad matice R, který by obsahoval transformaci H. Kvůli tomu nereprezentují rekonstruované body scénu v našem reálném světě, ale jsou zatíženy nějakou neznámou transformací H.