Skip navigation

Pontpárosítás

Jellemzői

Az eddigi pontdetektorok csak koordináta információt szolgáltatnak. Ez alapján úgy végezhető el a párosítás, ha van egy modellünk, amely a ponthalmazok között hat. Fel kell készülnünk arra, hogy nem lesz minden pontnak párja a másik halmazban. Ezek az outlierek. A halmazokból kiválasztunk annyi pontot, amennyi az úgynevezett minimális megoldáshoz elegendő. A maradék pontokat használjuk a modell ellenőrzésére. Az a pont fogja a modellt támogatni, amely a modell geometriai transzformációja után közelébe kerül egy másik halmazbeli pontnak. Olyan modellt keresünk, amelyet a legtöbb pont támogat, a legkisebb távolság hibával.

Pontpárosításra többféle lehetőségünk is van. Ezek részletei az előadás anyagában bemutatásra kerültek.

Kis számú ponthalmazok (~10 pont) esetén megoldható az összes párosítás szisztematikus vizsgálata. Viszont az exponenciális időigény miatt már 15-20 pont esetén sem hatékony. Ekkor célszerű véletlenszerűen választott mintákkal dolgozni, például a RANSAC algoritmussal.

A tapasztalat az, hogy önmagában a pont koordináták kevés információt szolgáltatanak, a gyakorlatban szokásos százas-ezres nagyságrendű ponthalmazok párosításához a pontok környezetének hasonlóságát is célszerű figyelembe venni előszűrésként. Ezzel a lehetőséggel a következő részben foglalkozunk.

Szisztematikus keresés (összes eset)

Az összes eset vizsgálatát az ocv_matching_GFTT_coherence_systematic.py példaprogram mutatja be, 2D affin transzformációt feltételezve a halmazok között. Szabályozható, hány GFTT sarokpontot szeretnénk használni (N). 12-nél nagyobb esetszám már rendkívül sok időt igényel!

A példánkban a pontok száma 10, ezek közül 8 párosítható, 2 nem. A példaprogram megjeleníti az eredeti és az elforgatott képet, rájuk vetítve a sarokpontokat. A harmadik képen a modell által definiált affin transzformációt látjuk a második képre és a sarokpontjaira végrehajtva. A vörös körök az erdeti kép sarokpontjait mutatják, ezekhez kell közel kerülnie a kék pontoknak.

A zölddel jelölt pontok kerülnek párosításra. Vegyük észre, hogy 3 pontpár affin transzformációval tökéletesen egymásba vihető. Ezért szükséges a modell ellenőrzést a kimaradó pontokon végezni.

Az első ábrán látható, hogy nem egymásnak megfelelő 3 pont került kiválasztásra. Emiatt az illesztés nem jó, a rossz modellt definiáló 3 pont konfiguráiót egyetlen további sem támogatja.

Összesen 86400 lehetséges eset van. Ezek közül a legtöbb támogató ponttal (5 darab, a 3 definiáló mellett), és azokhoz tartozó legkisebb hibával az alábbi konfiguráció rendelkezik. Figyeljük meg, hogy a vörös körök közelében helyezkednek a transzformált kék pontok a másik képről.

Keresés véletlen konfigurációk választásával (RANSAC)

Az összes eset száma exponenciálisan nő, ami az időigényt nagyon megnöveli. Vegyük észre, hogy nekünk igazából egy olyan pontpár hármasra van szükségünk, ami korrekt, ez az inlier pontokat jó eséllyel egymás közelébe fogja vinni. Bízhatunk abban, hogy véletlenszerűen választva a párosításokat, "belebotlunk" egy ilyenbe. Ez a RANSAC algoritmus alapja. Elméleti megfontolásokat felhasználva formula adható a probléma méretének és az outlier arány becslésének ismeretében a minimálisan szükséges iterációszámra, megadott valószínűségi elvárással a jó eredményre. Ennek részletei, és a RANSAC lépései az előadás anyagában találhatók meg.

Sajnos a pontpárosítás esetében a jó konfigurációk aránya rendkívül alacsony, így nem igazán várhatunk el magas valószínűséggel jó megoldást elfogadhatóan kevés iterációszám mellett. Egyre több pont esetén sok támogató pontot lehet "szerezni" úgy is, ha csak közelítőleg jó párosítást találunk. Ez viszont nem fog korrekt eredményt adni, jobb esetben is csak közelítőt.

Következő példánkban a ponthalmazok számossága 50. A RANSAC algoritmust 100.000 iterációval futtattuk.

7 támogató pontot úgy is lehet találni, hogy maga a transzformáció teljesen eltér a valóstól.

100.000 iteráció után is csak közelítő eredményt kapunk. Jól látható, hogy nem tökéletes a modellt alkotó 3 pontpár kiválasztása.

Feladat

Teszteljük a szisztematikus és a RANSAC keresést különféle ponthalmaz számosságokra!