vypracoval: Ludvík Pardubický
Z vybraných obrázků kostek sestavte 3D model - určete epipóly, epipoláry a proveďte zpětnou projekci rekonstruovaných bodů.
Máme scénu s kostkami, která je vyfocená z více míst. My si vybereme pro naši práci dva z těchto obrázků a pomocí nástroje corrgui označíme osm korespondujících bodů. (Osm je minimální počet pro úspěšnou rekonstrukci.)
Korespondující body splňují vztah
kde F je tzv. fundamentální matice. Tuto matici získáme z matice korespondujících bodů M, která má tvar
Pomocí SVD získáme z této matice fundamentální matici F o rozměru 3x3, která by měla mít hodnost 2. Díky nepřesnostem v označování korespondujících bodů má však takto získaná matice hodnost 3. Můžeme tuto matici upravit na matici s hodností 2, a to tak, že ji opět rozložíme pomocí SVD a vynulujeme poslední prvek matice D. Tím se však dopouštíme nepřesnosti, která se projeví při následujícím kroku - výpočtu epipólů a epipolár.
Pro epipóly platí
Pro epipoláry platí
Epipoláry spočítané pomocí upravené matice F se protínají v epipólu, ale neprocházejí přesně označenými body. Epipoláry spočítané pomocí původní matice F sice procházejí označenými body, ale neprotínají se v epipólu.
V dalším jsme přistoupili k rekonstrukci bodů obrázku. Posloužila nám k tomu projekční matice více (v tomto případě dvou) kamer, která má tvar
Tato matice se dá rozložit jako R=PX, kde P je vektor
projekčních matic kamer a X je vektor bodů v prostoru. Tento vztah dá přepsat
pomocí , kde
matice H vyjadřuje transformaci, kterou se určuje báze světa, který byl na
obrázku vyfocen. Existuje nekonečně mnoho takových matic H, ale jen jedna
odpovídá světu vyfocenému na obrázku. Mohli bychom ji získat pokud bychom
zaměřili v obrázku pravé úhly a tyto bychom zakomponovali do výše uvedeného
vztahu. To však neumíme, takže se musíme smířit s tím, že naše projekce
bude v nějaké jiné bázi, takže nebude vůbec vypadat tak jak by měla.
Nakonec jsme provedli reprojekci bodů určených jako korespondenční, abychom zjistili vizuální odchylky. V mém případě vyšly chyby 2.12 resp 2.05 pixelů pro jeden a druhý obrázek, což je myslím velmi dobré. Tato chyba vznikla nepřesným určením korespondujících bodů a následnou úpravou matice F.
Na této velmi zajímavé úloze jsme si prakticky ověřili, jak náročnou úlohou rekonstrukce obrazu je. Zároveň jsme však získali všechny potřebné podklady pro případné další studium této problematiky, které bychom jinak jen obtížně získávali, ačkoliv rekonstrukční úloha je z laického pohledu "vlastně jednoduchá".
Skript v Matlabu je zde.