Augusztus 21., még 110 nap
Egy dolgot kifelejtettem a grafikus programból, az SRV távolságérzékelőjét. Elég katasztrofálisan mér, nem is hiányzik igazából, de azért beraktam, ha már a .dll-be implementáltam.
Lásd kép:
Egy fehér falra nézett a robot, merőlegesen. Három távolságból mértem le (zárójelben az igazi távolság): 22 cm (45 cm), 17 cm (30 cm), 13 cm (20 cm).
A robot a kamerája segítségével határozza meg a távolságot, valamilyen belső függvénnyel. Ha a robot nem merőlegesen néz a falra, vagy valamelyik lézerpont nem látszódik, akkor teljesen random mér.
Itt egy példa, mikor nem a fehér fal felé néz...
screenshot
Még azt hittem, a Lego NXT robot távolságérzékelője a szörnyű, a végén kiderült, hogy nem is rossz .
Lego NXT távolságérzékelője
Végre sikerült aktiválni a szín szegmentációt, csak nagyon elütő színeknél működik rendesen. Parancsok között találtam az ezt beállító utasításokat, azokkal javítható ([link]).
Épp az egyik monitorra néz
screenshot
Legyen egy példa az éldetektálásra is. Elvileg bináris képnek kéne lennie, de mégis színes, kép és egy régi hír alapján úgy vélem, hogy variálták egy szín szegmentációval.
Éldetektálás, threshold 5
screenshot
"Frame differencing": mikor aktiválom, vesz egy referencia képet, és csak a különbséget jeleníti meg. A fekete részeken a kép változatlan.
Itt egy tollat, mutattam a kamerának, a fehér vonal pedig az egér zsinórjának elmozdulása.
screenshot
Augusztus 22., még 109 nap
Vasárnap volt...
Augusztus 23., még 108 nap
Bár rég mással kéne foglalkoznom, mégis beleraktam a programba az FPS számlálót, hogy lássam, az AForge.NET-hez képest mennyire rosszabb/jobb az én programom képmegjelenítése.
A status bar 2. szeleténél jelzi ki
screenshot
SRV FPS:
Reso. - Q | Saját | Aforge |
---------------------------------
160x120 - 8 | 28-31 | 34-35 |
---------------------------------
320x240 - 8 | 8-10 | 11 |
---------------------------------
320x240 - 1 | 4-5 | 4-5 |
---------------------------------
640x480 - 8 | 2-3 | 2-3 |
---------------------------------
640x480 - 1 | 1-2 | 1-2 |
---------------------------------
SVS FPS:
Reso. - Q | Saját | Aforge |
---------------------------------
160x120 - 8 | 18-20 | 29-31 |
---------------------------------
320x240 - 8 | 7-8 | 9-10 |
---------------------------------
320x240 - 1 | 2-3 | 2-3 |
---------------------------------
640x480 - 8 | 2-3 | 2-3 |
---------------------------------
640x480 - 1 | 0-1 | 1 |
---------------------------------
Kis magyarázat. Én programom a teljesen lejött és megjelenített képeket számolja egynek. SVS esetén pedig ha mind a két kép lejött és rendben van. AForge.NET máshogy számol (folyamatosan átlagol), de nem néztem utána, pontosan hogyan.
Látható, hogy magas FPS számnál vannak gondok, főleg SVS esetén. Szerencsére a lényeges felbontáson, 320x240-n kb. hasonlóak az eredmények. Azt is hozzáteszem, hogy SVS-nél nálam egyként van kezelve a két kép (direkt azért, hogy 1 időpontban készült képek legyenek) és 1 szálon történik mindkét kép feldolgozása, AForge.NET pedig külön foglalkozik velük. Plusz, történik egy SDL->OpenCV átalakítás is. Ha nagyon kéne még gyorsítani, akkor két külön szálra bontom a képfeldogozást, szerencsére ebben az esetben nem lépne fel versenyhelyzet.
Összességében elégedett vagyok az eredményekkel.
Ezzel az első mérföldkő, aminek holnap van a határideje, teljesítve. A ablakossá tétellel még jókora pluszt is kapott a program.
Innentől kezdve OpenCV játék következik. Az utolsó folyamat, amit mindkét robotra megírok, az a kamera kalibráció, utána csak SVS-sel foglalkozok.