Úloha druhá - 3D rekonstrukce

vypracoval: Ludvík Pardubický

Zadání:

                    Z vybraných obrázků kostek sestavte 3D model - určete epipóly, epipoláry a proveďte zpětnou projekci rekonstruovaných bodů.

Teoretický základ:

                    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.

Výsledky činnosti:

Závěr:

            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.