Mosaik

Daniel Sýkora (sykorad@fel.cvut.cz)

Zadání:

Úkolem bylo složit následující dva obrázky do jednoho panoramatického náhledu:

    

Řešení:

Vzhledem k tomu, že oba obrázky byly pořízeny fotoaparátem, který měnil pouze směr pohledu nikoliv celkovou pozici v prostoru, lze použít vektorovu rovnici homografie:

Pro úspěšné řešení je zapotřebí získat souřadnice [x,y] a [x',y'] alespoň čtyř korespondujících bodů v obou obrazech. Z naměřených dat lze pak sestavit homogenní soustavu rovnic:

Soustavu řešíme pomocí SVD, výsledkem výpočtu budou koeficienty matice H. Matice sama představuje afinní transformaci bodů ze souřadné soustavy prvního do soustavy druhého obrázku. Pomcí této transformace lze pak jednoduše namapovat body druhého obrázku tak, aby vizuálně splynul s prvním.

Řešení implementujeme v systému Matlab: mosaik.m, k získání souřadnic korespondujících bodů použijeme program corrgui.

Výsledky:

Kvalita výsledného panoramatu závisí zejména na počtu a rozmístění korespondujících bodů v obou obrazech. Je dobré korespondence rozmístit rovnoměrně po plochách překryvu obou obrázků. Dva blízké kontrolní body řešení nezlepší. Zvolíme tedy šest vhodně rozmístěných bodů:

    

Affiní transformace bodů generuje obecně neceločíslené souřadnice. Nejjednodužší metodou, jak transoformované souřadnice převédst na diskrétní indexy matice obrázku, je zaokrouhlení. Výsledekem je toto panorama:

Vizuálně můžeme vylepšit obraz bilineární interpolací čtyř okolních diskrétních bodů:

Porovnámeli oba obrázky, zjistíme, že bilineární interpolace sice sniží zubatost, ale zárověň mírně rozostří transformovanou část obrázku. Výsledek působí rušivě. Použijeme-li některou z metod maskování rozostření v diskrétních obrazech, získáme vizuálně méně rušivé panarama: