ýeské vysoké uþení technické v Praze Fakulta elektrotechnická
Diplomová práce
Urþování polohy pomocí Ĝádkových obrazĤ Position measurement based on line images
Autor práce: Bc. Martin Zoubek Vedoucí práce: Doc. Ing. Jan Fischer, CSc.
Program: Kybernetika a robotika Obor: Senzory a pĜístrojová technika
KvČten 2011
ýestné prohlášení autora práce Prohlašuji, že jsem pĜedloženou práci vypracoval samostatnČ a že jsem uvedl veškeré použité informaþní zdroje v souladu s Metodickým pokynem o dodržování etických principĤ pĜi pĜípravČ vysokoškolských závČreþných prací. Tato práce vznikla v laboratoĜi videometrie, katedry mČĜení ýVUT - FEL v Praze pod vedením doc. Ing. Jana Fischera, CSc. Navazuje též na výzkum v rámci MSM6840770015 - "Výzkum metod a systémĤ pro mČĜení fyzikálních veliþin a zpracování namČĜených dat", jehož nČkteré poznatky a výstupy v oblasti optoelektronických senzorĤ také využívá.
V Praze dne 13. 5. 2011
.................... Martin Zoubek
Anotace Tato práce se zabývá vývojem Ĝádkových a mnohoĜádkových kamer. Vyvinutá kamera je postavena na 2D plošném obrazovém senzoru se specifickou konfigurací. Cílem práce je získat nový typ kamery, který bude kompromisem mezi 1D Ĝádkovými a 2D plošnými kamerami. Výhody nového typu kamery jsou následující: a) vysoká vzorkovací rychlost a ménČ výkonný hardware v porovnání s plošnými kamerami, b) široké obrazové pole a jednoduchá detekce mČĜeného objektu ve srovnání Ĝádkovými kamerami. Kameru je možné provozovat ve dvou režimech - MČĜící USB kamera a Smart kamera. MČĜící USB kamera je urþena ke spolupráci s poþítaþem typu IBM PC. Úkolem poþítaþe je zpracování videosignálu kamery a vizualizace výsledkĤ mČĜení pomocí speciálního softwaru. Smart kamera je urþena ke spolupráci s libovolnou Ĝídící jednotkou pro zaþlenČní do libovolného regulaþního systému. Zpracování videosignálu a reprezentace objektĤ v obraze je zcela v režii Smart kamery. Smart kameru lze také využívat jako samostatný pĜístroj pro mČĜení nebo jednoduché Ĝízení. To je umožnČno zejména díky implementaci mČĜících funkcí a vestavČnému uživatelskému rozhraní.
Annotation This thesis describes development of lines and multilines cameras. Developed camera is based on 2D areal image sensor with specific configuration. Work’s target is obtainment a new type of camera, which will be compromise between 1D lines a 2D areal cameras. Advantages of the new type camera is following: a) high sampling rate and less powerfull hardware in comparison with areal cameras, b) wide image field and simple measured object detection in comparsion with lines cameras. There are two camera function mode – Measuring USB camera and Smart camera. The Measuring USB camera is destined for cooperation with IBM PC type computer. Computer’s task is camera video processing and measurement results visualization by means of special software. The Smart camera is destined for cooperation with any control unit for insertion to any feedback system. Video processing and objects representation is in Smart camera direction completely. The Smart camera enables usage as standalone device for measurement and simple controls. It’s allowed due to measurement function implementation and embedded user interface.
-2-
OBSAH 1
Úvod
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Rozbor problematiky
3
ěádková kamera LineCam
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1 ěídící deska kamery LineCam 3.2 Software kamery LineCam 4
4.2
4.3
. . . . . . . . . . . . . . . . . . . . . .
15
. . . . . . . . . . . . . . . . . . . .
17
4.1.1 Hardware
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.1.2 Firmware
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.1.3 Software
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Vývoj kamery ZCAM (1. verze)
Vývoj kamery ZCAM (2. verze)
. . . . . . . . . . . . . . . . . . . .
21
4.2.1 Hardware
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.2.2 Firmware
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.2.3 Software
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Vývoj kamery ZCAM (3. verze)
. . . . . . . . . . . . . . . . . . . .
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 28 30
Vývoj kamery ZCAM (4. verze)
. . . . . . . . . . . . . . . . . . . .
32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32 33 34
Vývoj kamery ZCAM (finální verze) 4.5.1 Hardware 4.5.2 Firmware 4.5.3 Software
5
13
17
4.4.1 Hardware 4.4.2 Firmware 4.4.3 Software
4.5
13
. . . .
4.3.1 Hardware 4.3.2 Firmware 4.3.3 Software
4.4
8
. . . . . . . . . . . . . . . . . . . .
PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM 4.1
6
. . . . . . . . . . . . . . . . . .
37
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37 38 39
Hardware kamery ZCAM
. . . . . . . . . . . . . . . . . . . . . . . .
41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
5.1
ěídící deska
5.2
Senzorová deska
5.3
MČĜení na senzorové desce
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
. . . . . . . . . . . . . . . . . . . . . . .
45
5.3.1 PĜíprava na mČĜení . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Signály generované senzorem . . . . . . . . . . . . . . . . . . . . 5.3.3 Reakce senzoru na osvČtlení . . . . . . . . . . . . . . . . . . . . .
45 46 47
-3-
5.4
ýasování senzoru
5.5
Modul kamery
5.6
Uživatelské rozhranní kamery Full ZCAM
5.7 6
. . . . . . . . . . . . . . . . . . . . . . . . . . .
48
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
. . . . . . . . . . . . . .
50
5.6.1 Hlavní stránka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6.2 Konfiguraþní stránky . . . . . . . . . . . . . . . . . . . . . . . . .
51 51
Demonstrace kamery ZCAM
52
. . . . . . . . . . . . . . . . . . . . . . .
Kamera ZCAM jako mČĜící USB kamera 6.1
6.2
. . . . . . . . . . . . . . . .
53
. . . . . . . . . . . . . . . . . . .
53
6.1.1 Stránka 2D Video . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Stránka 1D Video . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.3 Stránka Camera Setup . . . . . . . . . . . . . . . . . . . . . . . .
54 55 57
Demonstrace mČĜení s USB kamerou ZCAM
. . . . . . . . . . . .
58
. . . . . . . . . . . . . . . . . . . .
59
. . . . . . . . . . . . . . . . . . .
61
. . . . . . . . . . . . . . . . . . . . . . . . . . .
62
. . . . . . . . . . . . . . . . . . . . . . . . .
62
Popis programu ZCAM Interface
6.2.1 Reprezentace výsledkĤ mČĜení
7
Kamera ZCAM jako Smart kamera 7.1
Definice objektu
7.2
Definice hran objektu
7.3
Hledání hran a objektĤ v obraze
7.4
Omezení pro výskyt objektĤ v obrazovém poli
7.5
Standardní datový výstup smart kamery Vlastnosti smart kamery 7.6.1 7.6.2 7.6.3 7.6.4 7.6.5
8
63
. . . . . . . . . . . . . . .
66
. . . . . . . . . . . . . . . . . . . . . .
67
. . . . . . . . . . . . . . . . . . . . . . .
68
9
Algoritmus automatické doby závČrky Rychlost mČĜení . . . . . . . . . . Mód obrazového CMOS senzoru . Analýza namČĜených ĜádkĤ . . . . Nastavení objektivu kamery . . . .
. . . . .
68 69 69 71 71
. . . . . . .
72
. . . . . . . . . . . . . . . . . . .
74
. . . .
. . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
PracovištČ pro vývoj a testování mČĜících metod (PVTM) 8.1
63
. . . . . . . . . . . .
7.5.1 Standardní datový paket
7.6
. . . . . . . . . . . . . . . . . . . .
Centrální Ĝídící jednotka PVTM
Demonstrace regulaþního systému s PVTM
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . . . . . . . . . . . .
75
9.1
Popis regulaþního systému
. . . . . . . . . . . . . . . . . . . . . .
76
9.2
Konfigurace smart kamery
. . . . . . . . . . . . . . . . . . . . . .
76
9.3
Funkce Ĝídící jednotky
. . . . . . . . . . . . . . . . . . . . . . . .
77
9.3.1 9.3.2 9.3.3 9.3.4
Interakce uživatele a regulaþního systému . . . . Zpracování dat kamery . . . . . . . . . . . . . . Transformace jezdce pojezdu do roviny LED . . . ěízení pojezdu . . . . . . . . . . . . . . . . . . -4-
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
77 77 78 79
9.3.5 Display Ĝídící jednotky
9.4
. . . . . . . . . . . . . . . . . . . . . . .
Diagram þinností regulaþního systému
80
. . . . . . . . . . . . . . .
82
10 Autonomní funkce Smart kamery
. . . . . . . . . . . . . . . . . . . .
83
10.1 Definice autonomních funkcí
. . . . . . . . . . . . . . . . . . . .
83
10.2 Standardní autonomní výstup smart kamery
. . . . . . . . . . . . .
83
. . . . . . . . . . . .
85
. . . . . . . . . . . . . . . . . .
85
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
10.3 Software pro konfiguraci autonomních funkcí 10.4 Demonstrace autonomních funkcí 11 3D MČĜení
11.1 Kamera se standardním objektivem
. . . . . . . . . . . . . . . . .
86
. . . . . . . . . . . . . . . .
88
. . . . . . . . . . . . . .
89
. . . . . . . . . . . . . . . . . . . . . . . . .
89
11.2 Kamera s telecentrickým objektivem 11.3 Porovnání mČĜení s obČma typy objektivĤ 11.4 Demonstrace mČĜení
11.4.1 Vyhodnocení mČĜení
. . . . . . . . . . . . . . . . . . . . . . . .
12 Univerzální videometrický systém 12.1 Programové vybavení obecné kamery
91
. . . . . . . . . . . . . . . . . .
92
. . . . . . . . . . . . . . . . .
93
12.2 Ovladaþ pĜístroje kamery LineCAM a ZCAM
. . . . . . . . . . . .
94
. . . . . . . . . . . . . .
95
12.3.1 Unmanaged-code prostĜedí Borland Builder C++ . . . . . . . . . 12.3.2 Managed-code prostĜedí Microsoft Visual Studio C# . . . . . . .
96 97
12.3 Jak napsat dvojúrovĖový ovladaþ pĜístroje
13 Parametry kamery ZCAM 14 ZávČr
. . . . . . . . . . . . . . . . . . . . . . . .
99
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
15 Zdroje a literatura 16 Obsah CD 17 Seznam pĜíloh
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
-5-
1
Úvod V souþasné dobČ existuje na svČtČ velké množství typĤ kamer, které se využívají pro
mČĜící úþely. Tyto kamery lze v zásadČ rozdČlit do dvou skupin. V první skupinČ jsou kamery, které ve své podstatČ splĖují pĤvodní význam svého názvu – jejich úkolem je transformace obrazu, který je na obrazový senzor promítán objektivem kamery, na elektrický signál. Tento signál je dnes v drtivé vČtšinČ pĜípadĤ digitalizován. V pĜípadČ obrazových senzorĤ typu CMOS probíhá tato digitalizace pĜímo v samotném senzoru, pokud kamera využívá obrazového senzoru typu CCD musí se o digitalizaci postarat sama. Posledním úkolem kamery je pĜenos digitalizovaného obrazu do pamČti, aĢ už se jedná o pamČĢ pĜímo souþástí kamery nebo pamČĢ nadĜazeného systému, ke kterému je kamera pĜipojena (napĜ. poþítaþ typu IBM PC). MČĜící funkce a následné nakládání s výsledky mČĜení je již zcela v režii nadĜazeného systému.
Ve druhé skupinČ jsou kamery, které pĜebírají mČĜící funkce nadĜazeného systému. Jejich výstupem již není digitalizovaný obraz, ale data pĜímo reprezentující výsledky mČĜení nebo signály, které jsou generovány v závislosti na výsledcích mČĜení. Tyto kamery bývají nazývány rĤznČ – „Smart“ kamery, „Vision“ senzory, „Image“ senzory, atd – pĜiþemž hranice mezi kamerami nesoucími tyto názvy splývají. Spíše lze Ĝíci, že žádné hranice neexistují a pojmenování tČchto kamer je þistČ v libovĤli výrobce. I když slovo mČĜení není v názvech tČchto kamer implicitnČ uvedeno, jejich výstup vždy odpovídá mČĜení urþitČ vlastnosti objektĤ v obrazovém poli. ObČ skupiny kamer jsou vždy založeny buć na 1D Ĝádkových senzorech (pouze typ CCD) nebo 2D plošných (mnohoĜádkových) senzorech (typ CCD i CMOS). 1D i 2D obrazové senzory mají své výhody i nevýhody. 1D senzory jsou význaþné vysokými snímkovými rychlostmi (ĜádovČ až tisíce FPS), ale umožĖují v porovnání s 2D senzory snímat pouze velmi omezené obrazové pole. Naproti tomu 2D senzory snímají dostateþnČ velké obrazové pole, ale jejich snímková rychlost se pohybuje pouze v Ĝádech desítek FPS.
-6-
1 Úvod Hlavním úkolem této diplomové práce je vytvoĜit typ kamery, který bude kompromisem mezi kamerami založenými na 1D a 2D obrazových senzorech. Proti kamerám s 1D senzory pĜinese možnost sledovat vČtší obrazové pole, proti kamerám s 2D senzory umožní dosáhnout vyšších snímkových rychlostí. Realizovaná kamera bude plnit jak funkci standardní kamery (generování obrazových snímkĤ, pĜenos do pamČti poþítaþe s následovaný zpracováním v rámci mČĜícího softwaru) tak i funkci Smart kamery (aplikace mČĜících funkcí na obrazové snímky pĜímo samotnou kamerou vþetnČ datového a signálového výstupu).
Pro nový typ kamery bude vyvinuto programové vybavení, které umožní využití kamery jak v režimu standardní mČĜící kamery ve spojení s PC tak i v režimu smart kamery, kdy budou mČĜící funkce aplikovány na obrazové snímky pĜímo samotnou kamerou. Programové vybavení bude umožĖovat komplexní analýzu obrazových snímkĤ, která bude využívána jak pro mČĜící funkce standardní mČĜící kamery, tak i pro konfiguraci smart kamery. V rámci vývoje smart kamery bude definován standardní datový výstup, který umožní univerzálního využití kamery s libovolným nadĜazeným systémem. Dále bude vytvoĜen soubor autonomních funkcí, které umožní kameĜe zcela pĜevzít roli nadĜazeného systému. To umožní reprezentaci výsledkĤ mČĜení takovým zpĤsobem, kdy bude možné kameru využít jako samostatný mČĜící pĜístroj nebo jako regulátor dynamického systému bez úþasti nadĜazené jednotky.
DĤležitou souþástí vývoje nového zaĜízení je demonstrace jeho schopností. Bude navržena experimentální Ĝídící jednotka, která bude využívat standardního datového výstupu smart kamery pro Ĝízení regulaþního systému. Dále bude vytvoĜen rozšiĜující modul kamery, který umožní vizualizaci výsledkĤ mČĜení autonomních funkcí pĜípadnČ pĜímé Ĝízení jednoduchých akþních þlenĤ. Posledním úkolem diplomové práce je vytvoĜení knihoven, které umožní svázání kamery s libovolným programovým vybavením. To zvýší univerzálnost využití kamery jako standardní mČĜící kamery. Knihovny budou testovány v aplikaci KSD vyvinuté Ing. Vladimírem Coufalem [2] a v Universálním videometrickém systému vyvíjeném Bc. OndĜejem Kubou [3].
-7-
2
Rozbor problematiky MČĜící kamery dnes vyrábí velké množství výrobcĤ. AĢ už se jedná o kamery, jejichž
jediným úkolem je „vytvoĜení“ obrazového snímku a jeho pĜenos do PC, nebo o Smart/Vison kamery/senzory. Jak již bylo uvedeno v kapitole 1, kamery jsou vybaveny buć Ĝádkovými 1D obrazovými senzory nebo plošnými 2D senzory. Výhodou použití kamery s Ĝádkovým 1D obrazovým senzorem je vysoká snímková rychlost, nevýhodou je velmi omezené obrazové pole. Výhody/nevýhody kamery s plošným 2D obrazovým senzorem jsou pĜesnČ opaþné – široké obrazové pole/nízká snímková rychlost. Velké množství mČĜících aplikací využívá pouze jednoho Ĝádku obrazového snímaþe, v tomto pĜípadČ je využití Ĝádkové kamery opodstatnČné. Velkým limitem je však obtížné seĜízení kamery tak, aby sledovala konkrétní þást mČĜeného objektu. Pokud se navíc poloha mČĜeného objektu mČní ve smČru kolmém na Ĝádek, je nutné kameru neustále mechanicky pĜestavovat. V lepším pĜípadČ tak lze þinit automaticky pomocí motoru, to je však þasovČ velmi nároþný úkol, který je navíc umocnČn opotĜebováním mechanické konstrukce.
Další velkou skupinou mČĜících aplikací jsou aplikace, které využívají dvou nebo více ĜádkĤ obrazového snímaþe. V tomto pĜípadČ použití Ĝádkové kamery nepĜipadá v úvahu (neustálé pĜestavování polohy kamery motorem v rámci každého mČĜení je v drtivé vČtšinČ aplikací nepoužitelné). Použití plošné kamery tento problém Ĝeší, avšak pĜináší obrovskou nevýhodu nízké vzorkovací frekvence mČĜeného objektu, což je pro mnoho mČĜících nebo Ĝídících systémĤ kritické. Navíc zpracování velkého množství dat plošné kamery klade mnohem vČtší nároky na obvodové Ĝešení takové kamery. Vyvíjený typ kamery bude svým použitím smČrován do množiny aplikací uvedených v pĜedchozích dvou odstavcích – jedno a víceĜádková mČĜení. Nová kamera však nebude limitována velikostí obrazového pole (pĜípad Ĝádkové kamery), navíc pĜinese možnost „elektronického“ pĜestavování polohy vĤþi sledovanému objektu namísto mechanického pomocí motoru. Ve srovnání s plošnými kamerami pĜinese nový typ kamery znaþné navýšení vzorkovací rychlosti a zjednodušení obvodového Ĝešení (tedy i snížení ceny výsledného zaĜízení).
-8-
2 Rozbor problematiky DĤležitou souþástí rozboru je udČlat prĤzkum „trhu“ a vybrat si nČkolik typovČ odlišných kamer rĤzných výrobcĤ, které poslouží jednak pro srovnání parametrĤ a také budou blíže specifikovat smČr, kterým se bude vývoj nové kamery ubírat. Zvolena byla jedna plošná kamera plnící ve spojení s PC funkci standardní mČĜící kamery, dvČ plošné kamery plnící funkci smart kamery a jedna Ĝádková kamera, kterou je možné využívat jak ve spojení s PC jako standardní mČĜící kameru, tak i jako Ĝádkovou smart kameru.
Datacam 1408 – Moravské pĜístroje, a.s. (zdroj [21]) Datacam 1048 je standardní typ mČĜící kamery vybavené monochromatickým CCD snímaþem s rozlišením 1392×1040. Digitalizovaný obraz (8bit) je do poþítaþe pĜenášen sbČrnici USB 2.0 High Speed (pravdČpodobnČ obvod Cypress EZUSB) rychlostí 11FPS. Úkolem poþítaþe je zpracování obrazu a reprezentace výsledkĤ mČĜení.
Parametry kamery ýip:
CCD Sony ICX285AL, B/W, Full frame
Velikost þipu: 2/3" Rozlišení:
1392 × 1040 × 8bit
FPS:
11
Expozice:
125μs – 8,192ms
Rozhraní:
USB 2.0 High Speed
Objektiv:
závit C-mount nebo CS-mount
RozmČry:
76 x 86 x 32,4 mm Obr. 2.1 - Kamera Datacam 1408
-9-
2 Rozbor problematiky DataVS1 – Datalogic (zdroj [22]) DataVS1 je výrobcem oznaþovaná jako Smart Vision Sensor. Je vybavená monochromatickým CMOS senzorem s rozlišením 640×480. 8-bitový obraz je vzorkován rychlostí až 60FPS. Kamera je urþena pro mČĜení polohy/šíĜky objektĤ, poþítání objektĤ a vyhledávání vzorĤ v obraze. Integrovány jsou rozhraní RS232 a Ethernet 10/100Mbps, jejich využití je urþeno pro konfiguraci kamery i pro reprezentaci výsledkĤ (využít je možné i speciálního terminálu – obr. 1.2). TĜem binárním výstupĤm je možné pĜiĜadit následující funkce: dobrá/špatná souþástka, chyba mČĜení, kamera pĜipravena/zaneprázdnČna, rychlost mČĜení. Kamera dále obsahuje binární vstup pro spouštČní mČĜení a binární výstup pro spouštČní osvČtlovaþe.
Obr. 2.3 - Terminál kamery DataVS1
Obr. 2.2 - Kamera DataVS1
Parametry kamery ýip:
CMOS, B/W, Rolling shutter
Velikost þipu: 1/3" Rozlišení:
640 x 480 × 8bit
FPS:
60
Expozice:
neuvedena
Rozhraní:
Ethernet 10/100Mbps, RS232
Objektiv:
integrovaný, volitelná ohnisková vzdálenost (6, 8, 12, 16mm)
RozmČry:
71 x 59,8 x 40 mm
- 10 -
2 Rozbor problematiky LSIS412i – Leuze Electronic (zdroj [23]) LSIS412i oznaþuje výrobce jako Smart kameru. Použitý obrazový senzor je monochromatický CMOS s rozlišením 752×480. Snímkovou rychlost výrobce neudává, stejnČ tak poþet bitĤ digitalizovaného videosignálu. MČĜící úlohy kamery jsou velmi rozmanité, jedná se o polohu objektu, rozmČr objektu, obvod/povrch objektu (prĤmČt do obrazové roviny) a orientaci objektu (úhel primární osy). Datové rozhranní kamery jsou RS232 a ethernet. Ke konfiguraci kamery a sledování stavu mČĜení lze využít vestavČného webového serveru a uživatelského rozhraní (LCD displej a tlaþítka). K dispozici je 8 digitálních I/O linek, které lze softwarovČ nastavovat pro libovolné pĜíznaky mČĜení (vþetnČ funkce spouštČní mČĜení). Kamera v sobČ integruje
vlastní
osvČtlovaþ,
externí
osvČtlovaþ
lze
pravdČpodobnČ
Ĝídit
pomocí
konfigurovatelného digitálního výstupu.
Obr. 2.4 - Kamera LSIS412i
Obr. 2.5 - Kamera DataVS1 – uživatelské rozhraní
Parametry kamery ýip
CMOS, B/W, Global shutter
Velikost þipu: 1/3" Rozlišení:
752 x 480
FPS:
neuvedeno
Expozice:
54μs – 20ms
Rozhraní:
Ethernet 10/100Mbps, RS232
Objektiv:
integrovaný, ohnisková vzdálenost volitelnČ (8 nebo 16mm), automatizované ostĜení (od 50/75mm)
RozmČry:
75,15 x 113 x 51,7 mm
- 11 -
2 Rozbor problematiky SK2048IJR – Schäfter + Kirchhoff GmbH (zdroj [24]) SK2048IJR nese oznaþení Smart Line Scan Camera. Jedná se o Ĝádkovou kameru s monochromatickým CCD Ĝádkovým senzorem 2048px. Digitalizace videosignálu je 8-bitová. Kamera je urþena pro mČĜení šíĜky/polohy objektĤ. Kamera mĤže být použita jako USB mČĜící kamera nebo jak Smart kamera. V pĜípadČ USB mČĜící kamery jsou videosnímky pĜenášeny USB sbČrnici do PC a zpracovávány pĜíslušným softwarem. V pĜípadČ Smart kamery jsou výsledky mČĜení zprostĜedkovávány nadĜazenému systému pomocí dvou binárních a jednoho analogového signálu nebo pomocí datového rozhraní RS232. Vstup synchronizace (spouštČní mČĜení) je integrován také. Konfigurace Smart kamery je umožnČna prostĜednictvím PC softwaru a USB rozhraní.
Obr. 2.6 - Kamera SK2048IJR
Obr. 2.7 - Kamera SK2048IJR, pohled zezadu
Parametry kamery ýip:
CCD Sony ILX-571A, linear B/W
Velikost þipu: 28,7mm Rozlišení:
2048 × 1 × 8bit
FPS:
3300 (Smart kamera), 4730 (USB kamera)
Expozice:
30μs – 52ms
Rozhraní:
USB 2.0, RS232
Objektiv:
závit M40 × 0,745
RozmČry:
65 x 65 x 51 mm
- 12 -
3 ěádková kamera LineCam V rámci své bakaláĜské práce [5] jsem pracoval na vývoji Ĝádkové kamery (LineCam) s CCD senzorem Sony ILX (2048pix) a rychlým USB Ĝadiþem (480Mbit/s). Výstupem této práce byl prototyp sestavený na kontaktním poli a software ovládající kameru a umožĖující zpracování a zobrazení videosignálu. Vývoj kamery jsem dovršil návrhem Ĝídící desky a sestavením kamery. Kamera je nyní využívána pro výukové úþely v laboratoĜi videometrie. Software kamery je neustále doplĖován
Obr. 3.1 - Kamera LineCam
novými funkcemi.
3.1 ěídící deska kamery LineCam ěídící desku kamery LineCam bylo nutné navrhnout z dĤvodu vytvoĜení kompaktního modulu kamery. Návrh desky jsem také smČroval k využití desky jako vývojového kitu pro jednodušší vývoj nových typĤ kamer. ÚstĜedním obvodem desky je obvod Cypress CY7C68013A, který v sobČ integruje rychlý mikropoþítaþ 8051 (max. frekvence 48MHz, instrukþní cyklus trvající 4 takty), rychlou FIFO pamČĢ (8 nebo 16bit sbČrnice, max. rychlost zápisu 48MHz) a Ĝadiþ USB 2.0 High-Speed (480Mbit/s). Tyto základní prvky umožĖují využít desku i pro nejnároþnČjší aplikace jako je streamování videa, rychlý logický analyzátor nebo
osciloskop
s kontinuálním
pĜenosem
mČĜených dat do PC. Pro pĜevod mČĜeného analogového signálu na digitální je na desce umístČn rychlý AD pĜevodník AD9280, který je spolu s dalšími obvody využíván pro zpracování signálu z Ĝádkových senzorĤ typu Sony ILX.
- 13 -
Obr. 3.2 - ěídící deska kamery LineCam
3 ěádková kamera LineCam
!!!!!!!!!!!!!!!!
Schéma obvodového zapojení je k dispozici pouze u vedoucího diplomové práce
!!!!!!!!!!!!!!!! Obr. 3.3 - Schéma vývojové Ĝídící desky
- 14 -
3 ěádková kamera LineCam
3.2 Software kamery LineCam Software kamery LineCam jsem doplnil o funkce umožĖující jednodušší použití kamery a funkce rozšiĜují možnosti mČĜení. Jedná se zejména o tyto funkce: a) Prahování videosignálu s volitelným prahem b) 1. a 2. diference videosignálu c) Prahování diferenþních signálu s volitelným prahem d) Hledání hran s využitím prahování videosignálu e) Hledání hran s využitím prahování diferenþního signálu f) Lineární interpolace hran pro pĜesné mČĜení g) Kurzory zobrazovaþe videosignálu pro rychlé odmČĜování h) Nové možnosti zobrazení videosignálu i) 2D zobrazovaþ videa pro panoramatický režim kamery
Obr. 3.4 - Software kamery LineCam, „bakaláĜská“ verze
- 15 -
3 ěádková kamera LineCam
Obr. 3.5 - Software kamery LineCam, „magisterská“ verze
Kamera LineCam pĜevyšuje svými možnostmi Ĝádkové kamery vyvinuté v laboratoĜi videmoetrie v minulých letech a její použití ve výuce je tedy naprosto odĤvodnČné. Kamera také splĖuje všechny požadavky pro navázání na Univerzální videometrický systém založený na platfomČ LabView, který vyvíji Bc. OndĜej Kuba (viz. kapitola 12). V pĜíloze této diplomové práce je k dispozici dokumentace nutná k sestavení a oživení kamery. Firmware a software kamery vþetnČ ovladaþĤ pro Univerzální videometrický systém je k dispozici na pĜiloženém CD.
- 16 -
4
PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM Jedním z hlavních úkolĤ této diplomové práce je vývoj plošné kamery (ZCAM) založený
zejména na znalostech získaných pĜi vývoji Ĝádkové kamery LineCam. Centrálním prvkem kamery ZCAM je opČt obvod Cypress EZUSB, který v sobČ integruje rychlý USB Ĝadiþ (480Mbit/s), rychlou FIFO pamČĢ (zápis 48MHz) a mikropoþítaþ 8051 (takt 48MHz). K vývoji kamery ZCAM jsem použil Ĝídící desku kamery LineCam, jejíž návrh byl smČrován i k tomuto využití. Za obrazový senzor kamery ZCAM jsem zvolil CMOS senzor Micron MT9M001 (1/2“, 1.3Mpx, 1280×1024, 48MHz). V této kapitole popisuji postupný vývoj, který byl základem koneþného návrhu kamery ZCAM. Jednotlivé vývojové verze kamery jsou vždy uvedeny popisem, který uvádí hlavní rysy daného vývojového stupnČ, a obsahují konkrétní Ĝešení jednotlivých „vrstev“ kamery – hardware / firmware / software.
4.1 Vývoj kamery ZCAM – 1. verze (pomalá Ĝádková kamera, 1.875 Ĝádek/s) Prvotním úkolem bylo sestavení pracovištČ pro vývoj kamery
ZCAM
s využitím
Ĝídící desky kamery LineCam a senzorové desky navrhnuté Ing. Šedivým. Koncepce prvního vývojového
stupnČ
kamery
ZCAM byla jednoznaþná – pokusit se využít co nejširší spektrum prostĜedkĤ kamery LineCam (firmware, software, hardware) i za cenu velmi omezené funkþnosti kamery ZCAM. Výsledkem byl vznik Ĝádkové
kamery
1.875 Ĝádek/s.
s rychlostí Obr. 4.1 - Vývojové pracovištČ kamery ZCAM
- 17 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.1.1 Hardware Signál Master Clock je taktovací signál CMOS senzoru, podle výrobce by se jeho frekvence mČla pohybovat v rozmezí od 1MHz do 48MHz. Signál SLWR pro zápis do FIFO pamČti (souþástí Cypress EZUSB) bude generovat mikropoþítaþ 8051 (Cypress EZUSB). Mikropoþítaþ 8051 pracuje se strojovým cyklem 83.3ns, což odpovídá 12MHz.
Ke generování jediného signálu je možné využít instrukce SETB a CLRB (doba zpracování každé z nich je 2 strojové cykly), takto je možné generovat signál o frekvenci 3MHz (tímto je zvolena i frekvence signálu Master Clock). Signál Master Clock bude získán ze signálu CLKOUT (výstup PLL obvodu Cypress) snížením jeho frekvence z 48MHz na 3MHz pomocí synchronního þítaþe 74F163. Frekvence signálu Master Clock 3MHz odpovídá obrazové (v této verzi kamery i Ĝádkové) frekvenci 1.875Hz.
4.1.2 Firmware Generování signálu SLWR pro zápis do FIFO pamČti Mikropoþítaþ 8051 se strojovou frekvencí 12MHz je schopný generovat nejrychlejší signál s frekvencí 3MHz. Pro zápis jednoho Ĝádku CMOS senzoru (1280 pixelĤ) do FIFO pamČti je nutné vygenerovat 1280 sestupných hran. PĜed zaþátkem generování signálu SLWR je nutné synchronizovat na nábČžnou hranu signálu Line Valid (obecnČ na nábČžnou hranu 1. pulzu Line Valid – Ĝádkový synchronizaþní signál CMOS senzoru). Konkrétní programové Ĝešení vypadá takto:
¨
//synchronizace na 1. radek obrazu FRAME_VALID_1: JB CMOS _PORT.0,FRAME_VALID_1 FRAME_VALID_0: JNB CMOS _PORT.0,FRAME_VALID_0 LINE_VALID_0: JNB CMOS _PORT.1,LINE_VALID_0
//pokud je Frame_Valid=1, cekam az bude 0 //kdyz je Frame_Valid=0, cekam az bude 1 - zacatek snimku //cekam, az bude Line_Valid=0 - zacatek radku
//zapis do FIFO - nize uvedena sekvence se opakuje 1280x CLR CMOS_PORT.5 SETB CMOS _PORT.5
- 18 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM VytvoĜení komunikace mezi procesorem a senzorem CMOS senzor je možné nastavit do rĤzných režimĤ þinnosti a mČnit parametry ovlivĖující získaný videosignál, to je možné provádČt pomocí sbČrnice I2C, pomocí níž je senzor (slave) pĜipojen k procesoru (master). I2C sbČrnici je potĜeba pĜed jejím využíváním nastavit následovnČ: //***********************inicializace I2C******************************* EI2C = 0; PI2C = 0; I2CTL=I2CTL&0xFE;
//EI2C=1 -> aktivování pĜerušení //volba priority pĜerušení, PI2C=1 -> pĜerušení od I2C má vysokou prioritu //hodiny I2C, 400KHZ=0 -> hodiny I2C nastaveny na 100kHz
Pro usnadnČní opakovaných zápisĤ do registrĤ CMOS senzoru je nutné naspat funkci Ĝídícího mikropoþítaþe, taková funkce þinní Ĝídící program pĜehledným a šetĜí programovou pamČĢ mikropoþítaþe. void senWrite(unsigned char senReg, unsigned char senDataHigh, unsigned char senDataLow) { I2CS=I2CS|0x80; //nastavim START bit, po zapis dat do I2DAT se vygeneruje start sekvence I2DAT=0xBA; //zapis dat na sbernici, adresa zarizeni pro zapis while((I2CS&0x01)==0){;} //cekam na nastaveni DONE bitu I2DAT=senReg; //zapis dat na sbernici, adresa registru while((I2CS&0x01)==0){;} //cekam na nastaveni DONE bitu I2DAT=senDataHigh; //zapis dat na sbernici, horni cast datoveho byte while((I2CS&0x01)==0){;} //cekam na nastaveni DONE bitu I2DAT=senDataLow; //zapis dat na sbernici, dolni cast datoveho byte I2CS=I2CS|0x40; //nastavim STOP bit, po prijmuti odpovedi ACK se vygeneruje stop sekvence while((I2CS&0x01)==0){;} //cekam na nastaveni DONE bitu }
Nastavení CMOS senzoru do režimu 1 Ĝádku
Obr. 4.2 - Informace o registru 0x03 z datasheetu CMOS senzoru
Zápis do registru 0x03 CMOS senzoru pro nastavení výšky obrazu na 1 Ĝádek (horní i dolní datový byte je shodnČ roven 0x00). DefaultnČ je nastavena plná výška, tzn. 1024 ĜádkĤ. senWrite(0x03, 0x00, 0x00);
- 19 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM Pro
ovČĜení
komunikace
po
I2C
správnosti sbČrnici
a
správného nastavení senzoru do režimu 1 Ĝádku zkontroluji odpovídající signály generované senzorem. Z obr 4.3 je zĜejmé, že signál Line Valid (Ĝádková synchronizace) má po dobu trvání signálu
Frame
Valid
(snímková
synchronizace) pouze jeden pulz, z toho vyplývá,
že
obrazová
výška
skuteþnČ nastavena na 1 Ĝádek.
byla Obr. 4.3 - 1.ch signál Frame Valid, 2.ch signál Line Valid
4.1.3 Software Pro zobrazení videosignálu jednoho Ĝádku plošného CMOS senzoru využiji PC zobrazovaþ Ĝádkové CCD kamery. Videosignál z obr. 4.4 vznikl pĜi snímání pĜedlohy þernobílých pruhĤ. Je zĜejmé, že aktuální stav této verze kamery je využitelný pro další verzi – pomalá obrazová kamera s plošným CMOS senzorem (1.875 snímek/s).
Obr. 4.4 - Videosignál Ĝádku CMOS senzoru pĜeneseného do PC
- 20 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.2 Vývoj kamery ZCAM – 2. verze (pomalá obrazová kamera, 3.75 snímek/s) První verze kamery byla schopná snímat 1 Ĝádek (1280 pixelĤ) rychlostí 1.875 Ĝádek/s. Ve druhé verzi budu pĜenášet obraz o 1024 Ĝádcích s 1024 pixely na Ĝádek (1Mpix/snímek). Redukci poþtu pixelĤ Ĝádku jsem zvolil z dĤvodu snazšího pĜenosu obrazových dat ze senzoru do PC. PĜenos probíhá tak, že data jsou nejdĜíve zapsána do bufferu FIFO pamČti. Max. poþet bufferĤ je 4. Po zaplnČní jednoho bufferu jsou data automaticky odesílána USB Ĝadiþem do PC, pĜiþemž zápis dalších dat senzoru mezitím probíhá do jednoho z volných bufferĤ. Úspora jednoho bufferu na úkor 280 pixelĤ v Ĝádku a jeho využití pro zápis dat senzoru v pĜípadČ, že PC je zaneprázdČn a nemĤže pĜijímat data, je pro usnadnČní vývoje zásadní.
Maximální povolená frekvence signálu SLWR v asynchronním režimu (zapisovací signál FIFO pamČti) je 10MHz. V první verzi kamery jsem využíval signál SLWR s frekvencí 3MHz, v této verzi se více pĜiblížím maximu frekvence. Jelikož generuji signál SLWR dČlením 48MHz taktovacího signálu obvodu Cypress þíslem 2x, zvolím frekvenci signálu SLWR 6MHz, ta odpovídá obrazové frekvenci 3.75 snímek/s.
4.2.1 Hardware V 1. verzi kamery byl signál SLWR pro zápis do FIFO pamČti generován softwarovČ. Frekvenci 6MHz signálu SLWR této verze kamery však již není možné generovat softwarovČ pomocí mikropoþítaþe 8051 a je nutné pĜejít ke generování signálu SLWR hardwarovČ.
Navýšení
hardwarových
obvodĤ bude minimální – vystaþím si se 3-vstupovým logickým obvodem AND.
Obr. 4.5 - ZpĤsob generování signálu SLWR
- 21 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM Z obr 4.5 je zĜejmé, že signál senzoru PIXEL_CLOCK (odpovídá signálu Master Clock) je hradlován synchronizaþním signálem senzoru LINE_VALID a signálem SLWR_ENABLE, který je generován softwarovČ pomocí mikropoþítaþe 8051. Signál SLWR_ENABLE urþuje poþátek na konec zápisu obrazových dat do FIFO pamČti. Pokud bych místo signálu SLWR_ENABLE použil synchronizaþní signál senzoru FRAME_VALID, ztratil bych informaci o poþátku obrazu v bloku pĜenášených dat (jeden snímek se pĜenáší ve 2048 bufferech s velikostí 512B) a navíc by se do FIFO pamČti ukládal každý snímek i v pĜípadČ, že by nebyl vyžadován.
4.2.2 Firmware Generování Ĝídícího signálu SLWR_ENABLE pro zápis do FIFO pamČti V pĜedchozí kapitole 4.2.1 Hardware jsem popsal hardwarové Ĝešení generování signálu SLWR pro zápis do FIFO pamČti. Nyní je nutné se zabývat zpĤsob generování signálu SLWR_ENABLE. Po obdržení žádosti o snímek je nejprve zaþátek zápisu do FIFO pamČti synchronizován se zaþátkem obrazu, toto je však nutné pouze v pĜípadČ nekontinuálního pĜenosu snímkĤ nebo v pĜípadČ 1. snímku kontinuálního pĜenosu. N-tý snímek kontinuálním režimu je tedy synchronizován poþáteþním snímkem tohoto režimu.
Po synchronizaci zápisu do FIFO pamČti se zaþátkem snímku je povolen zápis do FIFO pamČti signálem SLWR_ENABLE. NáslednČ je zahájeno poþítání ĜádkĤ obrazu (kladných pulzĤ LINE_VALID) zapisovaných do FIFO pamČti. Po zapsání 1024-tého Ĝádku je další zápis do FIFO pamČti zablokován úrovní L signálu SLWR_ENABLE. Programové Ĝešení vypadá následovnČ: //cekani na zaþátek snimku FRAME_VALID_1: JB CCD_PORT.0,FRAME_VALID_1 FRAME_VALID_0: JNB CCD_PORT.0,FRAME_VALID_0 SETB CCD_PORT.3 //cekani na vycteni dat 1024 radku ze senzoru MOV R2, #4 AGAIN_ROWH: MOV R1, #0 AGAIN_ROWL: LINE_VALID_xz: JNB CCD_PORT.1,LINE_VALID_xz LINE_VALID_xk: JB CCD_PORT.1,LINE_VALID_xk DJNZ R1, AGAIN_ROWL DJNZ R2, AGAIN_ROWH CLR CCD_PORT.3
//pokud je Frame_Valid=1, cekam az bude 0 - konec snimku //kdyz je Frame_Valid=0, cekam az bude 1 - zacatek snimku //povolim zapis do FIFO – signal SLWR_ENABLE do 1
//cekam, az bude Line_Valid=1 - zacatek x.radku //cekam, az bude Line_Valid=0 - konec x.radku
//zakazu zapis do FIFO – signal SLWR_ENABLE do 0
- 22 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM Nastavení CMOS senzoru do režimu 1024 sloupcĤ DefaultnČ je nastaveno rozlišení obrazu 1280 sloupcĤ × 1024 ĜádkĤ. V registru 0x04 CMOS senzoru je uložena informace o poþtu sloupcĤ obrazu, zpĤsobem „poþet sloupĤ“ = „reg0x04“ + 1. Pro nastavení 1024 sloupcĤ zapíšu do registru 0x04 hodnotu 0x03FF zpĤsobem níže uvedeným: senWrite(0x04, 0x03, 0xFF);
Generování testovacího obrazce CMOS senzorem K testování správnosti pĜenosu a zobrazení obrazu v PC je možné využít generátor pĜedem definovaného obrazu, který je integrován jako jedna z funkcí CMOS senzoru. Do registru senzoru 0x32 je na 2 až 11 bit uložena hodnota, která odpovídá jasu pixelĤ lichých sloupcĤ. Jas pixelĤ sudých sloupcĤ je inverzní hodnotou jasu pixelĤ lichých sloupcĤ. Zápisem hodnoty 0xFFFF do registru 0x32 získáme testovací obrazec s nejvyššími rozdíly jasĤ mezi sousedními sloupci. Nastavením 6. bitu registru 0x07 se testovací obrazec vyþítá na datovou sbČrnici senzoru. Nastavení poþtu sloupcĤ a ĜádkĤ a þasování obrazu zĤstává
Obr. 4.6 - VýĜez z testovacího obrazu
zachováno. senWrite(0x32, 0xFF, 0xFF); senWrite(0x07, 0x00, 0x42);
//[11:2] definovani testovacích dat //na datovou sbernici CMOS senzoru se budou vycitat testovaci data
4.2.3 Software Vlákno programu pro pĜenos obrazu po USB sbČrnici 8-bitová obrazová data jsou asynchronnČ zapisována do FIFO pamČti rychlostí 6MHz, to odpovídá efektivní pĜenosové rychlosti USB sbČrnice 6MB/s. Do FIFO pamČti je ale možné uložit celý Ĝádek (1024pixelĤ) a tak je možné data pĜenášet i po dobu horizontálního zatmČní. Minimální doba horizontálního zatmČní odpovídá 244 tikĤm signálu PIXEL_CLOCK (40.64us). Efektivní pĜenosová rychlost USB sbČrnice je takto snížena na 5.04MB/s pĜi maximální snímkové frekvenci 3.75 snímek/s.
- 23 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM DĤležitČjší pohled na USB pĜenos je však z hlediska kontinuity toku dat. Každých 254us se musí pĜenést data 1 Ĝádku obrazu (1kB). Jakékoliv zpoždČní vlastního PC programu þi dokonce celého operaþního systému delší než 254us mĤže vést ke ztrátČ þásti obrazových dat a tím i ke znehodnocení obrazu. ZvláštČ v mČĜících aplikacích mĤže být takovéto zpoždČní kritické. Z tohoto dĤvodu je nutné vyþlenit na pĜenos dat samostatné vlákno, které navíc pracuje s vysokou prioritou. Ostatní vlákna nutná pro obsluhu softwaru kamery nechĢ mají prioritu co nejnižší. Význam tohoto Ĝešení bude nadále stoupat se zvyšující se rychlostí kamery v dalších verzích. VytvoĜení vlákna, spuštČní jeho pracovní funkce a následné ukonþení jeho þinnosti je možné následovnČ: void automaticTransfer() { handleTransferThread = CreateThread( NULL, 0, functionTransferThread, &transferThread, 0, NULL); if (handleTransferThread == NULL) ExitProcess(transferThread); CloseHandle(handleTransferThread); }
Pracovní funkce vlákna - nejdĜíve je zvýšena jeho priorita na nejvyšší možnou. Ve vlastní smyþce while je nutné vykonávat jen nezbytnČ nutné operace, i mČĜení doby trvání pĜenosu se mĤže stát nadstadartem, který si nemĤžeme dovolit, zvláštČ pak v rychlejších verzích kamery. Jelikož však toto mČĜení probíhá v dobČ vertikálního zatemnČní senzoru, mĤže být pĜípustné. DWORD WINAPI functionTransferThread( LPVOID lpParam ) { SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL); while(Form1->RadioButtonTransferYes->Checked==true) { T1 = clock(); //zaznamenani casu pocatku prenosu dat endpt->XferData(dataBuf,lenF); //prijimani dat obrazu T2 = clock(); //zaznamenani casu ukonceni prenosu dat timeTransferEP2IN = T2-T1; newDataEP2IN=1; //priznak pro zobrazovaci vlakno – jsou k dispozici nova data } return 0; }
Priorita procesu programu kamery Po spuštČní PC programu kamery je vytvoĜen v operaþním systému poþítaþe proces, kterému je též možné pĜidČlit vyšší prioritu. Pokud je nutné, aby na PC bČžely další procesy ostatních programĤ, je zvýšení priority procesu PC programu kamery nevyhnutelné, zvláštČ pak v rychlejších verzích kamery.
- 24 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM BČh procesu programu kamery na samostatném procesorovém jádru V pĜípadČ, že je v PC instalován vícejádrový procesor je možné zvážit bČh procesu programu kamery na samostatném procesorovém jádru.
PC program pro pĜenos dat z kamery do PC a zobrazení videa
Obr. 4.7 – Obraz pĜenášený z kamery do PC
- 25 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.3 Vývoj kamery ZCAM – 3. verze (rychlá obrazová kamera, 10 snímek/s) Druhá verze kamery byla schopná pĜenést a zobrazit 1Mpix obraz (1024×1024) rychlostí 3.75 snímek/s. K dosažení vyšších rychlostí pĜenosu a zobrazení je nutné udČlat nČkolik zásadních krokĤ. A) ZamČnit asynchronní režim Ĝízení USB pĜenosĤ za synchronní. Tím se zjednoduší hardwarové obvody kamery nutné pro Ĝízení USB pĜenosu, ovšem nároky na synchronizaci 1. pixelu obrazu v rámci pĜenášených dat budou vyšší.
Poznámka: Byl proveden test, kdy byla 2.verze kamery nastavena na rychlost 2×3.75 = 7.5snímek/s. Test však nedopadl úspČšnČ. Maximum rychlosti 2.verze kamery je tedy mezi 3.75 a 7.5 snímky/s.
B) BezpodmíneþnČ je nutné využívat plnou velikost FIFO pamČti (to v pĜedchozí verzích nebylo nutné). Plnou velikost FIFO pamČti lze využít pouze v konfiguraci 4 bloky o velikosti 1024B. PĜi 1024 pixelech na Ĝádek vypadá konfigurace rozumnČ – do FIFO pamČti mĤžeme uložit až 4 Ĝádky – USB pĜenos mĤže probíhat i bČhem 4 dob horizontálního zatemnČní (pĜi 1280 pixelech na Ĝádek jsou tyto doby pouze 3, což klade vyšší nároky na pĜenos pĜi vyšších snímkových rychlostech).
C) Základní zobrazovaþ snímkĤ v PC softwaru (Borland Builder 6 - komponenta DBImage) má pĜi rozlišení 1024×1024 a použití samostatného vlákna na notebooku ProBook 4520s vykreslovací rychlost pouze do 5 snímkĤ/s. Pro dosažení vyšších zobrazovacích rychlostí je nutné použít komponentu zobrazovaþe od jiného výrobce nebo redukovat velikost zobrazovaných snímkĤ na 512×512 (v tomto rozlišení je maximum obnovovací rychlosti snímkĤ pĜibližnČ 15snímkĤ/s).
- 26 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.3.1 Hardware V synchronním režimu USB pĜenosĤ je možné využít synchronizaþní signál o frekvenci 5 až 48MHz. Samotný obvod Cypress umožĖuje tento signál generovat s frekvencemi 30 a 48MHz na pinu IFCLK. Je také možné využít externí synchronizaþní signál, napĜ. odvozený z 48MHz signálu CLKOUT tak, jako v pĜedchozích verzích kamery. Signál CLKOUT není však tak kvalitní jako signál IFCLK (signál IFCLK má mnohem strmČjší hrany – a to je pĜi vyšších snímkových rychlostech zásadní).
Ve 3.verzi kamery budu tedy využívat k synchronizaci 30MHz signál IFCLK (pro vyšší snímkové rychlosti kamery je možné jednoduše pĜepnout na 48MHz). Signál SLWR, který Ĝídí zápis do FIFO pamČti, budu generovat na základČ signálu senzoru LINE_VALID a signálu SLWR_ENABLE, který vytváĜí mikropoþítaþ 8051.
V synchronním režimu USB pĜenosĤ (oproti asynchronnímu) je však signál SLWR pouze pĜíznakem pro zápis do FIFO pamČti. Samotný zápis dat do FIFO pamČti probíhá zvolenou hranou signálu IFCLK pĜi zvolené úrovni signálu SLWR. Proto je možné signál SLWR Ĝídit pomocí mikropoþítaþe 8051 i pĜi vysokých snímkových rychlostech kamery.
Z obr. 4.8 je zĜejmé, že hardware pro generaci signálu SLWR je oproti 2.verzi kamery jednodušší. Signálem SLWR_ENABLE se Ĝídí poþátek a konec zápisu obrazových dat do FIFO pamČti, což koresponduje s poþátkem a koncem snímku. Na rozdíl od signálu FRAME_VALID však signál SLWR_ENABLE umožĖuje zapisovat snímky do FIFO pamČti jen v pĜípadČ,
že
jsou
vyžadovány
PC
softwarem kamery, nebo þekat na konec snímku, pokud pĜíkaz na pĜenos snímku
Obr. 4.8 - ZpĤsob generování signálu SLWR
pĜišel v prĤbČhu pĜedchozího.
- 27 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.3.2 Firmware V pĜedchozích verzích kamery probíhal pĜenos snímku tak, že byla vyslána žádost o pĜenos paketĤ snímku do PC. Tato žádost byla zpracována „asynchronnČ“ v rámci funkce TD_POLL. Tato funkce se spouští opakovanČ, ale þasová prodleva mezi jejími jednotlivými bČhy se liší na základČ vytíženosti mikropoþítaþe 8051 jinými událostmi – napĜ. reakce na pĜíchozí USB pakety z PC nebo pĜíchozí žádost o pĜenos USB paketu do PC. Zpracování žádosti o pĜenos paketĤ snímku do PC obnášelo þekání na ukonþení pĜedchozího snímku (pokud to bylo potĜeba – v kontinuálním režimu pouze u prvního snímku), následnČ byl nastaven signál SLWR_ENABLE, poté každý Ĝádkový puls snímku LINE_ENABLE aktivoval zapisovací signál FIFO pamČti SLWR, který byl vyvozen ze synchronizaþního signálu senzoru PIXEL_CLOCK.
Popsaný zpĤsob pĜenosu snímkĤ není pĜi vyšších snímkových rychlostech možný. PĜíprava na pĜenos snímku do PC musí být hotova ještČ dĜíve než pĜijde z PC žádost o pĜenos paketĤ snímku do PC. Pro takovou pĜípravu využiji paket zaslaný jiným komunikaþním USB kanálem (jiným než je ten pĜenášející obrazová data) ještČ pĜed zasláním žádosti o obrazová data. Odezva na tento paket se provede ihned v rámci pĜerušení, které bylo vyvoláno pĜíchozím paketem.
Na rozdíl od 2.verze kamery je nutné provádČt i reset FIFO pamČti pĜed uložením každého snímku. Z nejasných dĤvodu je nutné tento reset provádČt i po zapsání 512kB dat do FIFO pamČti, tedy v polovinČ snímku. V momentČ, kdy pĜijde žádost o obrazová data se již þeká na zaþátek snímku nebo prvního Ĝádku tohoto snímku.
- 28 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM Odezva na paket pĜedcházející žádosti o pĜenos snímku do PC: { FIFORESET = 0x80; SYNCDELAY; FIFORESET = 0x02; SYNCDELAY; FIFORESET = 0x00; SYNCDELAY;
//reset FIFO
#pragma asm CLR CCD_PORT.3 FRAME_VALID_1: JB CCD_PORT.0,FRAME_VALID_1 FRAME_VALID_0: JNB CCD_PORT.0,FRAME_VALID_0 #pragma endasm FIFORESET = 0x80; SYNCDELAY; FIFORESET = 0x02; SYNCDELAY; FIFORESET = 0x00; SYNCDELAY;
//zakazu zapis do FIFO //cekam na konec snimku, pokud uz neni //cekam na zaþátek snimku
//reset FIFO
#pragma asm SETB CCD_PORT.3 #pragma endasm
//povolim zapis do FIFO
//cekani na konec pulsnimku pro reset FIFO #pragma asm MOV R2, #0x02 //#1 AGAIN_ROWH: MOV R1, #0x00 //#5 AGAIN_ROWL: LINE_VALID_xz: JNB CCD_PORT.1,LINE_VALID_xz LINE_VALID_xk: JB CCD_PORT.1,LINE_VALID_xk
//cekam, az bude Line_Valid=1 - zacatek x.radku //cekam, az bude Line_Valid=0 - konec x.radku
DJNZ R1, AGAIN_ROWL DJNZ R2, AGAIN_ROWH #pragma endasm #pragma asm CLR CCD_PORT.3 #pragma endasm
//zakazu zapis do FIFO
FIFORESET = 0x80; SYNCDELAY; FIFORESET = 0x02; SYNCDELAY; FIFORESET = 0x00; SYNCDELAY;
//reset FIFO
#pragma asm SETB CCD_PORT.3 #pragma endasm
//povolim zapis do FIFO
break; }
- 29 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.3.3 Software Vlákno programu pro pĜenos obrazu po USB sbČrnici Vlákno pro pĜenos obrazu bylo upraveno tak, aby pĜed každou žádostí o pĜenos snímku byl zaslán paket pro pĜípravu pĜenosu snímku. DWORD WINAPI functionTransferThread( LPVOID lpParam ) { SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL); outendpt->XferData(data,delka); //paket pro pripravu prenosu snimku while(Form1->RadioButtonTransferYes->Checked==true) { T1 = clock(); //zaznamenani casu pocatku prenosu dat endpt->XferData(dataBuf,lenF); //prijimani dat obrazu outendpt->XferData(data,delka); //paket pro pripravu prenosu snimku T2 = clock(); //zaznamenani casu ukonceni prenosu dat timeTransferEP2IN = T2-T1; newDataEP2IN=1; //priznak pro zobrazovaci vlakno – jsou k dispozici nova data } return 0; }
Vlákno pro zobrazení snímku v oknČ programu Pro zobrazení snímku v oknČ PC programu je též využíváno samostatné vlákno. Na rozdíl od vlákna pro pĜenos snímku má však normální prioritu. I pĜesto bylo nutné z dĤvodu vyšší obnovovací rychlosti snímku snížit jeho rozlišení z 1024×1024 na 512×512. Do PC se ale samozĜejmČ pĜenáší snímek s plným rozlišením 1024×1024.
- 30 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM PC program pro pĜenos dat z kamery do PC a zobrazení videa
Obr. 4.9 – Obraz pĜenášený z kamery do PC
- 31 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.4 Vývoj kamery ZCAM – 4. verze (rozšíĜená obrazová kamera, 12 snímek/s) 3.verze kamery byla schopná pĜenést 1Mpix obraz (1024×1024) rychlostí 10 snímek/s. Nebyla však zaruþena bezchybnost pĜenosu obrazu a jeho zobrazení. Ani zobrazení obrazu v redukovaném rozlišení není pro mČĜící úþely zcela ideální. To musí být ve 4. verzi kamery napraveno. Posledním cílem této verze je zavést základní zpracování obrazu v reálném þase jako je prahování nebo hranování.
4.4.1 Hardware V pĜedchozí verzi kamery bylo pro generování signálu SLWR (pĜíznak zápisu do FIFO) využíváno hradla AND jako externího obvodu (viz. obr 8). Existuje však jiné Ĝešení, které umožĖuje vynechat jakékoliv externí obvody a 4. verzi kamery sestavit pouze ze souþasné Ĝídící desky (pĤvodnČ Ĝídící deska Ĝádkového senzoru) a senzorové desky s plošným senzorem. Plánovaná konstrukce nové plošné kamery by pak mohla být založena pouze na obvodu Cypress a plošném senzoru. Vynechat hradlo AND je možné jedním ze dvou následujícím zpĤsobĤ:
1) signál LINE_VALID pĜipojit na pin SLWR obvodu Cypress, signál SLWR_ENABLE pĜipojit na pin SLCS obvodu Cypress
2) signál LINE_VALID pĜipojit na pin SLWR obvodu Cypress, signál SLWR_ENABLE pĜipojit na jeden z pinĤ FIFOADRx obvodu Cypress
První zpĤsob je standardní, avšak v rámci pĜípravných testĤ na vývoj 4. verze kamery se neosvČdþil. DĤvodem je pravdČpodobnČ to, že reakce interních Ĝídících obvodĤ FIFO pamČti na zmČnu signálu SLCS je nedostateþnČ rychlá.
Druhý zpĤsob je založen na tom, že pokud nČjaká adresa neadresuje ve FIFO pamČti žádný blok pamČti, pak jí lze stejnČ jako signál SLCS využít k blokování zápisu do FIFO. PrávČ 2. verze Ĝízení zapisovacího signálu FIFO pamČti bude využita. Rychlost reakce interních Ĝídících obvodĤ FIFO pamČti na zmČnu adresy je dostateþná.
- 32 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM V rámci pĜíprav 4. verze kamery a bČhem vývoje pĜedchozích verzí kamer postupnČ krystalizovalo obvodové Ĝešení Ĝídící desky specializované pĜímo pro použitý plošný senzor. Nyní nastal okamžik, kdy je možné vzniklé obvodové Ĝešení využít ke konstrukci nové Ĝídící desky. Od specializované Ĝídící desky se pĜedevším oþekává, že umožní dosažení ještČ vyšších pĜenosových rychlostí.
4.4.2 Firmware Na rozdíl od 3. verze se ve 4. verzi kamery detekuje konec snímku a okamžitČ poté se blokuje zápis do FIFO pamČti. To zabrání falešným zápisĤm rušivými impulsy v dobČ mezi dvČma snímky. Falešné zápisy se mohou projevit ve snímku jako chybné pixely, v horším pĜípadČ mohou ohrozit správnost pĜenosu snímku do PC. Testy kamery prokázaly, že tento krok je krok správným smČrem, chybovost pĜenosĤ se tím nezanedbatelnČ snížila. Použití nové Ĝídící desky si vyžádalo úpravy v Ĝízení pĜenosu snímku ze senzoru do FIFO pamČti, kdy bylo použito minimalistické obvodové Ĝešení (viz. pĜedchozí kapitola). Nová Ĝídící deska pĜinesla sama o sobČ navýšení pĜenosové rychlosti o 2 snímky/s v porovnání s kamerovým systémem
použitým
v pĜedchozích
verzích.
PĜíþiny
zrychlení
pramení
zejména
z minimalistického obvodového Ĝešení. Toto Ĝešení vypouští hradlo AND pro Ĝízení zápisu do FIFO pamČti (odstraĖuje se tím zpoždČní v Ĝídícím signálu) a zkracuje délku datové sbČrnice od senzoru k FIFO pamČti.
- 33 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.4.3 Software Vlákno programu pro pĜenos obrazu po USB sbČrnici 100% bezchybnosti pĜenosu snímkĤ nelze dosáhnout, proto je nutné chybnČ pĜijaté snímky detekovat a neposkytovat je dále ke zpracování zobrazovacímu vláknu. V pĜípadČ pĜijmutí chybného snímku není vystaven pĜíznak správnČ pĜijatého snímku a z PC do kamery je vyslán paket pro pĜípravu pĜenosu dalšího snímku následovaný žádostí o pĜenos tohoto snímku. DWORD WINAPI functionTransferThread( LPVOID lpParam ) { SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL); endpt->Reset(); endpt->PktsPerFrame = 1048; endpt->TimeOut = 150; outendpt->XferData(data,delka); //paket pro pripravu prenosu snimku while(Form1->RadioButtonTransferYes->Checked==true) //kontinualni prenos snimku { status=endpt->XferData(dataBuf,lenF); outendpt->XferData(data,delka); if(status) { T2 = clock(); timeTransferEP2IN = T2-T1; T1 = clock(); newDataEP2IN=1; }
//prijimani dat obrazu //paket pro pripravu prenosu snimku //pokud je prenos snimku v poradku //zaznamenani casu ukonceni prenosu dat //zaznamenani casu pocatku prenosu dat //priznak pro zobrazovaci vlakno – nova data k dispozici
} return 0; }
Vlákno pro zobrazení snímku v oknČ programu Pro zobrazování videa v plném rozlišení 1024×1024 a pĜi rychlostech vČtších než 5snímkĤ/s je nutné použít spoleþný buffer jak pro pĜenos dat tak pro jejich zobrazování. Jakýkoliv pĜesun dat z pĜenosového bufferu do zobrazovacího vede ke kritickým prodlevám a neschopnosti zobrazovat každý pĜijatý snímek z kamery. Z provedených testĤ vyplývá, že kopírování bufferĤ je þasovČ nároþnČjší než napĜ. výpoþet algoritmu Laplacian of Gaussian (hledání hran) nad 1MB obrazových dat.
- 34 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM Zpracování obrazu v reálném þase PĜes výše uvedenou nároþnost pĜenosu a zobrazení obrazových dat v reálném þase jsem se pokusil vytvoĜit rychlé a na výkon nenároþné algoritmy pro zpracování obrazu v reálném þase. Základní podmínka úspČchu byla dána tím, že algoritmus musí þerpat data pĜímo z pĜenosového bufferu, uskuteþnit nad nimi co nejménČ složitou operaci a výsledek uložit pĜímo do obrazové matice viditelné v zobrazovaþi videa. Zpracování obrazu ve více krocích s meziuložením dat nepĜipadá v úvahu.
KromČ základních úloh zpracování obrazu jako je negativ nebo prahování s volitelnou hodnotou prahu jsem se pokusil obraz hranovat s využitím algoritmu Laplacian of Gaussian (LOG). Tento algoritmus umí v jediném kroku rozostĜit i diferencovat obrazové pole, což je pro rychlé a výpoþetnČ nenároþné hledání hran nezbytné. Aplikování algorimtu LOG spoþívá v konvoluci obrazové matice s konvoluþním jádrem:
0 0 −1 0 0 0 −1 − 2 −1 0 − 1 − 2 16 − 2 − 1 0 −1 − 2 −1 0 0 0 −1 0 0
for (y = 0; y < bmp->Height; y++) //pro kazdy radek v obraze { Byte * ptr = (Byte *)bmp->ScanLine[y]; //pointer na radek for (x=0; x < bmp->Width; x++) //pro kazdy bod v radku { ptr[0] = pixelImProcInt = - dataBuf[(y-2)*1024+x] //LOG - dataBuf[(y-1)*1024+x-1] - 2*dataBuf[(y-1)*1024+x] - dataBuf[(y-1)*1024+x+1] - dataBuf[(y-0)*1024+x-2] - 2*dataBuf[(y)*1024+x-1] + 16*dataBuf[(y)*1024+x] - 2*dataBuf[(y)*1024+x+1] - 1*dataBuf[(y)*1024+x+2] - dataBuf[(y+1)*1024+x-1] - 2*dataBuf[(y+1)*1024+x] - dataBuf[(y+1)*1024+x+1] - dataBuf[(y+2)*1024+x]; ptr[1] = ptr[0]; ptr[2] = ptr[0]; ptr+=3; } x=0; }
- 35 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
Obr. 4.10 – Aplikace algoritmu LOG – zvýraznČní hran v obraze
- 36 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.5 Vývoj kamery ZCAM – finální verze (plné rozlišení, 10 snímek/s) Poslední verze kamery si klade za hlavní cíl využít plného rozlišení obrazového snímaþe, tedy 1280×1024. Doposud bylo využíváno pouze rozlišení 1024×1024, které bylo výhodné z hlediska uspoĜádání datových bufferĤ ve FIFO pamČti (velikost je volitelnČ 512B nebo 1024B). Je zĜejmé, že pĜi velikosti Ĝádku 1280px (1280B), již není možné Ĝádek pĜenášet do PC v jednom bufferu FIFO pamČti. PĜenášet samostatný Ĝádek ve dvou bufferech s tím, že jeden buffer bude poloprázdný je nepĜípustné – navýšení režijních dat USB pĜenosu by snižovalo rychlost pĜenosu obrazových dat. Druhá možnost je pĜenášet v jednom bufferu þásti dvou ĜádkĤ – to pro zmČnu zkracuje efektivní dobu pĜenosu dat o þas horizontálního zatemnČní v pĜípadČ, že se þeká na doplnČní bufferu dalším Ĝádkem. Druhým cílem této verze kamery je udržet souþasnou snímkovou rychlost pĜes 10 snímek/s, pĜípadnČ se jí pokusit ještČ zvýšit.
4.5.1 Hardware Testy USB pĜenosĤ provedené na poþátku vývoje 5. verze kamery ukázaly, že je výhodné rozdČlit FIFO pamČĢ na dva rovnocenné pamČĢové prostory a pĜipojit k nim dvČ datové USB roury pro pĜenos obrazových dat do PC. Zápis do obou pamČĢových prostorĤ se bude cyklicky stĜídat po zaplnČní celistvého poþtu bufferĤ daného adresového prostoru. V pĜípadČ ĜádkĤ o velikosti 1280B to znamená mČnit adresaci FIFO pamČti vždy po vyþtení 4 ĜádkĤ z CMOS senzoru (to odpovídá 5 bufferĤm o velikosti 1024B). Dvoubitová externí adresace FIFO pamČti tak bude plnČ využita - pro blokování zápisu videosignálu do FIFO pamČti pomocí signálu SLWR_ENABLE a novČ také pro volbou jednoho ze dvou pamČĢových prostorĤ novČ zavedeným signálem EPT_ADR (opČt Ĝízeno mikropoþítaþem 8051). Tímto byla uþinČna poslední úprava hardwaru kamery ZCAM (kompletní popis obvodového Ĝešení je uveden v kapitole 5 a pĜíloze B).
- 37 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.5.2 Firmware Požadavek pĜenosu obrazového snímku s velikostí ĜádkĤ 1280px si vynutil zásadní úpravy v Ĝízení zápisu snímku do FIFO pamČti. Adresaci pamČĢových prostorĤ FIFO pamČti je nutné mČnit za bČhu. Mikropoþítaþ 8051 poþítá Ĝádky vyþítané z obrazového senzoru a každé 4 Ĝádky (to odpovídá 5 bufferĤm FIFO) pĜepíná adresaci. V pĜípadČ, že obrazový snímek neobsadí celistvý poþet bufferĤ FIFO pamČti (v pĜípadČ pĜenosu snímku s poþtem ĜádkĤ, který není násobkem þísla 4) je nutné programovČ vynutit odeslání posledního „poloprázdného“ bufferu. Pro zabezpeþení pĜenosu snímku bez snížení pĜenosové rychlosti je první sloupec snímku vyhrazen pro kontrolní kód. Kontrolní kód je vždy po zahájení zápisu nového Ĝádku do FIFO pamČti uložen na pozici 1. pixelu tohoto Ĝádku. V PC softwaru dochází ke zpČtnému dekódování a vyjmutí kontrolního kódu ze snímku.
Diagram na obrázku 4.11 ukazuje významnou
þást
firmwaru,
která
je
zodpovČdná za pĜenos snímku z obrazového senzoru do pamČti poþítaþe. Pro zajištČní dostateþné rychlosti Ĝízení pĜenosu snímku (takt
obrazového
senzoru
30MHz,
10 snímek/s, 10240 Ĝádek/s) je samozĜejmČ pĜíslušná þást firmwaru odpovČdná za Ĝízení pĜenosu napsána v asembleru. V jazyce C by nebylo možné dosáhnout správné synchronizace obrazového senzoru s programovým Ĝízením pĜenosu snímku.
- 38 -
Obr. 4.11 – Diagram Ĝízení pĜenosu snímku
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
4.5.3 Software Pro obsluhu pĜenosu po USB sbČrnici je nutné vytvoĜit dvČ vlákna pracující s nejvyšší prioritou (real time priority). Každé vlákno bude obsluhovat jednu pĜenosovou rouru (každá roura slouží pro pĜenos dat jednoho pamČĢového prostoru FIFO pamČti EZUSB). Jedno z vláken vysílá do kamery žádost o pĜenos snímku, následnČ musí dojít k synchronizaci vláken, poté se þeká na pĜíchod prvního datového bufferu FIFO pamČti. Každé z vláken zná poþet datových bufferĤ, které musí zachytit pro pĜíjem celého snímku (liší se podle poþtu pĜenášených ĜádkĤ snímku). Když jedno vlákno pĜijme svĤj kompletní datový balík, þeká na druhé vlákno, po této synchronizaci dojde k vystavení pĜíznaku pĜijmutí celého snímku. Vytavený pĜíznak je pokynem ke zpracování snímku obrazovým a Ĝádkovým vláknem, priorita tČchto vláken je závislá na celkové vytíženosti poþítaþe, v nejlepší pĜípadČ se opČt jedná o real time priority. DĤležité je využívat režimu spánku a vlákna na maximálnČ možnou dobu uspávat.
Obrazové vlákno má za úkol zpracování dat pĜijmutého snímku (vþetnČ dekódování snímku opatĜeného kontrolním kódem), konverzi obrazu na typ bmp, aplikaci obrazových funkcí (negativ, prahování, hranování, atd…) a zobrazení v náhledovém oknČ. ěádkové vlákno se stará o zpracování vybraných ĜádkĤ snímku, jedná se zejména o prĤmČrování, digitální filtr, konverzi videosignálu Ĝádku do rĤzných formátĤ, zobrazení videosignálu Ĝádku a v neposlední ĜadČ také obsluhuje komplexní víceĜádkové mČĜení (viz. kapitola 6).
Diagram na obrázku 4.12 zobrazuje vzájemnou kooperaci pĜenosových vláken, primární vlákno programu slouží pouze pro obsluhu interakce programu s uživatelem.
- 39 -
4 PĜechod od Ĝádkové kamery LineCam k plošné kameĜe ZCAM
Obr. 4.12 – Diagram kooperace pĜenosových vláken
Obr. 4.13 – Zobrazení videa v plném rozlišení obrazového senzoru 1280×1024
- 40 -
5
Hardware kamery ZCAM Vývoj kamery ZCAM (viz. kapitola 4) pĜinesl jasné pĜedstavy o obvodovém Ĝešení
Ĝídící desky této kamery. ěídící deska byla navrhnuta v prĤbČhu 4. vývojového stupnČ kamery ZCAM. PĜed zahájením 5. vývojového stupnČ byl sestaven kompaktní modul kamery, který již bylo možné vybavit stativem a využít pro mČĜící úþely. Modul kamery byl vyhotoven ve 2 verzích.
Lite verze kamery ZCAM je urþena pro mČĜení za pĜítomnosti PC. PC umožĖuje konfigurovat vlastnosti kamery, zpracovává
jednotlivé obrazové snímky a vizualizuje
výsledky mČĜení. Full verze kamery ZCAM je urþena pro plnČ autonomní použití. Konfigurace kamery je možná pomocí ovládacích tlaþítek na tČle kamery, obrazové snímky zpracovává mikropoþítaþ 8051, výsledky mČĜení jsou vizualizovaný pomocí OLED displeje opČt pĜímo na tČle kamery. Kameru Full ZCAM je samozĜejmé také možné využit v souþinnosti s PC.
ObČ verze kamer ZCAM jsou vybaveny rozhraním sbČrnice I2C pro pĜipojení do systému s Ĝídícím modulem jako chytré obrazové snímaþe (Smart kamera). Lite ZCAM byla zaþlenČna na konci dubna 2011 do výuky pĜedmČtu VBM. Full ZCAM byla použita jako Smart kamera regulaþního systému na výstavČ Electron 2011.
Obr. 5.1 – Kamera ZCAM bez pouzdra
- 41 -
5 Hardware kamery ZCAM
5.1 ěídící deska Hlavním cílem návrhu Ĝídící desky kamery ZCAM bylo minimalistické obvodové Ĝešení, neboli snaha využít naplno potenciál obvodu Cypress EZUSB. Kamery vyvinuté v laboratoĜi videometrie založené na obvodu Cypress EZUSB v sobČ vždy integrovali minimálnČ obvody typu CPLD/FPGA, které sloužili pro pomocné Ĝízení USB Ĝadiþe nebo jako vyrovnávací pamČĢ v pĜípadČ nedostateþné kapacity FIFO pamČti.
Vývoj kamery ZCAM (viz. kapitola 4) ukázal, že se lze pĜi jisté konfiguraci EZUSB obejít i bez tČchto obvodĤ. Nevýhodou nového Ĝešení je vyšší obtížnost vývoje firmwaru mikropoþítaþe 8051 a PC softwaru. ěízení USB Ĝadiþe je zcela v režii mikropoþítaþe 8051, který nedisponuje v oblasti generování Ĝídících / detekce synchronizaþních signálĤ takovým výkonem jako obvody CPLD/FPGA.
Blokové schéma kamery ZCAM (obr. 5.2) ukazuje, že jediným bezpodmíneþnČ nutným obvodem pro funkci kamery je obvod EZUSB. Všechny ostatní obvody jsou pouze urþitým nadstandardem, který není nutné využít. To platí i pro externí generátor hodin 3-48MHz (hodiny CMOS senzoru, zapisovací signál FIFO), který byl využit pouze pro testovací úþely a byl na Ĝídící desce zanechán z dĤvodu možného dalšího vývoje.
EZSUB
v kameĜe
ZCAM
využívá pouze interního generátoru hodin.
Obr. 5.2 – Blokové schéma kamery ZCAM
DetailnČjší pohled na obvodové Ĝešení Ĝídící desky vþetnČ popisu dĤležitých komponent poskytuje schéma Ĝídící desky (Obr. 5.3). Informace potĜebné pro sestavení a oživení Ĝídící desky (pĜípadnČ celé kamery) jsou k dispozici v pĜíloze této diplomové práce.
- 42 -
5 Hardware kamery ZCAM
!!!!!!!!!!!!!!!!
Schéma obvodového zapojení je k dispozici pouze u vedoucího diplomové práce
!!!!!!!!!!!!!!!! Obr. 5.3 – Schéma Ĝídící desky kamery ZCAM
- 43 -
5 Hardware kamery ZCAM
5.2 Senzorová deska Senzorová deska s CMOS senzorem MT9M001 firmy Micron byla navržena Ing. Šedivým (schéma na obr. 5.4). Senzorová deska je univerzální pro nČkolik rĤzných CMOS senzorĤ firmy Micron. Informace nutné pro osazení a oživČní senzorové desky jsou obsaženy v pĜíloze této diplomové práce.
!!!!!!!!!!!!!!!! Schéma obvodového zapojení je k dispozici pouze u vedoucího diplomové práce !!!!!!!!!!!!!!!! Obr. 5.4 – Schéma senzorové desky (Ing. Jan Šedivý)
Obr. 5.5 – Senzorová deska se senzorem MT9M001 a objektivem Tevidon
- 44 -
5 Hardware kamery ZCAM
5.3 MČĜení na senzorové desce CMOS senzor je obvod velmi citlivý na statickou elektĜinu, stejnČ tak špatnČ odolává vysokým teplotám pĜi pájení. Pro tyto negativní vlastnosti je nutné senzor pĜed zabudováním do kamery otestovat. DĤležité je porovnat, zda-li signály generované senzorem odpovídají svými parametry hodnotám uvádČným výrobcem a zda-li je senzor citlivý na osvČtlení.
5.3.1 PĜíprava na mČĜení
PĜipojíme napájení VDD=3.3V. OdbČr senzoru je pĜibližnČ 50 až 60mA. Na pin senzoru CLKIN (MCLK) pĜivedeme z generátoru hodinový signál, podle výrobce má být jeho frekvence v rozmezí 1MHz – 48MHz. V datasheetu je þasování senzoru v defaultním režimu uvedeno pro frekvenci CLKIN fmax = 48MHz.
Obr. 5.6 – Defaultní þasování senzoru pro frekvenci CLKIN fmax=48MHz (datasheet senzoru)
Pokud nemáme tak rychlý generátor zvolíme frekvenci, pĜi které se nám budou dobĜe pĜepoþítávat zmČĜené þasy na þasy senzoru uvedené v datasheetu. Je však dobré volit frekvenci dostateþnČ vysokou, aby snímková frekvence byla dobĜe mČĜitelná osciloskopem. Test senzoru provedeme napĜ. pro frekvenci CLKIN f = 4.8MHz (tj. desetina z fmax).
- 45 -
5 Hardware kamery ZCAM
5.3.2 Signály generované senzorem PIXCLK
Signál PIXCLK (PCLK) se shoduje se signálem CLKIN. Na sestupnou hranu signálu PIXCLK lze þíst z datové sbČrnice senzoru hodnotu konkrétního pixelu (pĜi vzestupné hranČ se data mČní). PIXCLK je generován nepĜetržitČ.
Obr. 5.7 – Signál PIXCLK (namČĜený prĤbČh)
LINE_VALID
Signál LINE_VALID (HSYNC): nábČžná hrana oznaþuje zaþátek Ĝádku, sestupná konec Ĝádku. Kladný pulz (vyþítání Ĝádku): namČĜená hodnota 267.0us/10=26.7us (datasheet 26.7us). Záporný pulz (horizontální zatemnČní): namČĜená hodnota 50.80us/10=5.08us (datasheet 5.04us). ěádková frekvence v rámci snímku je 3.14kHz.
Obr. 5.8 – Signál LINE_VALID (namČĜený prĤbČh)
- 46 -
5 Hardware kamery ZCAM FRAME_VALID
Signál FRAME_VALID (VSYNC): nábČžná hrana oznaþuje zaþátek snímku, sestupná konec snímku. Kladný pulz (vyþítání snímku): namČĜená hodnota 325ms/10=32.5ms (datasheet
32.51ms).
Záporný
pulz
(vertikální
zatemnČní):
namČĜená
hodnota
8.2ms/10=820us (datasheet 825.5us). BČhem vertikálního zatemnČní je LINE_VALID (HSYNC) v nule. Snímková frekvence byla zmČĜena 3 snímky/s * 10 = 30 (datasheet 30).
Obr. 5.9 – Signál FRAME_VALID (namČĜený prĤbČh)
Poznámka: NepĜesnost mČĜení šíĜky záporného pulzu LINE_VALID a FRAME_VALID je zpĤsobena malým þasovým rozlišením, pĜi vČtším rozlišení by nemohl být na obrazovce osciloskopu zobrazen kladný pulz.
5.3.3 Reakce senzoru na osvČtlení Na nČkterém z vyšších bitĤ datové sbČrnice lze sledovat (osciloskopem nebo voltmetrem) zmČnu jeho hodnoty pĜi zatemnČní a odtemnČní senzoru. Poznámka k vyþítání obrazu ze senzoru: platná data jsou pouze bČhem záporného pulzu signálu PIXCLK a zároveĖ kladného pulzu signálu LINE_VALID.
- 47 -
5 Hardware kamery ZCAM
5.4 ýasování senzoru Senzor MT9M001 je vybaven elektronickou závČrkou typu Rolling shutter, nastavení požadované doby závČrky je tedy nároþnČjší než u typu Global shutter. ýasování senzoru je závislé na frekvenci hodinového signálu senzoru, ale také na obsahu jeho pČti 16-ti bitových registrech. Dva z pČti registrĤ jsou poþet ĜádkĤ a poþet sloupcĤ obrazového snímku – tyto hodnoty vČtšinou nechceme pro dosažení požadované doby závČrky mČnit. Další dva registry jsou registry horizontálního a vertikálního zatemnČní – v obecném pĜípadČ pak dostaneme pro výpoþet požadované doby závČrky jednu rovnici o dvou neznámých. V konkrétním pĜípadČ si však nemusejí být obČ neznámé zcela rovnocenné – napĜ. v pĜípadČ pĜenosu snímku sbČrnicí mohou být jejich velikosti omezeny parametry pĜenosového kanálu. Pátým registrem je registr závČrky, ten je však platný pouze v pĜípadČ, že je obrazový snímek vyþten ze senzoru ještČ pĜed uplynutím doby závČrky. Níže je uveden skript pro výpoþet doby závČrky na základČ pĜíslušných registrĤ senzoru a jeho taktovacím signálu (na pĜiloženém CD je k dispozici souborem M-file programu Matlab).
- 48 -
5 Hardware kamery ZCAM
5.5 Modul kamery Kamera ZCAM byla zabudována do kompaktního modulu o velikosti 70×70×28. Využívat jí lze s objektivy typu C nebo CS (po doplnČní mezikroužkem 5mm). Ve spodní þásti modulu kamery jsou vytvoĜeny závity 2xM3 a W¼“ pro snadné pĜipevnČní kamery na stativ. Kamera Full ZCAM (Obr. 5.10) je na rozdíl od kamery Lite ZCAM (Obr. 5.11) vybavena OLED displejem a ovládacími tlaþítky. Konektor I2C sbČrnice pro pĜipojení Ĝídící nebo rozšiĜující desky je pĜítomen na obou typech kamer. ObČ kamery lze využívat jako USB kamery i jako SMART kamery (kameru Lite ZCAM pouze v omezeném režimu). Obr. 5.10 – Kamera Lite ZCAM
Obr. 5.11 – Kamera Full ZCAM
- 49 -
5 Hardware kamery ZCAM
5.6 Uživatelské rozhranní kamery Full ZCAM Uživatelské rozhranní plní neocenitelnou službu, pokud není ke konfiguraci kamery pĜítomen PC s konfiguraþním softwarem. V pĜípadČ, že uživatel nevyžaduje náhled celého obrazu kamery, jsou možnosti konfigurace kamery prostĜednictvím uživatelského rozhranní naprosto totožné s možnostmi konfiguraþního softwaru. Kameru Full ZCAM je také možné zcela autonomnČ využívat díky zabudovanému displeji k mČĜícím úþelĤm.
Schéma uživatelského rozhranní (Obr. 5.12) je rozdČleno na dvČ skupiny stránek (hlavní a konfiguraþní). Hlavní stránka pĜináší náhled probíhajícího mČĜícího procesu. Konfiguraþní stránky slouží k nastavování parametrĤ kamery.
Kamera v režimu konfigurace nemČĜí, pokud je souþástí regulaþního systému, vysílá nadĜazené jednotce signál, aby byl zastaven regulaþní proces. PĜechod mezi jednotlivými stránkami je možný dlouhým stiskem tlaþítka BTN1, dlouhý stisk BTN2 pĜepíná mezi aktivními videoĜádky kamery (aktivní videoĜádky jsou takové videoĜádky, které jsou využívány k mČĜení). Krátké stisky BTN1 a BTN2 slouží pro nastavení konkrétního parametru dané stránky.
Obr. 5.12 – Výhody Smart kamery ZCAM v plné verzi + uživatelské rozhranní
- 50 -
5 Hardware kamery ZCAM 5.6.1 Hlavní stránka
Hlavní stránka (Obr. 5.13) uživatelského rozhranní dČlí OLED display na 4 sekce (od shora dolĤ). První sekce zobrazuje prahovaný videosignál Ĝádku. Ve druhé sekci jsou zobrazeny kurzory, kterými je možné vybrat (pomocí tlaþítek) libovolné hrany Ĝádku (napĜíklad hrany mČĜeného objektu). TĜetí sekce zobrazuje informace o zvoleném Ĝádku – typ Ĝádku (A nebo B), þíslo Ĝádku v rámci obrazového senzoru (Obr. 5.13 ukazuje 512 a 136) a poþet nalezených hran v Ĝádku (napĜ. v Ĝádku A jsou 2, v Ĝádku B jich je 6). ýtvrtá sekce ukazuje namČĜené hodnoty vztažené k þásti Ĝádku vybraného kurzory ve druhé sekci – stĜed výbČru (objektu) a šíĜka výbČru (objektu).
S kamerou tak lze jednoduše provádČt základní videometrická mČĜení bez nutnosti reprezentace dat v PC nebo v jiném pĜídavném zaĜízení. DĤležité je si uvČdomit, že ke zpracování signálu a pĜenosu následnČ zpracovaných dat do Ĝídící jednotky dochází pouze pokud je na kameĜe navolena Hlavní stránka, ostatní stránky slouží pouze jako konfiguraþní.
Obr. 5.13 – Hlavní stránka (Ĝádek A a Ĝádek B)
5.6.2 Konfiguraþní stránky
Stránka prahování V náhledu
nezpracovaného
signálu
Ĝádku je zobrazena þára pĜedstavující aktuální nastavený práh, pomocí tlaþítek lze prahovací þáru libovolnČ posouvat. Nastavení prahu probíhá
on-line,
nevyžaduje
tedy
žádné
dodateþné potvrzení nebo uložení nastavené hodnoty.
- 51 -
Obr. 5.14 – Konfiguraþní stránka - prahování
5 Hardware kamery ZCAM Stránka zesílení a další stránky stejného formátu V náhledu nezpracovaného signálu Ĝádku je zobrazena hodnota odpovídající aktuálnímu nastavenému zesílení, pomocí tlaþítek lze zesílení libovolnČ mČnit. OpČt se vše dČje on-line - v reálném þase lze sledovat všechny následky, které zesílení na podobu videosignálu má. Stejným zpĤsobem funguje i Stránka Ĝádek a Stránka závČrka. NapĜíklad v pĜípadČ Stránky Ĝádek lze snadno vyhledat Ĝádek, ve kterém se nachází mČĜený objekt – bez nutnosti pĜipojovat kameru k PC a Ĝádek hledat
v náhledu
obrazu
prostĜednictvím
konfiguraþního softwaru kamery.
Obr. 5.15 – Konfiguraþní stránka - zesílení
5.7 Demonstrace kamery ZCAM V rámci testování správné funkþnosti kamery ZCAM byl vytvoĜen jednoduchý regulaþní systém (Obr. 5.16). Vstupem systému je úhel natoþení kamery, výstupem poloha jezdce. Nebo-li jezdec zaujímá takovou polohu, aby byl neustále ve stĜedu zorného pole kamery. Regulaþní smyþka systému (Obr. 5.17) ukazuje, že celý systém je kompletnČ Ĝízen samotnou kamerou, což je velmi neefektivní, ale pro názornou ukázku schopností kamery zcela dostaþující. NamČĜené þasy jednotlivých blokĤ regulaþní smyþky dávají jistou pĜedstavu o rychlosti systému. Nutné je však zdĤraznit, že systém byl zcela neoptimalizovaný, jeho hlavním cílem byla pouze demonstrace funkþnosti kamery. Videoukázku regulaþní systému lze shlédnout v [31].
Obr. 5.16 – Jednoduchý regulaþní systém s kamerou ZCAM
- 52 -
Obr. 5.17 – Regulaþní smyþka
6
Kamera ZCAM jako mČĜící USB kamera Kamera ZCAM jako mČĜící USB kamera zastává funkci „generátoru“ snímkĤ
s následným pĜenosem do pamČti poþítaþe prostĜednictvím PC programu ZCAM Interface. Konfigurace obrazového senzoru (vþetnČ konfigurace Smart kamery) je zajištČna konfiguraþní þástí programu. ZCAM Interface nabízí zpracování snímkĤ aplikací nČkolika obrazových funkcí, komplexní analýzu videosignálu vybraných ĜádkĤ a v neposlední ĜadČ také mČĜící funkce s vysokým rozlišením využívající lineární interpolace.
Jak již bylo naznaþeno, podstata tohoto typu kamery je ukryta v PC softwaru, který umožĖuje vhodným zpĤsobem zpracovat obrazové snímky a následnČ reprezentovat výsledky mČĜení. Jelikož je úroveĖ kamery ZCAM daná vývojem popsaným pĜedchozími kapitoly dostaþující, budu se zabývat pouze PC softwarem ZCAM Interface.
Pozn.:
Program
ZCAM
Interface
vychází
z první
(„bakaláĜské“) verze programu USB Video Interface (viz. kapitola 3), nebudu se tedy nČkterými detaily „podČdČných“ funkcí zabývat, jsou k dispozici v [5].
6.1 Popis programu ZCAM Interface Program je rozdČlen do tĜech stránek: 1D Video, 2D Video a Camera Setup. Jelikož je kamera ZCAM vybavena plošným senzorem, je za hlavní stránku považována stránka 2D Video, která obsahuje ovládací prvky pro inicializaci kamery.
Obr. 6.1 – Stránka 2D Video, panel Control
- 53 -
6 Kamera ZCAM jako mČĜící USB kamera
6.1.1 Stránka 2D Video Stránka 2D Video je tvoĜena tĜemi panely: Control (obr 6.1), Image, Measurement.
Panel
Control
obsahuje
tlaþítko
pro
inicializaci kamery, po stisku tohoto tlaþítka je kamera pĜipojena do systému. V bloku Video Stream lze odstartovat tok obrazových snímkĤ z kamery
do
poþítaþe.
Blok
Video
Refresh
umožĖuje spustit vykreslování snímkĤ v hlavním zobrazovaþi stránky, vþetnČ prodlevy mezi dvČma snímky. Blok Info zobrazuje þas a rychlost pĜenosu snímku z kamery do poþítaþe, a také udává obnovovací snímkovou rychlost. Blok Data Output Mode umožĖuje nastavit obrazový senzor do testovacího módu, kdy je místo obrazového snímku pĜenášen z kamery do poþítaþe senzorem umČle generovaný
testovací
obrazec.
Blok
Image
Processing (obr. 6.2) nabízí nČkolik možností zpracování obrazu v reálném þase. Jedná se o negativ snímku, prahování snímku s volitelnou hodnotou prahu a hranování snímku pomocí algoritmu Laplacian of Gaussian. V bloku Image Save je vytvoĜeno rozhraní pro ukládání snímkĤ, jejichž náhled je zobrazován v panelu Image v redukovaném ukládaných
rozlišení
snímkĤ
je
960×768.
Rozlišení
1280×1024×8bit
(plné
rozlišení).
Panel Measurement nabízí nČkolik možností mČĜení s využitím zvolených videoĜádkĤ. Jedná se o mČĜení šíĜky objektu, polohy objektu a orientace
- 54 -
Obr. 6.2 – Image Processing: normal, negative, threshold, edge
6 Kamera ZCAM jako mČĜící USB kamera objektu (úhel osy objektu vĤþi kolmici na videoĜádek). Rozlišitelnost mČĜení je zvýšena lineární interpolací. Pro mČĜení v délkových jednotkách je vestavČn blok Calibration, který je schopný vypoþítat kalibraþní konstantu na základČ zvoleného kalibraþního obrazce a jeho známého rozmČru. VýbČr videoĜádkĤ se provádí pĜímo v panelu Image pomocí posuvných prvkĤ, ty umožĖují i výbČr konkrétního objektu v rámci Ĝádku. Na stránce 1D Video, jsou pĜítomny rozšiĜující funkce pro pĜedzpracování videosignálu Ĝádku. Aktivace mČĜení probíhá též na stránce 1D Video, kde je nutné spustit Line Refresh mód.
6.1.2 Stránka 1D Video Stránka 1D Video obsahuje bloky pro pĜedzpracování videosignálu vybraného Ĝádku a panely Pixel Matching, Graphs a Edges. Bloky pro pĜedzpracování videosignálu Ĝádku umožĖují nastavit prĤmČrování videosignálu v rozsahu 1× až 400× (až 20-ti násobná redukce šumu) a digitální filtraci videosignálu (obr, 6.3). Digitální filtr je typu vážený prĤmČr, váhovat lze až 8 sousedních pixelĤ. Algoritmus digitálního filtru je následující:
y( N ) = N
1 j+k
Obr. 6.3 – Blok prĤmČrování a digitálního filtru
N +k
¦ x(i ) *V (i ) , kde
(6.1)
i=N − j
-
þíslo oznaþující pozici vzorku ve vstupním nebo výstupním signálu filtru
y(N)
-
N-tý vzorek výstupního signálu filtru
i
-
rozdíl mezi pozicí vzorku vstupního signálu a pozicí vzorku výstupního signálu
x(i)
-
(N+i)-tý vzorek vstupního signálu filtru
j
-
poþet vzorkĤ vstupního signálu pĜedcházející N-tému vzorku, ze kterých se poþítá hodnota vzorku výstupního signálu
k
-
poþet vzorkĤ vstupního signálu následující za N-tým vzorkem, ze kterých se poþítá hodnota vzorku výstupního signálu
V(i)
-
váha (N+i)-tého vzorku vstupního signálu.
- 55 -
6 Kamera ZCAM jako mČĜící USB kamera Videosignál Ĝádku lze ukládat formou dat jako textový soubor nebo ve formČ grafického zobrazení do souboru typu bmp. Velkou þást panelu Graphs zaujímá
zobrazovaþ
videosignálu
Ĝádku. Možnosti zobrazení videosignálu jsou široké. VolitelnČ lze zobrazovat až 3 kanály (obr. 6.4), z nichž jeden je vlastní videosignál Ĝádku a zbývající dva jsou využity pro
Obr. 6.4 – Blok konfigurace zobrazení videosignálu Ĝádku
1. a 2. diferenci videosignálu. Všechny 3 kanály lze prahovat, hodnota prahu je volitelná. Videosignál Ĝádku lze navíc hranovat pomocí prahované 1. diference tohoto signálu. Tzn. hrany videoĜádku lze zobrazit buć pomocí prahování nebo s využitím 1. diference. Aproximaci videosignálu mezi jednotlivými pixely je možné volit lineární nebo „schodovitou“.
DoplĖkové zobrazení
možnosti
videosignálu
jsou
ZOOM v obou osách, 2D/3D zobrazení,
zrcadlení
a
zvýraznČní diskrétních hodnot jednotlivých pixelĤ videosignálu.
Obr. 6.5 – Blok rozhranní kurzorĤ zobrazovaþe videoĜádku
Souþástí panelu Graphs je také rozhranní pro ovládání kurzorĤ zobrazovaþe (obr. 6.5) vþetnČ oken informujících o vlastnostech þásti videosignálu vybraného kurzory. Panel Edges vypisuje polohy hran nalezených pomocí prahování a 1. diference videosignálu. V pĜípadČ hran získaných prahováním lze pro zvýšení rozlišitelnosti volit lineární interpolaci.
Panel Pixel Matching umožĖuje zobrazení jasu dvou vybraných pixelĤ videoĜádku v þase. OpČt je k dispozici lineární nebo „schodovitá“ aproximace a zoom v obou osách.
- 56 -
6 Kamera ZCAM jako mČĜící USB kamera
6.1.3 Stránka Camera Setup Stránka Camera Setup (obr. 6.6) obsahuje konfiguraþní rozhranní pro nastavování dĤležitých parametrĤ kamery. Souþástí rozhraní je informaþní okno s podrobným popisem provádČné konfigurace.
V bloku Camera Mode lze kameru nastavit jako USB kameru nebo jako Smart kameru. Blok Smart Camera Function slouží pro pĜidČlení konkrétní mČĜící funkce Smart kameĜe (viz. kapitola 11.3).
Ostatní bloky lze využívat jak pro USB kameru tak i pro Smart kameru. Soubor blokĤ Numer of Rows, Global Gain a Intergration Time slouží pro nastavení stejnojmenných vlastností kamery, reps. obrazového senzoru kamery. PĜímý pĜístup do registrĤ obrazového senzoru je umožnČn pomocí bloku Direct access to registers.
Obr. 6.6 – Stránka Camera Setup
- 57 -
6 Kamera ZCAM jako mČĜící USB kamera
6.2 Demonstrace mČĜení s USB kamerou ZCAM Na stránce 2D Video aktivujeme kameru, nastartujeme pĜenos snímkĤ z kamery do PC a obnovování náhledu videa. Na stránce 1D Video spustíme zpracovávání videoĜádkĤ urþených k mČĜení (Line Refresh). Volbu konkrétních ĜádkĤ provádíme na stránce 1D Video v Ĝádkovém náhledu nebo stránce 2D Video ve snímkovém (mnohoĜádkovém) náhledu. Na stránce 1D Video máme možnost volby pĜedzpracování signálu mČĜících ĜádkĤ s využitím prĤmČrování a digitálního filtru. Baragrafy na obou stránkách „odpoþítávají“ mČĜící cykly, pĜi zmČnČ zpracování videosignálu je nutné vyþkat než se baragraf naplní, to je nutné zejména pĜi použití prĤmČrování z velkého poþtu vzorkĤ videosignálu.
Na stránce 2D Video máme možnost výbČru mČĜeného objektu, který se nachází ve zvolených mČĜících Ĝádcích. Vybraný objekt je oznaþen pĜímo v náhledu snímku. Pokud chceme výsledky mČĜení zobrazovat pĜímo v délkových jednotkách, první mČĜení provedeme nad kalibraþním objektem se známým rozmČrem. RozmČr objektu napíšeme do bloku Calibration a po uplynutí mČĜícího cyklu stiskneme tlaþítko Calibrate. Program vypoþítá pĜevodní konstantu, kterou bude používat pro reprezentaci výsledkĤ mČĜení v délkových jednotkách. NamČĜené hodnoty jsou k dispozici v rámci bloku Measure Data.
6.2.1 Reprezentace výsledkĤ mČĜení Výsledky mČĜení jsou podrobnČ zobrazeny v bloku Measure data (obr. 6.7). Line Size1/2 udává rozmČr vybraného objektu v rámci prvního (þervený kurzor) a druhého (modrý kurzor) mČĜícího videoĜádku. Edge1/2 Angle oznaþuje úhly poþáteþní a koncové hrany objektu. Axe Angle je úhlem osy vybraného objektu. Všechny úhly jsou mČĜeny od kolmice k videoĜádku. Object Size1/2 udává korigovaný rozmČr objektu v rámci prvního a druhého mČĜícího videoĜádku. Korekce spoþívá v transformaci objektu takové, aby osa objektu byla kolmá na videoĜádek. Object Size udává „prĤmČrnou“ korigovanou velikost objektu. Tzn. že pro mČĜení rozmČrĤ se používají 2 mČĜící videoĜádky s cílem zpĜesnit mČĜení. Pro mČĜení orientace (úhlĤ) objektu je použití dvou mČĜících ĜádkĤ nutnost.
- 58 -
6 Kamera ZCAM jako mČĜící USB kamera Obrázky 6.7, 6.8, 6.9 byly vytvoĜeny v rámci demonstraþního mČĜení. Kalibrace byla provedena na 50mm þerném pruhu (þísla na horní þásti pruhĤ udávají jeho šíĜku). MČĜením 20mm þerného pruhu byla jeho šíĜka stanovena na 19,9763mm (viz obr. 6.7). Rozlišitelnost výsledku mČĜení samozĜejmČ pĜesahuje poþet jeho platných desetinných míst. PĜi použití prĤmČrování, lineární interpolace, 8bitového rozsahu jasĤ a s využitím plného rozkmitu videosignálu (þerná - bílá) se pĜesnost mČĜení pohybuje v rozsahu nČkolika setin pixelĤ. Tzn. namČĜená hodnota 19,9763mm byla zmČĜena s nejistotou pĜibližnČ 10μm. Nejistota mČĜení samozĜejmČ nepostihuje rozdílnou vzdálenost kalibraþního a mČĜeného objektu od obrazového senzoru kamery (mČĜení nebylo provádČno na kalibrovaném pracovišti).
Obr. 6.7 – Blok Measure Data, zobrazení výsledkĤ mČĜení
Obr. 6.8 – Stránka 1D Video, demonstraþní mČĜení
- 59 -
6 Kamera ZCAM jako mČĜící USB kamera
Obr. 6.9 – Stránka 2D Video, demonstraþní mČĜení
- 60 -
7
Kamera ZCAM jako Smart kamera Standardní prĤmyslové smart kamery slouží primárnČ pro získání obrazu, jeho
zpracování a následnou lokální signalizaci a pĜedání výsledkĤ mČĜení nadĜazenému systému. Výsledkem mČĜení je urþitá vlastnost objektĤ v obrazovém poli kamery, napĜíklad poþet objektĤ, rozmČr objektĤ, pozice objektĤ, orientace objektĤ, rychlost objektĤ, atd.
NamČĜené vlastnosti objektĤ mohou být nejprve lokálnČ signalizovány pĜímo samotnou kamerou. Toho se využívá napĜíklad pro manuální obsluhu mČĜení (napĜ. sestavení/kalibrace mČĜícího systému, jednoúþelový námČr vlastností objektĤ, atd.) nebo pro lokální hlášení chybových stavĤ, kdy je znemožnČno provádČt mČĜení s dostateþnou pĜesností (napĜ. nevyhovující osvČtlení v zorném poli kamery, rychle pohybující se objekty, atd.).
NamČĜené vlastnosti objektĤ jsou dále pĜedávány nadĜazenému systému, který na nČ reaguje takovým zpĤsobem, aby vlastnosti objektĤ dosáhly vlastností požadovaných. NapĜíklad: nevyhovující rozmČr objektu – vyĜadit objekt, nevyhovující orientace objektu – objekt natoþit do správné pozice, nevyhovující rychlost objektu – zvýšit rychlost objektu, atd. Pokud nadĜazený systém není schopen dosáhnout požadovaných vlastností objektĤ, hlásí tuto skuteþnost obsluze – poruchový stav.
Úlohy nadĜazeného systému je možné pĜevést i na samotnou kameru, to mĤže být výhodné (zejména cenou mČĜícího systému) v pĜípadČ systémĤ, které lze rozdČlit na autonomní podsystémy (na výsledky mČĜení jednotlivých kamer lze reagovat oddČlenČ) a u kterých není hlavním požadavkem rychlost mČĜení vlastností objektĤ nebo rychlost následné reakce (regulace). Ve všech ostatních pĜípadech je výhodné (zejména z dĤvodu snadného rozšíĜení systému o další kamery nebo pouze funkce) použít nadĜazený systém.
Kamera jako element nadĜazeného systému má pouze funkci senzoru, všechny kamery mohou mít stejné hardwarové a programové vybavení - mČĜené vlastnosti objektĤ jsou standardizovány a pĜedávány nadĜazenému systému, který na nČ vhodným zpĤsobem reaguje. Sestavení nového mČĜícího systému pak spoþívá pouze ve zmČnČ programu nadĜazeného systému a konfiguraci senzorĤ - kamer.
- 61 -
7 Kamera ZCAM jako Smart kamera
7.1 Definice objektu Objekt má vĤþi svému okolí (pozadí) specifický jas (oznaþení BO). Objekt je jasnČ vymezen svou poþáteþní a koncovou hranou. Hrany jsou urþeny prahováním zvoleného Ĝádku videosignálu. Pro každou hranu je uchována informace umožĖující pĜesnČjší urþení hrany pomocí interpolace. Tato informace se skládá z jasové hodnoty interpolované hrany (prahovací úroveĖ, oznaþení BT) a jasové hodnoty dvou pixelĤ, mezi kterými se nachází interpolovaná hrana (oznaþení BT1 a BT2). Interpolace hran bude provádČna nadĜazeným systémem, pokud nastane potĜeba zvýšit rozlišení mČĜení.
7.2 Definice hran objektu Hrana je definována dvČma pixely (oznaþení PT1 a PT2), mezi kterými se nachází skuteþná hrana a pĜíslušnými jasovými hodnotami (BT1 a BT2). Pro odlišení hran v pozadí/popĜedí je definována min. strmost hrany (oznaþení ΔBD). Pro odlišení objektu od okolí/pozadí je definován binární jas objektu (oznaþení BO).
Obr. 7.1 – Hrana reálného objektu s popisem dĤležitých parametrĤ
- 62 -
7 Kamera ZCAM jako Smart kamera
7.3 Hledání hran a objektĤ v obraze Hledání hran -
pomocí BT hledáme PT1, PT2, BT1 a BT2 a testujeme na ΔBD
-
každá hrana je urþena pomocí PT1, PT2, BT1 a BT2
Hledání objektĤ - pomocí nalezených hran a BO hledáme objekty - každý objekt je urþen pomocí 2 hran
Poznámka: Hledání objektĤ již mĤžeme považovat za úlohu, kterou je možné pĜeložit do kompetence nadĜazeného systému. Redukce obrazových dat na data popisující hrany objektĤ je obvykle dostateþnČ velká a kamera jako systém si zachovává vČtší abstrakci.
7.4 Omezení pro výskyt objektĤ v obrazovém poli Max. poþet rozlišitelných objektĤ v obrazovém poli je dán vzorkovací vČtou MAPO =
PPS , kde 2
(7.1)
MAPO
………..
je MAximální Poþet ObjektĤ v obrazovém poli,
PPS
………..
je poþet aktivních pixelĤ Ĝádku senzoru
Vzorkovací vČtou je také stanoven minimální rozmČr objektu ve smČru Ĝádku MIRO =
z * RPM , kde f2
(7.2)
MIRO
………..
je MInimální RozmČr Objektu
RPM
………..
je RozmČr Pixelu vþetnČ mezipixelové Mezery
f
………..
je ohnisko objektivu
z
………..
je vzdálenost objektu od pĜedmČtového ohniskové roviny
Hodnota MIRO také omezuje minimální vzdálenost mezi 2 objekty v obrazovém poli.
- 63 -
7 Kamera ZCAM jako Smart kamera Minimální hodnota ‘z‘ je urþena maximálním výtahem objektivu z min =
f2 , kde z ' max
(7.3)
f
………..
je ohnisko objektivu
z 'max
………..
je maximální výtah objektivu
z min
………..
je minimální vzdálenost objektu od pĜedmČtové ohniskové roviny
PĜepoþet ‘z‘ na vzdálenost objektu od montážní roviny objektivu ‘d‘ d = z +2f + kde
f2 z
(7.4)
z
………..
je vzdálenost objektu od pĜedmČtového ohniskové roviny
d
………..
je vzdálenost objektu od montážní roviny objektivu
f
………..
je ohnisko objektivu
RozmČr ‘d‘ je fyzicky jednodušeji mČĜitelný.
DĤsledky nesplnČní vzorkovací vČty NesplnČní MIRO pro rozmČr objektu: objekt nebude detekován. NesplnČní MIRO pro mezeru mezi dvČma objekty: 2 objekty budou detekovány jako 1.
- 64 -
7 Kamera ZCAM jako Smart kamera
PĜíklad: Kamera ZCAM (RPM = 5.2μm), objektiv Tevidon 1.4/25 (f = 25mm, z 'max = 17.52mm)
Závislost MIRO na vzdálenosti objektu "d"
0.9 0.8 0.7
MIRO[mm]
0.6 0.5 0.4 0.3 0.2 0.1 0
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
d[m] Obr. 7.2 – Závislost MIRO na vzdálenosti objketu “d“
Se zvyšujícím se poþtem objektĤ vzrĤstá výpoþetní (þasová) i pamČĢová nároþnost urþení vlastností objektĤ. Pokud je poþet objektĤ vČtší než jeden, musíme v obecném pĜípadČ poþítat s možností vzájemného pĜekrytí nebo úplného zaclonČní objektĤ (Ĝešit zvlášĢ situaci, kdy k pĜekrytí nebo zaclonČní objektu mĤže dojít a kdy nemĤže dojít, se nezdá být efektivní). Max. poþet objektĤ (hran) v zorném poli mĤže být z výše uvedených hledisek omezen. Detekce pĜekroþení poþtu objektĤ/hran pak mĤže být signalizována jako nevyhovující podmínka mČĜení.
- 65 -
7 Kamera ZCAM jako Smart kamera
7.5 Standardní datový výstup smart kamery Aby byla smart kamera univerzálnČ použitelná s libovolnou jednotkou nadĜazeného systému, musí mít standardnČ definovaný datový výstup. Dobrým kompromisem mezi velikostí pĜenášených dat (v krajním pĜípadČ pĜenos celého obrazu) a dostateþnou abstrakcí významu obrazových dat se zdají být informace o vyskytujících se hranách (viz Obr. 7.1).
Data hrany pĜenášená do nadĜazené jednotky -
BT – jasová hodnota prahu (mĤže být shodná pro všechny hrany)
-
PT2 – þíslo pixelu ležícího napravo od prĤseþíku prahu a videosignálu
-
BT2 – jas pixelu PT2
-
BT1 – jas pixelu ležícího nalevo od prĤseþíku prahu a videosignálu
Pokud má smart kamera plnit souþasnČ nČjaké autonomní funkce (napĜ. sama Ĝídí nČjaký systém nebo slouží jako uživatelský mČĜící pĜístroj), potom sama využívá informací o hranách k analýze výskytu objektĤ a výpoþtu jejich vlastností (rozmČr, úhel natoþení, rychlost atd…). PĜíkladem mĤže být mČĜení polohy a šíĜky vybraného objektu a následná pĜímá vizualizace uživateli (viz Obr. 7.3)
Obr. 7.3 – Smart kamera jako autonomní mČĜidlo
- 66 -
7 Kamera ZCAM jako Smart kamera
7.5.1 Standardní datový paket Standardní datový paket smart kamery je zobrazen na obr. 7.4. Jeho velikost je promČnná, závislá na poþtu nalezených hran v obou aktivních Ĝádcích (parametr „n“ – obr. 7.4). Blok „Adresa pĜíjemce“ oznaþuje adresu Ĝídící jednotky (aktuálnČ je pevnČ stanovená, v budoucnu by bylo možné jí mČnit pomocí konfiguraþního softwaru kamery). Blok „Poþet byte paketu“ udává velikost následujících dat vþetnČ velikosti tohoto bloku. Minimální velikost paketu je 10B (pokud není ani v jednom z aktivních ĜádkĤ nalezena hrana). Maximální velikost paketu je 138B (pokud je v obou aktivních Ĝádcích nalezen maximální poþet hran = 2×16). Podblok „UmístČní kurzoru Ĝádku“ udává þíslo hrany, na kterou byl nastaven kurzor v rámci vestavČného uživatelského rozhranní kamery Full ZCAM. Oba kurzory slouží pro výbČr poþáteþní a koncové hrany objektu, defaultnČ je vybrán 1. objekt videoĜádku (to platí i pro kameru Lite ZCAM). Možnost výbČru objektu videoĜádku je primárnČ vyžívána pro autonomní mČĜící funkce.
Obr. 7.4 – Standardní datový paket smart kamery
- 67 -
7 Kamera ZCAM jako Smart kamera
7.6 Vlastnosti smart kamery Kamera využívá aktivnČ 2 vybrané Ĝádky CMOS senzoru. VýbČr konkrétních ĜádkĤ probíhá prostĜednictví konfiguraþního PC softwaru nebo v pĜípadČ kamery Full ZCAM pĜímo pomocí vestavČného uživatelského rozhranní. V budoucnu pĜipadá v úvahu také možnost skenování všech ĜádkĤ CMOS senzoru (nebo pouze urþité vybrané skupiny ĜádkĤ) a následný výbČr aktivních ĜádkĤ na základČ požadovaných vlastností objektĤ (hran) v daném Ĝádku. Pro snazší pĜizpĤsobení podmínkám mČĜení je v kameĜe aplikován algoritmus automatické doby závČrky, který umožĖuje provozovat kameru i v prostĜedích s promČnlivým osvČtlením. Hlavním rysem automatické doby závČrky v kameĜe ZCAM je možnost využití rĤzné doby závČrky pro každý z aktivních ĜádkĤ, to umožĖuje sledovat v každém z ĜádkĤ objekty s ĜádovČ rozdílným jasem (napĜ. pasivní reflexní objekty a aktivní zdroje záĜení).
7.6.1 Algoritmus automatické doby závČrky Doba závČrky každého Ĝádku se automaticky reguluje od 1ms do 100ms podle velikosti osvČtlení obrazové roviny. Pokud je senzor nedostateþnČ osvČtlen, nová doba závČrky se spoþítá v jednom kroku. Pokud je senzor pĜesvČtlen, doba závČrky se v každém kroku snižuje o 2% aktuální hodnoty.
Pro dosažení vČtší robustnosti mČĜení je zámČrnČ urþité množství pixelĤ udržováno ve stavu pĜesvČtlení. To samozĜejmČ omezuje vlastnosti snímaných objektĤ a jejich pozadí. V pĜípadČ, že se obraz (mČĜené detaily) skládá ze dvou barev, mezi kterými je velký rozdíl v odrazivosti záĜení (napĜ. þerná a bílá), dochází vlivem zámČrného pĜesvČtlování pixelĤ k efektu prahování již v samotném videosignálu Ĝádku. MČĜení je pak více imunní ke zmČnČ osvČtlení zpĤsobené blikáním osvČtlovaþĤ (100Hz) a šumu, který je na videosignál zavleþen jeho zpracováním (zejména digitalizace) pĜímo na þipu senzoru. Daní za robustnost je snížení rychlosti mČĜení zpĤsobené vyšší dobou závČrky (max. jednotky % - závisí na rovnomČrnosti osvČtlení obrazové roviny).
- 68 -
7 Kamera ZCAM jako Smart kamera
7.6.2 Rychlost mČĜení Doba námČru obou aktivních ĜádkĤ t M = 2(t SHA + t SHB ) , kde
(7.5)
t SHA
………..
doba závČrky Ĝádku A
t SHB
………..
doba závČrky Ĝádku B
Maximální frekvence mČĜení f M max =
1 t M min
=
1 = 250 Hz 2(1ms + 1ms )
(7.6)
Minimální frekvence mČĜení
f M min =
1 t M max
=
1 ≈ 5Hz 2(100ms + 1ms )
(7.7)
Je zĜejmé, že þím bude vČtší osvČtlení obrazové roviny, tím se bude rychleji mČĜit.
7.6.3 Mód obrazového CMOS senzoru Obrazový CMOS senzor nabízí nČkolik možností konfigurace ve smyslu organizace
ĜádkĤ a sloupcĤ snímku. Optimální je najít takovou konfiguraci snímku, která umožní programovČ jednoduché a zároveĖ dostateþnČ rychlé snímání aktivních ĜádkĤ.
PrvotnČ navrhovaný mód obrazového senzoru První návrh námČru ĜádkĤ byl takový, že se senzor nakonfiguruje na mód snímání každého 8-mého Ĝádku (vČtší krok není možný), procesor bude poþítat aktuálnČ vyþítané
Ĝádky senzoru a podle toho bude nastavovat pĜíznak zápisu Ĝádku do FIFO pamČti.
- 69 -
7 Kamera ZCAM jako Smart kamera Použitý mód obrazového senzoru Senzor je nastaven na snímání jednoĜádkového snímku (Obr. 7.4). V každém snímku se tedy mČĜí jeden Ĝádek (cyklicky se stĜídá Ĝádek A ve snímku A s Ĝádkem B ve snímku B). Nutnost rekonfigurace senzoru po námČru každého Ĝádku zvyšuje dobu námČru (koeficient 2 ve vzorci 7.5) a snižuje tak maximální frekvenci mČĜení.
Výhody použitého módu proti prvotnČ navrhovanému módu Použitý mód pĜináší tyto výhody: a) vČtší maximální frekvence mČĜení (pouze jeden Ĝádek ve snímku proti 1024/8=128) b) odlišné nastavení doby závČrky pro Ĝádek A a Ĝádek B (každý Ĝádek je souþástí jiného snímku) c) za Ĝádek A nebo B lze volit libovolný Ĝádek senzoru – oba Ĝádky nemusejí být násobkem þísla 8 (krok vyþítání ĜádkĤ snímku pĤvodního módu) d) šetĜí þas procesoru – není nutné poþítat Ĝádky nebo þekat na konkrétní Ĝádek (snímek je tvoĜen pouze jedním Ĝádkem) Nevýhody použitého módu proti prvotnČ navrhovanému módu Žádné nevýhody nebyly zjištČny, namČĜený signál v použitém módu se zdá být stejnČ kvalitní jako namČĜený signál v prvotnČ navrhovaném módu.
Obr. 7.5 – JednoĜádkový mód CMOS senzoru, CH1 - Frame_Valid, CH2 - Line_Valid
- 70 -
7 Kamera ZCAM jako Smart kamera
7.6.4 Analýza namČĜených ĜádkĤ Signál obou aktivních ĜádkĤ (oznaþení A a B) je prahován. Hodnotu prahu je možné mČnit pomocí ovládacích tlaþítek kamery. U hran získaných prahováním je posuzována jejich strmost v rámci pĤvodního signálu. Pokud je nedostateþná, jsou hrany oznaþeny jako „rušivé“. K dalšímu zpracování se uchovávají pouze hrany „pravé“, takové které mají v namČĜeném signálu dostateþnou strmost. Seznam „pravých“ hran ĜádkĤ A a B a další dĤležité informace (viz. kapitola 7.5) jsou odeslány do Ĝídící jednotky zároveĖ mohou také sloužit jako vstupní data pro autonomní funkce kamery.
7.6.5 Nastavení objektivu kamery Uživatel pĜepne kameru do módu, kdy se na displeji kamery zobrazuje signál Ĝádku a velikost aktuálnČ nastavené doby závČrky. Objektiv se zaostĜí tak, aby hrana objektu byla tvoĜena co nejmenším poþtem pixelĤ. Clona objektivu se nastaví tak, aby aktuálnČ použitá/zobrazená doba závČrky umožĖovala regulaci jasu signálu v prostĜedí promČnného osvČtlení.
Pokud neznáme velikost zmČny osvČtlení v prostĜedí je nejjednodušší nastavit clonu objektivu tak, aby použitá/zobrazená dobu závČrky byla 10ms. V tomto pĜípadČ je kamera schopná fungovat v prostĜedí s až 10x menším a s až 10x vČtším osvČtlením proti osvČtlení v dobČ nastavování clony objektivu (doba závČrky se Ĝídí automaticky od 1ms do 100ms). Je však nutné si uvČdomit, že þím bude vČtší doba závČrky, tím bude kamera mČĜit pomaleji. Rychlost mČĜení se muže snížit i na hodnotu, pĜi které bude muset být snížena i rychlost regulaþního systému (to je v kompetenci Ĝídící jednotky).
- 71 -
8
PracovištČ pro vývoj a testování mČĜících metod (PVTM) PVTM poskytuje zázemí pro vývoj a testování komplexních mČĜících úloh. MČĜící
kamera (napĜ. ZCAM) je zde definována jako smart kamera. Hlavním úkolem smart kamery je získat obrazová data, zpracovat je standardnČ definovaným zpĤsobem a v pĜedepsaném formátu je pĜedat centrální Ĝídící jednotce. Tak jako teplomČr, senzor teploty, pĜedává Ĝídící jednotce údaj o teplotČ, tak smart kamera pĜedává Ĝídící jednotce údaje o vlastnostech objektĤ v obrazovém poli. Výstupem smart kamery není tedy jako v pĜípadČ standardní kamery obraz ale množina dat, která dČní v obraze charakterizuje. To umožĖuje jednoduše a pĜesto efektivnČ zaþlenit mČĜící kamery jako smart kamery i do komplexních systému a to v témČĜ neomezeném množství. Centrální Ĝídící jednotka sbírá a analyzuje data smart kamer a následnČ na výsledky analýzy definovanČ reaguje.
DĤležité prvky pracovištČ a) stativ s whitworthovým závitem pro usazení kamery ZCAM b) centrální Ĝídící jednotka s LCD displejem c) uživatelský ovládací panel d) lineární pojezd e) obrazová rovina s aktivními zdroji záĜení
Obr. 8.2 – Pohled kamery na pracovišti PVTM (foto z konfiguraþního PC softwaru)
- 72 -
8 PracovištČ pro vývoj a testování mČĜících metod (PVTM)
Obr. 8.3 – Foto pracovištČ – verze s bílým jezdcem a þerným pozadím
- 73 -
8 PracovištČ pro vývoj a testování mČĜících metod (PVTM)
8.1 Centrální Ĝídící jednotka PVTM Centrální Ĝídící jednotka (obr. 8.4) je postavena na mikropoþítaþi PIC24F, je vybavena konektory pro pĜipojení nezbytných periferií (napĜ. uživatelský panel), na vlastní desce je pĜímo integrovaný znakový LCD displej 20×4 a ovladaþ motoru. Hlavním úkolem centrální Ĝídící jednotky je sbČr dat na sbČrnici pĜipojených smart kamer a následné zpracování tČchto dat. Pokud je jednotka souþástí regulaþního systému, pak tento systém na základČ dat smart kamer Ĝídí. Pokud je jednotka souþástí mČĜícího systému, zpracovaná data zobrazuje jako výsledky mČĜení na LCD displeji. Kombinace obou zpĤsobĤ využítí je samozĜejmČ možná také. PĜipojení více smart kamer k Ĝídící jednotce umožĖuje napĜíklad snadnou realizaci stereo vidČní. K dalším úkolĤm Ĝídící jednotky PVTM patĜí Ĝízení polohy objektĤ v obrazovém poli (lineární pojezd) a také Ĝízení zdrojĤ záĜení umístČných v obrazovém poli (LED). Komunikace s uživatelem je umožnČna prostĜednictvím ovládacího panelu a LCD displeje.
Obr. 8.4 – Blokové schéma Ĝídící jednotky
- 74 -
9
Demonstrace regulaþního systému s PVTM V rámci vývoje algoritmĤ smart kamery byl vytvoĜen regulaþní systém, který umožĖuje
otestovat funkce smart kamery v komplexním mČĜítku. Parametry mČĜených objektĤ jsou velmi rĤznorodé, což je pro testování kamery zásadním mČĜítkem. MČĜí se objekty pohybující se, objekty v odlišným obrazových rovinách, objekty s ĜádovČ odlišným jasem pĜiþemž þásteþný lesk objektu není považován za nevyhovující podmínku mČĜení, to vše v podmínkách promČnného osvČtlení. Demonstrace regulaþního systému s PVTM byla prezentována na výstavČ Elektron 2011 v Praze (obr. 9.1).
Obr. 9.1 – Výstava Electron, stánek ýVUT, katedra mČĜení (zdroj http://measure.feld.cvut.cz)
- 75 -
9 Demonstrace regulaþního systému s PVTM
9.1 Popis regulaþního systému Jezdec pojezdu se cyklicky pohybuje z jedné krajní polohy pojezdu do druhé. Dráha jezdce je vybavena 3-mi LED, jejíchž poloha byla náhodnČ zvolena. Svit LED je ovládán uživatelem pomocí ovládacího panelu. Pokud jezdec projíždí pod jednou z LED (ve skuteþnosti se LED nacházejí ve vzdálené obrazové rovinČ) a ta svítí, musí zastavit na dobu nastavenou pomocí ovládacího panelu. Pokud LED nesvítí, jezdec pokraþuje nemČnnou rychlostí v pohybu.
9.2 Konfigurace smart kamery Využívají se oba aktivní Ĝádky plošného CMOS senzoru. Konkrétní Ĝádek se volí pomocí ovládacích tlaþítek kamery (nebo konfiguraþního PC softwaru). ěádek B je urþen pro sledování LED diod, Ĝádek A je urþen pro sledování pohybujícího se jezdce (Obr. 9.2 a 9.3). ěádek B má pevnČ nastavenou dobu závČrky na 1ms (deaktivace automatické doby závČrky). Jas svítící LED je dostateþný a zanedbatelnČ se mČní s okolním osvČtlením. Jas zhasnuté diody a jejího okolí je dostateþnČ malý i pĜi velkých hodnotách okolního osvČtlení.
Obr. 9.2 – MČĜící Ĝádek A (Ĝádek jezdce), graf z konfiguraþního softwaru
- 76 -
9 Demonstrace regulaþního systému s PVTM
Obr. 9.3 – MČĜící Ĝádek B (Ĝádek LED), 1. a 3. LED svítí, 2. LED nesvítí, graf z konfiguraþního softwaru
9.3
Funkce Ĝídící jednotky
9.3.1 Interakce uživatele a regulaþního systému Pomocí ovládacího panelu je uživateli umožnČno rozsvČcet/zhasínat LED v obrazové rovinČ (svit LED je také možno generovat náhodnČ – samoþinný režim) a nastavit þas, který jezdec tráví v klidu pod rozsvícenou LED.
9.3.2 Zpracování dat kamery Kamera posílá cyklicky Ĝídící jednotce výsledky analýzy ĜádkĤ („pravé“ hrany + další informace, viz kapitola 7.5). ěídící jednotka provádí hlubší analýzu „pravých“ hran – vybírá hrany, které odpovídají hledanému objektu (na základČ pĜedpokládané šíĜky objektu), na základČ hran objektu urþí polohu objektu (stĜed hran objektu).
Hledanými objekty jsou tĜi svítící LED a jezdec pojezdu. Jelikož je mezi vzdáleností “rovina LED - hlavní rovina objektivu“ a vzdáleností “rovina jezdce pojezdu – hlavní rovina objektivu“ nezanedbatelný rozdíl, je nutné provést transformaci jezdce pojezdu do roviny LED.
- 77 -
9 Demonstrace regulaþního systému s PVTM
9.3.3 Transformace jezdce pojezdu do roviny LED Korekce zpoždČní mČĜeného údaje Poloha jezdce pojezdu je mČĜena v jeho pohybu. KromČ zĜejmých výhod (jezdec nemusí být zastavován pĜed každým mČĜením – mČĜení polohy objektu a Ĝízení jeho pohybu mohou být dva na sobČ nezávislé procesy) to pĜináší i jednu nevýhodu – v momentČ, kdy je v Ĝídící desce pĜipravena hodnota polohy jezdce k Ĝízení jeho pohybu, není tato hodnota již platná. Jelikož je však známa rychlost pohybu jezdce a rychlost mČĜení jeho polohy, je možné hodnotu polohy korigovat na skuteþnou. Rychlost pohybu jezdce je stanovena Ĝídící deskou, rychlost mČĜení polohy je mČĜena Ĝídící deskou. DĤsledek popsaného korekce je ten, že skuteþná poloha jezdce se od namČĜené polohy liší o definovaný poþet pixelĤ.
Korekþní konstanta zpoždČní dK =
tM p J , kde tJ
(9.1)
dK
………..
korekþní konstanta zpoždČní, [px]
tM
………..
doba získání polohy jezdce, [ms]
tJ
………..
doba ujetí elementární dráhy jezdce – 1krok motoru, [ms]
pJ
………..
poþet pixelĤ pĜipadající na elementární dráhu jezdce, [px]
Poznámka: Velikost t M je závislá na velikosti doby závČrky kamery.
Korekce zpoždČní d S = d M ± d K , kde
(9.2)
dS
………..
skuteþná poloha jezdce, [px]
dM
………..
nemČĜená poloha jezdce, [px]
dK
………..
korekþní konstanta zpoždČní, [px]
Poznámka: Korigovat je samozĜejmČ nutné jen v pĜípadČ, že je jezdec skuteþnČ v pohybu. Znaménko ve vzorci 9.5 je závislé na smČru pohybu jezdce.
- 78 -
9 Demonstrace regulaþního systému s PVTM Korekce zvČtšení Rovina jezdce pojezdu je umístČna blíže objektivu než rovina LED. Polohy objektĤ v obou rovinách jsou mČĜeny s rozdílným zvČtšením. Polohu jezdce pojezdu je nutné pĜepoþítat tak, aby jeho zvČtšení odpovídalo zvČtšení objektĤ v rovinČ LED. Pro pĜepoþet je nutné zjistit na jaký pixel obrazového senzoru se zobrazuje stĜed obrazu promítaný objektivem. U ruþnČ sestavovaných kamer se tento pixel nemusí nacházet ve stĜedu obrazového senzoru (to samé platí pokud není využívána þást obrazového senzoru symetrická k ose stĜedu senzoru). Pokud by jsme tuto skuteþnost neuvažovali, koneþné zvČtšení by bylo nelineární a regulace polohy jezdce by fungovala nepĜesnČ – s rĤznou odchylkou od skuteþné polohy.
Korekce zvČtšení (vþetnČ korekce zpoždČní)
d ST = S S + (d S − S S )
βL , kde βJ
(9.3)
d ST
………..
skuteþná poloha jezdce transformovaná do roviny LED, [px]
dS
………..
skuteþná poloha jezdce, [px]
SS
………..
pixel senzoru, do kterého se promítá stĜedu obrazu, [px]
βL
………..
zvČtšení v obrazové rovinČ LED, [-]
βJ
………..
zvČtšení v obrazové rovinČ jezdce, [-]
9.3.4 ěízení pojezdu Výstupem zpracování dat kamery jsou informace o poloze hledaných objektĤ (3x LED a jezdec – poloha d ST ). Na základČ tČchto informací je Ĝízen pohyb jezdce pojezdu. Pokud není jezdec detekován (nachází se mimo obrazové pole nebo je zaclonČn cizím objektem) pokraþuje v pohybu, na konci dráhy pojezdu je vždy „odražen“ koncovým optospínaþem.
- 79 -
9 Demonstrace regulaþního systému s PVTM
9.3.5 Display Ĝídící jednotky Display Ĝídící jednotky zobrazuje obecné informace a výstražné zprávy týkající se celého regulaþního systému. Obecné informace jsou zobrazovány pokud systém pracuje v normálním režimu a nepotĜebuje zásah obsluhy. V opaþném pĜípadČ je na displeji zobrazena konkrétní výstražná zpráva.
Obecné informace Obecné informace slouží pro sledování aktuálního stavu normálního režimu, jsou dĤležité zejména pro seĜizování systému na správnČ provozní podmínky.
VysvČtlivky Samp – frekvence vzorkování obrazové roviny kamerou (závislá na dobČ závČrky) Stop
– udává þas po který zĤstává jezdec v klidu pokud dosáhne požadované polohy
Dir
– udává smČr pohybu jezdce (L/R)
End
– udává polohu jezdce na základČ koncových optospínaþĤ pojezdu (L/R/N)
Next
– další plánovaná/požadovaná poloha/zastávka jezdce
JZD
–
poþet detekovaných jezdcĤ (jezdec se nemusí nacházet v obrazové rovinČ, navíc v obecném pĜípad jich mĤže být více – napĜ. výrobní pás s výrobky)
LED
–
PS – aktuální poloha jezdce, WDT – šíĜka jezdce
–
poþet detekovaných LED (obecnČ – stanovištČ výrobního pásu, kde se s výrobkem provádí urþitá operace)
–
PS – poloha LED v obrazové rovinČ (první 3, ke kterým se jezdec/výrobek blíží)
Obr. 9.4 – Display centrální Ĝídící jednotky – Hlavní stránka
- 80 -
9 Demonstrace regulaþního systému s PVTM Výstražné zprávy Výstražné zprávy se zobrazují v pĜípadČ, že se systém dostane do tzv. nouzového režimu, který neumožĖuje þinnost regulaþního systému v normálním režimu. V nouzovém režimu dojde k zastavení jezdce a rozblikání výstražných svČtel (LED obrazové roviny)
Typy výstražných zpráv a) nepĜicházejí data z kamery – kamera byla odpojena nebo je v konfiguraþním modu b) nízká rychlost vzorkování obrazové roviny – obrazová rovina je málo osvČtlena, systém umí automaticky regulovat dobu závČrky kamery, ale pokud je tato doba pĜíliš velká, hrozí nesplnČní vzorkovací vČty v Ĝízení pohybu jezdce c) nerovnomČrné osvČtlení obrazové roviny – hrozí možnost vzniku falešných objektĤ, které by mohly vést k nesplnČní vzorkovací vČty v detekci objektĤ d) výskyt cizích objektĤ v obrazové rovinČ – systém umí rozpoznat jezdce na základČ jeho šíĜky, ale opČt hrozí nesplnČní vzorkovací vČty v detekci objektĤ
NepĜíznivé podmínky systému a) lesk jezdce zpĤsobený okolním osvČtlením – lesk jezdce mĤže mít parametry cizího objektu v obrazové rovinČ, pokud se leskne ménČ než polovina jezdce (naprostá vČtšina pĜípadĤ) je lesk vždy eliminován b) stín jezdce – stín mĤže být opČt reprezentován jako cizí objekt obrazové roviny – k tomu dojde pouze v pĜípadČ dostateþné strmosti hran stínu a jeho šíĜky vČtší než je šíĜka jezdce, v ostatních pĜípadech je stín eliminován
- 81 -
9 Demonstrace regulaþního systému s PVTM
9.4 Diagram þinností regulaþního systému Diagram na obrázku 9.5 pĜehlednČ popisuje cyklus þinností smart kamery a Ĝídící jednotky a jejich vzájemnou interakci. Cyklus þinností smart kamery je standardizovaný a je tak platný pro jakoukoliv realizaci regulaþního systému se smart kamerami. PĜípadnČ vyžadované autonomní funkce smart kamery (napĜ. pĜímé mČĜení se zobrazením výsledkĤ mČĜení na displeji kamery nebo Ĝízení procesu samotnou kamerou – viz kapitola 10) se provádČjí v bloku „Zpracování videoĜádku“. Blok „Obsluha tlaþítek a displeje“ je platný pouze pro verzi smart kamery Full ZCAM, která má integrováno uživatelské rozhranní. Cyklus þinností Ĝídící jednotky je programovatelný a liší se v závislosti na použitém regulaþním systému. NemnČný je pouze blok „PĜerušení od pĜenosové sbČrnice“, který obsluhuje smart kamery pĜipojené k Ĝídící jednotce.
Obr. 9.5 – Diagram þinností Smart kamery a Centrální Ĝídící jednotky
- 82 -
10
Autonomní funkce smart kamery Požadavek na autonomní funkce smart kamery mĤže mít dva dĤvody. Prvním
dĤvodem je Ĝízení jednoduchých systémĤ (nebo autonomních podsystémĤ), kde je jediným senzorem smart kamera, samotnou kamerou. Jediným nemusí nutnČ být, ale návrh Ĝízení systému pak mĤže být znaþnČ komlikovanČjší (nehledČ na to, že se musí zasahovat do standardu, který je nad kamerou definovaný) zvláštČ v pĜípadČ senzorĤ, které vyžadují složitČjšího zpracování výstupního signálu. Druhým dĤvodem je využití kamery jako autonomního mČĜícího pĜístroje. Tak jako používáme voltmetr k mČĜení napČtí, mĤžeme využít smart kameru napĜ. k mČĜení šíĜky objektu nebo jeho polohy.
10.1 Definice autonomních funkcí Do standardu smart kamery ZCAM byly vybrány 3 autonomní funkce. Jedná se o mČĜení šíĜky objektu, polohy objektu a náklonu objektu. První dvČ funkce využívají jeden aktivní Ĝádek smart kamery, funkce mČĜení náklonu objektu využívá dva aktivní Ĝádky. Volba autonomní funkce a aktivních ĜádkĤ mČĜení je umožnČna prostĜednictvím konfiguraþního PC softwaru (v pĜípadČ kamery Full ZCAM i pomocí uživatelského rozhranní).
10.2 Standardní autonomní výstup smart kamery Hardwarová realizace standardního autonomního výstupu smart kamery je postavena na 16-ti bitovém I2C I/O expanderu (Obr. 10.1). Výhody takového Ĝešení jsou následující: a) snadné vyvedení signálĤ ze smart kamery (2 datové vodiþe místo 16) b) ochrana hardwaru smart kamery, v pĜípadČ poruchy snadná výmČna c) možnost využití I2C paketĤ autonomních funkcí pro jiná zaĜízení na sbČrnici
- 83 -
10 Autonomní funkce smart kamery
Obr. 10.1 – Autonomní jednotka smart kamery
Autonomní jednotka smart kamery obsahuje stavovou LED signalizaci, která informuje uživatele o nevyhovujících podmínkách mČĜení. Nevyhovující podmínky mČĜení jsou následující: a) nenalezen žádný objekt b) nalezeno více objektĤ než jeden
NejdĤležitČjším prvkem autonomní jednotky je 8-bitový výstup, který pĜímo reprezentuje výsledky mČĜení. Rozlišení každé mČĜící funkce (šíĜka/poloha/náklon) je 3bitové (obdoba bargrafu – ale vždy aktivní pouze jeden výstup) nebo 8-bitové (binární kód). Rozlišení se volí pomocí konfiguraþního PC softwaru kamery. Smart kamera ve verzi Full ZCAM samozĜejmČ zobrazuje výsledky mČĜení také na vestavČném displeji a je jí tak možné použít pro pĜímá mČĜení v plném rozlišení (10bit).
Na autonomní jednotce je také integrován ovladaþ motoru, který byl využit v rámci demonstrace funkþnosti smart kamery (kapitola 5.7).
- 84 -
10 Autonomní funkce smart kamery
10.3 Software pro konfiguraci autonomních funkcí Konfigurace autonomních funkcí se provádí pomocí PC softwaru prostĜednictvím bloku Smart Camera Function (Obr. 10.2). Vybírat je možné ze tĜí typĤ mČĜení vþetnČ požadovaného rozlišení. Volbu aktivních ĜádkĤ mČĜení je možné ponechat buć defaultnČ nastavenou nebo zvolit možnost vybrat si pĜíslušné Ĝádky pĜímo v náhledu 2D videa.
Je nutné si uvČdomit, že autonomní funkce jsou pouze jakousi pĜidanou hodnotou k standardní funkci smart kamery a jejího standardního datového výstupu, který je vždy aktivní. Obr. 10.2 – Blok Smart Kamera Function
10.4 Demonstrace autonomních funkcí Pro názornou demonstraci byla zvolena funkce mČĜení šíĜky objektu v 3-bitovém rozlišení. Videoukázka je k dispozici na pĜiloženém CD, zhlednout ji lze také na [33].
- 85 -
11
3D MČĜení 2D mČĜení v rovinČ rovnobČžné s rovinou obrazového senzoru nepĜináší vážnČjší
komplikace, dĤkazem nechĢ jsou demonstrace mČĜení na objektech uvedené v pĜedchozích kapitolách. Pokud chceme mČĜit vlastnosti objektĤ ve 3D, stojíme pĜed úkolem jak transformovat informace o tĜetí dimenzi do 2D obrazové roviny snímané senzorem. Toho mĤžeme docílit napĜíklad využitím nČkteré metody založené na triangulaci (podobnost trojúhelníkĤ).
Triangulace je založena na promítání laserového paprsku, který se odráží od objektu umístČného v pracovním prostoru. Odražený paprsek po sobČ zanechává bodovou stopu (difúzní odraz), poloha této stopy je snímána kamerou. V pĜípadČ použití laseru s þárovou stopou je uplatnČní triangulace ekvivalentní – þárová stopa je tvoĜena koneþným poþtem bodových stop (dáno rozlišením obrazového senzoru). ObecnČ lze na mČĜený objekt promítat libovolné obrazce, ty jsou však opČt tvoĜeny þárovými stopami. Užití triangulace (nebo obecnČ jiné metody) rozšiĜuje mČĜené vlastnosti objektĤ o 3D orientaci objektu, vzdálenost objektu a tĜetí rozmČr objektu (ve smČru senzoru). Znalost 3D orientace objektu umožní korekci rozmČrĤ objektu mČĜených ve 2D – napĜ. nerovnobČžnost roviny senzoru a mČĜené roviny objektu nebude zvyšovat chybu mČĜení.
11.1 Kamera se standardním objektivem Princip Triangulace s kamerou vybavenou standardním objektivem (obr. 11.1) využívá závislosti zvČtšení na vzdálenosti objektu. Na základČ polohy stopy je urþena vzdálenost objektu od kamery (zvoleného referenþního bodu). RozmČr objektu se urþuje na základČ referenþního mČĜení vzdálenosti podložky objektu. Jelikož je snímán stĜed stopy laserového paprsku, není nutné pĜesné zaostĜení objektivu kamery na vzdálenost objektu. OstĜení objektivu je nejlepší provést na pĜedpokládanou stĜední vzdálenost stopy laseru od zvoleného referenþního bodu (od tohoto bodu se mČĜí vzdálenost objektu). Vzdálenost osy laseru a osy objektivu kamery urþuje rozsah mČĜených vzdáleností a také rozlišitelnost mČĜení.
- 86 -
11 3D mČĜení
Obr. 11.1 – Triangulace s kamerou vybavenou standardním objektivem
Vzdálenost objektu od montážní roviny objektivu ‘d‘ (referenþní bod) d=
1 y ( f + z ' ) − m , kde y'
(11.1)
d
………..
je vzdálenost objektu od montážní roviny objektivu
f
………..
je ohnisko objektivu
z‘
………..
je vzdálenost obrazového ohniska od roviny senzoru (výtah objektivu)
y
………..
je vzdálenost stĜedu laserové stopy od stĜedu senzoru
y‘
………..
je vzdálenost ‘y’ promítnutá na senzor
m
………..
montážní vzdálenost objektivu od senzoru
- 87 -
11 3D mČĜení
11.2 Kamera s telecentrickým objektivem Telecentrický objektiv (obr. 11.2) má konstantní zvČtšení, to je rovno nebo menší než jedna. Jelikož je zvČtšení stejné pro objekt v libovolné vzdálenosti od kamery, je nutné do snímaného obrazu zanést informaci o tĜetí dimenzi. To je možné provést natoþením laseru takovým zpĤsobem, aby jeho osa svírala s osou objektivu kamery urþitý úhel. Velikost tohoto úhlu urþuje rozsah mČĜených vzdálenosti a z toho pramenící rozlišitelnost mČĜení. Ze stopy laseru snímané kamerou nelze urþit pĜímo vzdálenost ke zvolenému referenþnímu bodu a je nutné vždy provést referenþní mČĜení vzdálenosti na podložce objektu (získání pĜevodní konstanty). Výhodou této „kalibrace“ je, že nemusíme znát úhel natoþení laseru, pro urþení rozsahu mČĜených vzdáleností je ale jeho znalost nutná. Obvykle však nepotĜebujeme znát hraniþní hodnoty rozsahu vzdáleností pĜesnČ, potom nemusíme ani úhel natoþení laseru urþovat s vČtší pĜesností.
Obr. 11.2 – Triangulace s kamerou vybavenou telecentrickým objektivem
- 88 -
11 3D mČĜení Vzdálenost objektu od montážní roviny objektivu ‘d‘ (referenþní bod) d = y'
d ref y ' ref
, kde
(11.2)
d
………..
je vzdálenost objektu od montážní roviny objektivu
y‘
………..
je vzdálenost laserové stopy od stĜedu senzoru v rovinČ senzoru
dref
………..
je vzdálenost stĜedu laserové stopy od stĜedu senzoru
y‘ref
………..
je vzdálenost ‘y‘‘ získaná pĜi referenþním mČĜení
11.3 Porovnání mČĜení s obČma typy objektivĤ Triangulace se standardním objektivem má nelineární závislost mezi laserovou stopou v obraze kamery a vzdálenosti objektu od pĜedmČtové ohniskové roviny. Nelinearita zpĤsobuje nekonstantní rozlišitelnost v celém rozsahu mČĜení. Celkový výpoþet je navíc nároþnČjší na výkon poþítadla. Triangulace s telecentrickým objektivem vyžaduje pĜítomnost referenþního objektu (napĜ. podložka mČĜeného objektu), kalibraci je však nutné v mnoha pĜípadech provádČt pouze „jednou“. Výpoþet vzdálenosti mČĜeného objektu je pouze násobení konstantou (viz. vzorec 11.3), což nevyžaduje velký výkon poþítadla.
11.4 Demonstrace mČĜení Pro demonstraci 3D mČĜení (rozmČr objektu v rovinČ kolmé na rovinu senzoru) byla použita Ĝádková kamera LineCam s objektivem Helios (M42; m=45,75mm; f=58mm; obr. 11.3) zaostĜeným na nekoneþno a bez mezikroužku. NejdĜíve byla experimentálnČ nastavena poloha laseru vĤþi kameĜe (objektivu), poté byl proveden odmČr vzdálenosti desky od kamery v kalibra-
þní poloze (obr. 11.4 nahoĜe) následovaný odmČrem vzdálenosti desky posunuté o 30 cm ve smČru kamery (obr. 11.4 dole).
- 89 -
Obr. 11.3 – Objektiv Helios
11 3D mČĜení
Obr. 11.4 – Demonstrace 3D mČĜení - námČr hodnot
- 90 -
11 3D mČĜení
11.4.1 Vyhodnocení mČĜení StĜedy laserových stop obou poloh desky získané z mČĜícího programu (obr. 11.4)
p1 = 1297,269 px
p 2 = 1550,168 px
PĜepoþet vzdálenosti „osa objektivu“ – „osa laseru“ zobrazené na senzor (tato vzdálenost je reprezentována stĜedem senzoru a stĜedem laserové stopy) numPix · 2048 · § § y1 ' = ¨ p1 − ¸ *14 μm = 3,8258mm ¸ * pitch = ¨1297,269 − 2 ¹ 2 ¹ © © numPix · 2048 · § § y2 ' = ¨ p2 − ¸ * pitch = ¨1550,168 − ¸ *14 μm = 7,3664mm 2 ¹ 2 ¹ © © numPix
………..
poþet efektivních pixelĤ senzoru (2048pix)
pitch
………..
rozteþ mezi pixely senzoru (14μm)
Vzdálenost desky od referenþního bodu (vzorec 11.1) d1 =
1 1 y( f + z ' ) − m = 36mm * 58mm − 45,75mm = 50,00cm y1 ' 3,8258mm
d2 =
1 1 y( f + z ' ) − m = 36mm * 58mm − 45,75mm = 23,77cm y1 ' 3,8258mm y
………..
vzdálenost „osa objektivu“ – „osa laseru“ (36mm), viz obr 11.1
m
………..
montážní vzdálenost objektivu (45,75mm)
NamČĜený posuv desky
d = d1 − d 2 = 50cm − 23,77cm = 26,23cm NamČĜený posuv desky se od skuteþného (30cm) liší o 3,77cm, to je zpĤsobeno zejména špatnČ nastavenou polohou laseru vĤþi objektivu kamery – osy laseru a objektivu svírají vĤþi sobČ nenulový úhel, pĜiþemž je uvažován úhel nulový. PĜesnost mČĜení by bylo možné zvýšit dvoubodovou kalibrací polohy laseru vĤþi objektivu (ve dvou referenþních vzdálenostech desky od kamery).
- 91 -
12
Univerzální videometrický systém PĜibližnČ v roce 2010 vznikla v LaboratoĜi videometrie Katedry mČĜení FEL ýVUT
myšlenka vytvoĜení univerzálního systému pro videometrická mČĜení. Univerzálnost systému je dána tím, že každé mČĜící zaĜízení je reprezentováno souborem schopností pro nČj typických. NapĜ. videometrická kamera je zaĜízení, které má schopnost pĜedávat nadĜazenému systému obrazová data. NadĜazený systém zná schopnosti pĜipojeného zaĜízení, mĤže tedy poslat do kamery zprávu „pošli mi obraz“, každá kamera rozumí zprávČ „pošli mi obraz“ a obraz pošle.
Jako první se realizace myšlenky univerzálního systému chopil Ing. Vladimír Coufal, který v rámci své diplomové práce [2] vytvoĜil aplikaci Kamerový sbČr dat (KSD). Tato aplikace má implementováno rozhranní pro pĜipojení obecné kamery. Toto rozhraní splĖuje 2 základní pĜedpoklady univerzálního systému: a) UmožĖuje poslat kameĜe zprávu „pošli mi obraz“. Tato zpráva je obecná, všechny kamery ji rozumí a chápou jí naprosto stejnČ. Proto je možné tuto zprávu zaslat jakékoliv kameĜe. b) UmožĖuje pĜijmout, zpracovat a reprezentovat obraz libovolné kamery, bez ohledu na velikost, formát nebo pĤvod obrazu.
Aby se libovolná kamera stala kamerou obecnou musí mít implementováno rozhraní, které kameĜe umožĖuje porozumČt univerzálnímu systému (neboli zprávČ „pošli mi obraz“). Toto rozhraní je implementováno jako dynamicky linkovaná knihovna (DLL) vývojáĜem konkrétní kamery.
VytvoĜení obecné kamery (knihovny DLL) a následné využívání univerzálního systému je pro vývojáĜe mnohem jednodušší než vývoj specializovaného systému, urþeného jen pro jednu konkrétní kameru. To samé platí i pro uživatele mČĜící kamery, tomu je umožnČno v rámci jedné mČĜící aplikace využívat všechny kamery, které jsou implementovány jako obecné.
- 92 -
12 Universální videometrický systém První mČĜící kamerou zaþlenČnou do univerzálního systému byla kamera Visor vyvinutá Ing. OndĜejem Pribulou. Ing. Vladimír Coufal zaþlenil do systému kamery postavené na bázi DirectX (web kamery) a demonstrativnČ také ethernetovou kameru od firmy Bosh, která však není ve vlastnictví LaboratoĜe videometrie a nebude tak využíváná k mČĜícím experimentĤm.
12.1 Programové vybavení obecné kamery Blokové schéma na obrázku 12.1 ukazuje ĜetČzec programového vybavení obecného pĜístroje. V samotném pĜístroji je implementován vlastní Ĝídící program pĜípadnČ ovladaþ IO rozhraní kamery, pomocí kterého komunikuje s nadĜazeným systémem v PC. ěídící program vþetnČ ovladaþe IO rozhranní se nazývá firmware a je vyvíjen spoleþnČ s hardwarem pĜístroje. Programové vybavení na stranČ PC tvoĜí primární ovladaþ IO rozhranní, na který navazuje ovladaþ pĜístroje.
Obr. 12.1 – ěetČzec programového vybavení mČĜícího systému
Blok ovladaþe pĜístroje je nutné až na výjimky rozdČlit na dvČ þásti. Zaþneme od ovladaþe vyšší úrovnČ (ovladaþ nižší úrovnČ je možné za jistých okolností vynechat). Ovladaþ vyšší úrovnČ musí být napsán v jazyce a prostĜedí, které umožĖuje vytváĜet tzv. managedcode DLL, nutnost tohoto Ĝešení má následnou výhodu ve snadném navázání DLL knihovny na cílovou aplikaci (napĜ. KSD). Podmínku managed-code DLL splĖuje napĜ. Microsoft Visual Studio a jazyk C#. KSD je vyvíjen také v tomto prostĜedí a jazyce, takže výsledná kompatibilita je zaruþená. Bohužel však jazyk C# není vhodný pro rychlé a pĜesnČ þasované Ĝízení pĜístroje (napĜ. kamera – rychlý pĜenos dat ve stanovených okamžicích). Pokud je toto pro náš pĜístroj pĜekážkou, je nutné napsat také ovladaþ pĜístroje nižší úrovnČ a to buć v jazyce C nebo C++ i za cenu, že konkrétní vývojové prostĜedí neumožĖuje vytváĜet managed-code DLL. Následné obtíže implementace unmanaged-code DLL ovladaþe nižší úrovnČ do ovladaþe vyšší úrovnČ jsou vyváženy až nČkolikanásobným zrychlením þinnosti ovladaþe pĜístroje, který je Ĝešen jako dvojúrovĖový. Toto jsem si sám ovČĜil pĜi vývoji - 93 -
12 Universální videometrický systém ovladaþe pĜístroje kamery ZCAM. DvojúrovĖový ovladaþ (Borland Builder C++ a Visual Studio C#) byl pĜibližnČ 3x až 4x rychlejší než jednoúrovĖový, napsaný celý v jazyce C#. BČhem rozhovoru s Ing. Coufalem jsem zjistil, že má úplnČ stejné zkušenosti. Posledním blokem ĜetČzce programového vybavení (obr. 12.1) je cílová aplikace, která má implementováno rozhraní univerzálního videometrického systému. Jediným úkolem pro zaþlenČní nové kamery do KSD je registrace kamery v systému. Registrací jednoduše Ĝekneme systému: „Tohle je kamera se jménem Nová kamera a využívá knihovnu s názvem Nová knihovna (ovladaþ pĜístroje vyšší úrovnČ)“.
12.2 Ovladaþ pĜístroje kamery LineCAM a ZCAM Jelikož se na vývoji univerzálního systému podílejí témČĜ všichni þlenové LaboratoĜe videometrie, dostal jsem i já za úkol vytvoĜit ovladaþ pĜístroje pro pĜipojení „svých“ kamer do univerzálního systému. První kamerou je Ĝádková CCD kamera LineCAM (2048pix), kterou jsem vyvíjel v rámci bakaláĜské práce a momentálnČ slouží v LaboratoĜi videmetrie k výuce videometrických pĜedmČtĤ. Druhou kamerou je plošná CMOS kamera ZCAM (1.3Mpix), kterou jsem vyvíjel v rámci této diplomové práce. Implementace obou kamer do univerzálního systému mi mimo jiné umožní srovnání pĜesnosti mČĜení obou kamer pomocí systému pro vyhodnocování mČĜení, který je nadstavbou KSD. Obrázky 12.2 a 12.3 opČt pĜedstavují ĜetČzce nutného programového vybavení, tentokrát jsou však pĜizpĤsobeny konkrétnímu Ĝešení jednotlivých kamer. Každá kamera má svĤj Ĝídící program pĜístroje, spoleþné jsou bloky ovladaþe IO. To ukazuje na využití stejného pĜenosového rozhranní od shodného výrobce (Cypress EZ-USB). DĤležitá je však þást ovladaþe pĜístroje. Vidíme, že ovladaþe pĜístroje jsou Ĝešeny dvojúrovĖovČ (nižší úroveĖ v Borland Builder C++, vyšší úroveĖ ve Visual Studio C# ). U kamery ZCAM je to opodstatnČné a ovČĜené testem, jednoúrovĖový ovladaþ nepĜicházel v úvahu (viz kapitola 12.1). U kamery LineCAM by pravdČpodobnČ staþil jednoúrovĖový ovladaþ pĜístroje, velikost datového toku této kamery není kritická. Z dĤvodu využití shodného pĜenosového rozhranní a jeho ovČĜené implementace v pĜístrojovém ovladaþi nižší úrovnČ kamery ZCAM jsem postupoval i zde dvojúrovĖovČ.
- 94 -
12 Universální videometrický systém
Obr. 12.2 – Typická ukázka pĜipojení mČĜící kamery k aplikaci
Obr. 12.3 – Typická ukázka pĜipojení mČĜící kamery do vývojového systému LabVIEW
V rámci vývoje univerzálního videometrického systému pracuje Bc. OndĜej Kuba na implementaci rozhraní tohoto systému do grafického vývojového prostĜedí LabVIEW [3]. LabVIEW se tak stane po KSD dalším cílovým systémem, který bude využíván pro laboratorní experimenty (obr 12.3). PĜednosti LabVIEW jsou v možnostech snadného a rychlého sestavení laboratorního experimentu z libovolných pĜístrojĤ, které jsou souþástí univerzálního videometrického systému.
12.3 Jak napsat dvojúrovĖový ovladaþ pĜístroje S úkolem napsat ovladaþ pro své zaĜízení se bude zajisté potýkat ještČ mnoho studentĤ LaboratoĜe videometrie. Je tedy nutné jim zanechat urþitý odkaz v podobČ návodu jak Ĝešit nejkritiþtČjší þásti takového ovladaþe. ZamČĜím se na nejobtížnČjší situaci, kdy je nutné napsat dvojúrovĖový ovladaþ, navíc ovladaþ nížší úrovnČ v unmanaged-code prostĜedí Borland Builder C++. Tato kapitola je zároveĖ doplĖkem kapitol pĜedchozích, kdy jsem pĜíliš - 95 -
12 Universální videometrický systém nezabíhal do detailĤ implementace svých kamer do univerzální videometrického systému. Mimoto jsou zdrojové kódy všech knihoven souþásti doprovodného CD této diplomové práce.
12.3.1 Unmanaged-code prostĜedí Borland Builder C++ Pokud chceme funkce napsané v unmanaged-code DLL používat i mimo tuto knihovnu, tzn. ve zdrojovém kódu jiné knihovny nebo aplikace (v našem pĜípadČ knihovna ovladaþe pĜístroje vyšší úrovnČ), je nutné v hlaviþkovém souboru projektu DLL knihovny (nebo v souboru samotného kódu) definovat funkce tímto zpĤsobem:
extern "C" { __declspec(dllexport) int __cdecl OpenDevice (void); } extern "C" { __declspec(dllexport) int __cdecl GetImage (unsigned char data[]); } extern "C" { __declspec(dllexport) int __cdecl CloseDevice (void); }
Samotné funkce poté definujeme v tČle souboru zdrojového kódu tímto zpĤsobem:
extern int __cdecl OpenDevice (void) { //...kod funkce – inicializace zarizeni… } extern int __cdecl GetImage(unsigned char data[]) { //...kod funkce – ziskani dat mereni… } extern int __cdecl CloseDevice (void) { //...kod funkce – ukonceni spoluprace s pristrojem… }
- 96 -
12 Universální videometrický systém Uvedené tĜi funkce jsou zároveĖ nepsaným minimem, které by mČli být v ovladaþi zpracovány. Funkce OpenDevice zpĜístupní pĜístroj pro ovladaþ vyšší úrovnČ, napĜ. provede inicializaci pĜístroje, spustí mČĜení provádČné tímto pĜístrojem (pokud je výhodné nebo nutné aby mČĜení probíhalo nepĜetržitČ). Funkce CloseDevice je pak opakem funkce OpenDevice. Jejím úkolem je korektní ukonþení þinnosti pĜístroje a jeho odpojení. Funkce GetImage má za úkol získat namČĜená data pĜístroje - kamery (pokud tak neþiní cyklicky nezávisle na jejich potĜebČ v cílové aplikaci) a pĜedat je pĜístrojovému ovladaþi vyšší úrovnČ.
12.3.2 Managed-code prostĜedí Microsoft Visual Studio C#
Nyní jsme se pĜesunuli do Managed-code prostĜedí Microsoft Visual Studio C#. Máme již napsán ovladaþ nižší úrovnČ a potĜebujeme importovat jeho funkce do knihovny ovladaþe vyšší úrovnČ. Ve tĜídČ projektu vytvoĜíme interní nezabezpeþenou tĜídu a definujeme v ní funkce ovladaþe nižší úrovnČ následovnČ: internal unsafe static class UnsafeNativeMethods {
const string _dllLocation = "CameraDriver.dll";
[DllImport(_dllLocation, EntryPoint = "_OpenDevice")] public static extern int _OpenDevice();
[DllImport(_dllLocation, EntryPoint = "_GetImage")] public static extern int _GetData([MarshalAs(UnmanagedType.LPArray)] byte[] data);
[DllImport(_dllLocation, EntryPoint = "_OpenDevice")] public static extern int _CloseDevice();
}
„_dllLocation“ urþuje umístČní knihovny ovladaþe nižší úrovnČ. „EntryPoint“ udává jméno funkce v rámci knihovny ovladaþe nížší úrovnČ. V knihovnČ ovladaþe vyšší úrovnČ tak mĤže každá knihovna vlastnit jméno jiné. Zdrojový kód ovladaþe vyšší úrovnČ pak mĤže vypadat následovnČ (opČt se jedná o minimální konfiguraci):
- 97 -
12 Universální videometrický systém public class Camera { internal unsafe static class UnsafeNativeMethods { //…definice funkci ovladace nizsi urovne… } public Camera() { //…konstruktor – zarizeni se otevre po vytvoreni instance tridy Camera UnsafeNativeMethods._OpenDevice(); }
public Bitmap GetImage() { byte[] data = new byte[Width * Height]; Bitmap bmp = new Bitmap((int)Width, (int)Height, PixelFormat.Format24bppRgb); //...dalsi kod funkce – priprava na prijem dat… UnsafeNativeMethods._GetImage(data); //...pokracuje kod funkce – zpracovani dat… return bmp; } public void CloseDevice() { //…ukonceni spoluprace se zarizenim… UnsafeNativeMethods._CloseDevice(); } }
Ovladaþ vyšší úrovnČ prakticky pouze interpretuje funkce ovladaþe nižší úrovnČ (ty co není schopen vykonat rychle nebo s þasovou pĜesností) a vytváĜí rozhraní pro pĜipojení ovladaþe nižší úrovnČ do cílové aplikace. ýasovČ nekritické úlohy vþetnČ pĜedzpracování namČĜených dat (v našem pĜípadČ obrazu) je výhodné vykonávat v ovladaþi vyšší úrovnČ, nabízí pro to komfortnČjší nástroje. Pozor si však musíme dávat na to, že nČkteré tyto nástroje mohou být þasovČ velmi nároþné. To popisuje ve své práci Ing. Vladimír Coufal [2], který namČĜil dobu trvání konverze 1.3Mpix datového pole na object typu Bitmap pomocí vestavČné funkce C# jako 9x delší než doba konverze pomocí vlastnČ napsané funkce využívající pointerové aritmetiky. OsobnČ jsem rychlost obou konverzí také testoval a mohu potvrdit, že rozdíl v rychlostech je opravdu nČkolikanásobný.
- 98 -
13
Parametry kamery ZCAM
Spoleþné parametry Senzor:
CMOS 1280×1024
RozmČry:
70×70×28 (bez objektivu)
Objektiv:
typ CS nebo C
Display:
OLED 128×32
Stativ:
2× M3, 1× W1/4”
Konektory:
USB/I2C bus
MČĜící USB kamera Max. rychlost vzorkování:
10Hz, pĜi rozlišení 1280×1024
Doba závČrky:
100ms - 1.3s
Zesílení:
1 - 16
Zobrazení snímku:
plné rozlišení 1280×1024 v reálném þase
Zpracování snímku:
rotace, negativ, prahování, hranování (LoG)
Zobrazení Ĝádku:
plné rozlišení 1280pix
Zpracování Ĝádku:
prĤmČrování (až 400×), digitální filtr (vážený prĤmČr), 1. a 2. diference, hledání hran (prahování, 1. diference), lineární interpolace hran
MČĜení:
poloha/šíĜka/náklon vybraného objektu, zvyšování rozlišení pomocí lineární interpolace hran, korekce mČĜení šíĜky naklonČného objektu, kalibrace pro mČĜení v délkových jednotkách
- 99 -
13 Parametry kamery ZCAM
Smart kamera Max. rychlost vzorkování:
125Hz (1 Ĝádkový režim) 72.5Hz (2 Ĝádkový režim)
Automatické Ĝízení závČrky:
1 - 100ms (pro každý aktivní Ĝádek odlišná)
Automatické Ĝízení zesílení:
1 - 8 (pro každý aktivní Ĝádek odlišné)
Standardní datový výstup:
hrany videoĜádku + + hodnoty nutné pro lineární interpolaci hran
Signálový výstup:
8 signálĤ popisující polohu/šíĜku/náklon objektu (3 nebo 8bit rozlišení)
Stavový výstup:
2 signály popisující vhodnost podmínek mČĜení
Výstup na displej:
videosignál Ĝádku (surový nebo prahovaný) poloha/šíĜka/orientace objektu (10bit rozlišení)
VestavČné uživatelské rozhranní:
kurzory pro pĜímou volbu objektu v rámci videosignálu výbČr aktivních ĜádkĤ mČĜení konfigurace prahování, doby závČrky, zesílení
Konfiguraþní PC software:
funkce vestavČného uživatelského rozhraní konfigurace signálového výstupu pĜímý pĜístup k registrĤm senzoru
- 100 -
14
ZávČr Hlavním cílem této práce bylo navrhnout nový typ kamery, který se stane urþitým
mezistupnČm mezi Ĝádkovými a plošnými kamerami. Hlavní motivací vývoje nového typu kamery byla skuteþnost, že velká množina mČĜících aplikací využívá pro mČĜení pouze malé množství obrazové informace poskytované plošnými kamerami. Obvykle se jedná o jeden þi nČkolik ĜádkĤ obrazového snímku, velké množství obrazové informace tak zĤstává nevyužito a zbyteþnČ snižuje vzorkovací frekvenci kamery a zvyšuje cenu obvodového Ĝešení kamery. Na poþátku jsem udČlal prĤzkum aktuálního stavu vývoje kamer, které se používají v prĤmyslu (kapitola 2). PrĤzkum potvrdil pĜedpoklady, které daly vzniknout zadání této práce. Systematicky jsem zvolil nČkolik typovČ odlišných kamer, jejichž technické parametry vymezily smČr, kterým by se vývoj nového typu kamery mČl ubírat. Práci jsem zahájil návrhem univerzálního Ĝídícího modulu, jehož koncepce umožĖovala otevĜený vývoj hardware kamery. OtevĜenost spoþívala v jednoduchém a rychlém napojování obvodĤ novČ vznikající kamery. Obvodové Ĝešení kamery pak vznikalo na vytvoĜeném pracovišti v kombinaci senzorové desky Ing. Šedivého a kontaktního pole, na kterém byli vyvíjeny podpĤrné Ĝídící obvody kamery (kapitola 3). Univerzální deska jsem také využil ke konstrukci modulárního Ĝešení Ĝádkové kamery nazvané LineCam, jejíž koncept vznikal v rámci mé bakaláĜské práce. OtevĜenost programového vybavení kamery LineCam vedla k myšlence využití spoleþné aplikace jak pro tuto kameru, tak pro novČ vznikají kameru nazvanou ZCAM. Vedlejším produktem vývoje programového vybavení kamery ZCAM bylo tedy znaþné navýšení funkcí programového vybavení kamery LineCam. Kameru LineCam jsem poté zavedl do výuky videometrických pĜedmČtu laboratoĜe videometrie. ýást aplikace urþená pro zpracování Ĝádkových videosignálu (pro obČ kamery spoleþná), tak byla dĤkladnČ testována studenty pĜi každém cviþení. Výsledkem bylo rychlé nalezení programátorských chyb, které mohly být promptnČ odstranČny a také návrhy nových funkcí, které byly následnČ do aplikace pĜidány. V tu dobu se již blížil vývoj obvodového Ĝešení kamery ZCAM ke konci a mohl jsem zaþít s návrhem Ĝídící desky speciálnČ urþené pro tuto kameru. PrĤzkum prĤmyslových kamer
- 101 -
14 ZávČr provedený na poþátku této práce s sebou pĜinesl myšlenku vybavit kameru uživatelským rozhraním tvoĜeným displejem a tlaþítky. Kamera by pak mohla být používána jako samostatný mČĜící pĜístroj a na rozdíl od úvahy v zadání by se i v režimu konfigurace obešla bez nutnosti pĜipojovat PC. Návrh desky jsem tedy nasmČroval k možnosti implementace uvedeného uživatelského rozhranní. NáslednČ jsem vytvoĜil modulární konstrukci kamery ve dvou variantách. První jsem nazval Full ZCAM, která v sobČ integruje uživatelské rozhranní a je tak možné ji používat jako þistČ autonomní mČĜící pĜístroj. Druhá nese jméno Lite ZCAM, není vybavena uživatelským rozhranním a splĖuje vizi zadání jednoduchého senzoru konfigurovatelného pĜes PC. Kamera Full ZCAM je s kamerou LiteCAM plnČ kompatibilní a mĤže ji tak plnČ nahradit, obrácenČ to samozĜejmČ díky absenci uživatelského rozhraní neplatí. SimultánnČ s vývojem obvodového Ĝešení kamery jsem vyvíjel programové vybavení kamery, které bylo nutné po návrhu Ĝídící desky a sestavení kamery ZCAM dokonþit a dále specializovat jak pro použití kamery jako standardní mČĜící kamery využívající poþítaþ pro zpracování videosignálu a reprezentaci výsledku mČĜení tak i pro použití kamery jako kamerového snímaþe (smart kamery). PC aplikaci kamery jsem rozšíĜil o funkce, které umožĖují jedno a více Ĝádková mČĜení pomocí kamery ZCAM jako standardní mČĜící kamery vþetnČ kalibrace umožĖující mČĜení pĜímo v délkových jednotkách. To mi zároveĖ umožnilo rychlé vytvoĜení mČĜících algoritmĤ, které bylo dále nutné implementovat i do firmwaru kamery, aby mohla být využívána jako smart kamera nebo jako plnČ autonomní mČĜící pĜístroj. Do aplikace jsem následnČ pĜidal funkce umožĖující konfiguraci kamery v režimu kamerového snímaþe. Vývoj smart kamery jsem systematicky rozdČlil do tĜech þástí. První þást spoþívala v nalezení optimální konfigurace obrazového senzoru a pĜenosu obrazových dat do pamČti kamery. NejvČtší dĤraz jsem kladl na rychlost vzorkování pĜi zachování kvality obrazu. Aby kamera byla schopná fungovat i v prostĜedí promČnného osvČtlení, bylo nutné navrhnout automatizované Ĝízení doby závČrky a zesílení. Vyvinutý algoritmus dovoluje nejen nastavení odlišného zesílení pro každý Ĝádek, ale i odlišné nastavení doby závČrky pro každý Ĝádek. To umožĖuje sledovat v obrazovém poli objekty s ĜádovČ odlišným jasem (pasivní a aktivní zdroje záĜení). Nakonec jsem vytvoĜil algoritmy pro zpracování videosignálu, zejména prahování s volitelným prahem a hledání hran s volitelnou strmostí. - 102 -
14 ZávČr Druhá þást vývoje smart kamery spoþívala v implementaci standardního datového paketu, aby bylo možné kameru využívat s libovolnou Ĝídící jednotkou v libovolném regulaþním systému. Pro tyto úþely jsem vyvinul experimentální Ĝídící jednotku a zkonstruoval regulaþní systém, který na základČ detekce objektĤ v obrazovém poli Ĝídí polohu/pohyb jezdce pojezdu (krokový motor). Celý systém byl demonstrován na výstavČ Electron 2011. V poslední þásti vývoje smart kamery jsem naprogramoval autonomní mČĜící funkce takové, aby kamera byla schopná fungovat jako samostatný mČĜící pĜístroj nebo mČĜící pĜístroj
vybavený
Ĝídícími
schopnostmi.
Základními
mČĜícími
funkcemi
jsou
rozmČr/poloha/orientace objektu. V pĜípadČ kamery Full ZCAM jsou výsledky mČĜení zobrazovány na displej. Kamera Full ZCAM dále umožĖuje volbu mČĜeného objektu v obrazovém poli a konfiguraci parametrĤ videosignálu pomocí vestavného uživatelského rozhraní. V pĜípadČ kamery Lite ZCAM jsou uvedené možnosti voleny konfiguraþním PC programem. Pro obČ kamery jsem zkonstruoval výstupní modul, který umožĖuje výsledky mČĜení reprezentovat smČrem k možným navazujícím obvodĤm.
Na závČr celé práce jsem vyvinul knihovny nutné pro integraci kamer (ZCAM a LineCam) do libovolných PC aplikací, které budou v laboratoĜi v budoucnu vyvíjeny. Test knihoven jsem provedl v rámci aplikace KSD Ing. Vladimíra Coufala a také v Univerzálním videometrickém systému, který v prostĜedí LabView vyvíjí Bc. OndĜej Kuba.
Zadání diplomové považuji za splnČné. Jak vyvinutá kamera, tak i programové a obvodové pĜíslušenství kamery odpovídají požadavkĤm v zadání. Nad rámec zadání jsem v kameĜe integroval uživatelské rozhraní, které dovoluje kameru konfigurovat bez nutnosti pĜipojovat PC a také umožĖuje použít kameru jako samostatný mČĜící pĜístroj pro mČĜení rozmČrĤ/polohy/orientace objektĤ.
- 103 -
14 ZávČr
ýasový sled nejdĤležitČjších þástí diplomové práce
- 104 -
15
Zdroje a literatura
[1] Fischer J.: Optoelektronické senzory a videometrie, Vydavatelství ýVUT, 2002 [2] Coufal V.: PĜesné mČĜení polohy kamerami CCD a CMOS, Diplomová práce, ýVUT, 2011 [3] Kuba O.: Platforma pro sbČr a zpracování obrazu na bázi LabVIEW, Diplomová práce, ýVUT, 2012 [4] Ahlskog M.: 3D Vision, Master Thesis, Mälardalen University, Sweden, 2007 [5] Zoubek M.: Optoelektronický senzor s Ĝadiþem EZ-USB, BakaláĜská práce, ýVUT, 2009 [6] Radil T.: Analysis and optimisation of the projection methods of dimension and position measurement, Doctoral thesis, ýVUT, 2005 [7] Douša I.: Triangulaþní snímaþ se stínovou projekcí, Diplomová práce, ýVUT, 2006 [8] Nádvorník V.: MnohoĜádkový videosenzor, Diplomová práce, ýVUT, 2007 [9] van der Heijden F. : Image Based Measurement Systems, Vydavatelství Wiley, New Jersey, 1994 [10] Dobeš M. : Zpracování obrazu a algoritmy v C#, Vydavatelství BEN, Praha, 2008 [11] Bitter R., Mohiuddin T., Nawrocki M.: LabView Advanced Programming Technigues, Vydavatelství CRC Press, 2006 [12] Swart B.,Cashman M.,Gustavson P.,Hollingworth J.: C++ Builder 6 Developer’s Guide, Vydavatelství Sams, Indianapolis, Indiana, 2003 [13] JavĤrek J.: Regulace moderních elektrických pohonĤ, Vydavatelství Grada Publishing, Praha, 2003 [14] Karban P.: Matlab a Simulink, Vydavatelství Computer Press, Brno, 2006
- 105 -
15 Zdroje a literatura [17] Cypress Semiconductor URL: www.cypress.com [18] Datasheet archive URL: www.datasheetarchive.com [19] Universal Serial Bus URL: www.usb.org [21] Moravské pĜístroje a.s. URL: http://www.mii.cz [22] Datalogic URL: www.datalogic.com [23] Leuze Electronic URL: www.leuze.com [24] Schäfter + Kirchhoff GmbH URL: www.sukhamburg.de [25] Banner Engineering URL: www.bannerengineering.com [26] Aptina Imaging URL: www.aptina.com [27] Display Elektronik GmbH URL: www.display-elektronik.de [28] Silicon Labs URL: www.silabs.com [29] Microchip Technology Inc. URL: www.microchip.com
[31] Smart camera: object tracking demonstration URL: www.youtube.com/watch?v=yMHpwItOD84 [32] Smart camera: feedback system demonstration URL: www.youtube.com/user/LabOfVideometryFEL [33] Smart camera: standalone device demonstration URL: www.youtube.com/user/LabOfVideometryFEL
- 106 -
16
Obsah CD
CD, které je souþástí této diplomové práce, obsahuje následující složky: LineCam_firmware
–
firmware kamery LineCam (vþetnČ zdrojového kódu)
LineCam_software
–
software kamery LineCam (vþetnČ zdrojového kódu)
LineCam_vyroba
–
podklady pro výrobu kamery LineCam
LineCam_sestaveni
–
podklady pro sestavení kamery LineCam
ZCAM_firmware
–
firmware kamery ZCAM (vþetnČ zdrojového kódu)
ZCAM_software
–
software kamery ZCAM (vþetnČ zdrojového kódu)
ZCAM_vyroba
–
podklady pro výrobu kamery ZCAM
ZCAM_sestaveni
–
podklady pro sestavení kamery ZCAM
CtrlUnit_firmware
–
firmware experimentální Ĝídící jednotky (vþetnČ zdrojového kódu)
Matlab_vypocty
–
výpoþetní skripty napsané bČhem vývoje kamery
Datasheets
–
datasheety používané pĜi vývoji kamery
DIP_podklady
–
DOC a PDF verze diplomové práce, obrázky, videa
- 107 -
17
Seznam pĜíloh A
Sestavení a oživení Ĝídící desky kamery LineCam
. . . . . . .
I
. . . . . . . . . . . . . . . . . . . . . . . .
I
A.2 Nastavení desky . . . . . . . . . . . . . . . . . . . . . . . .
II
A.1 Sestavení desky
B
Sestavení a oživení Ĝídící desky kamery ZCAM B.1 Sestavení desky
. . . . . . . . . . . . . . . . . . . . . . . .
IV
B.2 Nastavení desky
. . . . . . . . . . . . . . . . . . . . . . . .
V
B.3 Nová verze desky C
. . . . . . . . IV
. . . . . . . . . . . . . . . . . . . . . . . VII
Sestavení a oživení senzorové desky Ing. Šedivého C.1 Rady pro osazení senzorové desky
. . . . . . .
IX
. . . . . . . . . . . . . IX
C.2 Nastavení senzorové desky pro ovČĜení funkþnosti senzoru . . IX C.3 Opravy doporuþené pro novou verzi senzorové desky D
Popis registrĤ I2C jednotky obvodu Cypress EZ-USB
- 108 -
. . . . IX . . . . .
X