Často kladené otázky#
Jaké jsou rozdíly mezi CMUcam1 a CMUcam2?#
Úvod#
CMUcam2 zahrnuje veškerou funkčnost CMUcam1 ve vylepšené podobě a mnohem více. Níže stručně popisujeme novou funkčnost a rozdíly. Možná se také budete chtít podívat na odpověď na otázku, jak se rozhodnout, zda zakoupit CMUcam1 nebo CMUcam2.
Přehled hardwaru#
Existují dva hlavní hardwarové rozdíly, které jsou důležité: CMUcam2 používá jiný procesor než CMUcam1 a CMUcam2 obsahuje čip snímkového bufferu, zatímco CMUcam1 ne.
CMUcam2 používá procesor SX52 a CMUcam1 používá procesor SX28, oba jsou z řady procesorů SX od Ubicom. V obou případech běží procesor na 75 MHz, takže není žádný rozdíl v rychlosti procesoru ani výpočetním výkonu. Výhodami procesoru SX52 jsou, že má více RAM (262 vs. 136 bajtů), více ROM (4096 vs. 2048 slov) a více I/O pinů. Více RAM a ROM znamenalo, že jsme mohli napsat složitější kód, který nám umožnil začlenit do CMUcam2 více funkčnosti. Větší počet I/O pinů znamenal, že nám zbylo více pinů pro jiné funkce – jako více serv, více konfiguračních propojek atd.
Velkým rozdílem mezi oběma systémy je, že CMUcam2 obsahuje čip snímkového bufferu AL422B od AverLogic, zatímco CMUcam1 ne. To umožňuje hardwaru CMUcam2 rychle zachytit jediný kompletní snímek a uložit jej do paměti snímkového bufferu. To má řadu výhod:
Složitější zpracování. U CMUcam1 musel procesor zpracovávat proud pixelových dat za běhu tak, jak jej vydával modul kamery. Tento návrh pomohl snížit složitost a cenu hardwaru systému. Omezil však složitost zpracování, protože muselo být prováděno v reálném čase mezi pixely nebo mezi řádky obrazu. Protože procesor na CMUcam2 přistupuje k pixelovým datům ze snímkového bufferu vlastním tempem, může na jeden pixel provádět složitější zpracování.
Rychlejší zpracování. Odvrácenou stranou toho, že není nutné zůstávat synchronizován s proudem pixelů modulu kamery, je, že procesor nemusí čekat na modul kamery, když potřebuje data pixelů. Odstranění této čekací doby znamená, že procesor CMUcam2 může ve skutečnosti zpracovat snímek rychleji než CMUcam1, i když procesor není o nic výkonnější.
Více operací na snímek. Protože se obraz uložený ve snímkovém bufferu nemění, může CMUcam2 provádět na jediném snímku více operací. Takže například lze na jediném snímku detekovat pohyb, vypočítat statistiky oblastí a sledovat více barev.
Lepší výpisy snímků. Protože CMUcam1 musela synchronizovat přenášená data výpisu snímku s datovým proudem modulu kamery, mohla odeslat pouze jeden sloupec dat na snímek kamery. To znamenalo, že různé části obrazu byly zachyceny v různých okamžicích, takže rychle se pohybující objekty byly ve výpisech snímků CMUcam1 rozmazané. Protože CMUcam2 přenáší obraz z pevných dat ve snímkovém bufferu, toto již není problém.
Lepší zpracování nižších přenosových rychlostí. Snímkový buffer také znamená, že časování dat přenášených CMUcam2 lze zcela oddělit od časování dat čtených z modulu kamery. To znamená, že data CMUcam2 z výpisů snímků a bitmapových řádkových režimů se nemění při změně komunikační přenosové rychlosti; CMUcam2 bude hostitelskému procesoru sdělovat stejná data snímku nebo bitmapy bez ohledu na přenosovou rychlost. Počet snímků zpracovaných za sekundu se však může s nižšími přenosovými rychlostmi měnit, protože stále musí nakonec dokončit odeslání všech dat z jednoho snímku, než mohou být zpracovány následující.
Lepší provoz modulu kamery. Aby procesor v CMUcam1 zůstal synchronizován s datovým proudem z modulu kamery, musela být snímková frekvence modulu kamery zpomalena na 17 sn./s. Snímkový buffer, který používá CMUcam2, nám umožňuje provozovat modul kamery při plné snímkové rychlosti. Jednou z výhod je, že automatické nastavení expozice a vyvážení bílé kamery může pracovat rychleji, protože může provést pouze jednu úpravu na snímek a nyní je snímků za sekundu více. Druhou výhodou je, že černobílý analogový videovýstup (který funguje pouze tehdy, když modul pracuje při plné snímkové frekvenci) lze používat, zatímco CMUcam2 zpracovává obrazová data, což u CMUcam1 nebylo možné.
Přehled funkčnosti#
CMUcam2 implementuje veškerou funkčnost CMUcam1 a také přidává spoustu nové funkčnosti. Následuje shrnutí.
Sledování barvy. CMUcam2 implementuje sledování barvy stejně jako CMUcam1. Stejně jako u CMUcam1 je implementován volitelný bitmapový řádkový režim, který přenáší bitmapu sledovaných pixelů. Existují také některá vylepšení. Je zde nový volitelný řádkový režim, který poskytuje statistiky sledovaných pixelů pro každý řádek, včetně průměrné, minimální a maximální pozice sledovaných pixelů. To je velmi užitečné pro sledování čáry. Je zde také nový volitelný režim, kde lze interpretaci sledovacích mezí obrátit. V tomto režimu jsou pixely mimo sledovací meze považovány za „dobré“. To je užitečné pro sledování objektu proti homogennímu pozadí – představte si speciální efekty s modrým plátnem. Je to také užitečné pro detekci hran, když je povoleno pixelové rozdílování (popsané níže). Možnost filtrování šumu byla také vylepšena, aby umožňovala úpravu míry filtrování pro zašuměné situace.
Obrazové statistiky. CMUcam2 implementuje výpočet statistik průměru a odchylky oblastí obrazu stejně jako CMUcam1. Stejně jako u CMUcam1 je implementován volitelný řádkový režim, který přenáší průměr každého řádku obrazu. Existuje také nový rozšířený řádkový režim, který volitelně zahrnuje informace o odchylce po jednotlivých řádcích.
Detekce pohybu. Zcela nové v CMUcam2 jsou příkazy pro detekci pohybu (rozdílování snímků). Tyto příkazy lze použít k tomu, aby CMUam2 zachytila verzi aktuálního obrazu v nízkém rozlišení a průběžně ji porovnávala s nově příchozími obrazy. Pakety z CMUcam2 hlásí, zda se některá část obrazu změní o více než zadanou hodnotu, což by potenciálně indikovalo pohyb. Tyto pakety mohou popisovat těžiště a rozsah změněných bloků obrazu nebo poskytovat bitmapu toho, které bloky obrazu se změnily. Tento režim lze také kombinovat s pixelovým rozdílováním (popsaným níže), aby byla detekce pohybu odolnější vůči změnám osvětlení.
Tvorba histogramů. Zcela novými v CMUcam2 jsou příkazy pro výpočet histogramu. Tyto příkazy lze použít k zachycení jednorozměrného histogramu jednoho barevného kanálu v rozlišení až 28 přihrádek. Histogramy poskytují užitečné informace, které shrnují vzhled obrazu. S dodatečným programováním na hostitelském procesoru lze tyto informace použít jako pomoc při detekci překážek, konkrétních objektů nebo míst.
Okénkování obrazu. CMUcam2 implementuje schopnost omezit zpracování na malou oblast (podokno) celého obrazu stejně jako CMUcam1. V CMUcam2 je tato funkce ještě užitečnější, protože ji lze použít k podrobnému prozkoumání podoken jediného obrazu uloženého ve snímkovém bufferu. Zmenšení svislé velikosti okna lze také použít k výraznému zvýšení počtu snímků zpracovaných za sekundu tím, že se výrazně sníží počet pixelů, které musí CMUcam2 zpracovat.
Přizpůsobení výstupních paketů. CMUcam2 implementuje mnohem flexibilnější přizpůsobení paketů než CMUcam1. Existují příkazy, které uživateli umožňují přizpůsobit každý paket generovaný každým příkazem tak, aby vracel pouze hodnoty potřebné pro konkrétní aplikaci. To může v mnoha situacích výrazně snížit množství dat přenášených do hostitelského procesoru a jím zpracovávaných.
Pixelové rozdílování. Zcela novým v CMUcam2 je volitelný režim pixelového rozdílování. V režimu pixelového rozdílování jsou pixely předzpracovány, než jsou předány zbytku kódu CMUcam2. Tento krok předzpracování odesílá zbytku kódu nové hodnoty pixelů, které jsou rozdílem mezi aktuální hodnotou pixelu a předchozí. V zásadě to odfiltruje vše kromě svislých hran v obraze. Jedná se o velmi výkonnou operaci, kterou lze s dodatečným programováním na hostitelském procesoru použít jako pomoc při detekci překážek a sledování čáry.
Podvzorkování. Zcela novým prvkem v CMUcam2 je volitelný režim podvzorkování. V režimu podvzorkování software CMUcam2 před zpracováním sníží rozlišení obrazu z kamery. Výhodou je, že je třeba zpracovat a přenést mnohem méně pixelů. Protože se provádí softwarově, podvzorkování vede jen k velmi malému zvýšení rychlosti zpracování. Velkým přínosem je snížení objemu přenášených dat. V případě vypsaného obrazového snímku může podvzorkování snadno zmenšit velikost dat, a tím snížit dobu přenosu o faktor 2 nebo 4 či více. Podobně při použití bitmapových řádkových režimů lze velikost bitmapového obrazu výrazně zmenšit, čímž se sníží množství dat, která musí hostitelský procesor přijmout a zpracovat.
Řízení serva. Původní CMUcam1 podporovala pouze jediné servo a toto servo fungovalo správně pouze při určitých přenosových rychlostech a když byla CMUcam1 ve streamovacím režimu. CMUcam2 podporuje až pět serv. Kód řadiče serva v CMUcam2 je implementován jako proces na pozadí, takže výstupy serva zůstávají vždy stabilní a lze jej použít stejně jako jakýkoli jiný řadič serva. CMUcam2 lze navíc nakonfigurovat tak, aby automaticky řídila serva otáčení a náklonu. V tomto režimu bude CMUcam2 aktualizovat pozice serva pokaždé, když dostane příkaz vypočítat data sledování barvy.
Úspora energie. Zcela nové v CMUcam2 jsou režimy úspory energie. V některých aplikacích není od CMUcam2 vyžadováno nepřetržité zpracování obrazových dat. V těchto případech lze CMUcam2 přikázat, aby přešla do různých vypnutých (nebo spánkových) režimů. Když je CMUcam2 v jednom z těchto režimů, neprobíhají žádné sledovací příkazy ani řízení serva. Odeslání jednoduchého sériového příkazu kameru během několika milisekund opět probudí.
Jaký je rozdíl mezi použitím modulu OV6620 a OV7620 s CMUcam2?#
Úvod#
Z hlediska schopností je senzor OV7620 senzorem s vyšším rozlišením (664x492 surových poloh senzoru) než senzor OV6620 (356x292 surových poloh senzoru). Tato skutečnost má však jen velmi málo společného s problémy, které vyvstávají při zvažování, který z těchto senzorů nejlépe odpovídá vaší aplikaci CMUcam2. Následuje seznam úvah.
Rozlišení#
I když je pravda, že senzor OV7620 má vyšší rozlišení než OV6620, kvůli pevné velikosti paměti vyrovnávací paměti snímků CMUcam2 podporuje CMUcam2 pro senzor OV7620 pouze jediné rozlišení 160x239. CMUcam2 podporuje pro senzor OV6620 režim nízkého rozlišení 88x143 a režim vysokého rozlišení 176x255. Takže při použití OV6620 v režimu vysokého rozlišení lze skutečně dosáhnout provozu s vyšším rozlišením než je jediný režim rozlišení dostupný pro senzor OV7620.
Snímková frekvence#
Dalším problémem souvisejícím s rozlišením je maximální snímková frekvence při nepřetržitém zpracování proudu obrazů. Čím nižší rozlišení, tím méně pixelů je třeba zpracovat a tím vyšší je dosažitelná snímková frekvence. Ačkoli lze zvýšení snímkové frekvence dosáhnout změnou míry podvzorkování a velikosti virtuálního okna, mnohem větší vliv má skutečný počet pixelů, které senzor vydává. Z tohoto důvodu může CMUcam2 dosáhnout mnohem vyšší snímkové frekvence, když je OV6620 provozován ve svém režimu nízkého rozlišení, než v režimu jediného rozlišení, který je k dispozici pro OV7620.
Analogový videovýstup#
Dalším rozdílem mezi oběma senzory je formát analogového videovýstupu obou senzorů. Senzor OV6620 vydává výstup v analogovém formátu PAL a senzor OV7620 vydává výstup v analogovém formátu NTSC. V obou případech je výstup černobílý.
Je důležité poznamenat, že ve většině použití CMUcam2 nebude analogový výstup používán. V typické aplikaci jsou výsledky zpracování obrazu nebo surové pixely přenášeny digitálně přes sériový port do hostitelského počítače nebo mikrokontroléru, takže to není problém. Pokud je však důležité živé černobílé video, možná budete chtít vzít v úvahu formát analogového videovýstupu.
Shrnutí#
Naším doporučením je, že modul OV6620 je nejlepší volbou pro téměř všechny aplikace, zejména s ohledem na jeho nižší cenu a rychlejší dobu zpracování dosažitelnou s tímto modulem. Ve vzácných aplikacích, kde je vyžadován NTSC monochromatický analogový videovýstup, můžete zvážit OV7620.
Existují nějaké známé problémy se současnými vydáními firmwaru CMUcam2?#
Ano. Ve vydání 1.00 příkaz „RM“ (Raw Mode) nefungoval správně. Vydání 1.01 tento problém opravuje.
Firmware v CMUcam2 je upgradovatelný, ale k tomu je potřeba programátor SX-Key (nebo kompatibilní). Soubory „hex“ pro obrazy ROM jsou k dispozici na stránce Soubory ke stažení.