První laboratorní práce PVI - MOZAIKA

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

Úkol: Cílem úlohy je spojit dvě fotografie v jeden výsledný obraz. Každá z fotografií zachycuje stejný objekt z jiného úhlu. Mezi oběma fotografiemi existuje překryv, ve kterém můžeme identifikovat shodné body. Jejich souřadnice použijeme pro konstrukci matice homografie H, která poslouží k přepočítání perspektivního promítání z jednoho obrázku do druhého.

Výchozí rovnice pro výpočet matice H je

a * [u, v, 1]T = H * [x, y, 1]T.

V rozepsaném tvaru má podobu

(H31 * xi + H32 * yi + H33)ui - H11 * xi - H12 * yi - H13 = 0
(H31 * xi + H32 * yi + H33)vi - H21 * xi - H22 * yi - H23 = 0
.

Rovnice řešíme se souřadnicemi vyhledaných korespondencí pomocí metody SVD.

 

Postup: Vytvoříme si buffer (matici) výsledného obrázku, který má dvojnásobnou velikost oproti výchozím fotografiím. Do něj zkopírujeme první fotografii a pomocí inverzní homografie H zjišťujeme pozice bodů v druhé fotografii tak, aby na sebe obrázky navazovaly. Na těchto pozicích zjistíme barvy pixelu a případně je upravíme metodou bilineární interpolace. Výsledný pixel vložíme do výsledného obrázku.

Zadané výchozí fotografie:

 

Výsledný obrázek:

 

Výsledný obrázek - detail napojení:

 

Závěr: Fotografie se podařilo poměrně úspěšně spojit do jednoho obrázku, v místě napojení nejsou vidět žádné výrazné chyby. Na zkosení pravé části výsledného obrázku je dobře vidět transformace pohledu - objekt se musel jakoby "natočit". Řešená úloha byla rovněž dobou praktickou aplikací metody SVD.

ZDE je okomentovaný zdrojový kód řešení úlohy.