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.