Október 11., még 59 nap
Csak kiderült, hogy valami nem stimmel.
A teszthez használt képekkel van egy nagy baj: a sakktábla.
Ugyanis a BM párokat keres a két kép között, a sakktábla mintái pedig ismétlődnek, így mindig a bal szélén találja meg (ha balról kezdi, nem néztem utána) a keresett pontot, hiába van az mondjuk a sakktábla jobb szélén. Pontosan ezért volt egy kupacban minden talált pont, aaaaaah.
Első körben saját képek kellettek, amiket lementek a programmal, mert robottal rohangászva nem lehet mindig ugyanolyan képeket csinálni.
Rectify és remap a menüből átköltözött ide, a képmentést egyelőre a normálhoz raktam.
Gondoltam a kép neveket a rand() nevű csoda függvénnyel teszem különbözővé, hát nem eléggé random . Később átjavítom időbélyegre.
Második körben csináltam egy külön projektet, hogy a BM és egyéb teszteket elvégezzem, mert az eddigiek teli voltak szemetelve marhaságokkal.
A terv az, hogy egyelőre megpróbálom a BM-ből kihozni azt, amit lehet. Ha sikerül, és az FPS 1 lesz vagy afelett, akkor meghagyjuk, és ha még van idő, akkor próbálom meg felgyorsítani ritka illesztéssel.
Október 13., még 57 nap
Csináltam két sorozat képet. Mindkettőn doboz(ok) látható(ak), és a robot lassan közelít hozzá(juk). Kíváncsi vagyok látszik-e a közeledés.
Támadt egy hirtelen ötletem, és letöröltem a BM beállítások (minden default). Láss csodát mit kaptam? Az eddigi legjobb eredményeket, aaaaaah megint.
Alap BM beállítások, roi1 és roi2 részt itt be volt állítva, de alapból nincs.
A másik fontos dolog, amire felfigyeltem az, hogy legrosszabb jpeg beállításoknál a BM is elég ramaty eredményt ad, muszáj lesz legjobb képminőségen nyomni.
Következzen pár példa. A 3D-s képek direkt vannak horizontálisan átfordítva, hogy egyezzen a látott képpel.
Nincs beállítva a BM.
#1.1. képpár
Rektilineáris és rektifikált kép, nem az eredeti, kisebb méretre konvertálva
Disparity (láthatóvá normalizálva)
3D-s pontok
Ugyanazok a pontok másik szemszögből
#1.6. képpár
#1.10. képpár
Bár nehezen, de kivehető a két doboz a 3D-s pontokon, kivéve az utolsón, mert ott már annyira kiesett a képből, hogy "szétesett" a 3D-s képe. Az is látható, hogy szépen "kúsznak felfelé" az alsó képeken. Sajnos a fizikai távolságokat nem mértem le, így nem tudok kapcsolatot teremteni a változó Z érték és a távolság között.
A szegélyt is meglátta, így azok is szerepelnek, majd valami szűrést ki kell találni, mert a sok pont közül nem lehet tudni, melyik az objektum.
Csináltam olyan sorozatot is, ahol csak egy doboz van, de ennél több nem látható.
BM-t lehet kicsit gyorsítani, ha azokat a tartományokat adom meg neki, amit a cvStereoRectify() ad vissza. 3D-s pontok között kicsit több lett a "szemét", így csak végső esetben használom.
Október 15., még 55 nap
Tovább finomítottam a BM tesztelő progit. A kódot szétszedtem, hogy átláthatóbb legyen, de a legfontosabb, hogy mostantól megadhatom txt-ben is a fileneveket, így egy sorozatnál nem kell folyton a kódba beírogatni. Egy ilyen txt létrehozása pedig nagyon egyszerű (win alatt): dir *.png /B >> imglist.txt.
Sajnos matlabot nem lehet így gyorsítani, ha megpróbálom lementeni a képet, kifagy.
Következő nagy feladat, tisztítani kell a 3D-s képet. Több ötletet kaptam, de előbb a BM-mel kezdtem el játszani.
BMState->minDisparity=20;
BMState->uniquenessRatio=60;
Ezeknél a beállításoknál szerintem nagyon jó pontok születtek, a fenti képsorozat 3 képpárját használtam.
#1.1. képpár
#1.6. képpár
#1.10. képpár
Hát majdnem dobtam egy hátast, gyönyörű, ugyanúgy a másik képsorozatnál is! Tisztán megvannak a dobozok és a mozgásuk is látható. Szegély is a helyén. Ráadásul ennek a beállításnak a sebessége is sokkal jobb, mint a múltkori legjobbnak!
Nem szabad elfelejteni, hogy lehet pont erre a fényviszonyra, vagy akármire volt jó ez a beállítás. Mindenképpen csinálok új sorozatot máshol, más fényviszonyokkal, és most már nem csak pont szembeállítva rakok le dobozt, hanem úgy, hogy az egyik éle a robot felé nézzen.
Ez csak 3 db képpár a 10+14-ből, néhányon előfordult, hogy nagyon elmért valamit, de a pontok többsége jó helyen volt.
Utolsó képpáron megint eltűnt az elől lévő doboz, de az már túl közel volt a kamerának.
Azért még nem vagyok teljesen nyugodt:
Másik terv, hogy kihalászom a Z értékeket, és egy másik 320x240x3-s mátrixba rakom, ahol 1 pontban X, Y, Z lesz, X és Y a sor és oszlop sorszáma lesz, Z pedig a kihalászott érték.
Miért? A fenti adatokkal az a baj, hogy nem lehet normálisan felosztani (jobb oldal, bal oldal, közép) vagy szűrni, mert ki tudja, hogy a 3D-s pont melyik cellából származik. Például lehet, hogy a 3D-s kép középen látható pont a jobb felső sarokból származik. Épp ezért muszáj megtudnom, sorszámozva a Z értékeket, hogy néz ki a 3D-s ponthalmaz.
Ha állandóan keresgélek a teljes mátrixon megfelelő X, Y, Z-t, akkor oda a sebesség.