2024. április 25., csütörtök

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

Sztereó látás Surveyor SVS robottal

Bemutatok egy valós idejű alkalmazást, amivel a Surveyor SVS robot sík terepen akadályokat tud kikerülni

[ ÚJ TESZT ]

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ó)

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

[/P]

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!

Hirdetés

Copyright © 2000-2024 PROHARDVER Informatikai Kft.