ˇ ENI´ TECHNICKE´ V BRNEˇ VYSOKE´ UC BRNO UNIVERSITY OF TECHNOLOGY
ˇ NI´CH TECHNOLOGII´ FAKULTA INFORMAC ˇ ´ITAC ˇ OVY´CH SYSTE´MU ˚ ´ STAV POC U FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS
´ ON-BOARD KAMERA AUTOMOBILOVA ´ ZNAMEM TELEMETRIE SE ZA
´ PRA´CE DIPLOMOVA MASTER’S THESIS
AUTOR PRA´CE AUTHOR
BRNO 2012
ˇ HEL ˇ PAN Bc. PETR S
ˇ ENI´ TECHNICKE´ V BRNEˇ VYSOKE´ UC BRNO UNIVERSITY OF TECHNOLOGY
ˇ NI´CH TECHNOLOGII´ FAKULTA INFORMAC ˇ ´ITAC ˇ OVY´CH SYSTE´MU ˚ ´ STAV POC U FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER SYSTEMS
´ ON-BOARD KAMERA AUTOMOBILOVA ´ ZNAMEM TELEMETRIE SE ZA AUTOMOTIVE ON-BOARD CAMERA WITH TELEMETRY
´ PRA´CE DIPLOMOVA MASTER’S THESIS
AUTOR PRA´CE
ˇ HEL ˇ PAN Bc. PETR S
AUTHOR
VEDOUCI´ PRA´CE SUPERVISOR
BRNO 2012
ˇ Ing. PAVEL BARTOS
Abstrakt Tato diplomová práce se zabývá návrhem zařízení pro záznam jízdy automobilu společně s informací o telemetrii. Kamera umístěná ve vozidle, která zachycuje dopravní situaci před nehodou, může usnadnit rozhodování o viníkovi. Základním prvkem zařízení je vývojový kit DaVinci, který byl vyvinut pro zpracování digitálních video aplikací. Cílem této práce je najít možnosti, jak efektivně implementovat základní algoritmy pro zpracování a vyhodnocování snímaného obrazu pomocí jednočipového mikroprocesoru.
Abstract This master thesis deals with the design devices for automobile driving record with the information on telemetry. Camera placed in the vehicle captures the traffic before the accident, can facilitate the decisions about the offender. The basic element of the camera is DaVinci development kit has been developed for digital video applications. The aim of this thesis is to find ways to effectively implement basic algorithms for processing and evaluation of the scanned image using a single-chip microprocessor.
Klíčová slova on-board kamera, kamera, cmos, ccd, TI DaVinci, jpeg, mpeg, vestavěný systém, flash paměti, komprese, zpracování obrazu
Keywords on-board camera, camera, cmos, ccd, TI DaVinci, jpeg, mpeg, embedded systems, flash card, compression, image processing
Citace Petr Špaňhel: Automobilová on-board kamera se záznamem telemetrie, diplomová práce, Brno, FIT VUT v Brně, 2012
Automobilová on-board kamera se záznamem telemetrie Prohlášení Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně pod vedením pana Ing. Pavla Bartoše ....................... Petr Špaňhel 23. května 2012
Poděkování Děkuji vedoucímu diplomové práce Ing. Pavlu Bartošovi, za jeho rady a čas, který této práci věnoval. Poděkování patří i mým rodičům za podporu při studiu.
c Petr Špaňhel, 2012.
Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
Obsah 1 Úvod
3
2 Zpracování obrazu 2.1 Vnímání barev . . . . . . . . . . . 2.2 Snímání obrazu . . . . . . . . . . . 2.2.1 CCD snímač . . . . . . . . 2.2.2 CMOS (Aps) snímač . . . . 2.3 Digitalizace . . . . . . . . . . . . . 2.3.1 Barevné modely . . . . . . 2.4 Předzpracování obrazu . . . . . . . 2.4.1 Geometrická transformace . 2.4.2 Jasová transformace . . . . 2.4.3 Filtrace a ostření . . . . . . 2.4.4 Časová náročnost . . . . . . 2.4.5 Objem zpracovávaných dat 3 Komprese dat 3.1 Klasifikace . . . . . . . . . 3.2 Komprese obrazu a videa 3.2.1 Historie . . . . . . 3.2.2 Komprese jpeg . . 3.2.3 Motion-jpeg . . . . 4 Paměťové karty 4.1 Flash paměti . . . . . . 4.1.1 xD . . . . . . . . 4.1.2 CompactFlash . 4.1.3 MultiMediaCard 4.1.4 Secure Digital . . 4.1.5 SDHC . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
. . . . .
. . . . . . . . . . . .
5 5 6 7 10 11 12 17 17 18 19 19 19
. . . . .
21 21 22 22 23 26
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
28 28 28 29 29 29 30
5 Návrh hardwaru 5.1 Blokové schéma . . . . . . . 5.2 Mikropočítač . . . . . . . . 5.3 Vývojový kit DVEVM6446 5.3.1 DSP . . . . . . . . . 5.3.2 Napájení . . . . . . 5.3.3 Sběrnice . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
31 31 31 32 32 33 34
. . . . . .
1
5.3.4 Video sběrnice . . . . 5.3.5 Periferie . . . . . . . . 5.3.6 Startovací nastavení . Kamerový modul . . . . . . . 5.4.1 Vlastní modul kamery Paměťová karta . . . . . . . . Displej . . . . . . . . . . . . . Senzor . . . . . . . . . . . . . 5.7.1 Modul akcelerometru . Ovládací prvky . . . . . . . . 5.8.1 Tlačítka . . . . . . . . 5.8.2 Dálkový ovladač . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
36 37 37 38 39 42 42 42 42 44 44 44
6 Vývoj softwaru 6.1 Hlavní . . . . . . . . . . . . . 6.1.1 Kamera . . . . . . . . 6.1.2 Přehrávání . . . . . . 6.1.3 Nastavení . . . . . . . 6.1.4 Informace . . . . . . . 6.2 Kódování . . . . . . . . . . . 6.2.1 Hlavní vlákno . . . . . 6.2.2 Kontrolní vlákno . . . 6.2.3 Zvukové vlákno . . . . 6.2.4 Obrazové vlákno . . . 6.2.5 Zobrazovací vlákno . . 6.2.6 Zachytávací vlákno . . 6.2.7 Zapisovací vlákno . . . 6.3 Dekódování . . . . . . . . . . 6.3.1 Hlavní vlákno . . . . . 6.3.2 Kontrolní vlákno . . . 6.3.3 Zvukové a g711 vlákno 6.3.4 Obrazové vlákno . . . 6.3.5 Zobrazovací vlákno . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
45 45 46 47 47 48 48 49 50 51 51 52 52 52 53 54 54 54 55 56
5.4 5.5 5.6 5.7 5.8
7 Závěr
57
Použitá literatura
60
Seznam použitých zkratek
61
A Podklady pro výrobu kamerového modulu
64
B Podklady pro výrobu modulu akcelerometru
68
C Fotografie výsledné on-board kamery
71
D Ukázka z jízdy
73
E CD disk
74
2
Kapitola 1
Úvod Cílem této kapitoly bude seznámení čtenáře z důvody návrhu on-board kamery do automobilu a jejich možného přínosu pro odhalování viníků nehod. Dopravu můžeme charakterizovat jako úmyslný pohyb dopravních prostředků po dopravní cestě a lze ji členit dle několika základních druhů (silniční, železniční, vodní, letecká atd.). Silniční doprava je chápána jako doprava, při níž se zajišťuje přemisťování osob a nákladu silničními vozidly, jakož i přemisťování silničních vozidel samých po pozemních komunikacích, dopravních plochách a ve volném terénu. V současné době je nejrozšířenější silniční doprava, jelikož umožňuje vyhovět kvalitativním požadavkům dopravního systému, jak nákladní, tak osobní dopravy (rychlost, spolehlivost, dostupnost, přizpůsobivost, pružnost atd.). Mezi základní charakteristiku a současně výhody tohoto druhu dopravy lze zařadit nejnižší dobu přepravy na krátké vzdálenosti, hustou síť silniční infrastruktury, pružnost (každé vozidlo je individuálně řiditelné tzn. kdykoliv posláno k splnění dopravního úkolu) a také širokou nabídku dopravních prostředků, které umožňují splnit požadavky přepravců. S výhodami musí být současně zmíněny i některé nevýhody silniční dopravy. Mezi negativní vlivy patří mimo jiné hluk, produkce škodlivin do ovzduší, množství zastavěných ploch, energetická náročnost, a také nehodovost. Dále se zaměříme pouze na nehodovost. Policie ČR v roce 2011 šetřila 75 137 nehod, při kterých bylo 707 osob usmrceno, těžce zraněno bylo 3 092 osob a 22 519 osob bylo zraněno lehce. Odhadnutá hmotná škoda dopravní policií na místě nehody je 4 628,08 mil. Kč. Čerpáno z [18]. Vidíme tedy, že škoda vzniklá při nehodách dosahuje vysokých částek. Účastníky při nehodách rozlišujeme na viníky (osoba/y, které svým jednáním způsobili nehodu) a poškozené (osoba/y, které svým jednáním nezpůsobily nehodu). Určení kdo je viník nehody náleží Policii ČR. Určení viníka je velmi složitá operace z mnoha důvodů (vozidla se pohybují rychle, každý účastník argumentuje o okolnostech nehody odlišně, ne vždy jsou přítomni svědci nehody atd.). Dojde-li k určení viníka, je z jeho povinného ručení uhrazena škoda poškozeným osobám. Povinné ručení je dnes ze zákona povinen uzavřít každý vlastník motorového vozidla. Neplatí to pouze pro osobní vozidla, ale rovněž pro motocykly, nákladní vozidla, traktory a jiné. Viník nehody nemá ze zákona právo na náhradu škody (lze mýt sjednáno u pojišťovny havarijní pojištěni, v tom případě dostane náhradu škody i viník). Z předchozího textu tedy vyplívá, že určení viníka je klíčovou věcí v náhradě škody. Kamera umístěná ve vozidle, která zachycuje dopravní situaci před nehodou, může usnadnit rozhodování o viníkovi a tím ušetřit nemalou částku majiteli. Cílem této práce je tedy najít možnosti, jak efektivně implementovat základní algoritmy pro zpracování a vyhodnocování snímaného obrazu pomocí jednočipového mikroprocesoru. 3
Dále pak implementovat ukládání této informace na paměťové médium a možnost zobrazovat ji uživateli pomocí displeje. Na konci práce bude naznačeno, jak tento systém rozšířit o možnost aktivní bezpečnosti na silnici. Práce je rozdělena na dvě hlavní části. V první z nich jsou uvedeny teoretické informace k návrhu on-board kamery, přičemž samotný návrh zařízení je řešen v části druhé, začínající pátou kapitolou. Následující kapitola teoretické části se zabývá problematikou zpracování obrazu pomocí digitální techniky. Třetí kapitola řeší obecné problémy při kompresi dat, nastiňuje jejich řešení a popisuje kompresi videa MPEG. Čtvrtá kapitola informuje o druzích paměťových karet, jejich možnostech a uvádí porovnání mezi nimi. Pátou kapitolou začíná praktická část této práce, tedy návrh vestavěného systému pro záznam jízdy automobilu s informací o telemetrii. Obsahuje informace o výběru jednotlivých komponent, společně s návrhem jejich zapojení a konstrukce plošných spojů. Šestá kapitola se věnuje tvorbě programů pro on-board kameru. Závěr shrnuje dosažené výsledky a ukazuje další možné rozšíření zařízení. Diplomová práce navazuje na semestrální projekt, ve kterém byly uvedeny teoretické informace o datové kompresi, dnešních možnostech CCD a CMOS snímačů a bylo nastíněno blokové schéma zařízení.
4
Kapitola 2
Zpracování obrazu Obecně můžeme zpracování obrazu chápat jako převod analogového“ obrazu světa ” kolem nás do digitální podoby a jeho další zpracování. Celý proces lze rozdělit do několika základních kroků: • Snímání • Digitalizace • Předzpracování • Segmentace • Popis objektů • Klasifikace Jejich rozdělení ovšem není zcela jednoznačné a záleží na konkrétní aplikaci, zda budou provedeny všechny zde uvedené body a v jakém pořadí. Podrobnými postupy zpracování obrazu se zabývají práce [7] a [11].
2.1
Vnímání barev
Abychom se mohli zabývat barevnými korekcemi v digitálním světě, musíme nejdříve pochopit systém, kterým člověk dokáže vnímat barvy. Barva je ve skutečnosti světlo o specifické vlnové délce nebo taková směs světel různých vlnových délek, na kterou reagujeme stejným způsobem. Cesta barevné informace začíná na povrchu předmětu, na který se díváme. Světlo vyslané ze světelného zdroje, které (často) představuje nejrůznější směs různých vlnových délek (složek), dopadá na povrch sledovaného předmětu a od tohoto povrchu se odráží. Odraz tohoto letícího paprsku ovšem nemusí obsahovat všechny složky dopadajícího světla, ale může obsahovat pouze jejich část. Odražené světlo posléze putuje do našeho oka. Skrz zornici oka pronikne pouze tenký svazek paprsku, který je oční čočkou zaostřen na sítnici. Sítnice obsahuje dvoje světlocitlivé buňky tyčinky a čípky. Většina plochy sítnice je pokryta téměř pouze tyčinkami. Tyčinky zajišťují vidění za slabého osvětlení (například v noci) a periferní vidění. Výjimku tvoří pouze dvě místa. Jedním z nich je ústí zrakového nervu, které se nazývá slepá skvrna, kde se žádné receptory nenacházejí. Druhým a z našeho hlediska mnohem důležitějším je tzv. 5
žlutá skvrna, malá jamka v jinak hladké sítnici, která se nachází přesně naproti čočce. Ve žluté skvrně je velmi vysoká koncentrace čípku (až 150000 buněk na 1 mm2 ). A právě tyto čípky jsou z velké části zodpovědné za barevný zrakový vjem. Na lidské sítnici se vyskytují tři druhy těchto buněk, které se liší pouze druhem pigmentu v nich obsaženého. Pro světlo nejnižších vlnových délek reagují čípky s modrým pigmentem, pro vyšší vlnové délky jsou zde receptory se zeleným a pro nejvyšší se zelenožlutým pigmentem. Lidské oko tedy vnímá barvu jako míru vybuzení těchto tří druhů receptoru. Jedná se tedy o tzv. trichromatické vidění. Z tohoto důvodu můžeme vidět, že nezáleží na tom, zda do oka dopadá světlo pouze jediné vlnové délky, nebo směs více světel o různých vlnových délkách, protože pokud budou buňky v obou případech buzena stejnou měrou, uvidíme identickou barvu. Barevná informace následně směřuje ve formě elektrických signálu ze světlocitlivých buněk do neuronu na sítnici. Zde se provádí prvotní zpracování. Barva je zde převedena na tři signály, které reprezentují informaci o světlosti, poloha barvy mezi červenou a zelenou a poloha mezi modrou a žlutou. Po upravení signálu poté data pokračují do mozku vlákny očního nervu. Nervová vlákna jsou ještě po cestě z vnitřních polovin sítnic obou očí překřížená (z levých částí obou sítnic dohromady, analogicky z pravých). Nervová vlákna končí svoji cestu v týlním laloku mozku. Tady dochází k analyzování výsledné barevné informace, především na základě kontrastu mezi daty ze sousedních buněk. Mozek si tedy vytváří jakousi mapu postavenou na lokálních kontrastech v příchozích signálech, kterou nakonec znor” malizuje“ na určitý rozsah hodnot. Tímto postupem dosahuje velké přizpůsobivosti, jak v rozsahu jasu, tak v barvě osvětlení. Tímto dokáže mozek rozeznat například bílý papír ať už je osvětlen slunečními paprsky nebo žárovkou, ačkoliv v každém z těchto případu má světlo od něj odražené jiné zastoupení vlnových délek. Tato vlastnost je nesmírně důležitá při identifikaci předmětů, nazývá se chromatická adaptace, je právě tím, co přináší potřebu barevných korekcí. Důležité je také zmínit, že barevně vidí z celé sítnice jen oblast žluté skvrny, což je jen velmi malá část zorného pole. Mozek se tuto slabinu snaží minimalizovat tím, že rychle kmitá pohledem v určitém rozsahu, aby co nejčastěji obnovil obraz na velké ploše, ale přesto si barvy v periferních částech zorného pole pouze pamatuje“. Pokud tedy ” dochází ke chromatické adaptaci, je to především na základě zorného pole snímaného žlutou skvrnou. Více informací o fungování lidského zraku lze najít v [12].
2.2
Snímání obrazu
Z fyzikálního hlediska lze snímání obrazu chápat jako převod vstupní spojité veličiny na elektrický signál spojitý v čase i úrovni. Vstupní veličinou nemusí být jen jas z kamery, ale může to být např. i intenzita rentgenového záření, tepelná intenzita, nebo ultrazvuk. Dále v textu budeme jako vstupní veličinu uvažovat výhradně jas z kamery. Z geometrického hlediska je snímáni obrazu z kamery převod trojrozměrného (3D) obrazu světa kolem nás do dvojrozměrné (2D) podoby. Tento převod je výsledkem perspektivního zobrazení, jinak také nazvaného středové promítání. Středové promítání je závislé na vlastnostech snímací optiky (objektiv), ale pro zjednodušení je často modelováno dírkovou komorou, viz 2.1. Nechť na 2.1 jsou x, y, z souřadnice bodu P v 3D scéně a f je vzdálenost obrazové roviny 0 0 od středu promítání. Bod promítnutý do 2D scény nechť má souřadnice x , y , potom dle rovnic 2.1 a 2.2 platí: 0
x =
xf z 6
(2.1)
0
y =
yf z
(2.2)
Y
bod ve 3D scéně P(x,y,z)
X
y y´ -y´ -x´
x´
x Z
f
Obrázek 2.1: Geometrie perspektivního promítání modelovaného dírkovou komorou Důležitým faktorem ovlivňujícím kvalitu snímaného obrazu jsou externí vlivy jako osvětlení, povrchové vlastnosti předmětu, tvar předmětu a jiné. Znalost těchto vlastností nám pak může pomoci při zpětné rekonstrukci 3D obrazu z nasnímané scény. Podrobně je jejich vliv na výsledný obraz popsán v [7]. Aby bylo možné pomocí kamery jas sejmout a převést na elektrický signál, je nutné použít fotocitlivé snímače dopadajícího světelného záření. V dnešní době jsou nejrozšířenější 2 technologie výroby těchto snímačů: • CCD • CMOS
2.2.1
CCD snímač
CCD snímač vynalezli Willard Boyle a George Smith v Bellových laboratořích v roce 1969. Vynálezu snímače předchází vývoj určitého typu paměťového registru, který si můžeme představit jako CCD snímač bez přístupu světla. CCD snímač je tedy posuvný registr vystavený působení světla. Poté co v únoru 2006 získali vynálezci ze tento svůj převratný objev ocenění Americké národní akademie ve výši 500 000$ Willard Boyle zavzpomínal, že práce na vynálezu na CCD snímači fakticky trvala pouhou hodinu, kdy nejprve se Smithem načrtli na tabuli několik obrázků, a pak prostě šli do laboratoře první jednoduché CCD zrealizovat. V roce 1970 Bellovy laboratoře postavily první kameru na světě, která používala polovodičový obrazový snímač. V roce 1975 demonstrovali první kameru s obrazovou kvalitou dostatečnou pro televizní vysílání a od roku 1983 se CCD snímače používají v nejrůznějších odvětvích od jednoduchých kamer, až po astronomické dalekohledy. CCD snímač pro svoji činnost využívá fyzikálního jevu známého jako fotoefekt. Tento jev spočívá v tom, že částice světla (foton) při nárazu do atomu dokáže přemístit některý z jeho elektronů ze základního do tzv. excitovaného stavu. Odevzdá mu přitom energii (rovnice 2.3)
7
E =v·h
(2.3)
kde v je kmitočet fotonu (u viditelného světla v řádu stovek T Hz) a h je Planckova konstanta. V polovodiči se může takto uvolněný elektron podílet na elektrické vodivosti, případně ho může z polovodiče odvést pomocí přiložených elektrod, jak se to děje například u běžné fotodiody. Stejně pracují i fotočlánky, které se používají jako zdroj elektrické energie. U CCD snímačů se elektroda od polovodiče izoluje velmi slabou vrstvičkou kysličníku křemičitého SiO2 . Tento prvek působí jako dokonalý izolant. Z tohoto důvodu uvolněné elektrony fotoefektem nemohou být odvedeny pryč. Činnost CCD snímače se skládá ze tří základních fází: • Příprava CCD - během této fáze je zamezeno dopadání světla na z CCD snímač. Jsou z něj odebrány všechny volné elektrony, tímto dosáhneme smazání předchozího obrazu. • Expozice obrazu - na elektrody (2.2) přivede kladné napětí a na CCD snímač se nechá dopadat světlo (například v digitálním fotoaparátu se otevřením závěrky). Dopadající fotony se mění v polovodiči elektrony. Elektrony jsou posléze přitahovány ke kladně nabitým elektrodám. Po elektronech zůstanou v polovodiči tzv. díry (vůči svému okolí se tváří jako kladný náboj). Jejich kladný náboj způsobí přitahování na elektrodou ve spodní části CCD snímače. Hranice pixelů tvoří tenoučké stěny izolantu (na obrázku znázorněny svislými tečkovanými čarami). Na obrázku můžeme vidět, že na pixel vlevo dopadlo více fotonů, je u elektrody shromážděno více elektronů, než u pixelu vpravo. • Snímání obrazu - po uzavření závěrky se již CCD snímač chová jako posuvný registr. Na množiny elektrod 1, 2 a 3 přivádíme trojfázový hodinový signál (existují i CCD se čtyřfázovým nebo naopak dvoufázovým čtením). To v praxi znamená, že na druhé elektrodě se začne zvyšovat napětí, zatímco na první elektrodě se souběžně snižuje. Díky tomu jsou skupiny elektronů přitahovány pod druhou elektrodu. Následně se celý děj opakuje mezi elektrodami 2 a 3, dále mezi 3 a 1. Po dokončení jednoho cyklu se celý cyklus donekonečna opakuje. Shluky elektronů z jednotlivých pixelů se tak posouvají přes sousední pixely směrem k výstupnímu zesilovači (na obrázku 2.3). Tento zesilovač pak zesílí malý proud odpovídající počtu nachytaných elektronů v jednotlivých pixelech, na napěťové úrovně vhodné pro další zpracování obrazu. Hlavním prvkem každého čidla CCD snímače je Schottkyho dioda. Dioda převádí světelnou energii na elektrickou. Tímto se v připojených kondenzátorech postupně nahromadí energie úměrná dopadajícímu záření. CCD čip si tedy můžeme představit jako analogový posuvný registr. Každý kondenzátor je schopen předat svůj nahromaděný náboj do sousedního kondenzátoru. Na poslední z nich je připojen na výstupní zesilovač, který náboj převádí na elektrické napětí a pomocí A/D převodníku je napětí převedeno do digitální podoby. Schéma CCD čipu ukazuje obr. 6. Výhody CCD technologie: • Velká citlivost • Malý šum 8
Obrázek 2.2: Snímání obrazu v CCD snímači (posun elektronů mezi jednotlivými pixely směrem k výstupu).
Obrázek 2.3: Snímání obrazu v CCD snímači (posun elektronů mezi jednotlivými pixely směrem k výstupu). Nevýhody CCD technologie: • Vzájemné ovlivňování sousedních pixelů • Malý rozsah intenzit • Nemožnost adresovat jednotlivé pixely Tato technologie se dnes používá spíše u komerčních nebo profesionálních kamer, kde je možné docílit větší plochy CCD čipu. Navíc se stále více používá technologie 3-CCD, která má pro každou barevnou složku RGB signálu vlastní čip.[17][5]. Na obrázku 2.4 vidíme ukázku CCD snímače.
9
Obrázek 2.4: Ukázka CCD snímače velikost 1/3 palce. Převzato z [17]
2.2.2
CMOS (Aps) snímač
Každý pixel CMOS čipu obsahuje fotodiodu. Fotodioda je napojena na tzv. aktivní ” tranzistor“. Úměrně velikosti dopadajícího světla se na tranzistoru nahromadí elektrická energie. Tranzistor je napojen na čtecí a resetovací obvod (obr. 2.5).
Obrázek 2.5: Schéma CMOS snímače s aktivním tranzistorem. Matice těchto detektorů tvoří snímač (obr. 2.6). U CMOS snímače můžeme přistupovat ke každému pixelu individuálně, nezávisle na hodnotách elektrického náboje v okolních pixelech. Výroba takového CMOS obrazového snímače má velmi blízko k výrobnímu procesu klasických mikroprocesorů. Výhody CMOS snímačů: • Náhodný přístup k pixelům • Levné na výrobu • Větší rozsah intenzit než CCD • Velká rychlost vyčítání • Menší spotřeba než CCD Nevýhody CMOS: • Větší šum než CCD
10
Obrázek 2.6: Struktura 2D pole APS CMOS snímače se znázorněním jednotlivých pixelů se zesilovači. Převzato z [8] Tento typ kamer se díky možnosti integrace na jeden čip společně s procesorem používá u malých kamer pro vestavěné systémy, v průmyslových kamerách apod. . Ukázku CMOS snímače je možné vidět na obrázku 2.7. Čerpáno z [8].
Obrázek 2.7: Ukázka CMOS snímače velikost 1/4 palce. Převzato z [8]
2.3
Digitalizace
Ze snímačů jasu získáme spojitý analogový elektrický signál. Digitalizace je tedy proces převedení tohoto spojitého signálu do digitální podoby. Digitální obraz je ekvivalentem spojité obrazové funkce f (x, y), kde x a y si představíme jako souřadnice bodu v obrazové rovině. Je získán navzorkováním obrazu do matice M xN bodů a kvantováním spojité jasové úrovně každého vzorku do K úrovní. Čím jemnější používáme vzorkování (M, N ) a kvantování, tím lépe naše digitální podoba aproximuje původní spojitý obrazový signál. Vzorkování spojité funkce musí splňovat Shannonův teorém. Pro zpracování obrazu z něho plyne, že nejmenší detail v digitálním obraze musí být minimálně dvojnásobkem vzorkovacího intervalu. Volba vhodného rozlišení je tedy jeden z nejzásadnějších kroků digitalizace. Při nízkém rozlišení hrozí ztráta informace o detailech ve snímaném obraze. Naopak při velkém rozlišení se bude kvadraticky zvyšovat následná výpočetní náročnost.
11
Většina systémů používá kvantování jasu do K stejných úrovní. Je-li pro reprezentaci informace o obrazovém pixelu použito b bitů, je počet úrovní jasu K = b2 . Počet úrovní se volí tak, aby nedocházelo k tzv. falešným obrysům“ (jev, při kterém lidské oko přestává ” vnímat dobře obrysy objektů. Udává se pro hodnoty kvantizačních úrovní K < 50 [12]). Tuto hodnotu lze však snížit použitím například dynamického kvantování (stejné hodnotě vstupního spojitého signálu neodpovídá stejná hodnota kvantizační úrovně). Další, velmi důležitou součástí digitalizace, je volba správné vzorkovací mřížky. V dnešní době nejčastěji používané jsou čtvercová nebo hexagonální (obr. 2.8). Čtvercová mřížka je snadno realizovatelná dnešními technologiemi, ovšem nese sebou problémy s měřením vzdáleností a spojitostí pixelů. Tyto nedostatky řeší hexagonální mřížka. Hexagonální mřížka řeší problémy spojitostí ovšem pro některé operace, jako je např. Fourierova transformace, je nepoužitelná. Dále v textu budeme uvažovat jen čtvercovou vzorkovací mřížku.
Obrázek 2.8: Čtvercová a hexagonální mřížka. S digitalizací obrazu a vzorkovacími mřížkami je dále spojeno několik pojmů a vlastností, které je nutné vysvětlit: • pixel - nejmenší a dále již nedělitelný element digitálního obrazu nesoucí informaci o odpovídajícím obrazovém bodě • sousednost pixelů - dva pixely jsou 4-sousedy pokud je jejich vzdálenost D4 = 1. Případně jsou 8-sousedy, pokud je jejich vzdálenost D8 = 1 (obr. 2.9). Vzdálenost dvou obrazových bodů (x,y) a (h, k) je definována v rovnicích (2.4 resp. 2.5) • oblast - souvislá množina pixelů navzájem propojených relací sousedství • souvislé pixely - jsou takové, mezi nimiž existuje cesta
2.3.1
D4 = |x − h| + |y − k|
(2.4)
D8 = max(|x − h|, |y − k|)
(2.5)
Barevné modely
Již se sestrojením prvního počítače se objevila nutnost zobrazovat informace jím vyprodukované. Zpočátku byla vypočtená data jen znakového charakteru. Většinou se jednalo o výsledky výpočtu vědeckých či vojenských prací. Výstup těchto výpočtů byl tisknut na tiskárně. S postupem času byla k počítači připojena také obrazovka, která umožňovala 12
Obrázek 2.9: Okolí okamžitého obrazového bodu ve 4-okolí a 8-okolí. zobrazovat tyto data. V prvopočátcích se stále jednalo pouze o znakový monochromatický výstup, tedy to, co se dříve tisklo na papír, se převedlo na obrazovku. Přelom v technologii zobrazování výstupu z počítače nastal v sedmdesátých letech dvacátého století. Začly se objevovat první počítače, které měli grafický výstup. Jako průlomový pak můžeme použít rok 1977 a představený počítač Apple II. Počítač zvládal zobrazovat kromě bílé také 6 barev [13]. V následujících letech se počet barev zobrazovaných zvyšoval. U počítačů z konce osmdesátých let již bylo možné zobrazit 256. Společným znakem těchto barevných režimů byla pevně definovaná tabulka barev, ze které se barvy vybíraly pomocí indexu. Na začátku devadesátých let minulého století se vyvinuly první grafické adaptéry, které pro zobrazení barvy používali 16 bit (tedy 65536 barev) Tyto adaptéry již nepracovaly přímo s tabulkou barev, ale barva výsledného obrazového bodu byla definována třemi základními složkami - červenou (red), zelenou (green) a modrou (blue). Z kapitoly 2.1 je vidět, že lidské oko reaguje na každou barvu jinak intenzivně (nejvíce na zelenou), z tohoto důvodu bylo určeno rozdělení barevných složek na jednotlivé bity následovně: • prvních 5 bitů - množství červené barvy • dalších 6 bitů - množství zelené barvy • posledních 5 bitů - množství modré barvy Nicméně lidské oko dokáže rozeznat více odstínů, proto se začly objevovat systémy s 24, 32 i 48 bity. V dnešní době se může setkat režimy s vysokým dynamickým rozsahem (high dynamic range, HDR), které umožňují zaznamenat v obraze mnohem větší škálu jasu a podávají tak přirozeněji vypadající výsledky. Barevné modely můžeme rozdělit podle míchání barev na dva základní druhy: • Aditivní barevný model - způsob míchání barev, při němž se jednotlivé složky barev sčítají a vytváří tak světlo větší intenzity. Například RGB schéma je příkladem aditivního způsobu míchání barev.[22] • Subtraktivní barevný model - způsob míchání barev, kdy se s každou další přidanou barvou ubírá část původního světla. Pokud například skládáme na sebe barevné filtry nebo mícháme pigmentové barvy, mícháme je subtraktivní metodou. [22] RGB Jedná se o aditivní model, ve kterém se výsledná barva vytváří sečtením červeného, zeleného a modrého světla (red, green, blue - RGB) (obr. 2.10). Celý model vychází ze skutečnosti, že svítí-li červené a zelené světlo do jednoho konkrétního místa, složí se a výsledné světlo je žluté. Analogicky i u ostatních barev. 13
RGB byl vůbec prvním barevným systémem použitým ve světě počítačů. Bylo tomu tak především proto, že barevné obrazovky používají stejný systém. Ušetřil se tedy převod z barevné reprezentace v počítači na reprezentaci v monitoru. Pro korektní zobrazení barev je ale nutné pevně definovat vlnové délky všech tří složek. Z toho důvodu byla vytvořena řada standardů, obvykle buď se zaměřením na fyzické možnosti monitoru (sRGB, Apple RGB), na co nejlepší pokrytí viditelných barev (ProPhoto RGB) nebo kompromis obou (Adobe RGB). Poprvé však systém založený na červené, zelené a modré použili koncem dvacátých let minulého století W. David Wright a John Guild [22]. Zkoumali schopnosti lidského zraku v barevné oblasti za pomoci obrazovky, která byla rozdělena na dvě poloviny. V jedné se zobrazovala vzorová barva, zatímco ve druhé směs červené, zelené a modré, jejichž intenzity měl pozorovatel nastavit tak, aby byl výsledek shodný se vzorovou barvou. Zároveň bylo možné do vzorové barvy přimíchat jednu z těchto tří složek v případě, že se ve druhé polovině nepodařilo najít odpovídající kombinaci. V takových případech byla intenzita u přidané složky považována za zápornou. Výsledkem jejich výzkumu pak byly funkce určující, kolik červeného, zeleného a modrého světla (o vlnových délkách 700, 546,1 a 435, 8 µm) je potřeba k simulaci světla o dané vlnové délce. Teprve v roce 1997 pak byl na základě použitých vlnových délek přijat Mezinárodní komisí pro osvětlení (Commission Internationale de l’Éclairage, CIE) standard CIE RGB. [22] 0,1,1
0,0,1
1,0,1
1,1,1
0,1,0
0,0,0
1,0,0
1,1,0
Obrázek 2.10: Barevný model - RGB
CMYK Barevný model CMY je přesným opakem modelu RGB (obr. 2.11). Jeho složkami jsou azurová (cyan, C), purpurová (magenta, M) a žlutá (yellow, Y), které jsou opačnými barvami k červené, zelené a modré. Tento systém vznikl z potřeby barevného tisku, kde nelze aplikovat model aditivní (tedy takový, kde se složky sčítají), ale je potřeba model subtraktivní. Na začátku je bílý papír, který odráží všechny vlnové délky stejně. Aplikací pigmentu jedné ze složek se zamezí odrážení vlnových délek odpovídajícím jejímu protějšku v systému RGB (jeho barva se odečte“). Aplikací pigmentu další ze složek se přestane od” rážet další část spektra a nakonec při všech složkách vytištěných přes sebe se neodráží žádné světlo, vidíme černou. Problémem je, že nelze vyrobit úplně dokonalé pigmenty, zejména správný azurový je obtížné získat. Také nelze při tisku tekutými inkousty nanést na papír příliš velké množství inkoustu, neboť by se rozpíjel a papír by se zvlnil nebo i protrhl. 14
Jako řešení zmíněných problémů byl ke zmíněným třem pigmentům přidán ještě jeden černý (black případné key, K). Při soutisku všech tří pigmentů se díky jejich nedokonalosti nedařilo vytvořit přesnou černou barvu, což se použitím černého inkoustu vyřešilo. Zároveň se přidáním černé barvy omezila nutnost použití velkého množství ostatních inkoustů najednou. Přidáním černé složky ke zbylým třem, byl tedy vytvořen barevný model CMYK, který je dnes používán ve většině barevných tiskáren. Velkou nevýhodou těchto systému je právě to, že jsou opačné k systému RGB. Barvy jimi produkované leží v trojúhelníku, stejně jako barvy produkované systémem RGB. Tyto ◦ dva trojúhelníky jsou ale navzájem o 180 otočené, což způsobuje problémy při převodu mezi oběma systémy, protože všechny odstíny, které leží mimo průnik obou množin, jsou ořezány“ - nahrazeny nejbližší barvou z tohoto průniku.[22] ” 0,0,1
0,1,1
1,0,1
1,1,1
0,0,0
0,1,0
1,0,0
1,1,0
Obrázek 2.11: Barevný model - CMYK
HSL Pokud bychom základní složky systému RGB umístili na osy trojrozměrného prostoru (viz. obrázek 2.10), vymezíme krychli odstínu, které lze získat jejich smícháním při různých intenzitách. Krychli pak můžeme postavit“ na počátek souřadnic, tedy bod, kde ” jsou všechny tři složky nulové a zdeformovat na dvojkužel. Tento útvar představuje znázornění barevného modelu HSL (obr. 2.12). Po obvodu podstavy dvojkužele jsou umístěny čisté barvy od červené přes žlutou, zelenou, azurovou, modrou a purpurovou, až zpátky k červené. Jde o složku odstínovou (hue, H). Směrem ke středu pak klesá sytost barvy (saturation, S), aby v ose útvaru byla nulová, v řeči barev tedy odstín šedé. Zároveň odspoda nahoru roste světlost (lightness, případně luminance, L). [22] HSV (HSB) Jde o velice podobný systém jako HSL, ale zde je ke znázornění barvy použit pouze jeden kužel postavený na vrchol. Lze si to představit tak, že bychom zatlačili vrchol horního kužele u modelu HSL dolů tak, že by se stěny kužele dostaly do roviny. Zde je tedy opět po obvodu podstavy umístěn odstín a vzdálenost od osy kužele určuje sytost. Ve svislém směru se pak mění intenzita barvy (value, V, případné brightness, B) od černé dole, až po plnou intenzitu nahoře (obr. 2.13). Oba barevné modely - jak HSV, tak HSL - byly navrženy hlavně pro jednodušší práci v barevném prostoru RGB. Pro člověka je mnohem jednodušší představit
15
Svě tlost (L)
Barevný tón (H) Sytost (S)
Obrázek 2.12: Barevný model - HSL si, jak bude vypadat výsledná barva při změně odstínu, sytosti nebo světlosti, než při změně intenzity červené, zelené a modré složky.[22] Jas (V)
Barevný tón (H) Sytost (S)
Obrázek 2.13: Barevný model - HSV
YUV a YCbCr Jedná se o model používaný např. v televizní technice a multimédiích. Prostor YUV je použit při přenosu televizního signálu v normě PAL. Y zde představuje celkový jas, U je vážený rozdíl modré barvy a celkového jasu a V je vážený rozdíl červené barvy a celkového 16
jasu. Jelikož je celkový jas dán kombinací všech tří složek RGB, obsahuje takovéto vyjádření samozřejmě i informaci o zelené barvě. Obdobou prostoru YUV je prostor YCbCr, použitý v televizní normě SECAM, ale například také u obrázků ve formátu JPEG. Složky Cb a Cr odpovídají obdobným. Rozdílům jako U a V, ovšem s jinými koeficienty (váhami), kterými se jednotlivé složky RGB při výpočtu přenásobí. [22], [23].
2.4
Předzpracování obrazu
Cílem předzpracování digitalizovaného obrazu je odstranění zkreslení, které může vzniknout při samotném pořizování obrazu, odstranění šumu, zvýšení kontrastu a zdůraznění charakteristik obrazu důležitých pro další zpracování (např. detekce hran). Zde jsou uvedeny pouze základní postupy. Další podrobnosti o problematice předzpracování obrazu jsou např. v literatuře [7], [11], [24]. Nejčastěji se jedná o: • Geometrické transformace • Jasové transformace • Filtrace a ostření
2.4.1
Geometrická transformace
Popisuje transformaci nosiče obrazové funkce f (x, y), tj. souřadnic x, y při rotaci, zvětšení, posunu a dalších složitějších typech zkreslení. Výsledný obraz vzniká transformací vstupního obrazu pomocí vektorové funkce T , která zobrazí bod se souřadnicemi (x, y) na souřadnice 0 0 (x , y ) podle rovnice 2.6. Určení T může být při složitých typech zkreslení obtížné. Významné usnadnění práce nám může přinést co největší znalost podmínek pořízení snímků. 0
0
x = Tx (x, y) y = Ty (x, y)
(2.6)
Y´
Y
T
X
X´
Obrázek 2.14: Příklad geometrické transformace v rovině. Geometrická transformace se skládá ze dvou kroků: • Transformace souřadnic - počítá novou polohu bodu (x, y) ve spojitých souřadnicích. Pro tento účel se zavádějí tzv. homogenní souřadnice bodu, které umožňují vyjádřit rotaci, posun a afinní transformaci jako součin bodu s jedinou maticí. Transformační vztah je pak vyjádřen rovnicí 2.7. 17
0 a1 a2 a0 x x y 0 = b1 b2 b0 · y 0 1 0 1 1
(2.7)
• Aproximace jasové funkce - určuje hodnotu jasu ve výsledném obraze v bodě 0 0 0 0 (x , y ). Transformované souřadnice (x , y ) často leží mimo pravoúhlou vzorkovací mřížku. Proto je nutné hodnoty jasu z původního obrazu vhodně aproximovat. Nejčastěji používané typy aproximací pro jasovou funkci jsou: 0
0
– Nejbližší soused - přiřadí bodu (x , y ) hodnotu jasu nejbližšího bodu gs v diskrétní mřížce původního obrazu (rovnice 2.8). 0
0
0
0
f (x , y ) = gs (round(x , round(y ))
(2.8)
– Lineární interpolace - výslednou hodnotu jasu získáme lineární kombinací nejbližších 4 bodů diskrétní mřížky (rovnice 2.9). Čím je bod dále, tím menší má na výsledný jas vliv. 0
0
f (x , y ) = (1 − a) · (1 − b) · gs (l, k) + a · (1 − b) · gs (l + 1, k) + +b · (1 − a) · gs (l, k + 1) + a · b · gs (l + 1, k + 1)
(2.9)
kde: 0
0
l = round(x ) a = x − l 0
0
k = round(y ) b = y − k
(2.10)
– Bikubická interpolace - jasová funkce je lokálně interpolována pomocí bikubického polynomu z 16 bodů v okolí.
2.4.2
Jasová transformace
Slouží k úpravě jasu obrazu, například pro lepší zřetelnost detailů pro člověka (tomografie). Je-li ale obraz určen ke zpracování pouze počítačem, nepřináší jasová korekce žádnou novou informaci. Jasová korekce umožňuje eliminovat vliv zkreslení jasu při průchodu optickou soustavou. Pokud je chyba systematická, je možné vytvořit korekční matici a tu při každé úpravě k získanému obrazu přičítat. Pokud chyba systematická není, je nutné najít korekci pro každý jasový bod zvlášť. Transformace jasové stupnice se oproti jasové korekci netýká jednotlivých pixelů, ale upravuje obraz jako celek. • Ekvalizace histogramu1 - metoda slouží ke zvýšení kontrastu využitím celého spektra jasové stupnice. Obraz je jasově normalizován2 , což je výhodné např. pro srovnávání obrazů. 1
Histogram je sloupcový graf zobrazující četnosti pixelů připadajících na odpovídající ekvalizační část spektra 2 Jasové úrovně jsou zastoupeny přibližně stejně četně
18
2.4.3
Filtrace a ostření
Tato fáze si klade za cíl odstranit z digitalizovaného obrazu šum a zviditelnit špatně rozpoznatelné části. Filtraci obrazu lze provádět ze dvou pohledů: • Filtrace v prostorové oblasti - lineární kombinace vstupního obrazu s koeficienty filtru (konvoluce). • Filtrace ve frekvenční oblasti - převod obrazu do frekvenční reprezentace“, ná” sledná úprava a poté převod zpět. Pro převod se používá několika technik jako např. Fourierova transformace, diskrétní kosinová transformace nebo vlnková transformace. Filtraci pak zajistí běžné filtry typu horní, dolní a pásmová propust.
2.4.4
Časová náročnost
Obecně lze říci, že největším omezením je časová náročnost, a to zejména ve fázi předzpracování a segmentace obrazu. Je nutné si již před implementací algoritmů uvědomit, jaké informace nás budou zajímat, jak je nutné obraz pro segmentaci připravit a vhodně navrhnout algoritmy segmentace, aby byly co možná nejefektivnější a využívali nejmenší nutné množství dat.
2.4.5
Objem zpracovávaných dat
Tento problém přímo souvisí již se samotným snímáním a digitalizací obrazu. Tabulka 2.4.5 ukazuje parametry pro ukázkovou kameru. Z rovnice 2.11 získáme objem dat, který je nutné přenést za jednotku času. . bitrate = W · H · f ps · bpp · chan = 111M bit/s Rozlišení obrazovky (WxH) Počet snímku za vteřinu (fps) Počet úrovní jasu (bpp) Počet barevných kanálu
(2.11)
640x480 15 28 = 255 3 (např. RGB)
Tabulka 2.1: Parametry ukázkové kamery Je patrné, že takto velký objem dat klade ohromné nároky na přenosovou cestu mezi kamerou a systémem, na kterém bude obraz dále zpracováván. Řešení problému objemu dat je několik a přímo vyplývají z rovnice 2.11. Jedná se o: • Snížení rozlišení při snímání obrazu - je dobré si uvědomit, jak velké jsou nejmenší detaily ve zkoumaném obraze a podle toho určit minimální rozlišení. Některé CMOS kamery díky možnosti přístupu k libovolným pixelům umožňují měnit rozlišení nezávisle v obou osách (downsampling). • Snížení fps - počet snímků potřebných za jednu sekundu závisí hlavně na aplikaci, pro kterou je snímek pořizován. Pokud se jedná např. o řízení systému (robotu), pak potřebujeme mít informací o okolí co nejvíce, naopak např. pro aplikace typu bezpečnostní kamery nám postačí jen několik snímků za vteřinu.
19
• Snížení bpp - zde záleží hlavně na vlastnostech snímaného obrazu a na postupu jeho dalšího zpracování. Někdy nám může postačit čistě binární úroveň jasu, v některých měřících systémech se pak jeden vzorek může reprezentovat i 12-ti a více bity. • Snížení počtu barevných kanálů - v řadě aplikací nám postačí jen jasová složka (např. detekce hran). • V kombinaci se snížením rozlišení je možné jako řešení uvažovat i použití CMOS kamery společně s mikroprocesorem a obrazovou pamětí na jedné desce. Obrazová data pak mohou být vyčítána velmi rychle. Po sériové lince pak již není nutné posílat objemná obrazová data, ale pouze potřebné informace o objektech v obraze.
20
Kapitola 3
Komprese dat Komprese je metoda, která umožňuje zmenšit objem dat a přitom zachovat jejich informační hodnotu. Spolu s neustálým zvyšováním propustnosti datových sítí a kapacity záznamových médií roste i velikost přenášených, ukládaných dat. Šířka pásma je stále velmi důležitou složkou a snažíme se ji tedy minimalizovat. Proto se snažíme při přenosu i záznamu dat odstranit jakoukoliv nadbytečnou informaci. Tento krok lze označit jako kompresi. Nadbytečná informace ve vstupních datech nemusí být na první pohled zřejmá a liší se podle charakteru dat. Znalost charakteru dat hraje klíčovou roli při volbě vhodného algoritmu komprese. Snaha přenášet informace bez zbytečností se datuje již do minulého tisíciletí. Jako příklad si můžeme připomenout Samuela Morse, který v 19. století vynalezl dobře známou morseovu abecedu3 , použil jeden ze základních přístupů pro efektivní přenos informací. Písmena, které se vyskytují často v daném jazyce jsou přenášena kratším kódem, než písmena, která se vyskytují zřídka. V anglickém jazyce si můžeme uvést příklad písmena e a t, jsou kódovány jen jednou tečkou/čárkou. Zatímco například písmeno h, které se nevyskytuje v angličtině tak často, je kódováno čtyřmi tečkami. Telegrafický přenos kódovaných zpráv, tak byl výrazně rychlejší než kdyby byla všechna písmena kódována stejným počtem teček/čárek. [15], [2]
3.1
Klasifikace
Hlavní parametr komprese, který je nutné zvolit je, zda-li je přípustné, aby se v přenosovém řetězci nějaká data ztratila“ (díky lidské nedokonalosti si této ztráty nemusíme být ” vědomi). Podle toho dělíme kompresi na: • Bezeztrátovou (lossless) - pouze odstraňuje redundance (při obrácené operaci kompresi získáme data naprosto identická s daty vstupními). • Ztrátovou (lossy) - nepožadujeme, aby se žádná informace neztratila, ale je důležité, zda je výsledný dojem po komprimaci - dekomprimaci co nejblíže vstupním datům z hlediska pozorovatele. podle toho jestli je náročnost kompresního a dekompresního algoritmu stejná nebo ne, dělíme kompresi na: 3
původní morseova abeceda nepoužívala jen tečku, čárku a mezeru, ale i dlouhou čárku a dlouhou mezeru. Morseova abeceda jak ji známe dnes je modifikace té původní - mezinárodní morseova abeceda“ ”
21
• Symetrickou - komprese i dekomprese je stejně výpočetně náročná. • Nesymetrickou - rozdílná výpočetní náročnost kompresního a dekompresního algoritmu (v naprosté většině případů je náročnější proces komprese). Bezeztrátová komprese bezeztrátová komprese se používá všude tam, kde nelze vynechat žádnou část informace, což je je typické pro binární data, textové nebo spustitelné soubory, řídící signály a podobně. v současné době jsou nejrozšířenější bezeztrátové komprimační metody založeny na následujících algoritmech, jejich nejrůznějších variantách, kombinacích a modifikacích: • run length encoding (rle) - sekvence stejných symbolů ve vstupním řetězci jsou nahrazeny počtem jejich opakování [15], [2]. • huffmanovo kódování - symboly, které se vyskytují ve vstupních datech nejčastěji, jsou kódovány menším počtem bitů než symboly, které se objevují zřídka [15], [2]. • aritmetické kódování - podobné jako huffmanovo kódování, efektivnější, ale výpočetně náročnější [15], [2]. • lempel-ziv-welch (lzw) - zaměňuje opakující se řetězce symbolů za speciální symboly [15], [2]. • differential pulse code modulation - jednotlivé složky se kódují jako rozdíl od první složky. vhodné pro stejnosměrné složky [15], [2]. Ztrátová komprese ztrátová komprese je typická svým využitím pro přenos informací, určených pro zpracování lidskými smysly (sluchem a zrakem). tyto informace se vyznačují obrovským datovým tokem (například obrazová data), ale lidské smysly nejsou schopny využít všechny informace v něm obsažené. objem těchto dat lze zmenšit až několikanásobně při minimálním vlivu na subjektivní vjem pozorovatele resp. posluchače. ztrátová komprese využívá znalosti nejen charakteru kódovaného signálu, ale i schopností pozorovatele k tomu, aby byla vypuštěná informace co nejméně znatelná. bohužel poměr komprese je subjektivní (každý člověk má zrak a sluch mírně rozdílný). vjem se tedy nedá přesně kvantifikovat [15]. v dnešní době má téměř každý s formátem MP3 (Mpeg Layer 3 - komprese zvukového signálu) vlastní zkušenosti. může tedy posoudit rozdíl komprimované a nekomprimované hudby.
3.2 3.2.1
Komprese obrazu a videa Historie
Začátkem osmdesátých let vznikl kodek pro přenos videosignálu cost211. Tato komprese byla založena na principu DPCM (diferenční pulzní kódová modulace) a byl standardizován CCITT (comite consultatif internationale de telegraphie et telephonie) jako standard H.120. Stanovený maximální datový tok byl 2 mbit/sec (pro Evropu). Pro zvýšení kvality, bez překročení požadovaného datového toku by bylo potřeba kódovat jeden pixel méně než jedním bitem, což vedlo ke kodekům založeným na kódování bloku.[2]. 22
Koncem osmdesátých let bylo v ITU-T (dříve CCITT) přijato 15 návrhů na kodeky pro videokonference. Čtrnáct z nich bylo založeno na DCT (diskrétní cosinové transformaci) a jeden na vektorové kvantizaci. Z tohoto důvodu bylo dct zvoleno jako základní kompresní algoritmus pro videokonference. Jiná organizace JPEG (Joint Photographic Expert Group), zvolila také DCT jako základ pro kompresi statického obrazu. Kodeky založené na DCT prokazovaly velké zvýšení kvality oproti h.120. V roce 1989 byl standardizován formát h.261. Data v jednotlivých snímcích jsou komprimována pomocí DCT. V počátku devadesátých let MPEG (Motion Picture Expert Group) se začalo zabývat kodekem pro kompresi, záznam a přehrávání videa. Jelikož v tomto případě není nutná komprese v reálném čase, bylo možné použít komplexnější kompresní algoritmus. Algoritmus použitý H.261 byl rozšířen o tzv. odhad pohybu“. Tím se podařilo zvýšit návaznost mezi ” snímky. Tato úprava vedla ke vzniku nového standartu MPEG-1. V současnosti jsou stále nejpoužívanější standardy založené na MPEG-2 [9], což je rozšíření algoritmu MPEG-1. Do popředí se také dostává nový standart MPEG-4 kapitola 10 AVC (známí také jako H.264). tento standart je v současnosti používán hlavně pro videa s vysokým rozlišením (HD videa). Pro zvýšení kompresního poměru jsou používané i dvouprůchodové algoritmy, ale jejich použití pro přenos signálu v reálném čase je nemožné. Další, zatím nepříliš rozšířenou variantou, je komprese založená na tzv. vlnkové transformaci“. ” Čerpáno z [15], [2] Metody Většina metod, která používá kompresi obrazu, ať již statického nebo dynamického, využívá základní algoritmy. Základní algoritmus pro kompresi statického obrazu je obsažen v algoritmu JPEG. V následujícím textu bude vysvětlena komprese jpeg a poté bude ukázáno, která rozšíření dala vzniknout dalším algoritmům pro kompresi videa.
3.2.2
Komprese jpeg
Zkratka jpeg označuje Joint Photographic Expert Group. Jedná se o soubor algoritmů (standart pro formát souborů obrazu komprimovaného touto metodou je označen jako JFIF [7]), určených pro kompresi barevného i šedotónového obrazu. Komprese je symetrická a může být ztrátová i bezeztrátová, ovšem síla jpegu je kompresi ztrátové. Na formátu jpeg si předvedeme základní prvky ztrátové komprese. Algoritmus převodu na JPEG Algoritmus JPEG, který je popsán diagramem na obr. 3.1 sestává z následujících kroků: • Provedeme transformaci barev z barvových prostorů rgb, cmyk, případně dalších (například ccd čipy mají vlastní barvový prostor) do barvového prostoru YCb Cr . tato transformace je bezeztrátová (nedochází k žádné ztrátě informací o obrázku viz. kapitola 2.3.1). • Podle nastavení kodéru dochází k podvzorkování barvonosných složek. v barvovém prostoru YCb Cr nese složka y informaci o světlosti pixelu a složky Cb a Cr informaci o barvě. tyto poslední dvě složky lze podvzorkovat. podvzorkováním dojde ke snížení objemu zpracovávaných dat, ale i k určité (většinou velmi malé) ztrátě obrazové informace. 23
Transformace barev
Nastavení redukce
Redukce barevných složek
Dopředná DCT
Kvantizač ní matice
Kvantování DCT koeficientů
Aritmetické kódování
Huffmanovo kódování
Uložení do formátu JFIF
Obrázek 3.1: blokové schéma kódování jpeg. převzato z [7] • Další kroky jsou odděleně prováděny pro složku y, a pro barvonosné složky. • Na bloky 8x8 pixelů je aplikována diskrétní kosinová transformace (DCT). aplikace DCT je opět bezeztrátová. po aplikaci DCT jsou bloky 8x8 pixelů převedeny do frekvenční roviny. • Bloky DCT o velikosti 8x8 pixelů jsou kvantovány pomocí vypočtených kvantizačních tabulek. Výsledkem operace je stav, kdy mnoho hodnot je nulových. Tyto hodnoty budou z obrázku vypuštěny. Toho využijeme v následujícím kroku zpracování. Právě při kvantizaci může docházet k největší ztrátě informace a tím i ke kýženému snížení bitové rychlosti (bitrate). • kvantované DCT koeficienty jsou následně kódovány pomocí aritmetického, či huffmanova kódování. Aritmetické kódování sice dosahuje větší komprese (až 10 % [2]), nicméně je výpočetně náročnější. Z tohoto důvodu se může spíše setkat z kompresí pomocí huffmanova kódování. • posledním krokem zpracování je uložení vytvořených dat do souboru typu JFIF/JPEG. čerpáno z [7] Převod barevného prostoru Konverze barevného prostoru z klasické reprezentace pomocí tří hlavních barev červené, modré a zelené do reprezentace pomocí jasové složky (Y-luminance) a dvou barevných složek (U,V - chrominance). Využívá se zde nedokonalosti lidského oka, které je nejcitlivější na jasovou složku a barevné složky vnímá hůř (to si snadno ověříme za šera, kdy ještě není problém rozeznávat předměty, ale přesné rozpoznávání barev je již značně oslabeno).
24
Této nedokonalosti je využito již ve standardu PAL (Phase Alternating Line) pro televizní vysílání a videozáznam. U televizního přenosu toto umožnilo použít nižší šířku pásma pro složky chrominance. Při digitální kompresi to umožňuje komprimovat tyto složky s nižší přesností, což vede na vyšší kompresní poměry.[7] Rozřezání Pro další zpracování je obraz rozřezán“ na bloky o velikosti 8x8 pixelů a další operace ” jsou prováděny identicky s každým z těchto bloků. Hodnoty jasové složky i barevných složek jsou v intervalu 0 až 255 (1 Byte). Pro optimální hodnoty koeficientů po transformaci je vhodnější reprezentace −128 až 127. Čehož snadno dosáhneme odečtením 128 od hodnoty každého pixelu.[7] 2d diskrétní kosinová transformace Dalším rysem oka je jeho vyšší citlivost na pozvolné změny obraze, než na změny rychlé“. Pro usnadnění rozdílného nakládání s různými složkami je vhodné obraz převést ” transformací, která má: • optimální koncentraci energie (informace) • kompletně dekoreluje signál Takovéto vlastnosti právě splňuje transformace KLT(karhunen-loeve transform). Tato transformace ovšem nelze použít z důvodu: • bázové funkce závisí na vstupním signálu • je neseparovatelná • výpočetně velmi náročná Nevýhody KLT jsou značné (zvláště pak její výpočetní náročnost), což její použití v praxi značně omezuje. Optimální je použít transformaci, která se co nejvíce blíží pozitivním vlastnostem KLT, ale je výpočetně jednodušší. Vlastnosti DCT jsou: • dekoreluje signál typický pro obrazová data • koncentrace energie je nižší než u KLT, ale pro typická obrazová data dostačující • výpočetní složitost je přijatelná [11] Kvantizace V tomto kroku dochází ke ztrátě informace. Blok je skalárně vydělen empiricky zjištěnou kvantizační maticí (3.1) a zaokrouhlen. Informace, na které je oko citlivé jsou tedy zachovány s větším rozlišením, než informace, které jsou vnímány méně.[7]
25
m=
16 12 14 14 18 24 49 72
11 12 13 17 22 35 64 92
10 14 16 22 37 55 78 95
16 24 40 19 26 58 24 40 57 29 51 87 59 68 109 64 81 104 87 103 121 98 112 100
51 61 60 55 69 56 80 62 103 77 113 92 120 101 103 99
(3.1)
Zig-zag V této fázi je blok převeden na vektor o délce 64. Využívá se zde pomocí specifického postupu zvaného zig-zag scan (obr. 3.2). Právě tento způsob převodu zajistí, že koeficienty budou ve výsledném vektoru seřazeny podle důležitosti. Na prvním místě se vyskytuje stejnosměrná složka celého bloku.
Obrázek 3.2: vektorizace bloku pomocí zig-zag scan. Vysoké hodnoty koeficientů v pravé dolní části kvantizační matice (společně s vlastnostmi obrazových dat) mají ten efekt, že se ve výsledném vektoru objeví posloupnosti nul. Nuly na konci vektoru, které nepředcházejí žádnému koeficientu, jsou odstraněny (ignorovány).
3.2.3
Motion-jpeg
JPEG je určen pro kompresi statického obrazu. Videosignál se dá komprimovat jako sekvence JPEG komprimovaných snímků tzv. Motion - jpeg“. Jelikož ten ale nebere v úvahu ” žádné souvislosti mezi jednotlivými snímky, není komprese tak velká, jak by mohla být. Ve videosignálu obecně se často jednotlivé snímky velice podobají a toho se dá využít při kompresi.[7], [11] Na obr. 3.3 je uvedeno blokové schéma jpeg kodéru (modře) rozšířeného o další bloky, které jsou používány při kompresi videosignálu, ne statických obrázků. První snímek se nejprve zkomprimuje a odešle, zároveň s odesláním je ihned dekomprimován a uložen do paměti snímku. Druhý příchozí snímek je nejprve odečten od prvního a teprve tento, takzvaný rozdílový snímek, je zkomprimován a odeslán. Zároveň je opět dekomprimován, sečten s původním snímkem a uložen do paměti snímku. Rozdílový snímek je nutný dělat z nového snímku a snímku původního, již degradovaného kompresí-dekompresí. Jen tak se dá 26
Výřez 8x8 pixelů
-
DCT
Q
Zig-Zag
RLE
Entropické kódování
-1
Q
Pamě t snímků
+
IDCT
Obrázek 3.3: bloky pro zpracování motion-jpeg. převzato z [7] zaručit, že kodér i dekodér mají v paměti stejný minulý snímek a nedochází ke kumulaci chyby. Existuje celá řada rozšíření, které vedou na vyšší kompresní poměr/kvalitu obrazu. Je to například kvalifikace bloku a podle toho zvolená kvantizační matice nebo zavedení vektorů pohybu (motion vector), kdy je zohledněn pohyb ve videosignálu atd. . Toto vede na komprese typu H.263, MPEG-2 a další. Více informací o dalších formátech nalezenete v [25],[3].
27
Kapitola 4
Paměťové karty Stále menší a menší zařízení společně s většími paměťovými nároky si žádají odpovídající úložná média. V následujícím textu se čtenář dozví o různých druzích paměťových karet.
4.1
Flash paměti
Základem všech typů paměťových karet je paměť typu flash“. Tato paměť je prakticky ” jen jiný název pro paměti typu EEPROM (Electrically Erasable Programmable Read-only Memory). Složítou zkratku si můžeme přeložit jako elektricky vymazatelnou a programovatelnou paměť pouze pro čtení. Název samotný je ale matoucí, podle něj je paměť zároveň vymazatelná, programovatelná (zapisovatelná) a jen na čtení. Složitý název vznikl přidáváním různých vlastností do základních paměti ROM (Read-Only Memory) s možností pouze jednoho trvalého zapsání. Rozšířením byla paměť EPROM. Tato paměť již umožňovala pomocí ultrafialového záření vymazat a pomocí speciálního programátoru znovu naprogramovat. Obě varianty, ROM i EPROM, se v současnosti ještě stále používají, zejména pro ukládání firmwaru různých zařízení. Později výrobci přidali těmto pamětím ještě poslední vlastnost, a to možnost vymazat, či přepsat obsah paměti pomocí elektrického signálu, navíc bez speciálních zařízení. Název pamětí flash“, se kterým se setkáváme mnohem běžněji, než se zkratkou EEPROM, ” je odvozen právě z principu přemazávání paměťových buněk jedním elektrickým výbojem. Samozřejmostí flash“ pamětí je jejich nevolatilnost, tedy uchování dat bez přístupu elek” trického napětí po dobu až několika desítek let. Výhodou je i mechanická odolnost, zejména díky tomu, že paměť neobsahuje žádné mechanické součásti. Díky tomu je i spotřeba elektrické energie na naprostém minimu a odolnost proti otřesům se pohybuje v hodnotách kolem 1000 g. [4]
4.1.1
xD
Formát je konkurencí především pro formáty jako Secure Digital card (SD), CompactFlash (CF) či Memory Stick od firmy Sony. xD karty jsou v porovnání s některými staršími typy (jako SmartMedia (SM), MultiMediaCard (MMC) nebo MemoryStick (MS)) rychlejší a mají poměrně malou spotřebu energie. Tyto karty jsou ovšem v porovnání až dvakrát dražší, než karty o stejných objemech jiných typů a nejsou tak široce podporovány ve fotoaparátech ani čtečkách nebo u výrobců příslušenství. Formát xD je patentovaný používaný pouze u Fujifilmu a Olympusu stejně tak, jako například karta Memory Stick u Sony. To znamená, že chybí veřejná dokumentace a popis provedení (opakem k tomuto jsou formáty 28
SD či CompactFlash). Při formátování karty v počítači můžou nastat problémy s jejím rozpoznáním ve fotoaparátu, či jiném zařízení. Kvůli omezenému použití v jiných kategoriích, než jsou digitální fotoaparáty, karty xD ztrácejí na popularitě na úkor typu SD, jež jsou všestranně používány v PDA, digitálních audio přehrávačích a většinou ostatních výrobců digitálních fotoaparátů. [4]
4.1.2
CompactFlash
CompactFlash (CF) byl původně typ zařízení pro ukládání dat používaný v přenosných elektronických zařízeních. Jako záznamové médium používá flash paměť ve standardizovaném pouzdru. Poprvé bylo specifikováno a vyrobeno společností SanDisk Corporation v roce 1994. Fyzický formát je dnes používán pro mnoho zařízení. Existují dva typy CF karet: Type I (tloušťka 3,3 mm) a trochu tlustší Type II (5 mm). Disk IBM Microdrive rozměrem odpovídá CF Type II. Jako rozhraní bylo zvoleno klasické IDE. Rychlostní specifikace CF postupně přidávají nové přenosové režimy ATA, poslední specifikace CF 4.0 podporuje režim Ultra DMA 5. Kapacitní a rychlostní omezení CF odpovídají použitému ATA režimu, v současnosti existují karty s kapacitou až 64 GB. CF karty používají v profesionálních digitálních fotoaparátech a kamerách nebo místo pevných disků v průmyslových počítačích nebo počítačích s nízkou spotřebou. Jako flash paměť s vhodným rozhraním poskytují alternativu k SSD, které se zatím vyrábějí s relativně vysokou kapacitou a cenou. Je k tomu potřeba redukce CF-IDE, která neobsahuje žádnou přidanou elektroniku (popř. CF-SATA, kde je přítomen PATA-SATA můstek). Díky absenci rotačního zpoždění klasických magnetických disků toto řešení může výrazně urychlit některé úlohy na PC (spouštění systému, aplikací). [4]
4.1.3
MultiMediaCard
MultiMediaCard (MMC) je standard paměťové karty s technologií paměti flash. Vyvinuta byla v roce 1997 firmami Siemens AG a SanDisk. Je založena na patentu firmy Toshiba (paměť NAND), čímž je dosažena její menší velikost, než u systémů založených na pamětích NOR firmy Intel (CompactFlash). MMC je velká přibližně jako poštovní známka: 24 mm x 32 mm x 1.4 mm. MMC používá 1 bitové sériové rozhraní, novější verze používají 4 nebo 8 bitová rozhraní. Obvykle jsou MMC karty používány jako paměťová média v přenosných zařízeních, dají se snadno přenést a přečíst do osobního počítače. Například digitální fotoaparát používá MMC k ukládání fotografií, později, přes čtečku paměťových karet, se fotografie přenesou do PC. [4]
4.1.4
Secure Digital
Secure Digital (zkratka SD) je paměťová karta používaná v přenosných zařízeních včetně digitálních fotoaparátů, přenosných počítačů a mobilních telefonech. Jako médium je použita flash paměť. SD karty byly vytvořeny na základě formátu Multi Media Card (MMC), ale oproti tomuto staršímu formátu jsou silnější. DRM (digitální správa práv) je přítomna, ale málo se používá. SD karty mají nejčastěji rozměry 32 x 24 x 2,1 mm, ale mohou být i tenčí - 1,4 mm jako MMC karty. Tyto karty na rozdíl od MMC mají malý postranní vypínač na ochranu proti nechtěnému zápisu. Pokud je nastaven na LOCK, nelze na kartu nic ukládat ani uložená data jakkoliv měnit, pokud je nastaven na OPEN, můžete na kartu libovolně zapisovat a měnit uložená data. [4]
29
4.1.5
SDHC
SDHC (Secure Digital High Capacity) je nástupnickou technologií výroby karet SD. Mezi klíčové výhody se řadí především možnost výroby paměťových karet kapacit nad 2 GB (s teoretickým maximem až 2048GB), limit předchozí technologie SD je 2 GB. Naopak nevýhodou SDHC je absence zpětné kompatibility se staršími čtečkami SD karet. Nové SD čtečky a zařízení (fotoaparáty, hudební přehrávače, atd.) s podporou SDHC jsou již zpětně kompatibilní v tom smyslu, že dokážou číst nebo zapisovat i na všechny starší SD karty. U SDHC karet se také nově zavádí označení minimální rychlosti zápisu, označení by se mělo uvádět pod logem SDHC. Class 2 garantuje rychlost 2 MB/s, Class 4 garantuje rychlost 4 MB/s a Class 6 garantuje minimálně 6 MB/s. Označování maximální rychlosti je založeno na násobcích rychlosti CD (150 kB/s) Celková rychlost přenosu záleží na kartě v kombinaci se čtečkou. Každá kombinace karty a čtečky dává jiné výsledky. Čím starší anebo univerzálnější USB čtečka, tím horší výsledky. Teoretické (dosud nedosažené) maximum rychlosti do PC je limit USB 2.0 HiSpeed 400 Mb/s ( 50 MB/s). Panasonic (jeden z iniciátorů SD formátu) ohlásil, že vyvine čtečku s přenosem 40 MB/s. [4] Z důvodu největšího rozšíření jsem vybral pro záznam videa z on-board kamery na paměťovou kartu typ SD/MMC. K těmto typům karet je také nejvíce informací a dokumentace na internetu. Maximální velikost paměťové karty bude teoreticky 2 GB.
30
Kapitola 5
Návrh hardwaru V této kapitole se čtenář dozví o návrhu on-board kamery. Nastíníme blokové schéma takového zařízení a rozebereme si jeho jednotlivé části.
5.1
Blokové schéma
Jak vidíme na na obrázku 5.1 celé zařízení se bude skládat z těchto základních bloků: • Mikropočítač - základní prvek celého systému • Kamerový modul - modul zachytávající jednotlivé snímky • Paměťová karta - medium, kam se budou snímky zapisovat • Displej - zobrazení aktuálních snímků • Senzory - měří aktuální telemetrii vozidla • Ovládací prvky - slouží k ovládání celého zařízení Nejsložitější prvek celé on-board kamery bude mikropočítač. Z tohoto důvodu je potřeba jeho volbu pečlivě zvážit a vybrat jako první. Další části systému budou voleny tak, aby bylo možné je k tomuto mikropočítači připojit a mohlo tak vzniknout celé zařízení palubní kamery.
5.2
Mikropočítač
Hlavní prvek systému. Obstarává veškeré operace zařízení. Od příjímání jednotlivých snímků z kamerového modulu, až po ukládání těchto snímku na paměťové médium. Z předchozích kapitol je vidět, že tento prvek bude muset mít velký výpočetní výkon, aby stihl vše zpracovat. Podle daných nároků byl zvolen digitální signálový procesor (DSP) DaVinci od firmy Texas Instruments. Přesné označení chipu TMS320DM6446. Procesor je obsažen ve vývojovém kitu od firmy Texas Instruments - DVEVM 6446. Kit nám poskytne veškeré výpočetní prostředky pro naši on-board kameru. Technologie DaVinci, stejně jako produkty DaVinci od společnosti Texas Instruments, umožňuje pracovat s videem ve vysokém rozlišení a s vysokou výkonností. Umožňuje je živě přenášet přímo na obrazovku, do kapesních přenosných 31
Obrázek 5.1: Blokové schéma pro on-board kameru zařízení nebo také do integrovaných informačních systémů ve vozidlech apod. Platforma DaVinci, integrovaná v digitálních mediálních obvodech, představuje ideální volbu například pro digitální kamery, videotelefony a videokonference, přenosné multimediální přehrávače, set-top boxy, zobrazovací systémy v automobilovém průmyslu a lékařské elektronice, zabezpečovací videotechniku a robotické systémy vidění. DaVinci technologie vychází z přední průmyslové technologie digitálního zpracování signálu, která se pružně přizpůsobila požadavkům video aplikací, přičemž zahrnuje digitální zpracování signálu SoCs (System-on-Chips), procesory založené na ARM, video koprocesory a akcelerátory, multimediální kodeky, API, frameworky, vývojové nástroje a pochopitelně také komplexní technickou podporu. Vyjmenované integrované součásti představují průmyslově první ucelenou nabídku otevřené video platformy, která je navíc široce dostupná.
5.3
Vývojový kit DVEVM6446
Vývojový kit byl vyvinut firmou Texas Instruments již v roce 2004, nicméně stále poskytuje dostatek výkonu pro dnešní aplikace. Je zaměřen na zpracování zvukových a obrazových signálů. Na obrázku C.1 vidíme fotografii celého kitu. Celý kit se skládá z mnoha periferií, jejich rozmístění je patrné z obrázku 5.3. V následujících kapitolách si některé z nich popíšeme. Správné nastavení kitu nalezneme v [20].
5.3.1
DSP
Hlavní prvek celého kitu je digitální signálový procesor TMS320DM6446. Na obrázku 5.3 je vidět, že DSP je založený na ARM926 procesoru pracující na frekvenci 300M hz a DSP jádru TMS320DM6446 na frekvenci 600M hz. Kombinace těchto dvou jader umožňuje
32
Obrázek 5.2: Základní bloky vývojového kitu DM6446. Převzato z [19] návrhářům vytvářet aplikace využívající jak DSP jádro, tak řídit celý systém pomocí mikrokontroléru ARM926 a to vše v reálném čase. Procesor také umožňuje připojení velké množství periferií přes sběrnice jako jsou například: • I2C (Inter-Integrated Circuit) detailnější popis bude uveden níže v textu. • USB (Universal Serial Bus) • SPI (Serial Peripheral Interface) • UART(Universal Asynchronous Receiver and Transmitter) Pomocí sběrnic lze připojovat různé typy periferií, které dokáží vhodně rozšířit celý systém. Tím se tento procesor stává opravdu univerzálním a umožňuje velké možnosti nasazení v oblasti zpracování analogových a digitálních signálů.
5.3.2
Napájení
Celý kit je napájen napětím 5 V . Toto napětí je stabilizováno na hodnotu 3, 3 V a tímto napětím je napájena velká část kitu. Dále si kit stabilizuje další dvě hodnoty napětí a to • 1, 8 V pro vstupně/výstupní operace (například I2C) • 1, 2 V pro napájení procesoru.
33
Obrázek 5.3: Bloky TMS320DM6446. Převzato z [19]
5.3.3
Sběrnice
Na kitu je rozvedeno desítky sběrnic zde uvedu jenom ty nejzákladnější: • EMIF (External Memory Interface) - pomocí této sběrnice můžeme ke kitu připojovat různé paměťové moduly, se kterými pak procesor dokáže pracovat. Na kitu je již osazena paměť typu NAND FLASH, NOR FLASH a disk; • I2C (Inter-Integrated Circuit) - sběrnice pro komunikaci s nejrůznějšími periferiemi. Pomocí této sběrnice připojíme externí senzorový modul s akcelerometrem. Detailnější popis sběrnice je uveden v nasledující kapitole; • EMAC (Ethernet Media Access Controller) - sběrnice mezi procesorem a sítí; • DDR (Double Data Rate) - připojení DDR pamětí k procesoru; • Video Ports - sběrnice , která slouží pro přenos video signálu; • Serial Media - sběrnice pro připojení sériových pamětí; Detailnější informace o celém kitu naleznete [19]. I2 C I2 C bus je zkratka, která vznikla z IIC bus, tedy Internal Integrated Circuit Bus. Jak již název napovídá, jedná se o interní datovou sběrnici sloužící pro komunikaci a přenos dat mezi jednotlivými integrovanými obvody většinou v rámci jednoho zařízení. Vyvinula ji firma Philips přibližně před 30 lety a od té doby prošla několika vylepšeními. V dnešní době tento způsob komunikace“ podporuje řada integrovaných obvodů nejen firmy Philips. ” 34
Jedná se především o mikrokontroléry, sériové paměti, inteligentní LCD, audio a video obvody, a/d a d/a převodníky a některé další digitálně řízené obvody. Hlavní výhodou je, že obousměrný přenos probíhá pouze po dvou vodičích - data SDA (serial data) a hodiny SCL (serial clock ). To především u mikrokontrolérů výrazně optimalizuje nároky na počet vstupně-výstupních pinů a celkově zjednodušuje výsledné zapojení. Na jednu sběrnici může být připojeno více integrovaných obvodů. V základní verzi jsou obvody adresovány 7bitově a v rozšířené verzi 10bitově. To umožňuje připojení 128, respektive 1024 čipů s různou adresou, na jednu společnou sběrnici. V praxi jsou tato čísla však podstatně nižší, protože adresa čipu většinou nelze určit plnými 7 (10) bity, ale třeba jen třemi. Někdy nelze určit vůbec a je dána na výrobcem, pro daný typ čipu - takových čipů tedy na jedné sběrnici nemůže být více, než jeden. Přenosová rychlost sběrnice je pro většinu aplikací dostatečná i v základní verzi, kde je frekvence hodin 100 kHz. Ve vylepšených verzích to může být 400 kHz nebo 1MHz, ale ne všechny integrované obvody tuto verzi podporují. Rychlost přenosu pak musí být přizpůsobena pochopitelně nejpomalejšímu“ čipu na sběrnici. Oba ” vodiče musí být implicitně v logické jedničce a to je zajištěno pull-up rezistory. Jejich odpory mají hodnotu v řádech jednotek ( kΩ). Čím je vyšší komunikační frekvence, tím musí být nižší hodnoty těchto odporů. Pro 100kHz postačuje 4, 7 kΩ. Jeden z integrovaných obvodů (většinou mikrokontrolér) je nastaven jako master“ a ” všechny ostatní obvody jsou slave“. Obvody se dají zapojit i jako tzv. multi-master“, kdy ” ” je čipů master“ několik. ”
Obrázek 5.4: Možné zapojení různých zařízení Zařízení typu master“ při jakémkoli přenosu generuje hodinový signál na vodiči SCL. ” Když jeden čip vysílá, přijímají všechny ostatní a pouze podle adresy určují, zda jsou data určena jim. Čip, který chce vyslat/přijmout data musí nejprve definovat adresu čipu, s kterým chce komunikovat a zda půjde o příjem nebo vysílání - tedy o čtení nebo zápis. To určuje R/W (čtení/zápis) bit, který je součástí adresy. Zde máme jednotlivé fáze přenosu, které mohou nastat při komunikaci na sběrnici: • Stav klidu - Je zajištěn logickými jedničkami na obou vodičích, master“, tedy ne” generuje hodinový signál a neprobíhá žádný přenos. Logické jedničky jsou na obou vodičích zajištěny pull-up rezistory (rezistory mezi vodičem a napájecím napětím), takže klidový stav nastane i pokud jsou výstupy obvodu master“ ve stavu vysoké ” impedance (odpojeny). • Start bit - Zahajuje přenos nebo jeho další část. Je vygenerován tak, že se změní úroveň SDA z 1“ na 0“, zatímco je SCL v logické 1“. ” ” ” • Stop bit - Ukončuje přenos. Je vygenerován podobně jako start bit. Logická úroveň SDA se změní z 0“ na 1“, zatímco je SCL v logické 1“. Stop bit může být generován ” ” ” pouze po nepotvrzení přenosu“, tedy pouze po přijmutí Ack v logické 1“. (viz níže) ” ” 35
• Přenos dat/adresy - Data jsou přenášena po 1 bajtu, tedy 8-mi po sobě jdoucích bitů, od nejvyššího po nejnižší. Při přenosu dat se může logická úroveň na SDA měnit pouze pokud je SCL v logické 0“. Při každém pulzu na SCL je přenesen jeden bit. ” • Potvrzující bit Ack (acknowledge) - Tento bit slouží k potvrzení správného přijmutí dat. Ack bit se odesílá stejným způsobem, jako by se odesílal devátý bit dat, ale s tím rozdílem, že ho generuje čip, který přijímal (přijímač) a nikoliv ten, který data odesílal. Pokud přenos proběhl v pořádku, tak odešle logickou 0“. Logická 0 potvrzu” jícího bitu znamená rovněž to, že je přijímač připraven na příjem dalšího bajtu, který následuje okamžitě po něm při dalším pulzu na SCL. Pokud přenos selhal, odešle logickou 1“ nebo pokud má dojít k ukončení přenosu, tak neodešle nic“. Pull-up ” ” rezistor pak zajistí, že bude na vodiči SDA logická 1“ a Ack bit (v logické 0“) ” ” odešle vysílač.
Obrázek 5.5: Časový průběh logických úrovní na vodičích SDA a SCL při jednotlivých fázích přenosu Podrobnější popis sběrnice je uveden v [14].
5.3.4
Video sběrnice
Vstup analogového videosignálu do vývojového kitu je pomocí jednoho cinch konektoru. Tento signál může být kódován pomocí dvou standardů kódování barevného signálu pro televizní vysílání a to • PAL (Phase Alternating Line) - používaný ve většině státu Evropy • NTSC (National Television System Committee) - používaný hlavně v severní Americe Tento signál je posléze přiveden na ADC video dekodér (TI TVP5146). Dekodér TVP5146 je vysoce kvalitní, jednočipový digitální video dekodér, který digitalizuje a dekóduje všechny nejznámější analogové video formáty do digitální podoby. Dekodér podporuje analogovědigitální (A/D) přeměnu složky RGB a YPbPr signálu, stejně jako A/D konverzy a dekódování NTSC, PAL, SECAM a kompozitní S-video signálu do složky YCbCr. Tento dekodér obsahuje čtyři 10-bit A/D převodníky (ADC). 36
Hlavní přednosti tohoto dekodéru jsou: • robustní detekce synchronizace ve slabých nebo zarušených signálech • 4 x 10 bitový ADC převodník • rychlé přepínání mezi vstupy • jasový a barevný procesor • externě řízené časování procesoru, možnost řízení spotřeby • konfigurace pomocí sběrnice I2C • vstupy tolerují napětí 3, 3 V • možnost nastavení výstupního formátu dat a další. . . Více o tomto dekodéru se můžete dozvědět v [21]. Digitalizovaný video signál je přiveden do procesoru, kde může být zpracován. Výstup video signálu je napojen přímo na výstup procesoru, který umožňuje vysílat analogový video signál v normách PAL a NTSC.
5.3.5
Periferie
Vývojový kit obsahuje mnoho periferií, které umožňují připojit nejrůznější externí karty. Zde uvedu pouze ty, které je možné uplatnit v palubní kameře. Souhrn možností připojení periferií • Pevný disk s rozhraním IDE • SD/MMC/MS karty • XD karty Dále pak vývojový kit obsahuje snímač infračervených signálů, vhodných ke snímání kódu z dálkových ovladačů.
5.3.6
Startovací nastavení
Po přivedení napájení provádí vývojový kit prvotní konfiguraci. Konfigurace umožňuje nastavení některých periferií a bez správného nastavení nebude kit pracovat. Nastavení pro on-board kameru naleznete v tabulce 5.1. S nastavení vidíme, že kit je připraven pro připojení na počítačovou síť. Připojení na sít nám umožní programovat, překládat přímo na svém počítači , ale spouštět programy přímo na vývojovém kitu.
37
bootdelay baudrate filesize fileaddr ipaddr bootcmd serverip bootfile nfshost rootpath bootargs
stdin stdout stderr ethaddr videostd
3 115200 1ec838 80700000 IP ADRESA KITU dhcp;bootm IP ADRESA SERVERU SOUBOR S JÁDREM LINUXU (uImage) IP ADRESA SERVERU S NFS CESTA KE SOUBOROVÉMU SYSTÉMU video=davincifb:vid0=0,2500K:vid1=0,2500K:osd0=720x576x16,2025K davinci enc mngr.ch0 output=COMPOSITE davinci enc mngr.ch0 mode=pal console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=192.168.0.100:/home/spy-heretic/workdir/filesys,nolock mem=118M serial serial serial 00:0e:99:02:41:72 pal Tabulka 5.1: Parametry pro start vývojového kitu
5.4
Kamerový modul
Je zařízení, které je schopno zachytit alespoň 24 snímků za vteřinu. Pro člověka se pak tato posloupnost snímků jeví jako video. Jedná se o prvek systému, který určuje náročnost celého sytému. Jak je vidět z kapitoly 2.4.5. zvolením parametrů dostane výsledný datový tok, který musí být systém schopen zpracovat. Vzhledem ke kapitolám 2.2 a 5.3 budeme volit analogovou kameru, která podporuje standard PAL. Analogová kamera nám umožňuje větší vzdálenost mezi kamerou a procesorem. Pro vývojové účely byla zvolena kamera Swann SW-C-C500R C500R. Tento modul má základní parametry uvedené v následující tabulce 5.2. Senzor Rozlišení obrazovky PAL (WxH) Rozlišení obrazovky NTSC (WxH) Video signál Horizontální rozlišení Váha
1/4 palce Sharp CCD 512x582 512x492 NTSC nebo PAL 400 TV řádků 236 gramů
Tabulka 5.2: Parametry zvolené kamery Na obrázku 5.6 je možné vidět zvolenou kameru. Tato kamera byla použita pro vývoj celé aplikace. V praxi se ukázala po parametrové stránce vhodná, nicméně velikost této kamery neodpovídala tomu, aby se mohla umístit na odvrácenou stranu zrcátka. Z tohoto důvodu byl vytvořen vlastní modul kamery. Tento modul vychází z integrovaného obvodu firmy OmniVision OV7949.
38
Obrázek 5.6: CCD kamera Swann SW-C-C500R C500R. Převzato z [19]
5.4.1
Vlastní modul kamery
Hlavní prvkem je jednočipový barevný CMOS senzor firmy OmniVision OV7949. Tento senzor má výstup videosignálu ve standardech PAL i NTSC. Volba mezi jednotlivými standardy se volí pomocí zapojení čipu, takže není možné programově měnit standard. Z tohoto důvodu jsem zvolil zapojení se standardem PAL. Základní vlastnosti senzoru pro standard PAL shrnuje tabulka 5.3. Rozlišení obrazovky PAL (ŠxV) Napájení Spotřeba Velikost snímacího senzoru (ŠxV) Doba expozice snímku Senzitivita Dynamický rozsah
628x586 3, 3 V analogová část 1, 8 V digitální část Typicky 168 mW 5, 961 mmx4, 276 mm 12, 5 µs 4, 7 V /Lux-sekundu @ 5600K 50 dB
Tabulka 5.3: Parametry senzoru ov7949.
Napájení modulu Z tabulky 5.3 vidíme, že senzor potřebuje pro svoji činnost dvě napájení. Napětí 3, 3 V je použito pro napájení všech analogových částí senzoru jako jsou: • analogově digitální převodník • rozhraní pro vstup/výstup 39
• výstup videosignálu Napětí 1, 8 V slouží k napájení DSP kontroléru a SPI komunikaci. Pro celkové napájení senzoru byly zvoleny dva stabilizátory TS1117, které nám umožní stabilizovat vstupní napětí z hodnot 4, 8 V − 7 V na hodnotu 3, 3 V a toto napětí posléze znovu stabilizovat na hodnotu 1, 8 V . Stabilizátor TS1117 umožňuje stabilizovat výstupní napětí pevně, pak volba napětí záleží na typovém čísle výrobku nebo variabilně. Při variabilní volbě je zapojení podle obrázku 5.7. Výstupní napětí potom získáme podle vzorce 5.1.
Obrázek 5.7: Zapojení TS1117 pro variabilní stabilizaci napětí.
R2 ) + Iadj ∗ R2 ) R1 Podle rovnice 5.1 byly zvoleny hodnoty rezistorů R1 = 12 kΩ a R2 = 10 kΩ. Celkové schéma napájení modulu je znázorněno na obrázku 5.8. Vvstupn = Vref erenn · (1 +
(5.1)
Obrázek 5.8: Celkové schéma napájení kamerového modulu
Noční osvětlení Pro možnost částečného snímání videosignálu v noci, byla přidána čtveřice IR diod. Tyto diody pracují na vlnové délce přibližně 950 nm. Světlo, které vydávají, je pro lidské oko neviditelné ale snímač OV7949 jej dokáže zachytit. Tím lze snímat i za podmínek kdy velikost okolního světla je malá. Celkový odběr diod se pohybuje kolem 80 mA. Tyto diody lze odpojit propojkou. Schéma zapojení diod je na obrázku 5.9. 40
Obrázek 5.9: Schéma zapojení IR přisvícení Mikrofon Z kapitoly 5.3 víme, že procesor dokáže zpracovávat i audiosignál. Z tohoto důvodu jsem se rozhodl modul kamery doplnit o mikrofon, který by mohl zaznamenávat zvuky při jízdě automobilem. Jako vhodný mikrofon byl zvolen elektretový mikrofon. Tyto mikrofony se od ostatních typů mikrofonů odlišují tím, že elektrický signál vzniká pohybem membrány v elektrickém poli. Umožňuje to vlastnost některých izolantů, kteří dokáží trvale udržet elektrickou polarizaci. Tím odpadá nutnost permanentního magnetu. Jejich hlavní výhody jsou: • malé rozměry • dobrá přenosová charakteristika • nízká cena Jako jistou nevýhodu můžeme uvést nutnost napájení mikrofonu a zesílení výstupního signálu. Schéma zapojení elektretonového mikrofonu je na obrázku 5.10. Zesílení výstupního signálu realizuje NPN tranzistor.
Obrázek 5.10: Schéma zapojení elektretonového mikrofonu
Celkové schéma Celkové schéma je v příloze A.1 41
5.5
Paměťová karta
Zde budou snímky ukládány. V případě nehody se bude na kartě nacházet videozáznam před nehodou, který pomůže určit viníka nehody. Jak vyplívá z kapitoly 4.1 a 5.3 vybereme pro naše zařízení paměť SD. Tyto paměti jsou dnes asi nejpoužívanější a umožňují vše potřebné pro vytvořené zařízení. Karta se připojuje pomocí konektoru na vývojovém kitu. Na kartě musí být naformátována na souborový systém FAT32. Souborový systém FAT32 je velice rozšířený a podporuje ho většina operačních systému např. Windows, Linux nebo Mac. Záznamy na paměťové kartě musí být možno zablokovat. Řešení blokace záznamu bude programové. Blokované záznamy budou mýt odlišný název. Podle této odlišnosti se pozná, že záznam nemůže být smazán.
5.6
Displej
Zobrazování aktuálně nahráváných záznamů bude obstarávat displej. V dnešní době se používají pro vestavěné systémy hlavně LCD displeje. Vybraný displej pro on-board kameru je Devlvcam P/N DELVPRO56 (NTSC/PAL) [19]. Tento displej zobrazuje snímky v rozlišení 320x240 pixelů, s velikostí obrazovky 5, 6 palce. Zvládá normy PAL i NTSC. Z kapitoly 5.4 víme, že vstup z kamerového modulu je ve standardu PAL, proto bude i výstup zvolen v systému PAL. Obecně je možné připojit jakýkoliv displej, který zvládá standard PAL/NTSC. To nám umožňuje začlenění i do stávajících systémů v automobilu.
5.7
Senzor
Jako základní a ukázkový senzor byl zvolen akcelerometr, který dokáže měřit aktuální zrychlení ve všech třech osách. Derivací zrychlení získáme přetížení ve všech osách, můžeme tedy případně blokovat přepsání záznamu o nehodě. Pro komunikaci mezi procesorem a senzorem byla použita sběrnice I2C. Popis této sběrnice naleznete v kapitole 5.3.3.
5.7.1
Modul akcelerometru
Modul akcelerometru je připojen na vývojový kit pomocí konektoru DC3. Skládá se ze tří hlavních částí: • I2C expandér - umožňuje ovládat čtyři led diody a čtyři tlačítka • akcelerometr - zjišťuje aktuální zrychlení • gyroskop - možnost měření náklonu, případná detekce převrácení I2C expandér Jako I2C expandér byl zvolen PCF8574AT od firmy Texas Instrument. Základní informace o expandér: • operační napětí 2, 5 V − 6 V • odběr proudu v klidu 10 µA • převodník I2C sběrnici na paralelní 42
• 8 bitů ovládaných přes sběrnici I2C • kompatibilní s většinou mikrokontrolérů • 3 bity volitelné adresy (možnost připojení až 8-mi expandérů) • možnost využití přerušení při změně stavu portu Jak bylo zmíněno v předcházející kapitole, I2C expandér ovládá čtyři tlačítka a čtyři uživatelské led diody. Každé tlačítko je připojeno jedním pinem na zem. Druhý pin je připojen přes pull-up rezistor na napájecí napětí a zároveň do daného pinu expandéru. Pull-up rezistor zajišťuje ochranu součástky, pokud by byla nastavena na logickou 0“. Pro ” čtení hodnoty z tlačítka je nutné nastavit výstup pinu na logickou 1“. Při rozepnutém ” stavu je na pinu detekována hodnota logické 1“. Při sepnutí tlačítka je detekována na ” výstupu logická 0“. ” Diody jsou zapojeny přes pull-up odpory na napájení. Pro rozsvícení diody je nutné nastavit pin do logické 0“. Celé zapojení expandéru ukazuje obrázek 5.11 ”
Obrázek 5.11: Schéma zapojení I2C expandéru.
Akcelerometr Jako vhodný akcelerometr byl vybrán 3-osý akcelerometr ADXL345 od firmy Analog Devices. Akcelerometr zvládá měřit přetížení v rozsahu 2, 8 a 16 g. Pro účely měření bude využito rozsahu 16 g Základní vlastnosti akcelerometru: • I2C a SPI sběrnice • nízký odběr proud při měření (40 µA) • napájecí napětí (2 V − 3, 6 V ) • až 13-bitové rozlišení • detekce převrácení • malé rozměry atd. Více o senzoru se dozvíte v [1]
43
5.8
Ovládací prvky
Předpokládáme, že zařízení by se používalo v automobilu jak v klidovém stavu, tak i v provozu na pozemních komunikacích. Z tohoto důvodu byly zvoleny dva druhy ovládání: • tlačítky - v klidovém stavu automobilu • dálkovým ovladačem - za jízdy automobilu
5.8.1
Tlačítka
Tlačítka jsou umístěny na modulu akcelerometru. Rozmístění tlačítek a jejich funkce je znázorněna na obrázku 5.12. Detailnější funkce tlačítek bude popsána v kapitole 6.
Obrázek 5.12: Rozmístění a funkce tlačítek.
5.8.2
Dálkový ovladač
K ovládání pomocí dálkového ovladače je využit vestavěný IR senzor na vývojovém kitu. Jako dálkový ovladač je použit univerzální ovladač philips PH301S universal replacement remote. Na obrázku je znázorněno ovládání pomocí (obrázek 5.13). Tento ovladač by mohl být nahrazen jakýmkoli infračerveným ovladačem, který umožňuje připevnění na volant v automobilu.
Obrázek 5.13: Rozmístění a funkce tlačítek.
44
Kapitola 6
Vývoj softwaru Celý systém on-board kamery je vytvořen pro procesor DM6446. Jak už bylo napsáno v kapitole 5.3 tento duální procesor umožňuje návrhářům použít algoritmy zpracování signálu v jádru procesoru DSP C64x+, zatímco realizaci jiných úkolů, jako jsou správa periferií nebo obsluha uživatelského rozhraní, přesunout do jádra mikrokontroléru ARM9. Na vývojovém kitu je po startu spouštěn linux MontaVista pro verze 5, který je přímo uzpůsoben pro vyvíjení vestavěných aplikací. Více informací o linuxu MontaVista naleznete v [10]. Program je tedy vytvořen pod tímto systémem. Celý program je rozdělen do tří hlavních programů, které realizují tyto úlohy: • hlavní - zajišťuje inicializaci, nastavení celé kamery, obsluhu uživatelských příkazů, spouštění dalších dvou částí • kódování - podle zvoleného kódování komprimuje videosekvence na sd kartu • dekódování - přehrává nahrané záznamy z webkamery, případně i jiná média
6.1
Hlavní
Je spuštěn vždy po startu on-board kamery, umožňuje její nastavení, zobrazení základních informací, spuštění nahrávání a výběr souborů pro přehrávání a jejich spuštění. Po spuštění programu proběhne detekce nastavení standardu kódování pro barevné televizní vysílaní. Na televizní výstup je zobrazen obrázek 6.1. Po zobrazení obrázku je očekáváno stisknutí kteréhokoli tlačítka na ovladači 5.8 nebo na i2c rozšiřujícím modulu 5.7.1. Po stisku tlačítka je zobrazeno hlavní menu (obrázek 6.2). Celé menu umožňuje výběr čtyř možností: • Kamera - spustí nahrávání z kamery (viz. kapitola 6.2 • Přehrávání - přepne do výběru souboru pro přehrávání • Nastavení - nastavení on-board kamery • Informace - vypisuje základní informace o on-board kameře Výběr jednotlivých položek je možný pomocí tlačítek DOPRAVA“ a DOLEVA“. Po” ” tvrzení možnosti poté pomocí tlačítka NASTAV“. ” 45
Obrázek 6.1: Úvodní obrázek po startu programu
Obrázek 6.2: Hlavní menu programu
6.1.1
Kamera
Spouští program kódování podle zadaných parametrů v nastavení. Spuštění programu ukazuje vývojový diagram 6.3. Proběhne zde kontrola, zda je připojena SD karta. Pokud ano, musí být na začátku záznamu více jak 200 M b volného místa. Jestliže nastane situace, že volné místo není k dispozici, je nejstarší záznam, podle času vytvoření souboru, smazán. Je-li vše v pořádku, spustí se program pro kódování videa. Více o tomto programu bude zmíněno dále v textu.
46
Obrázek 6.3: Hlavní menu programu
6.1.2
Přehrávání
Umožňuje výběr nahraných souboru pro přehrávání. Jsou zobrazeny všechny soubory uložené na SD kartě, které mají příponu: • 264 - videozáznam komprimovaný pomocí kódování H.264 • mp4 - videozáznam komprimovaný pomocí kódování MPEG-4 Dále program umožňuje přehrávání zvuku k videozáznamům pokud mají stejný název a příponu: • aac - audiozáznam komprimovaný pomocí kódování AAC • g71 - audiozáznam komprimovaný pomocí kódování G.711 Jako bonus je umožněno přehrávání pouze audio záznamů. Pro tyto účely je uložen videozáznam block bar.mp4, který je zobrazen při přehrávání pouze audio záznamů. Jak můžeme vidět na obrázku 6.4 u každého videozáznamu je zobrazeno jeho kódování a velikost. Pokud daný video záznam má i audio záznam, je také zobrazeno jeho kódování a velikost. Výběr dalšího souboru je možný pomocí tlačítek další“ a předchozí“ viz. 5.8. ” ” Po výběru souboru pomocí tlačítka nastav“ dojde k přehrávání souboru pomocí programu ” pro dekódování (6.1.2).
6.1.3
Nastavení
Zde je možné nastavit několik základních prvků programu. Jednotlivé položky jsou: • Čas - aktuální čas • Komprese - volba komprese videozáznamu mezi H.264 a MPEG-4 47
Obrázek 6.4: Výběr položek v přehrávacím menu • Smyčka - čas, po který bude ukládán záznam do samostatného souboru. Minimální čas je 120 vteřin, maximální pak 500 vteřin. • Přetížení - přetížení, při kterém je zablokován videozáznam. Minimální velikost je 2.0 g - 6.0 g. • Audio komprese - volba mezi G.711 a AAC Volbu mezi položkami provedeme pomocí tlačítek další“ a předchozí“ viz. 5.8. Změnu ” ” provádíme pomocí tlačítek nahoru“ a dolu“. ” ”
6.1.4
Informace
Zobrazuje základní informace o palubní kameře. Zobrazuje informace: • aktuální čas • SD karta, pokud je vložena, tak její velikost a množství volného místa • aktuální přetížení
6.2
Kódování
Tento program umožňuje nahrávání videosnímků na sd kartu. Další vlastnost programu je kódování videa pomocí dvou algoritmů a to MPEG-4 a H.264. Zároveň dokáže i kódování zvuku pomocí algoritmu G.711. Tyto algoritmy implementují tzv. XDM rozhraní. Rozhraní XDM je popsáno v literatůře. [6], [26]. Skládají se ze dvou algoritmů: • server - vykonává vlastní kódování videa • jádro - řídí serverovou část
48
Oba algoritmy jsou zpracovávány v jádru DaVinci DSP. Výsledný zakódovaný tok dat je zapsán do souboru pomocí systémových prostředků linuxu. Datové toky pro video a audio jsou zakódovány zvlášť do samostatných souborů. Jak již bylo naznačeno v kapitole 5.3, procesor se skládá ze dvou výkoných jader ARM a DSP. Jádro ARM provádí tyto základní úlohy: • spouští celý program • ovládá všechny periferie pomocí linuxových ovladačů zařízení • zobrazuje informace o kódování na OSD (On Screen Display) • dokáže detekovat vstupy z dálkového ovladače a tlačítek připojených na modulu akcelerometru • získává data z akcelerometru a detekuje případné překročení maximálního přetížení Ovšem nejdůležitější část kódování běží na DSP jádře. Tato část běží v reálném čase a provádí algoritmus zpracování obrazu a zvuku. Samotná aplikace se skládá z šesti samostatných vláken. Jednotlivá vlákna: • hlavní vlákno (main.c) později přejde do kontrolního vlákna • kontrolní vlákno (ctrl.c) • obrazové vlákno (video.c) • zobrazovací vlákno (display.c) • zvukové vlákno (speech.c) • zachytávací vlákno(capture.c) • zapisovací vlákno (writer.c) Všechny vlákna kromě hlavního a řídícího jsou nakonfigurovány jako preemptivní (je možnost je kdykoliv přerušit bez jejich vědomí) a je jim nastavena jejich priorita. Obrazové a zobrazovací mají nejvyšší prioritu, následuje zapisovací a zvukové. Nejnižší prioritu mají kontrolní a zachytávací vlákno. Všechny vlákna a jejich činnost je zobrazena na obrázku 6.5.
6.2.1
Hlavní vlákno
Spouští se ihned po startu programu. Inicializace vlákna v krocích: • rozpoznání video standardu → ioctl(FBIO GETSTD) • zpracovaní argumentů z příkazové řádky → parseArgs() • inicializace jádra kodeku → CERuntime init(); • spuštění protokolu trasování jádra kodeku → TraceUtil start(); • otevření objektů pro pozastavení vláken → Pause open(); 49
Obrázek 6.5: Činnost jednotlivých vláken při dekódování • vytvoření zobrazovacího vlákna → Rendezvous open(); • vytvoření zachytávacího vlákna → pthread create(); • vytvoření zapisovacího vlákna → pthread create(); • vytvoření obrazového vlákna → pthread create(); • vytvoření zvukového vlákna → pthread create(); • přechod do kontrolního vlákna → ctrlThrFxn(); Volba video standartu je pomocí přepínače na vývojovém kitu viz. 5.3. Parametry programu jsou uvedeny v souboru Readme, který je spolu s celým programem přiložen na CD disku.
6.2.2
Kontrolní vlákno
V tomto vláknu probíhá zobrazování informací na OSD, zpracování uživatelských vstupů, obsluha akcelerometru. Pro obsluhu dálkového ovladače se používá knihovny msp430lib, pomocí které se dotazuje procesor MSP430, který řídí IT rozhraní na vývojovém kitu. Dále zajišťuje obsluhu příkazové řádky a tlačítek na modulu akcelerometru. Pokud nastala nějaká uživatelská událost, je zpracována. Vlákno aktualizuje text na OSD. Na platformě DaVinci se na OSD okno přistupuje přes tyto zařízení: • /dev/fb/0 - pozadí videa • /dev/fb/2 - průhlednost OSD (každý pixel je reprezentován 4-mi bity → 0 průhledné, 7 neprůhledné). 50
• /dev/fb/3 - popředí videa K ovládání OSD se využívá knihovna simplewidget, která umožňuje ovládání textu i obrázků na displej. Zobrazuje informace o aktuálním čase, času od začátku nahrávání a přetížení ve třech osách.
6.2.3
Zvukové vlákno
Zvukové vlákno využívá vzorky se zařízení AIC33, které je umístěného na vývojovém kitu 5.3. Inicializace vlákna v krocích: • otevřít soubor pro zápis zvuku → fopen(); • inicializace AIC33 → initSoundDevice() | přistupujeme přes /dev/mixer po nakonfigurování dostáváme 2 kanály s 16-ti bitovými vzorky s vzorkovací frekvencí 8 kHz • otevření jádra kodeku → Engine open(); • vytvoří kodér zvuku → SPHENC create(); • přidělí souvislou paměť pro kódování vzorků → Memory contigAlloc(); • přidělí souvislou paměť pro vzorky jednokanálového zvuku → Memory contigAlloc(); • alokace paměti pro čtení dvoukanálových vzorků zvuku → malloc(); Nyní je v nekonečné smyčce zpracováván zvuk podle kroků: • Přečte si dvoukanálový vzorek zvuku z AIC33 ovladače zařízení → read(); • Převede dvoukanálové vzorky na jednokanálové → stereoToMono(); • Zakóduje tyto vzorky → SPHENC process(); • Uloží do souboru → fwrite ();
6.2.4
Obrazové vlákno
Vlákno obdrží vyrovnávací paměť od zachytávacího vlákna a poté ji kóduje podle daného algoritmu. Po zakódování vzorků posílá do zapisovacího vlákna. Pomocí takto rozdělených operací maximalizujeme využití ze součinnosti ARM a DSP jádra. • otevření jádra kodeku → Engine open(); • vytvoří kodér videa → VIDENC create(); • přidělí souvislou paměť pro předávání vzorku s zapisovacím vláknem → Memory contigAlloc(); FifoUtil put(); • přidělí souvislou paměť pro předávání vzorku s zachytávacím vláknem → Memory contigAlloc(); FifoUtil put(); • uloží do souboru → fwrite();
51
6.2.5
Zobrazovací vlákno
Aby bylo možné sledovat na displeji nahrávaná data, je nutné tyto data získat ještě před samotným zakódováním. Zachycené snímky proto součastně z kódováním kopírujeme do vyrovnávací paměti odkud jsou zobrazeny na displej. Na startu vlákna je potřeba displej inicializovat promocí funkce initDisplayDevice();. V této funkci nastavíme rozlišení displeje (720x480), počet bitů na pixel (16) a nastavíme vyrovnávací paměti na hodnotu černé barvy.
6.2.6
Zachytávací vlákno
Získává obrazové vzorky dat ze snímacího zařízení. Dále umožňuje odstranění prokládaných artefaktů. Vlákno nejprve inicializuje snímací zařízení pomocí funkce initCaptureDevice ();. Zachytávání videa probíhá pomocí ovladače zařízení Video 4 Linux 2 (V4L2), více v literatuře [16]. Dále probíhá nastavení na vstupní signál typu PAL a připojení snímacího zařízení na kompozitní konektor na vývojovém kitu. Nakonec nastavíme výstupní vyrovnávací paměti do aplikačního uživatelského prostoru procesu pomoci mmap(); a zahájíme zachytávání snímků. Pokud vše proběhlo v pořádku, je zachycen snímek do paměti, kde je dále zpracován ostatními procesy. Nejlépe je vidět zpracování snímků z kamery na sekvenčním diagramu komunikací mezi vlákny 6.6.
Obrázek 6.6: Sekvenční diagram mezi vlákny při kódování
6.2.7
Zapisovací vlákno
Zapisovací vlákno ukládá pouze zakódované snímky z kamery. Je rozděleno do samostatného vlákna, aby bylo umožněno dosáhnout co největšího paralelismu při DSP zpracování a ukládání na souborový systém v linuxu. Nejprve je otevřen fopen(); Poté synchronizační objekt upozorní, že dokončil svoji inicializaci a pokud jsou přítomna zakódovaná data, uloží je. 52
6.3
Dekódování
Dekódovací program umožňuje přehrávání nahraných videí se zvukem nebo samostatně na vývojovém kitu. Je schopen přehrát zvukové soubory ve formátech AAC a G.711. Pro přehrávání videa podporuje formáty MPEG-2, MPEG-4 a H.264. Tyto algoritmy jsou implementovaný pomocí XDM rozhraní, které je zabaleno v kodekovém serveru, část decodeCombo.x64. Tyto algoritmy jsou zpracovány DPS jádrem. Celý program se skládá z pěti vláken • hlavní vlákno (main.c), později přejde do kontrolního vlákna • kontrolní vlákno (ctrl.c) • obrazové vlákno (video.c) • zobrazovací vlákno (display.c) • zvukové vlákno (audio.c) • g711 (speech.c) Všechny vlákna kromě hlavního a řídícího jsou nakonfigurovány jako preemptivní (je možnost je kdykoliv přerušit bez jejich vědomí) a je jim nastavena jejich priorita. Zobrazovací vlákno má nejvyšší prioritu, následuje obrazové poté společně zvukové a g711. Nejnižší prioritu potom má kontrolní vlákno. Všechny vlákna a jejich činnost je zobrazena na obrázku 6.7.
Obrázek 6.7: Činnost jednotlivých vláken při dekódování
53
6.3.1
Hlavní vlákno
Spouští se po spuštění programu. Inicializace vlákna v krocích: • rozpoznání video standardu → ioctl(FBIO GETSTD) • zpracování argumentů z příkazové řádky → parseArgs() • inicializace jádra kodeku → CERuntime init(); • spuštění protokolu trasování jádra kodeku → TraceUtil start(); • otevření objektů pro pozastavení vláken → Pause open(); • vytvoření zobrazovacího vlákna → Rendezvous open(); • vytvoření obrazového vlákna → pthread create(); • vytvoření zvukového vlákna → pthread create(); • vytvoření g711 vlákna → pthread create(); • přechod do kontrolního vlákna → ctrlThrFxn(); Volba video standartu je pomocí přepínače na vývojovém kitu viz. 5.3. Parametry programu jsou uvedeny v souboru Readme, který je spolu s celým programem přiložen na CD disku.
6.3.2
Kontrolní vlákno
V tomto vláknu probíhá zobrazovaní informaci na OSD, zpracování uživatelských vstupů, obsluha akcelerometru. Pro obsluhu dálkového ovladače se používá knihovny msp430lib, pomocí které se dotazuje procesor MSP430, který řídí IT rozhraní na vývojovém kitu. Dále zajišťuje obsluhu příkazové řádky a tlačítek na modulu akcelerometru. Pokud nastala nějaká uživatelská událost je zpracována. Vlákno aktualizuje text na OSD. Na platformě DaVinci se na OSD okno přistupuje přes tyto zařízení: • /dev/fb/0 - pozadí videa • /dev/fb/2 - průhlednost OSD (každý pixel je reprezentován 4-mi bity → 0 průhledné, 7 neprůhledné). • /dev/fb/3 - popředí videa K ovládání OSD se využívá knihovna simplewidget, která umožňuje zobrazování textu i obrázků na displej. Zobrazuje informace o aktuálním čase a času od začátku nahrávání.
6.3.3
Zvukové a g711 vlákno
Zvukové vlákno čte kódovaná data řeči ze souboru, dekóduje je pomocí dekodéru řeči a zapisuje výsledné vzorky do AIC33 ovladače zařízení. Inicializace vlákna: • otevřít soubor pro čtení zvuku → fopen();
54
• inicializace AIC33 → initSoundDevice() | přistupujeme přes /dev/mixer po nakonfigurování dostáváme 2 kanály s 16-ti bitovými vzorky s vzorkovací frekvencí 8 kHz. • otevření jádra kodeku → Engine open(); • vytvoří kodér zvuku → pro audio vlákno AUDDEC create(); pro g711 vlákno SPHDEC create(); • přidělí souvislou paměť pro kódovaná zvuková data → Memory contigAlloc (); • přidělí souvislou paměť pro dekódovaná zvuková data → Memory contigAlloc (); • alokace paměti pro čtení dvoukanálových vzorků zvuku → malloc (); Nyní je v nekonečné smyčce zpracováván zvuk podle kroků: • Získá vzorek ze zvuku → loaderPrime (); • Dekóduje tento vzorek → pro audio vlákno AUDDEC process(); pro g711 vlákno AUDDEC process(); • Zapíše dekódovaný vzorek do ovladače zařízení AIC33 → write(); • Získá nový vzorek → loaderGetFrame ();
6.3.4
Obrazové vlákno
Obrazové vlákno čte kódovaný videosnímek ze souboru, dekóduje ho pomocí dekódovacích algoritmů. S cílem zajistit spolehlivý výkon a možnosti ztráty snímků je celý systém zobrazování videa rozdělen do dvou vláken. Samotné zobrazení na displej je realizováno pomocí zobrazovacího vlákna. Limit pro standart PAL na zobrazení jednoho snímku je 40 ms, pokud je tento čas překročen, je zpracovávaný snímek zahozen a pokračuje se v dekódování dalším snímkem. Zde jsou uvedeny základní kroky při inicializaci: • otevření souboru → open(); • otevření jádra kodeku → Engine open(); • vytvoří kodér videa → VIDDEC create(); • přidělí souvislou paměť pro čtení vzorku videa → Memory contigAlloc(); FifoUtil put(); • přidělí souvislou paměť pro předávání vzorku s zobrazovacím vláknem → Memory contigAlloc(); FifoUtil put();
55
6.3.5
Zobrazovací vlákno
Aby bylo možné sledovat na displeji nahrávaná data, je nutné tyto data získat ještě před samotným zakódováním. Zachycené snímky proto součastně s kódováním kopírujeme do vyrovnávací paměti, odkud jsou zobrazeny na displej. Na startu vlákna je potřeba displej inicializovat promocí funkce initDisplayDevice();. V této funkci nastavíme rozlišení displeje (720x480), počet bitů na pixel (16) a nastavíme vyrovnávací paměti na hodnotu černé barvy. Na obrázku 6.8 vidíme sekvenční diagram komunikace vláken.
Obrázek 6.8: Sekvenční diagram mezi vlákny při dekódování
56
Kapitola 7
Závěr Cílem diplomové práce byl návrh vestavěného systému, včetně teoretických informací pro návrh a jejich konkrétní řešení. Dosažené výsledky Na základě návrhu byl sestaven funkční vzorek on-board kamery do automobilu pro záznam obrazových a zvukových stop. Jako rozšíření celého systému byl přidán displej, na kterém je možnost sledování právě nahrávaných dat, případně jejich pozdější přehrávání. Hlavní parametry on-board kamery shrnuje následující přehled: • vývojový kit DVEVM6446 od firmy Texas Instrument simulující procesor • schopnost záznamu na SD karty • možnost výběru komprese videa mezi H.264 a MPEG-4 • nahrávání zvukových záznamů z automobilu • vestavěný senzor pro měření aktuálního přetížení v automobilu • možnost připojení dalších senzorů pomocí sběrnice I2C • zobrazování aktuálně nahrávaných záznamů na displej • přehrávání dříve pořízených záznamů, případně videí ve formátu MPEG-2 a zvuků ve formátu AAC Softwarová část systému Možné vylepšení Vylepšení on-board kamery se dá realizovat ve dvou základních směrech. První z nich je přidáváním hardwarových prvků. Jako příklady uvedu: • nové snímače fyzikálních veličin (gyroskop atd.) • přidáním GPS navigačního systému, který by umožňoval zaznamenávat trasu automobilu, případně rychlost automobilu
57
• komunikaci s řídící jednotkou automobilu, pro získání údajů o chování automobilu (snímání pedálů atd.) Jako druhý směr vylepšení bych uvedl zdokonalování softwarové části. Jako zajímavé, a v dnešní době velmi vyvíjené, se mi jeví detekování nárazů s cizími objekty. Téma on-board kamer je stále aktuální a umožňuje nové výzvy pro budoucí řešitele. Shrnutí Výsledkem této práce měl být návrh a realizace on-board kamery se záznamem jízdy na SD. Úvodní kapitoly nám poskytly teoretické znalosti pro realizaci návrhu. V dalších kapitolách byl vytvořen návrh a posléze vybrány vhodné komponenty po jeho řešení. Podle návrhu byl zkonstruován funkční vzorek hardwaru, na němž byla ověřena jeho funkce s některými rozšířeními. Výsledné zařízení je stále ve formě prototypu a pro přímé nasazení do automobilu by bylo třeba celý systém zmenšit a upravit. Nicméně to nebylo účelem této diplomové práce. Fotografie jednotlicých částí on-board kamery jsou uvedeny v příloze C.
58
Literatura [1] Analog Devices: ADXL345. online. URL http://www.sparkfun.com/datasheets/Sensors/Accelerometer/ADXL345.pdf [2] Čapek, V.; Fabián, P.: Komprimace dat, principy a praxe. Praha: Computer Press, 2000, iSBN 80-7226-231-9. [3] Beach, A.: Real World Video Compression. Peachpit Press, 12. duben 2008, iSBN 978-0321514691. [4] Brewer, J.; Gill, M.: Nonvolatile Memory Technologies with Emphasis on Flash. Wiley-IEEE Press, 2008, iSBN 978-0471770022. [5] Courtney, P.: How It Works: The Charged-Coupled Device, or CCD. online. URL http://www.teledynedalsa.com/corp/markets/CCD_vs_CMOS.aspx [6] Hallinan, C.: Embedded Linux Primer: A Practical Real-World Approach. Prentice Hall, 28. září 2006, iSBN 978-0131679849. [7] Hlaváč, V.; Sedláček, M.: Zpracování signálů a obrazů. Praha: Vydavatelství ČVUT, 2002, iSBN 80-01-02114-9. [8] Jedlička, P.: Přehled obvodů řady CMOS 4000 - 1. díl - řada 4000 až 4099. BEN technická literatura, 1994-2005, iSBN 80-7300-167-5. [9] Le Gall, D.: MPEG: A Video compression standard for multimedia applications. New York, USA: ACM, 1991, iSSN 0001-0782. [10] MontaVista: MontaVista Linux Professional Edition 5.0. online. URL http://www.mvista.com/download/MontaVista-Linux-Pro-5-datasheet.pdf [11] Šonka, M.; Hlaváč, V.; Boyle, R.: Image Processing, Analysis and Machine Vision, 3rd edition. Toronto, Thomson Learning, 2007, iSBN 0-495-08252-X. [12] Parker, S.: Lidské tělo - Ilustrovaný průvodce jeho strukturou, fungováním a poruchami. Knižní klub, 2008, iSBN 978-80-242-2211-0. [13] Paturi, F.; Telgársky, J.: Kronika techniky. Fortuna Print, 1993, iSBN 80-71-53065-4. [14] Philips Semiconductors: THE I2C-BUS SPECIFICATION. [online], 2000-01-01 [cit. 2010-03-03]. URL http://www.nxp.com/acrobat_download2/literature/9398/39340011.pdf 59
[15] Salomon, D.: Data Compression: The Complete Reference, 4.vydání. Springer, 2007, iSBN 978-184-6286-032. [16] Schimek, M.; Dirks, B.; Verkuil, H.; aj.: Video for Linux Two API Specification. [online], 1999-2008. URL http://v4l2spec.bytesex.org/spec-single/v4l2.html [17] Teledyne dalsa: CCD vs. CMOS. online. URL http://www.teledynedalsa.com/corp/markets/CCD_vs_CMOS.aspx [18] Tesařík, J.; Sobotka, P.: Informace o nehodovosti na pozemních komunikacích České republiky za rok 2011. online. URL http://www.policie.cz/soubor/2011-12-informace-pdf.aspx [19] Texas instruments: DaVinci Digital Media System-on-Chip. online. URL http://www.ti.com/product/tms320dm6446 [20] Texas instruments: TMS320DM6446 DVEVM v2.0 Getting Started Guide. online. URL http://www.ti.com/lit/ug/sprue66e/sprue66e.pdf [21] Texas instruments: TVP5146 video decoder. online. URL http://www.ti.com/lit/ds/sles084c/sles084c.pdf [22] Tůma, T.: Počítačová grafika a design. COMPUTER PRESS, 2007, iSBN 80-251-1784-7. [23] Vít, V.: Televizní technika - barevné přenosové soustavy. BEN - technická literatura, 1997, iSBN 80-86056-04-X. [24] Walkinson, J.: The MPEG Handbook - MPEG-1, MPEG-2, MPEG-4. UK, Rochester, Kent, 2001, iSBN 978-0240805788. [25] Weise, M.: How Video Works, Second Edition: From Analog to High Definition. Focal Press, 13. duben 2007, iSBN 978-0240809335. [26] Yao, C.; Li, Q.: Embedded Linux Primer: A Practical Real-World Approach. CMP, Červenec 2003, iSBN 978-1578201242.
60
Seznam použitých zkratek α (◦ ) C (F ) f (Hz) I (A) p (P a) R (Ω) t (s) T (K,◦ C) U (V )
azimut, stupeň kapacita, Farad frekvence, Herz proud, Ampér tlak, Pascal odpor, Ohm čas, sekunda teplota, Kelvin, stupěn Celsia napetí, Volt
ADC
Analog to Digital Převodník spojitého signálu na diskrétní Arithmetic Logic Unit Aritmeticko logická jednotka Advanced Virtual RISC Označení pro rodinu 8-mi bitových mikročipů typu RISC Digital to Analog Převodník diskrétního signalu na spojitý Direct Memory Access Přímí přístup do paměti Dynamic Random Access Memory Dynamická pamět typu RAM Electrically Erasable Programmable Read-Only Memory Elektricky mazatelná paměť typu ROM Erasable Programmable Read-Only Memory Uv zářením mazatelná paměť typu ROM Flash Elektricky programovatelná paměť typu RAM. Global Positioning System Polohový družicový systém Inter-Integrated Circuit Multi-masterová sériová sběrnice In System Programming Programování uvnitř obvodu Liquid crystal display Displej z tekutých krystalů
ALU AVR DAC DMA DRAM EEPROM EPROM FLASH GPS I2C (IIC) ISP LCD
61
RAM RISC ROM SCA SI SDA SRAM UART USART USB
Random Access Memory Pamět u které lze číst i zapisovat Reduced Instruction Set Computer Redukovaná instrukční sada Read Only Memory Pamět ze které jde pouze číst Serial Clock Vodič sběrnice I2C po kterém se posílají data Systeme International d’Unités Mezinárodně domluvená soustava jednotek Serial Data Vodič sběrnice I2C po kterém se vysílá hodinový signál Static Random Access Memory Statická pamět typu RAM Universal Asynchronous Receiver Transmitter Univerzální asynchroní seriová linka Universal Synchronous Asynchronous Receiver Transmitter Univerzální synchroní nebo asynchroní seriová linka Universal Serial Bus Univerzální sériová sběrnice
CCD CMOS MASTER SLAVE BUFFER RECEIVER TRANSMITTER R/W D/I Logická úroveň
Charge Coupled Devices Druh snímače intenzity světla Complementary metal-oxide-semiconductor Druh snímače intenzity světla Zahajuje a ukončuje komunikaci Zařízení odpovídá na dotazy masteru Vyrovnávací paměť mezi částmi s rozdílnou rychlostí zpracování dat Část systému, která příjmá data Část systému, která vysílá data Volba mezi čtením nebo zápisem Volby mezi daty nebo instrukcí Stav logické 0“ odpovídá nižšímu napětí na výstupu logického ” členu nežli stav logické 1“. ”
62
Seznam příloh A Podklady pro výrobu kamerového modulu B Podklady pro výrobu modulu akcelerometru C Fotografie výsledného zařízení D Ukázky programu E CD disk
63
Příloha A
Podklady pro výrobu kamerového modulu Senzor OV7949 IC1 IC2 C1, C2 C3, C11 C4, C6, C8, C9, C12, C13 C5, C7 C10, C14, C15, C16, C17, C18 D1, D2, D3, D4 JP1, JP2 MIC1 Q1 R1, R2, R15, R5, R6, R7 R3 R4 R8 R9 R10, R11, R12, R13 R14 SV1, SV3 T1
33 pF 10 nF 100 nF
CMOS senzor Stabilizátor napětí TS1117 Stabilizátor napětí TS1117 Keramický kondenzátor Keramický kondenzátor Keramický kondenzátor
OV7949 SOT223 SOT223 SMD0805 SMD0805 SMD0805
1 µF 10 uF
Keramický kondenzátor Elektrolytický kondenzátor
SMD0805 C
IR dioda
3 mm
17, 73448 M Hz 10 kΩ
Konektorový kolík jednořadý přímí Elektretový mikrofon Krystal Rezistor
5 mm 5 mm R0805
1 MΩ 330 Ω 10 Ω 100 kΩ 100 Ω
Rezistor Rezistor Rezistor Rezistor Rezistor
R0805 R0805 R0805 R0805 R0805
12 kΩ 3 piny
Rezistor Konektorový kolík jednořadý přímí NPN tranzistor
R0805 2, 54 mm SOT23-EBC
2 piny
Tabulka A.1: Seznam součástek
64
X1 X2 X3
Konektor pro stereo audio Jack 3,5 mm - male Konektor pro cinch - male Konektor se zámkem pro napájeni
2, 54 mm
Tabulka A.2: Seznam součástek
Obrázek A.1: Schéma zapojení kamerového modulu 65
Obrázek A.2: Plošný spoj - vrchní strana
Obrázek A.3: Plošný spoj - spodní strana
Obrázek A.4: Plošný spoj - Osazení součástek vrchní strana
66
Obrázek A.5: Plošný spoj - Osazení součástek spodní strana
67
Příloha B
Podklady pro výrobu modulu akcelerometru IC1 U3 U4 C5 C6 C7 C8, C9, C11 C10 C12 D1, D2, D3, D4, DP DP X1 JP1, JP2 JP3, JP4 R4, R7 R5, R6 R8, R9, R10 R11, R12, R13, R14 S1, S2, S3, S4 X1
PCF8574T MMA8452Q ITG-3200 0, 1 µF 10 µF 4, 7 µF 100 nF 10 nF 2, 2 nF
2 piny 650 Ω 4, 7 kΩ 650 Ω 2, 2 kΩ
I2C expandér PCF8574T 3-osý gyroskop MMA8452Q 3-osý akcelerometr ITG-3200 SMD keramický kondenzátor Elektrolytický kondenzátor SMD keramický kondenzátor SMD keramický kondenzátor SMD keramický kondenzátor SMD keramický kondenzátor LED Dioda zelená 2 mA LED Dioda červená 2 mA Konektor se zámkem pro napájeni Konektorový kolík jednořadý přímí
SO16W QFN16 QFN24 0805 C 0805 0805 0805 0805 0805 0805 2, 54 mm
Rezistor Rezistor Rezistor Rezistor SMD Tlačitko 30 pinový konektor samtec TFM-115-01-S-D-WT
0805 0805 0805 0805 DTSM-6
Tabulka B.1: Seznam součástek
68
Obrázek B.1: Schéma zapojení modulu akcelerometru
69
Obrázek B.2: Plošný spoj - vrchní strana
Obrázek B.3: Plošný spoj - spodní strana
Obrázek B.4: Plošný spoj - Osazení součástek vrchní strana
Obrázek B.5: Plošný spoj - Osazení součástek spodní strana 70
Příloha C
Fotografie výsledné on-board kamery
Obrázek C.1: Obrázek vývojového kitu DM6446
71
Obrázek C.2: Obrázek kamerového modulu
Obrázek C.3: Obrázek modulu akcelerometru
72
Příloha D
Ukázka z jízdy
Obrázek D.1: Ukázka obrázku zachyceného při jízdě.
73
Příloha E
CD disk CD disk obsahuje: • elektronickou verzi písemné zprávy • celý projekt se zdrojovými kódy • jádro linuxu pro vývojový kit • souborový systém pro MontaVista linux v 5.0 • podklady pro výrobu desek plošných spojů • konfigurace vývojového kitu DVEVM6446 • soubor Readme, kde je zobrazena struktura CD disku
74