Gyakran ismételt kérdések#

Mik a különbségek a CMUcam1 és a CMUcam2 között?#

Bevezetés#

A CMUcam2 a CMUcam1 összes funkcionalitását tartalmazza továbbfejlesztett formában, és még sok mást is. Az alábbiakban röviden leírjuk az új funkcionalitást és a különbségeket. Érdemes lehet megnéznie azt a választ is arra a kérdésre, hogy hogyan döntse el, hogy CMUcam1-et vagy CMUcam2-t vásárol-e.

Hardver áttekintése#

Két fő hardveres különbség van, amely fontos: a CMUcam2 más processzort használ, mint a CMUcam1, és a CMUcam2 tartalmaz egy képkockapuffer-chipet, míg a CMUcam1 nem.

A CMUcam2 az SX52 processzort használja, a CMUcam1 pedig az SX28 processzort, mindkettő az Ubicom SX processzorsorozatából származik. Mindkét esetben a processzor 75 MHz-en fut, így nincs különbség a processzorsebességben vagy a számítási teljesítményben. Az SX52 processzor előnyei, hogy több RAM-mal (262 vs. 136 bájt), több ROM-mal (4096 vs. 2048 szó) és több I/O-lábbal rendelkezik. A több RAM és ROM azt jelentette, hogy összetettebb kódot tudtunk írni, ami lehetővé tette, hogy több funkcionalitást építsünk be a CMUcam2-be. A nagyobb számú I/O-láb azt jelentette, hogy több lábunk maradt más funkciókhoz – mint például több szervó, több konfigurációs jumper stb.

A két rendszer közötti nagy különbség az, hogy a CMUcam2 tartalmazza az AverLogic AL422B képkockapuffer-chipjét, míg a CMUcam1 nem. Ez lehetővé teszi a CMUcam2 hardvernek, hogy gyorsan rögzítsen egyetlen teljes képkockát, és tárolja azt a képkockapuffer memóriájában. Ennek számos előnye van:

  • Összetettebb feldolgozás. A CMUcam1-ben a processzornak menet közben kellett feldolgoznia a pixeladatfolyamot, ahogy azt a kameramodul kiadta. Ez a kialakítás segített csökkenteni a rendszer hardverének összetettségét és költségét. Korlátozta azonban a feldolgozás összetettségét, mert azt valós időben, a pixelek között vagy a képsorok között kellett végrehajtani. Mivel a CMUcam2 processzora a saját tempójában fér hozzá a képkockapufferből származó pixeladatokhoz, pixelenként összetettebb feldolgozást tud végezni.

  • Gyorsabb feldolgozás. Annak a fonákja, hogy nem kell szinkronban maradni a kameramodul pixelfolyamával, hogy a processzornak nem kell a kameramodulra várnia, amikor pixeladatra van szüksége. Ennek a várakozási időnek a kiküszöbölése azt jelenti, hogy a CMUcam2 processzora valójában gyorsabban tud feldolgozni egy képkockát, mint a CMUcam1, még akkor is, ha a processzor nem erősebb.

  • Több művelet képkockánként. Mivel a képkockapufferben tárolt kép nem változik, a CMUcam2 egyetlen képkockán több műveletet is végrehajthat. Így például egyetlen képkockán mozgást lehet észlelni, régióstatisztikákat lehet számítani, és több színt is lehet követni.

  • Jobb képkocka-kiírások. Mivel a CMUcam1-nek a továbbított képkocka-kiírás adatait a kameramodul adatfolyamával kellett szinkronizálnia, kameraképkockánként csak egyetlen adatoszlopot tudott küldeni. Ez azt jelentette, hogy a kép különböző részei különböző időpontokban készültek, így a gyorsan mozgó tárgyak elmosódottan jelentek meg a CMUcam1 képkocka-kiírásain. Mivel a CMUcam2 a képet a képkockapufferben lévő rögzített adatokból továbbítja, ez már nem probléma.

  • Az alacsonyabb átviteli sebességek jobb kezelése. A képkockapuffer megléte azt is jelenti, hogy a CMUcam2 által továbbított adatok időzítése teljesen leválasztható a kameramodulból beolvasott adatok időzítéséről. Ez azt jelenti, hogy a képkocka-kiírásokból és bittérkép-sormódokból származó CMUcam2-adatok nem változnak, amikor a kommunikáció átviteli sebessége megváltozik; a CMUcam2 ugyanazokat a képkocka- vagy bittérkép-adatokat közli a gazdaprocesszorral, függetlenül az átviteli sebességtől. A másodpercenként feldolgozott képkockák száma azonban lassabb átviteli sebesség mellett továbbra is változhat, mivel végül be kell fejeznie egy képkocka összes adatának elküldését, mielőtt a következőket fel lehetne dolgozni.

  • Jobb kameramodul-működés. Ahhoz, hogy a CMUcam1 processzora szinkronban maradhasson a kameramodul adatfolyamával, a kameramodul képkockasebességét 17 fps-re kellett lassítani. A CMUcam2 által használt képkockapuffer lehetővé teszi, hogy a kameramodult a teljes képkockasebességen működtessük. Ennek egyik előnye, hogy a kamera automatikus expozíció- és fehéregyensúly-beállítása gyorsabban működhet, mert képkockánként csak egyetlen beállítást tud végrehajtani, és most több képkocka van másodpercenként. A második előny, hogy a fekete-fehér analóg videokimenet (amely csak akkor működik, ha a modul a teljes képkockasebességen üzemel) használható, miközben a CMUcam2 képadatokat dolgoz fel, ami a CMUcam1 esetében nem volt lehetséges.

Funkcionalitási áttekintés#

A CMUcam2 a CMUcam1 összes funkcionalitását megvalósítja, és sok új funkcionalitást is hozzáad. A következő egy összefoglaló.

  • Színkövetés. A CMUcam2 ugyanúgy megvalósítja a színkövetést, mint a CMUcam1. A CMUcam1-hez hasonlóan egy opcionális bittérkép-sormód is megvalósításra került, amely a követett pixelek bittérképét továbbítja. Van néhány továbbfejlesztés is. Van egy új opcionális sormód, amely soronként statisztikákat ad a követett pixelekről, beleértve a követett pixelek átlagos, minimális és maximális pozícióit. Ez nagyon hasznos a vonalkövetéshez. Van egy új opcionális mód is, amelyben a követési határok értelmezése megfordítható. Ebben a módban a követési határokon kívül eső pixelek számítanak „jónak”. Ez hasznos egy tárgy homogén háttérrel szembeni követéséhez – gondoljunk a kék háttér elé helyezett speciális effektekre. Hasznos az élek észleléséhez is, amikor a pixeldifferenciálás (lásd lentebb) engedélyezve van. A zajszűrési opció is továbbfejlesztésre került, hogy zajos helyzetekben lehetővé tegye a szűrés mértékének beállítását.

  • Képstatisztika. A CMUcam2 ugyanúgy megvalósítja a képrégiók átlag- és szórásstatisztikáinak számítását, mint a CMUcam1. A CMUcam1-hez hasonlóan egy opcionális sormód is megvalósításra került, amely a kép minden sorának átlagát továbbítja. Van egy új, továbbfejlesztett sormód is, amely opcionálisan soronkénti szórásinformációt is tartalmaz.

  • Mozgásérzékelés. A CMUcam2-ben teljesen új a mozgásérzékelési (képkockakülönbség-számítási) parancsok. Ezek a parancsok arra utasíthatják a CMUcam2-t, hogy rögzítse az aktuális kép alacsony felbontású változatát, és folyamatosan hasonlítsa össze az újonnan beérkező képekkel. A CMUcam2 csomagjai jelentik, ha a kép bármely része egy megadott mértéknél jobban megváltozik, ami potenciálisan mozgást jelezhet. Ezek a csomagok leírhatják a megváltozott képblokkok súlypontját és kiterjedését, vagy megadhatják annak bittérképét, hogy mely képblokkok változtak meg. Ez a mód a pixeldifferenciálással (lásd lentebb) is kombinálható, hogy a mozgásérzékelés robusztusabb legyen a megvilágítás változásaival szemben.

  • Hisztogramképzés. A CMUcam2-ben teljesen új a hisztogramszámítási parancsok. Ezek a parancsok egy egyszínű csatorna egydimenziós hisztogramjának rögzítésére használhatók, akár 28 tárolóhely (bin) felbontásban. A hisztogramok hasznos információt nyújtanak, amely összefoglalja egy kép megjelenését. A gazdaprocesszoron végzett további programozással ez az információ akadályok, konkrét tárgyak vagy helyszínek észlelésének elősegítésére használható.

  • Képablakozás. A CMUcam2 ugyanúgy megvalósítja azt a képességet, hogy a feldolgozást a teljes kép egy kis régiójára (alablakára) korlátozza, mint a CMUcam1. A CMUcam2-ben ez a funkció még hasznosabb, mert a képkockapufferben tárolt egyetlen kép alablakainak közeli vizsgálatára használható. Ezen kívül a függőleges ablakméret csökkentése a másodpercenként feldolgozott képkockák számának nagymértékű növelésére használható, mivel jelentősen csökkenti a CMUcam2 által feldolgozandó pixelek számát.

  • Kimeneti csomagok testreszabása. A CMUcam2 sokkal rugalmasabb csomag-testreszabást valósít meg, mint a CMUcam1. Vannak parancsok, amelyek lehetővé teszik a felhasználó számára, hogy minden parancs által generált egyes csomagokat testreszabjon úgy, hogy csak egy adott alkalmazáshoz szükséges értékeket adjanak vissza. Ez sok esetben nagymértékben csökkentheti a gazdaprocesszornak továbbított és általa feldolgozott adatmennyiséget.

  • Pixeldifferenciálás. A CMUcam2-ben teljesen új az opcionális pixeldifferenciálási mód. Pixeldifferenciálási módban a pixelek előfeldolgozáson mennek keresztül, mielőtt átadnák őket a CMUcam2 kódjának többi részéhez. Ez az előfeldolgozási lépés új pixelértékeket küld a kód többi részének, amelyek az aktuális pixelérték és az előző közötti különbséget jelentik. Alapvetően ez mindent kiszűr, kivéve a kép függőleges éleit. Ez egy nagyon hatékony művelet, és a gazdaprocesszoron végzett további programozással akadályészlelés és vonalkövetés elősegítésére használható.

  • Alulmintavételezés. A CMUcam2-ben teljesen új az opcionális alulmintavételezési mód. Alulmintavételezési módban a CMUcam2 szoftvere feldolgozás előtt csökkenti a kamerakép felbontását. Ennek az az előnye, hogy sokkal kevesebb pixelt kell feldolgozni és továbbítani. Mivel szoftveresen történik, az alulmintavételezés csak nagyon kis mértékben növeli a feldolgozási sebességet. A nagy előny a továbbított adatmennyiség csökkentésében rejlik. Egy kiírt képkocka esetében az alulmintavételezés könnyen 2, 4 vagy több szorosára csökkentheti az adatméretet, és ezáltal az átviteli időt. Hasonlóképpen, amikor bittérkép-sormódokat használnak, a bittérkép-kép mérete nagymértékben csökkenthető, csökkentve azt az adatmennyiséget, amelyet a gazdaprocesszornak fogadnia és feldolgoznia kell.

  • Szervóvezérlés. Az eredeti CMUcam1 csak egyetlen szervót támogatott, és az a szervó is csak adott átviteli sebességeken és csak akkor működött megfelelően, ha a CMUcam1 folyamatos (streaming) módban volt. A CMUcam2 legfeljebb öt szervót támogat. A CMUcam2 szervóvezérlő kódja háttérfolyamatként van megvalósítva, így a szervókimenetek mindig stabilak maradnak, és ugyanúgy használható, mint bármely más szervóvezérlő. Ezen kívül a CMUcam2 beállítható úgy, hogy automatikusan vezérelje a pásztázó és döntő (pan és tilt) szervókat. Ebben a módban a CMUcam2 minden alkalommal frissíti a szervópozíciókat, amikor színkövetési adatok kiszámítására utasítják.

  • Energiatakarékosság. A CMUcam2-ben teljesen új az energiatakarékos módok. Egyes alkalmazásokban a CMUcam2-nek nem kell folyamatosan képadatokat feldolgoznia. Ezekben az esetekben a CMUcam2 utasítható arra, hogy különféle kikapcsolt (vagy alvó) módokba lépjen. Egyetlen követési parancs vagy szervóvezérlés sem történik, amíg a CMUcam2 ezen módok egyikében van. Egy egyszerű soros parancs elküldése néhány ezredmásodperc alatt felébreszti a kamerát.

Mi a különbség az OV6620 és az OV7620 modul CMUcam2-vel való használata között?#

Bevezetés#

Képességeit tekintve az OV7620 érzékelő nagyobb felbontású érzékelő (664x492 nyers érzékelőhely), mint az OV6620 érzékelő (356x292 nyers érzékelőhely). De ennek a ténynek nagyon kevés köze van azokhoz a kérdésekhez, amelyek akkor merülnek fel, amikor azt mérlegeljük, hogy ezek közül az érzékelők közül melyik felel meg leginkább a CMUcam2 alkalmazásának. Az alábbiakban felsoroljuk a szempontokat.

Felbontás#

Bár igaz, hogy az OV7620 érzékelő nagyobb felbontású érzékelő, mint az OV6620, a CMUcam2 képkockapufferének rögzített memóriamérete miatt a CMUcam2 az OV7620 érzékelőhöz csak egyetlen, 160x239-es felbontást támogat. A CMUcam2 az OV6620 érzékelőhöz egy 88x143-as alacsony felbontású módot és egy 176x255-ös nagy felbontású módot támogat. Tehát az OV6620-at nagy felbontású módban használva valójában nagyobb felbontású működés érhető el, mint az OV7620 érzékelőhöz elérhető egyetlen felbontású mód.

Képkockasebesség#

Egy másik felbontással kapcsolatos kérdés a maximális képkockasebesség a képek folyamatos feldolgozása során. Minél alacsonyabb a felbontás, annál kevesebb pixelt kell feldolgozni, és annál nagyobb az elérhető képkockasebesség. Bár a képkockasebesség növelése elérhető az alulmintavételezési arány és a virtuális ablak méretének megváltoztatásával, az érzékelő által kiadott pixelek tényleges száma sokkal nagyobb hatással van rá. Emiatt a CMUcam2 sokkal nagyobb képkockasebességet érhet el, amikor az OV6620-at az alacsony felbontású módjában működtetik, mint az OV7620-hoz elérhető egyetlen felbontású mód esetén.

Analóg videokimenet#

A két érzékelő közötti másik különbség a két érzékelő analóg videokimenetének formátuma. Az OV6620 érzékelő analóg PAL formátumban, az OV7620 érzékelő pedig analóg NTSC formátumban ad ki jelet. Mindkét esetben a kimenet fekete-fehér.

Fontos megjegyezni, hogy a CMUcam2 legtöbb felhasználásában az analóg kimenetet nem használják. Egy tipikus alkalmazásban a kép feldolgozásának eredményeit vagy a nyers pixeleket digitálisan továbbítják a soros porton keresztül a gazdaszámítógépnek vagy mikrovezérlőnek, így ez nem probléma. Azonban ha az élő fekete-fehér videó fontos, akkor érdemes lehet figyelembe venni az analóg videokimenet formátumát.

Összefoglaló#

Javaslatunk, hogy az OV6620 modul a legjobb választás szinte minden alkalmazáshoz, különösen az alacsonyabb költségét és az ezzel a modullal elérhető gyorsabb feldolgozási időt figyelembe véve. Azokban a ritka alkalmazásokban, ahol NTSC monokróm analóg videokimenetre van szükség, érdemes lehet megfontolni az OV7620-at.

Vannak-e ismert problémák a jelenlegi CMUcam2 firmware-kiadásokkal?#

Igen. Az 1.00-s kiadásban az „RM” (Raw Mode) parancs nem működött helyesen. Az 1.01-es kiadás javítja ezt a problémát.

A CMUcam2-ben lévő firmware frissíthető, de ehhez egy SX-Key (vagy kompatibilis) programozóra van szükség. A ROM-image-ek „hex” fájljai a Letöltések oldalon érhetők el.