Sztereó rekonstrukció
2. Sztereó rekonstrukció
A megfeleltetés megállapításához 320x240-es felbontású képeket használtam. Ennél nagyobb felbontásnál nem teljesülnek a valósidejű navigációhoz a sebesség feltételek.
A sűrű illesztés során az egyik képen szereplő összes pontnak megkeressük a párját úgy, hogy minden egyes pontot összehasonlítunk a másik kép összes pontjával, a kapott eredményt elmozdulás térképpel szoktuk ábrázolni.
Mivel elsődleges szempont a sebesség, ezért szükség volt arra, hogy csökkenjen a keresési tér. Egy szintbe kell hozni a képeket (rektifikáció), hogy az azonos képpárok egy sorba essenek, így egy pont párját csak a vele azonos sorban lévő pontok között kell megtalálni.
Ebben a fejezetben áttekintjük a 3D rekonstrukcióhoz szükséges lépéseket:
1. kamera középpontok, és képsíkok helyzetének meghatározása (kalibráció)
2. egymásnak megfelelő pontpárok keresése (illesztés)
3. kamera középpont összekötése a megfeleltetett vetülettel (trianguláció)
Hirdetés
2.1. Kamera kalibráció
A kalibrációhoz objektumpontokra van szükség. Ezeket a pontokat egy ún. kalibrációs objektummal gyűjthetjük össze, ami egy sík, fekete-fehér négyzethálós sakktábla, melynek sarokpontjai jól meghatározhatóak. Az objektumpontok mozgását követve lehet következtetni a belső és külső paraméterekre. A belső paraméterek segítségével a különböző torzításokat lehet kijavítani (pl. a 2. ábrán látható párnatorzítást), míg a külső paraméterek segítségével tudunk majd 3D-t számolni.
A pontosabb kalibráció érdekében szükséges minél több felvételt csinálni. Fontos, hogy a képpár mindkét képén látszódnia kell a teljes sakktáblának, hogy képpáronként azonos objektumpontok legyenek (lásd 2. ábra).
2. ábra
A robot bal és jobb kamerájával készített eredeti, legjobb minőségű, 320x240-es képek. Az OpenCV berajzolta a talált sarkokat.
A kalibrálás eredményét lásd a 3. ábrán.
Ha a kamerák nem mozdíthatóak és a belső paramétereik változatlanok, akkor a kalibrálást elég egyszer elvégezni, így a kapott mátrixok és vektorok később is felhasználhatóak.
3. ábra
A kamera kalibrációja után a 2. ábrán látható képpár rektilineáris lett
2.2. Rektifikáció
Cél az, hogy a képpár egymásnak megfelelő sorai a rektifikálás után egybe essenek, így a sztereó megfeleltetés megbízható és megfelelően gyors lesz. Az eljárás után többek közt megkapjuk azt a mátrixot (Q), amivel majd a 3D-s koordinátákat ki tudjuk számolni.
Megvannak a képpárok, az átalakításához szükséges mátrixok, most már le kell képezni a régi képeket a rektifikáltra. A képek átalakítására után megkapjuk a rektifikált képeket (4. ábra).
4. ábra
A 3. ábra a rektifikáció után, ugyanazon pontok egy sorba kerültek
2.3. Sztereó megfeleltetés, BM algoritmus
Az illesztés egy "hibák abszolút összege"' (SAD) ablakot használ arra, hogy megtalálja az egyező pontokat a bal és a jobb rektifikált képen.
Az algoritmus csak az erősen illeszkedő (erősen textúrált) pontokat találja meg a két kép között. Így a gyengébben textúrált helyszínen, például egy folyosón kevesebb párosítást fog megtalálni.
A sztereó megfeleltetési mintaillesztő algoritmus végrehajtása három lépésben történik:
1. Előszűrés, normalizálja a kép fényességét és kiemeli a texturáltságát.
2. Egy SAD ablakkal megfeleltetéseket keres az egymásnak megfelelő sorok mentén.
3. Utószűrés, ahol törli a rosszul megfeleltetett találatokat.
Az első lépésben normalizálja a képeket úgy, hogy csökkenti a fényességbeli különbségeket és fokozza a kép textúráltságát.
5. ábra
A BM algoritmus 2. lépése
Az 5. ábrán látható, mi történik a második lépésben. Egy csúszó SAD ablak segítségével számoljuk a megfeleltetéseket. Minden egyes sajátossághoz a bal képen megkeressük a legjobb egyezőséget a jobb képen ugyanabban a sorban.
A minDisparity paraméterrel állítható, hogy a jobb képen hol kezdje el a keresést. Segítségével a nem szükséges távoli tárgyak kiszűrhetőek. Ha ez a szám negatív, akkor jobbra, ha pozitív akkor balra tolódik a jobb képen ez a pont.
A másik paraméter, a numberOfDisparities pedig azt adja meg, hogy a keresés során maximum hány pixelt mozdulhat el a SAD ablak, tehát mekkora tartományban keresse az adott pixel párját. Ha túl alacsonyra állítjuk be ezt az értéket, akkor a függvény a közeli tárgyakat nem találja meg.
Minél kisebb a numberOfDisparities és a minDisparity különbsége, annál kevesebb összehasonlítás szükséges, így gyorsabban jutunk eredményhez.
A megfeleltetés után a harmadik lépésben az utószűrés következik, amivel a zajok miatt talált párosításokat lehet törölni.
A BM függvény végeredménye (6. ábra) a bal képre elkészített sűrű elmozdulás térkép, az egyes pixelekhez az x-ben mért elmozdulás értéke kerül: xbal-xjobb.
Ahol nem sikerült párosítást találni, ott a pixel értéke minDisparity-1 lesz.
6. ábra
A kézzel megmért pixeltávolságok értékei. A jobb oldali képen lévő X-ek ből 320-at ki kell vonni.
bal
jobb
A felső képekből készített bal és jobb elmozdulás térképek. A színek jelzik az adott pixelen az elmozdulás értékét. A sötétkék jelzi azokat a pontokat, amiket nem tudott párosítani.
2.4. Bal-jobb konzisztencia
Előzőekben megismerhettük, hogyan készül el a bal képre az elmozdulás térkép, de a megfelelő beállítások ellenére is előfordul, hogy olyan párosításokat talál, ami nem létezik az eredeti képeken. Ezeknek a hibáknak egy kiküszöbölési lehetősége a bal-jobb konzisztencia (left-right consistency, LRC), amihez ki kell számolni a bal majd a jobb képre is az elmozdulás térképet, amik csak negatív előjelben térnek el egymástól. Ha ugyanannak a fizikai pontnak a bal és jobb elmozdulás térképen található elmozdulásának összege nagyobb 1-nél, akkor az hibás találatnak minősül és töröljük.
Az eredmény a 7. ábrán látható.
7. ábra
A 6. ábrán látható elmozdulás térképek felhasználásával a bal elmozdulás térkép LRC-vel megszűrt eredménye
2.5. 3D rekonstrukció
Miután megvan a normalizált elmozdulás térkép, 3D-s rekonstrukcióra, vagy mélységtérképre van szükség. A rektifikáció során kapott Q mátrixot meg kell szorozni az elmozdulás térképpel, így minden pixelre megkapjuk a 3D-s koordinátákat (X, Y, Z).
A kapott koordinátákból (8. ábra) csak a Z-t használtam fel, mert egy akadály megállapításához ez is elegendő.
8. ábra
A felső képpáron a 7. ábrán látható párosított pontok elmozdulás térképből készített 3D-s rekonstrukciónak a Z értékei mm-ben. A valóságban a bal oldali doboz 53 cm-re, míg a jobb 83 cm-re volt a robottól. Az alsó képpáron látható, hogy a merőleges sarkokat is érzékelni tudja.
A cikk még nem ért véget, kérlek, lapozz!