Automatikus panorámakép-készítés


A feladat szerkesztés

Adottak képek, melyek minimum 20%-ban fedik egymást. Készítsünk algoritmust, amely ezekből a képekből a megfelelő paraméterek segítségével előállít egy panorámaképet.

Lépések szerkesztés

  1. Sarokpont detektálás
    • Olyan pontokat kell keresnünk, amelyek megbízhatóan jellemzik az adott képen látható objektumokat.
  2. Sarokpontok párosítása
    • A képekből kinyert pontokat meg kell feleltetni egymásnak.
  3. Párosított pontok szűrése
    • A megfeleltetések közül azokat kell kiválasztani, melyek valóban jó pontpárok, vagyis ugyanahhoz az objektumhoz tartoznak.
  4. Transzformáció
    • A helyes párosításból elő kell állítanunk a transzformációhoz szükséges adatokat, majd végrehajtani azt.
  5. Utómunkálatok
    • Két kép illesztése után felmerülhetnek problémák, mint például az illesztési vonalak feltűnősége, vagy kettőnél több kép illesztése.


Sarokpont detektálás szerkesztés

 

Sarokpontoknak nevezzük az olyan pontokat, ahol élek találkoznak. Az élek mentén a képfüggvény nagyot változik az egyik irányban. Élek találkozásánál ez a függvény minden irányban nagyot változik. Ezt egy csúszóablakkal lehet figyelni.

Ezek a pontok megbízhatóak, mert ellenállnak a geometriai és fotometriai deformációknak. A Harris sarokdetektáló algoritmus segítségével könnyen kinyerhetőek ezek a pontok.

Ha tudjuk az átfedés helyét, akkor leszűkíthetjük a keresési területet, ezzel több sarokpontot kapva.

Sarokpontok párosítása szerkesztés

 

Ahhoz hogy az egyes pontokat párosítani tudjuk, tulajdonságokat kell kinyernünk róluk. Vegyük a sarokpontok körüli négyzet pontjait sor folytonosan, majd az így előállt vektorokat hasonlítsuk össze. A vektorok négyzetes eltérésének vizsgálatával kapott eltérés szerint állítsuk sorba a vektorokat, majd a legkisebb eltérésűeket párosítsuk össze.

SSD - Sum of Squared Difference:

  1. Vegyük a vektorok négyzetes eltérését.
  2. Minden vektorhoz keressük meg azt a vektort, amivel az SSD értéke a legkisebb.
  3. Válasszuk ki azokat a párokat, amelyeknek az eltérése a küszöbérték alatt van.

A párosítás után egyes pontok kimaradtak, és egyes pontokhoz rossz párokat talált meg. Ezt a párosítások szűrésével küszöbölhetjük ki.

Párosított pontok szűrése szerkesztés

 

RANSAC szűrés - RANdom SAmple Consensus

Ez egy iteratív módszer, mely egy ponthalmazból kiszűri az outliner-eket, vagyis azokat a pontokat, amelyek a legkevésbé illeszkednek közéjük.

  • Véletlenszerűen választ pontokat a halmazból
  • Leteszteli az összes többi pontot, hogy mennyire illeszkedik a kiválasztott pontokból alkotott modellbe, vagyis hogy inliner-e
  • Minél több az inliner, annál jobb a modell
  • A megadott iterációs lépés alatt talált legjobb modellt adja vissza

A szűrés lefuttatása után megkapjuk a jó pontpárokat.

Transzformáció szerkesztés

A RANSAC szűrés után megmaradó pontpárokból felírható egy túlhatározott lineáris egyenletrendszer. Ennek az egyenletrendszernek a megoldásából felírható a homográfia, ami az egyik képet a másikba viszi át. A homográfia egy olyan (esetünkben) 3x3-as mátrix, ami tartalmazza a szükséges transzformációkat, hogy a két kép illeszkedjen. Ha vesszük az eredeti kép homogén koordinátájának transzponáltját, azt megszorozzuk balról a homográfia mátrixával, akkor az új kép koordinátáinak egy ω-szorosát kapjuk. Az ω a mátrixszorzás után alakul ki a 3. koordinátában. Ezzel leosztva kapjuk az új koordinátákat.

 


Utómunkálatok szerkesztés

 
Vágómaszk
 
Súlytérkép 2D
 
Súlytérkép 3D

A képek illesztésekor meglátszódhatnak az illesztési vonalak. Ezt a képek eltérő intenzitása okozza, mert más-más lehet a fényviszony a képek készítésekor. Az illesztések mentén történő intenzitássimítással ezek az élek elrejthetők.

Minden eltranszformált képhez készítünk egy maszkot, ami meghatározza, hogy mely pixelek tartoznak a képhez, így a fekete részek nem zavarnak be az intenzitássimításba.

A simításhoz egy súlytérképet használunk, amit eltranszformálunk a képpel együtt. Ez megmondja, hogy egy adott pixelnél mekkora súllyal kell venni az intenzitást.

A panorámaképek általában több képből állnak, ezért valamilyen módon automatizálni kell az illesztési folyamatot. A képeket egymás után kell megadni, és minden képnél azt is, hogy milyen irányból illessze az előző képhez, valamint hogy mekkora az átfedési terület a két kép között. Ezen kívül megadható, hogy az átfedő terület két végét levágja-e az algoritmus. Az átfedéses területet felosztva egyenletesebben tudjuk kinyerni a sarokpontokat. Miután minden képpárhoz kiszámítottuk a transzformációs mátrixot, a szintén paraméterként megadott sorszámú képet vesszük a panorámakép közepének. Ehhez transzformáljuk a többi képet a homográfia mátrixok szorzásával kapott transzformációval.

Az algoritmusnak számos paramétere van, melyek behangolása nehéz feladat, nagyban befolyásolja a képek felbontása.


</noinclude>

Szeged


Konklúzió szerkesztés

Az algoritmus a bemeneti képekről feltételezi, hogy azok élesek, nagy síkfelületek találhatóak rajta, vagy egy tájkép, és egy nézőpontból készültek. A nézőpont változása a panorámakép készítés sikerességét nagyban rontja. Továbbá a növényzet, és annak változása a szél miatt is eredményezhet hibákat. A képeken előforduló mozgó objektumok (emberek, autók) a két képen más pozícióban jelenhetnek meg. Ilyenkor ezek elmosódhatnak, halványak lehetnek.

A feltételeket kielégítő képek, és a megfelelő paraméterezések mellett eredményesen lehet panorámaképeket készíteni az algoritmussal.


</noinclude>

Szeged


</noinclude>

Szeged, Tisza-part