Laboratorní práce z předmětu Počítačové vidění pro informatiku, 33PVI
Milan Krčmář, letní semestr 1999/2000
Rekonstruujte 3D scénu ze dvou obrazů. Nejdříve použijte zadanou kalibrační matici P, potom proveďte její výpočet a srovnání obou metod.
Začneme tím, že vypočítáme fundamentální matici dvou pohledů. Pro každé dva korespondující body a musí platit . Matice má 9 koeficientů, postupujeme stejně jako v případě spojování obrazů: pro každý bod dostaneme rovnici o 9 neznámých, z osmi bodů sestavíme matici , , pomocí SVD upravíme hodnost matice na 8 a vypočteme matici .
Z rovnice vyjádříme koeficienty epipolár. Epipolára v obraze 2 je přímka v prostoru, která se zobrazuje do jednoho bodu v obraze 1, zobrazená v obraze 2. Korespondující body by měly ležet vzájemně na svých epipolárách. Pro rovnici epipolár platí
a ,
kde a .
Epipoláry mají jeden průsečík, epipól, ten je obrazem spojnice středů promítání obou kamer.
Následující obrázky ukazují zelené korespondující body a modré epipoláry v obou obrázcích, epipól je vyznačen červeně.
Celkový obraz
Detail epipolár
Detail epipólů
.
Vycházíme z rovnic kamery, je to rovnice přímky, která se zobrazí do jednoho obrazového bodu kamery. Pokud budou platit rovnice obou kamer, získáme dvě přímky, na jejichž průsečíku je požadovaný bod.
Obecné rovnice
,
Vektor v rovnicích má čtyři složky. Když ho normalizujeme tak, aby poslední složka byla 1, můžeme rozepsat rovnice do tvaru ( zde má už jen tři složky)
, .
Z tohoto tvaru už vycházejí rovnice pro :
, .
Tato soustava ale nebude mít řešení, protože body jsou zadány nepřesně a přímky se neprotínají, jsou to mimoběžky (i když blízké). Sestrojíme proto příčku mimoběžek (minimalizujeme jejich vzdálenost) a bod umístíme do jejího středu.
Tuto funkci derivujeme podle obou koeficientů a vypočteme místo nulové derivace (z povahy příčky bude mít funkce jediný extrém, minimum):
,
Rovnice upravíme a vypočteme a . Z nich vypočítáme hledané .
Následující obrázek ukazuje rekonstruované body, pro názornost byly body spojeny úsečkami tam, kde jsou v původním obrázku hrany kostek.
Odvození projektivní rekonstrukce vychází z rovnic projekce kamer:
a .
Když tyto rovnice dosadíme do vztahu pro zobrazení epipolár, dostáváme:
.
Jestliže zvolíme matici , můžeme postupnými úpravami této rovnice dojít k výpočtu , kde je epipól v druhém obraze a matice musí tvořit součin , který je antisymetrickou maticí. Z požadavku na antisymetrii sestavíme rovnice, jejichž řešení má dimenzi 4. Ze všech řešení vybereme náhodným opakovaným postupem tu s nejmenší singularitou (tuto míru zavedeme jako poměr a v SVD rozkladu). Z takto získaných matic už můžeme rekonstruovat body. Vypočtené body nebudou totožné s body získanými pomocí dříve zadaných (skutečných) matic, budou z nich přepočteny obecnou projektivní transformací (násobením 4,4 maticí H). Pokud bychom chtěli vypočítat tuto matici, musíme porovnat v této transformaci skutečné a dosud získané body:
.
Každé toto srovnání jsou 4 rovnice o 16+1 neznámých, 16 je koeficientů v matici H, 1 neznámá je násobek pro každý bod. Při pěti bodech již dostáváme 20 rovnic o 21 neznámých, z nichž už matici můžeme vypočítat. Já jsem použil všech 15 zadaných bodů, matici jsem počítal z 60 rovnic o 31 neznámých, hodnost matice jsem snížil pomocí SVD.
Na následujících obrázcích jsou původní snímky se zpětně přetransformovanými rekonstruovanými body. Zeleně je rekonstrukce ze zadaných projekčních matic, červeně z vypočítaných projekčních matic.