vypracoval: Ludvík Pardubický
Vytvořte mozaiku spojením dvou na sebe navazujících obrázků, které byly nafoceny po otočení kamery bez jejího přemístění.
Pokud vyfotíme scénu dvakrát tak, že kamera zůstane na místě a pouze se otočí, pak mezi korespondujícími body (body, které v obou snímcích představují obraz stejného bodu ve skutečném světě) platí závislost
Pokud máme takto získané dva obrazy, tato matice H je pro všechny dvojice bodů stejná. Abychom matici H určili, musíme vytvořit několik dvojic bodů (minimálně čtyři, lépe však o něco víc), které označíme (jejich souřadnice)
a s jejich pomocí vyřešit soustavu která je daná maticí
Tato soustava však není přesně určená a tak musíme pro její výpočet použít metody SVD (Single Value Decomposition). Výsledná matice H je potom poslední řádek matice V, která vznikne touto metodou.
Postup výše uvedený jsem realizoval za pomoci schopností programu Matlab. Nejprve jsem uvažoval o implementaci v jazyku C++, ale po zjištění, jak obtížná je v něm práce s bitovými mapami jsem byl nucen uznat, že bych nestihl termín odevzdání. Ale mám v plánu tuto implementaci přeci jen později udělat.
Nyní již ke skriptu v jazyce Matlab. Zdrojový text je komentován, takže snad jen uvedu jednotlivé kroky jak jdou za sebou.
Jak je z výsledku výše vidět, spojení se mi nepodařilo dokonale. Vypadá to, že velmi záleží na dobrém určení korespondujících bodů, a to jak na přesnosti, tak na jejich vhodném výběru. Samotná implementace by měla být v pořádku a neměla by výsledek v tomto směru ovlivnit. Úloha jako celek mě velmi potěšila, protože jsem se dozvěděl jak pracuje něco, co je na první pohled jednoduchá záležitost.
Skript v Matlabu je zde.