2024. április 19., péntek

Gyorskeresés

[SVS_18] December 10.

Írta: | Kulcsszavak: SRV . surveyor . SVS

[ ÚJ BEJEGYZÉS ]

December 10., még 0 nap

Lejárt az idő, végre, szakdoga leadva, befogadva, most már csak azon kell izgulni, nehogy elkeverjék :B.
Kemény 4 hónap volt, főleg leírni ezt az egészet úgy, hogy az előző két hétben betegeskedtem.

A blogolás bevált, így emlékeztem a bakikra, amiket bele kell írni a dogába és a teszteredmények publikálása is hasznos volt, mert így megvoltak.
Nem is beszélve néhány képernyőmentésről, amit egyszerűen nem találok a vinyón, de itt megvoltak.

Tehát csak tanácsolni tudom, hogy aki diplomamunkát, szakdolgozatot ír, az blogoljon (nyilvánosan, vagy csak magának).

A szakdolgozatból tervezek ide is egy rövidebb cikket, de azt majd február fele.

Bár szakdolgozat leadva, a történetnek még nincs vége!

A dolgozat egy része el lett küldve cikként a KÉPAF 2011 konferenciára, ami január 25-28. között lesz (persze pont ezen a héten van a záróvizsga...).
A cikket befogadták, de javítani kell még rajta és pár kérdést meg kell felelni.

Ahogy a táblázatban is látható a számolt távolságok nagyon nem stimmelnek, ráadásul nem is lineáris a hiba. Viszont a két kamera közötti távolságot egész pontosan kiszámolta (számolt: 108,93 mm, tényleges: 107,5 mm).

Következő hibák lehetnek:
1. kalibráció egyszerűen pocsék mélységre
Több kalibrációt végeztem, ugyanaz az eredmény.
2. a disparity map -> 3D megvalósításnál valami nem stimmel az OpenCV-ben
Ennek még utána nézek, de lehet kipróbálom a "kézi" triangulációt, hogy azzal mit kapok.
3. Vetítési hiba, függ a felbontástól, a kamerák által bezárt szögtől és a tárgy távolságától, amit vizsgálunk. Minél kisebb a bezárt szög (párhuzamosnál ~0 fok), minél nagyobb a távolság és minél kisebb a felbontás, annál nagyobb ez a hiba. Ráadásul távolságra nem lineáris.
Ez abból jön, hogy csak pixelre lehet elmozdulást nézni, nem lehet "pixel alá menni", hogy pontosítsunk, így a +-1 pixel eltérés nagy távolságnál már jelentős hiba.
Erre a hibára tippelek leginkább.

Megpróbálom két ábrával megmagyarázni, mi ez:
Lehetséges Z helyek, ha közel van a pont:

Lehetséges Z helyek, ha távol van a pont:

Ábrák nem lettek méretarányosak, de látható a különbség.

Keresek egy tényleges pontot a térben.
Veszek egy pixelt és húzok egy vonalat a kameraközéppontból a valós pont felé, majd veszem a szomszédos pixelt és ahhoz is. Ugyanezt megcsinálom a másik képen is.
Ez a 4 vonal egy négyszöget fog bezárni (szürke), a keresett pont ezen a térrészen lesz.
Ez a szürke terület egyben a vetítési hiba, hiszen azon a részen akárhol lehet a pont, nem lehet ténylegesen megmondani.
Ha elképzelitek, akkor érthető, hogy egy közeli pontnál ez a négyszög Z-ben keskeny, távolabbi pontoknál egyre szélesebb lesz.
Lehetséges, hogy az OpenCV függvénye a legkisebb értéket adja vissza, innen a közelebbi számolt távolságok.

Sajnos ezzel a jelenséggel nem lehet mit kezdeni, de néhány dolgot kipróbálok:
1. A disparity map értékeihez 0,5-t hozzáadok, mintha a pixel közepén lenne a találat.
(Most lebegőpontos számokat használok, lehet átállok egész típusú elmozdulásokra, majd azokhoz adok 0,5-t).
2. A kamerák szögén nem tudok változtatni, marad a felbontás. Most 320x240-s képek voltak, megnézem 640x480-nal, ugye nagyobb felbontás, elvileg kisebb a hiba. Bár ezzel elvesztem a real-time-t, de úgy is egy elmélet teszteléséhez kell.

Kár, hogy ez kis leírás nem sikerült berakni a szakdogába :O, egyszerűen nem volt idő. Hátha a záróvizsga bizottság értékeli, hogy még foglalkoztam a témával:).

Ennek kikutatására és leírására január 9-ig van időm, persze közben záróvizsgára is készülni kéne...
Szerencsére a robotot visszakapom karácsonyra.

Közben kijött az OpenCV 2.2-es verziója [link].
Engem érintő változás: opencv_calib3d - camera calibration, stereo correspondence and elements of 3D data processing.
Csak az online dokumentációt még nem frissítették.

Megint sok az ötlet, kevés az idő :O

Hozzászólások

(#1) Elrood


Elrood
őstag

Vetítési hibás részt kicsit frissítettem, hogy érthetőbb legyen.

''The spice exists on only one planet in the entire universe. A desolate, dry planet with vast deserts. The planet is Arrakis, also known as DUNE.''

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.