ˇ ´ vysoke ´ uc ˇen´ı technicke ´ v Praze Cesk e ´ Fakulta elektrotechnicka ˇ´ıdic´ı techniky Katedra r
´ PRACE ´ DIPLOMOVA Orientace v prostoru
Praha, 2008
Autor: Bc. Ondˇ rej Ton
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady (literaturu, projekty, SW atd.) uveden´e v pˇriloˇzen´em seznamu.
V Praze dne podpis
i
Podˇ ekov´ an´ı T´ımto bych chtˇel podˇekovat sv´emu vedouc´ımu diplomov´e pr´ace Doc. Ing. Jiˇr´ımu Bayerovi, CSc. za vstˇr´ıcnost a cenn´e rady, kter´e mi v t´eto pr´aci pomohly. D´ale bych r´ad podˇekoval vˇsem ostatn´ım, kteˇr´ı mi byli ochotni poradit a pomoci pˇri tvorbˇe t´eto diplomov´e pr´ace. V neposledn´ı ˇradˇe bych chtˇel podˇekovat tak´e cel´e sv´e rodinˇe a pˇr´atel˚ um, kteˇr´ı mi jsou oporou po celou dobu m´eho studia.
ii
Abstrakt C´ılem t´eto diplomov´e pr´ace bylo navrhnout syst´em detekce pˇrek´aˇzek pro orientaci ˇ v prostoru, urˇcen´ y pro modely mobiln´ıch zaˇr´ızen´ı na Katedˇre ˇr´ıdic´ı techniky CVUT. Jsou zde shrnuty z´akladn´ı metody pro mˇeˇren´ı hloubkov´e mapy sc´eny, z nichˇz je vybr´ana metoda stereovidˇen´ı. Tato metoda je d´ale rozebr´ana a aplikov´ana na zvolen´ y sign´alov´ y DSP procesor Blackfin ADSP-BF61 na vybran´e HW platformˇe v´ yvojov´eho kitu s rozˇsiˇruj´ıc´ım modulem doplnˇen´ ym dvˇema CMOS kamerami. Algoritmizace jednoduch´eho a rychl´eho algoritmu stereovidˇen´ı je provedena nejdˇr´ıve v prostˇred´ı Matlab a pozdˇeji aplikov´ana na samotn´ y sign´alov´ y procesor. Abychom mohli efektivnˇe vyhled´avat korespondence mezi stereoskopick´ ymi sn´ımky okoln´ıho svˇeta, poˇr´ızen´ ymi z CMOS kamer, je realizov´ana rektifikace a kalibrace stereoskopick´eho p´aru sn´ımk˚ u. V z´avˇeru pr´ace jsou shrnuty v´ ysledky realizovan´e metody a n´avrh moˇzn´ ych vylepˇsen´ı.
iii
Abstract The aim of this diploma thesis was to design an obstacle detection system for space navigation focused on the mobile devices models developed at the Department of Control Engineering CTU. It summarized the basic methods of measuring the depth map of the scene, of which chosen method is stereovision. This method has been analysed and applied to the selected signal DSP processor Blackfin ADSP-BF61 using a specified hardware platform of development kit complemented by an expansion module with two CMOS cameras. Firstly, the algorithmization of a simple and fast stereovision algorithm was implemented in Matlab. Later on, it was applied to the chosen signal processor. An effective correspondence search between stereoscopic images of outside world acquired by 2 CMOS cameras is being carried out via rectification and calibration of a stereoscopic image pair. In conclusion, the work summarizes the results of implemented methods and possible improvements to the proposal.
iv
v
vi
Obsah Seznam obr´ azk˚ u
ix
Seznam tabulek
xii
´ 1 Uvod
1
2 Mˇ eˇ ren´ı polohy bod˚ u v prostoru
3
2.1
Stereovidˇen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ 2.1.1 Uvod do reprezentace obrazu a 3D vidˇen´ı . . . . . . . . . . . . . .
5
2.1.2
Kalibrace kamery . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.1.3
Epipol´arn´ı geometrie 2 kamer . . . . . . . . . . . . . . . . . . . .
10
2.1.4
V´ ypoˇcet vzd´alenosti bodu v prostoru - kanonick´a konfigurace . . .
12
2.1.5
Geometrie dvou kamer - fundament´aln´ı matice . . . . . . . . . . .
14
2.1.6
Probl´em okluze . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.2
Triangulaˇcn´ı metoda vyuˇz´ıvaj´ıc´ı ˇc´arov´ y laser a kameru . . . . . . . . . .
17
2.3
Z´ısk´an´ı hloubkov´e mapy ze sn´ımk˚ u se zn´amou ohniskovou vd´alenost´ı . . .
19
2.4
PMD technologie a PMD kamery . . . . . . . . . . . . . . . . . . . . . .
20
2.4.1
PMD technologie . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.4.2
PMD kamery . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.4.2.1
R 1k-S, 3k-S a 19k . . . . . . . . . . . . . . PMD[vision]
23
2.4.2.2
SwissRangerTM SR3000 a SR4000 . . . . . . . . . . . . .
24
2.4.2.3
Canesta . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3 V´ ybˇ er HW a SW pro zpracov´ an´ı dan´ ych u ´ loh
6
28
3.1
V´ ybˇer vhodn´eho prostˇredku pro zpracov´an´ı obrazov´ ych dat . . . . . . . .
28
3.2
Pˇrehled DSP procesor˚ u a v´ yvojov´ ych kit˚ u . . . . . . . . . . . . . . . . .
30
3.3
Informace o Blackfin procesoru ADSP-BF561 . . . . . . . . . . . . . . . .
32
3.4
Struktura sign´alov´eho procesoru ADSP-BF561 . . . . . . . . . . . . . . .
33
vii
3.4.1
Popis j´adra procesoru ADSP-BF561 . . . . . . . . . . . . . . . . .
33
3.4.2
Architektura pamˇeti procesoru ADSP-BF561 . . . . . . . . . . . .
34
4 V´ yvojov´ y kit pro ADSP-BF561
37
4.1
V´ yvojov´a deska DEV-BF5xxDA-Lite s integrovan´ ym Debug Agentem . .
38
4.2
Modul procesorov´e jednotky CM-BF561 . . . . . . . . . . . . . . . . . .
40
4.3
Rozˇsiˇruj´ıc´ı modul EXT-BF5xx-CAM . . . . . . . . . . . . . . . . . . . .
43
4.4
CMOS kamery OV2640FSL . . . . . . . . . . . . . . . . . . . . . . . . .
44
4.5
V´ yvojov´e prostˇred´ı Visual DSP++ 5.0 . . . . . . . . . . . . . . . . . . .
45
4.6
Nastaven´ı a instalace v´ yvojov´eho kitu . . . . . . . . . . . . . . . . . . . .
46
4.6.1
Nastaven´ı v´ yvojov´eho desky DEV-BF5xxDA-Lite . . . . . . . . .
46
4.6.2
Nastaven´ı rozˇsiˇruj´ıc´ıho modulu EXT-BF5xx-CAM . . . . . . . . .
46
4.6.3
Ovˇeˇren´ı funkˇcnosti cel´eho kitu a komunikace pˇres UART . . . . .
47
4.6.4
Instalace ovladaˇc˚ u USB Debug Agenta . . . . . . . . . . . . . . .
48
5 Algoritmizace metody stereovidˇ en´ı
50
5.1
Nastaven´ı projektu ve Visual DSP++ 5.0 . . . . . . . . . . . . . . . . . .
51
5.2
Nastaven´ı procesoru
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.3
Nastaven´ı rozhran´ı UART, kamer a paraleln´ıch sbˇernic PPI . . . . . . . .
53
5.4
Kalibrace a rektifikace kamer - MATLAB Camera Calibration Toolbox .
55
5.4.1
Kalibrace kamer . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
5.4.2
Rektifikace sn´ımk˚ u . . . . . . . . . . . . . . . . . . . . . . . . . .
57
Algoritmizace stereovidˇen´ı . . . . . . . . . . . . . . . . . . . . . . . . . .
59
5.5.1
Zpracov´an´ı sn´ımk˚ u z kamer . . . . . . . . . . . . . . . . . . . . .
59
5.5.2
Z´ısk´an´ı disparitn´ı mapy . . . . . . . . . . . . . . . . . . . . . . .
61
5.6
V´ ypoˇcet hloubkov´e mapy . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
5.7
Optimalizace algoritmu stereovidˇen´ı a v´ ysledky . . . . . . . . . . . . . .
67
5.5
6 Z´ avˇ er
71
Literatura
72
A Pˇ r´ılohy
I
B Obsah pˇ riloˇ zen´ eho CD
XII
viii
Seznam obr´ azk˚ u 1.1
V´ yvojov´ y kit pouˇzit´ y pro aplikaci stereovidˇen´ı. . . . . . . . . . . . . . . .
2
2.1
Intenzitn´ı obraz a hloubkov´a/disparitn´ı mapa . . . . . . . . . . . . . . .
4
2.2
Lidk´ y zrak - zn´azornˇen´ı stereovidˇen´ı. . . . . . . . . . . . . . . . . . . . .
5
2.3
Geometrie perspektivn´ıho zobrazen´ı bodu ve 3D sc´enˇe. . . . . . . . . . .
6
2.4
Geometrie line´arn´ı perspektivn´ı kamery. . . . . . . . . . . . . . . . . . .
7
2.5
V´ ypoˇcet souˇradnic bodu vznikl´eho projekc´ı. . . . . . . . . . . . . . . . .
9
2.6
Pˇr´ıklady zkreslen´ı obrazu . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.7
Epipol´arn´ı geometrie prostorov´eho vidˇen´ı. . . . . . . . . . . . . . . . . .
11
2.8
Kanonick´a stereo konfigurace dvou kamer. . . . . . . . . . . . . . . . . .
12
2.9
Z´akladn´ı geometrie stereovidˇen´ı v kanonick´e formˇe. . . . . . . . . . . . .
13
2.10 Obecn´a geometrie dvou kamer.
. . . . . . . . . . . . . . . . . . . . . . .
14
2.11 Probl´em okluze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.12 Zn´azornˇen´ı triangulaˇcn´ı metody vyuˇz´ıvaj´ıc´ı ˇc´arov´ y laser a kameru. . . . .
17
2.13 V´ ypoˇcet vzd´alenosti z podobn´ ych troj´ uheln´ık˚ u. . . . . . . . . . . . . . .
18
2.14 Obr´azky s r˚ uznou ostˇr´ıc´ı vzd´alenost´ı a v´ ysledn´a hloubkov´a mapa . . . . .
19
2.15 Princip metody mˇeˇren´ı TOF vyuˇz´ıvaj´ıc´ı fotodiodu na stranˇe pˇrij´ımaˇce. .
20
2.16 Struktura PMD pixelu. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.17 Pouˇzit´ı PMD prvku m´ısto fotodiody na stranˇe pˇrij´ımaˇce. . . . . . . . . .
22
2.18 PMD kamery z nab´ıdky PMDTechnologies GmbH. . . . . . . . . . . . . .
23
2.19 Uk´azka v´ ystupu kamery PMDTechnologies GmbH . . . . . . . . . . . . .
24
2.20 PMD kamery z nab´ıdky Mesa Imaging AG . . . . . . . . . . . . . . . . .
25
TM
2.21 Uk´azka z dod´avan´eho GUI kamery SwissRanger
SR3000 . . . . . . . .
26
2.22 Development kit DP300 a DP200 od firmy Canesta, Inc. . . . . . . . . .
26
3.1
Funkˇcn´ı blokov´ y diagram souˇc´ast´ı ADSP-BF561. . . . . . . . . . . . . . .
31
3.2
Struktura j´adra sign´alov´eho procesoru ADSP-BF561. . . . . . . . . . . .
34
3.3
Architektura pamˇeti ADSP-BF561. . . . . . . . . . . . . . . . . . . . . .
35
ix
4.1
V´ yvojov´a deska DEV-BF5xxDA-Lite. . . . . . . . . . . . . . . . . . . . .
38
4.2
Pˇrehled souˇc´ast´ı v´ yvojov´e desky DEV-BF5xxDA-Lite. . . . . . . . . . . .
39
4.3
Procesorov´a jednotka CM-BF561. . . . . . . . . . . . . . . . . . . . . . .
40
4.4
Blokov´ y diagram procesorov´e jednotky CM-BF561. . . . . . . . . . . . .
41
4.5
Popis v´ yvod˚ u procesorov´e jednotky CM-BF561. . . . . . . . . . . . . . .
42
4.6
Rozˇsiˇruj´ıc´ı kamerov´a deska EXT-BF5xx-CAM. . . . . . . . . . . . . . . .
43
4.7
CMOS kamery OV2640FSL . . . . . . . . . . . . . . . . . . . . . . . . .
44
4.8
Uˇzivatelsk´e prostˇred´ı Visual DSP++ 5.0 . . . . . . . . . . . . . . . . . .
45
4.9
Obrazovka utility DEV-BF5xxDA-Lite Installer. . . . . . . . . . . . . . .
48
4.10 Visual DSP++ konfigur´ator - nastaven´ı platformy. . . . . . . . . . . . . .
49
4.11 Visual DSP++ konfigur´ator - v´ ybˇer platformy. . . . . . . . . . . . . . . .
49
5.1
Blokov´e sch´ema pouˇzit´e fronty zpr´av pro komunikaci jader. . . . . . . . .
53
5.2
Uk´azka hypertermin´alov´e obrazovky komunikuj´ıc´ı s ADSP-BF561 . . . .
54
5.3
Nasn´ıman´ y kalibraˇcn´ı vzor. . . . . . . . . . . . . . . . . . . . . . . . . . .
56
5.4
Vnˇejˇs´ı parametry kamer . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
5.5
Blokov´ y diagram algorotmizace stereovidˇen´ı . . . . . . . . . . . . . . . .
60
5.6
Grafick´e zobrazen´ı krok˚ u v´ ypoˇctu disparitn´ı mapy . . . . . . . . . . . . .
63
5.7
64
5.8
Disparitn´ı mapa pro zn´am´ y dataset tsukuba“. . . . . . . . . . . . . . . ” Konvoluˇcn´ıho j´adro pr˚ umˇerovac´ıho filtru . . . . . . . . . . . . . . . . . .
64
5.9
Disparitn´ı a hloubkov´a mapa . . . . . . . . . . . . . . . . . . . . . . . . .
65
5.10 Hloubkov´a mapa vykreslen´a ve 3D prostoru . . . . . . . . . . . . . . . .
66
5.11 Z´avislost vzd´alenosti bodu v prostoru na disparitˇe . . . . . . . . . . . . .
67
5.12 Princip zrychlen´eho v´ ypoˇctu hodnot pr˚ umˇerovac´ıho filtru. . . . . . . . .
68
5.13 Struktura form´atu dat typu fract16. . . . . . . . . . . . . . . . . . . . . .
70
A.1 Disparitn´ı mapa pro dataset Midd1“. . . . . . . . . . . . . . . . . . . . ” A.2 Disparitn´ı mapa sc´eny ˇc. 1 . . . . . . . . . . . . . . . . . . . . . . . . . .
I I
A.3 Disparitn´ı mapa sc´eny ˇc. 2 . . . . . . . . . . . . . . . . . . . . . . . . . .
II
A.4 Disparitn´ı mapa sc´eny ˇc. 3 . . . . . . . . . . . . . . . . . . . . . . . . . .
II
A.5 Disparitn´ı mapa sc´eny ˇc. 4 . . . . . . . . . . . . . . . . . . . . . . . . . .
II
A.6 Disparitn´ı mapa pro dataset Wood1“. . . . . . . . ” A.7 Disparitn´ı mapa pro dataset Plastic“. . . . . . . . ” A.8 Disparitn´ı mapa pro sc´enu b´ıl´e“ zdi. . . . . . . . . ” A.9 Disparitn´ı mapa pro umˇele vytvoˇren´e ˇcern´e obr´azky
. . . . . . . . . . . .
II
. . . . . . . . . . . .
III
. . . . . . . . . . . .
III
. . . . . . . . . . . .
III
A.10 Rozm´ıstˇen´ı a oˇc´ıslov´an´ı konektor˚ u DEV-BF5xxDA-Lite . . . . . . . . . .
IV
x
A.11 Rozm´ıstˇen´ı a oˇc´ıslov´an´ı konektor˚ u EXT-BF5xx-CAM . . . . . . . . . . .
IV
A.12 BDTImark2000TM - pomˇer cena/v´ ykon . . . . . . . . . . . . . . . . . . .
X
A.13 Kalibraˇcn´ı a rektifikaˇcn´ı parametry kamer . . . . . . . . . . . . . . . . .
XI
xi
Seznam tabulek 2.1
Specifikace PMD kamer z nab´ıdky PMDTechnologies GmbH. . . . . . . .
24
2.2
Specifikace PMD kamer z nab´ıdky Mesa Imaging AG. . . . . . . . . . . .
25
2.3
Specifikace PMD kamer z nab´ıdky Canesta, Inc. . . . . . . . . . . . . . .
27
3.1
Srovn´avac´ı tabulka DSP procesor˚ u . . . . . . . . . . . . . . . . . . . . .
30
4.1
Typick´a spotˇreba procesorov´e jednotky CM-BF561. . . . . . . . . . . . .
41
5.1
Pˇrehled rychlost´ı funkc´ı pro pr˚ umˇerovac´ı filtr . . . . . . . . . . . . . . . .
69
5.2
Pˇrehled rychlost´ı dalˇs´ıch pouˇzit´ ych funkc´ı . . . . . . . . . . . . . . . . . .
70
A.1 V´ yvody konektoru X1 procesorov´e jednotky CM-BF561. . . . . . . . . .
V
A.2 V´ yvody konektoru X1 procesorov´e jednotky CM-BF561. . . . . . . . . .
VI
A.3 V´ yvody konektoru X2 procesorov´e jednotky CM-BF561. . . . . . . . . .
VII
A.4 V´ yvody konektoru X2 procesorov´e jednotky CM-BF561. . . . . . . . . . VIII A.5 Tabulka pˇripojen´ı kamery ˇc. 1 a ˇc. 2 . . . . . . . . . . . . . . . . . . . . .
IX
A.6 Funkce jednotliv´ ych LED diod na v´ yvojov´e desce DEV-BF5xxDA-Lite. .
X
xii
Kapitola 1 ´ Uvod Stejnˇe tak jako ˇclovˇek, tak i stroje se potˇrebuj´ı orientovat v okoln´ım prostoru, vyhnout se pˇrek´aˇzce, urˇcit vzd´alenost, napl´anovat smˇer pohybu, reagovat na vnˇejˇs´ı podm´ınky. ˇ ek disponuje sv´ Clovˇ ymi smysly, pˇredevˇs´ım zrakem, kter´e mu v t´eto orientaci napom´ahaj´ı. Tato diplomov´a pr´ace se zab´ yv´a n´avrhem syst´emu z´ısk´an´ı hloubkov´e mapy (anglicky depth map) pro detekci pˇrek´aˇzek. Takto navrˇzen´ y syst´em by mˇel b´ yt d´ale vyuˇziteln´ y pro ˇ orientaci v prostoru se zamˇeˇren´ım na modely um´ıstˇen´e na Katedˇre ˇr´ıdic´ı techniky CVUT, napˇr. model vzducholodi nebo model vzn´aˇsedla, a to s ohledem na jejich vlastnosti a parametry [4]. V kapitole 2 je struˇcn´ y v´ yˇcet metod, kter´e lze pouˇz´ıt k z´ısk´an´ı hloubkov´e mapy. Z tˇechto metod je vybr´ana metoda streovidˇen´ı vyuˇz´ıvaj´ıc´ı vlastnost´ı dvou stereoskopick´ ych sn´ımk˚ u a principu triangulace. Tato metoda je podrobnˇeji rozebr´ana v kapitole 2.1 a aplikov´ana pro navrˇzen´ y syst´em. Pro poˇzadavky zpracov´an´ı u ´lohy stereovidˇen´ı bylo nutn´e vybrat vhodn´ y v´ ypoˇcetn´ı prostˇredek zpracov´an´ı obrazov´ ych dat. Byl vybr´an dvouj´adrov´ y sign´alov´ y procesor od firmy Analog Devices ADSP-BF561, popsan´ y v kapitole 3.1. Pro v´ yvoj a implementaci navrˇzen´ ych algoritm˚ u na tomto sign´alov´em procesoru byla zvolena univerz´aln´ı v´ yvojov´a deska DEV-BF5xxDA-Lite s integrovan´ ym Debug Agentem“ od firmy Bluetechnix. Tato ” v´ yvojov´a deska je osazen´a procesorovou jednotkou CM-BF561, kter´a obsahuje zmiˇ novan´ y dvouj´adrov´ y sign´alov´ y procesor ADSP-BF561. Aby bylo moˇzn´e zpracovat obrazy z okoln´ı sc´eny, je cel´ y modulov´ y v´ yvojov´ y kit na obr´azku obr. 1.1 doplnˇen o rozˇsiˇruj´ıc´ı kamerovou desku EXT-BF5xx-CAM se dvˇema barevn´ ymi CMOS kamerami. Vlastnosti a parametry jednotliv´ ych ˇc´ast´ı v´ yvojov´eho kitu jsou rozebr´any v kapitole 4. Jednoduch´ y algoritmus stereovidˇen´ı pro v´ ypoˇcet hloubkov´e mapy byl nejdˇr´ıve navrˇzen v programovac´ım prostˇred´ı Matlab verze 7.1 spoleˇcnosti MathWorks a pozdˇeji implementov´an ve vybran´em v´ yvojov´em prostˇred´ı pro dan´ y sign´alov´ y procesor. 1
´ KAPITOLA 1. UVOD
2
Obr´azek 1.1: V´ yvojov´ y kit pouˇzit´ y pro aplikaci stereovidˇen´ı.
V z´avˇeru pr´ace jsou shrnuty a zhodnoceny vlastnosti, parametry a v´ ysledky otestovan´eho algoritmu stereovidˇen´ı pouˇzit´eho na HW platformˇe firmy Bluetechnix s dvouj´adrov´ ym sign´alov´ ym procesorem ADSP-BF561.
Kapitola 2 Mˇ eˇ ren´ı polohy bod˚ u v prostoru V t´eto kapitole jsou pops´any z´akladn´ı bezkontaktn´ı metody mˇeˇren´ı vzd´alenosti a z´ısk´an´ı hloubkov´e mapy (podrobnˇejˇs´ı popis je uveden v literatˇre [3]). Jsou zde shrnuty v´ yhody a nev´ yhody pouˇzitelnosti konkr´etn´ıch metod pro vlastnosti mobiln´ıho zaˇr´ızen´ı. Mˇeˇren´ı vzd´alenost´ı m˚ uˇzeme prov´adˇet kontaktnˇe nebo bezkontaktnˇe. U bezkontaktn´ıch metod se mˇeˇr´ıc´ı aparatura nedostane do pˇr´ım´eho styku s mˇeˇren´ ym objektem. Mezi obecnˇe zn´am´e bezkontaktn´ı metody patˇr´ı napˇr. sonary vyuˇz´ıvaj´ıc´ı ultrazvuku a radary vyuˇz´ıvaj´ıc´ı mikrovln´ ych p´asem. Ty pracuj´ı na principu mˇeˇren´ı zpoˇzdˇen´ı vyslan´eho vlnˇen´ı, tj. dobu nutnou k pˇrekon´an´ı vzd´alenosti od vys´ılaˇce k pˇrek´aˇzce a zpˇet k pˇrij´ımaˇci. Z nekontaktn´ıch metod jsou pro tuto diplomovou pr´aci d˚ uleˇzit´e pˇredevˇs´ım metody operuj´ıc´ı ve spektru viditeln´eho svˇetla (a/nebo bl´ızko viditeln´eho spektra), kter´e lze zpracovat pomoc´ı kamer. Metody operuj´ıc´ı ve spektru viditeln´eho svˇetla (a/nebo bl´ızko viditeln´eho spektra) lze d´ale rozdˇelit na aktivn´ı a pasivn´ı. Mezi aktivn´ı metody patˇr´ı napˇr. prom´ıt´an´ı jist´eho vzoru (bodu, ˇc´ary nebo sloˇzitˇejˇs´ıho vzoru) do sc´eny. Ze znalosti um´ıstˇen´ı zdroje prom´ıtan´eho svˇeteln´eho vzoru v prostoru, um´ıstˇen´ı sn´ımac´ıho prvku v prostoru (v naˇsem pˇr´ıpadˇe je sn´ımac´ım prvkem kamera) a jejich vz´ajemn´eho natoˇcen´ı, lze triangulac´ı vypoˇc´ıtat vzd´alenosti tˇech bod˚ u ve sc´enˇe, jenˇz jsou svˇeteln´ ym vzorem pokryty. Takov´ato aktivn´ı metoda, vyuˇz´ıvaj´ıc´ı ˇc´arov´ y laser a kameru, je pops´ana v kapitole 2.2. Odliˇsnou aktivn´ı metodou, jenˇz pim´arnˇe nezpracov´av´a obrazovou informaci, je metoda vyuˇz´ıvaj´ıc´ı PMD technologii (kapitola 2.4). Ta nahrazuje mˇeˇren´ı doby letu svˇeteln´eho paprsku mˇeˇren´ım f´azov´eho posuvu mezi vyslan´ ym a pˇrijat´ ym modulovan´ ym svˇeteln´ ym sign´alem. Pasivn´ı metodou je napˇr. stereovidˇen´ı, kdy vyuˇz´ıv´ame pouze okoln´ıho svˇetla. Zde hled´ame korespondence obrazov´ ych bod˚ u nebo jejich okol´ı mezi dvˇema sn´ımky, poˇr´ızen´ ymi z kamer se zn´am´ ym um´ıstˇen´ı v prostoru (podrobn´ y popis t´eto metody je uveden v kapi3
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
4
tole 2.1). Dalˇs´ı pasivn´ı metodou je z´ısk´an´ı hloubkov´e mapy hled´an´ım kontrastn´ıch oblast´ı ve sn´ımku se zn´amou ohniskovou vzd´alenost´ı (kapitola 2.3). Pro pˇrehled bych zde r´ad uvedl pojmy pixel, voxel, hloubkov´a mapa, disparitn´ı mapa a 2D intenzitn´ı obraz. Pixel (picture element) je jednotkov´ y a d´ale jiˇz nedˇeliteln´ y prvek intenzitn´ıho obrazu, jeˇz vyjadˇruje mnoˇzstv´ı svˇeteln´e energie pˇrijat´e ze sc´eny kamerov´ ym senzorem. Voxel (volume pixel ) je odvozen od pixelu a znaˇc´ı jednotkov´ y prvek, kter´ ym nam´ısto mnoˇzstv´ı svˇeteln´e energie u pixelu vyj´adˇr´ıme vzd´alenost v prostoru. Poloha skupiny vˇsech bod˚ u v 3D prostoru sc´eny je vyj´adˇren´a hloubkovou mapou, tj. matic´ı vzd´alenost´ı (voxel˚ u), kter´a souˇradnicovˇe odpov´ıd´a 2D intenzitn´ımu obr´azku sn´ıman´e sc´eny. Stejn´ y v´ yznam jako hloubkov´a mapa m´a i pojem disparitn´ı mapa s t´ım rozd´ılem, ˇze disparitn´ı mapa nevyjadˇruje pˇr´ımo vzd´alenosti skupiny bod˚ u v prostoru, ale vzd´alenost odpov´ıdaj´ıc´ıch si pixel˚ u mezi dvˇema stereskopick´ ymi sn´ımky. Vzd´alenost je uvedena v pixelech a skuteˇcn´a vzd´alenost se pak pˇrepoˇc´ıt´a pomoc´ı vzorce (5.6). 2D intenzitn´ı obraz je vyj´adˇren matic´ı svˇeteln´ ych intenzit (pixel˚ u). Disparitni mapa − sedotonova
Intenzitni obrazek 20 40 60 80 100 120
50
100
150
20 40 60 80 100 120
Disparitni mapa − jet 10
5
50
100
150
0
20 40 60 80 100 120
10
5
50
100
150
0
Obr´azek 2.1: Intenzitn´ı obraz je vlevo, vpravo je vyj´adˇren´ı disparitn´ı mapy (ˇsedot´onov´a a jet“ paleta). ”
Pˇr´ıklad intenzitn´ıho vyj´adˇren´ı obrazu je vidˇet vlevo na obr´azku obr. 2.1 a vyj´adˇren´ı ˇ a barva disparitn´ı mapy ve dvou variant´ach vpravo (ˇsedot´onov´a a jet“ paleta). Cern´ ” v ˇsedot´onov´em vyj´adˇren´ı disparitn´ı mapy odpov´ıd´a nulov´e vzd´alenosti koresponduj´ıc´ıch si bod˚ u a b´ıl´a jejich maxim´aln´ı vzd´alenosti. Podobnˇe je tomu i u hloubkov´e mapy typu jet“, pouze se zmˇenila barevn´a paleta odpov´ıdaj´ıc´ıch hodnot. ” Podobn´e zobrazen´ı je moˇzn´e prov´est i pro hloubkovou mapu. Jednotkou bude m´ısto disparity vzd´alenost bodu v prostoru. Hodnoty v ˇsedot´onov´em vyj´adˇren´ı hloubkov´e mapy odpov´ıdaj´ı odst´ın˚ um ˇsedi - b´ıl´a je nejbl´ıˇze pozorovateli, ˇcern´a naopak nejd´ale. Samozˇrejmˇe je moˇzn´e disparitn´ı/hloubkovou mapu vy´adˇrit i v jin´ ych barevn´ ych palet´ach.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
2.1
5
Stereovidˇ en´ı
Metoda stereovidˇen´ı je jednou z metod, jenˇz lze vyuˇz´ıt k z´ısk´an´ı vzd´alenost´ı bod˚ u ve sc´enˇe nebo k vytvoˇren´ı kompletn´ı hloubkov´e mapy. Princip stereoskopic´ ych sn´ımk˚ u mimo jin´e vyuˇz´ıv´a tak´e lidsk´ y smysl - zrak. Sloˇzitost zpracov´an´ı mozkem je vˇsak mnohem sloˇzitˇejˇs´ı a stereovidˇen´ı v lidsk´em mozku je jen ˇc´ast komplexn´ıho zpracov´an´ı, kter´e je jeˇstˇe v mnoh´em neprozkouman´e. Analogicky m˚ uˇzeme lidsk´e oˇci pˇripodobnit ke dvˇema kamer´am a mozek k procesoru, kter´ y tyto dva stereoskopick´e sn´ımky, dvojrozmˇern´e (2D) intenzitn´ı obrazy zpracov´av´a a triangulac´ı vypoˇc´ıt´a vzd´alenost jednotliv´ ych bod˚ u. Obdobn´ ym zp˚ usobem k t´eto u ´loze pˇristupuje i poˇc´ıtaˇcov´e vidˇen´ı.
Obr´azek 2.2: Lidk´ y zrak - zn´ azornˇen´ı stereovidˇen´ı.
V kapitole 2.1.1 je pops´an princip geometrick´e perspektivn´ı projekce bod˚ u z prostoru, jehoˇz v´ ysledkem je dvojrozmˇern´ y obraz z´ıskan´ y neline´arn´ımi vztahy (2.1) a (2.2). Opˇetovn´a geometrick´a rekonstrukce vzd´alenosti prom´ıtnut´eho bodu z jednoho z´ıskan´eho intenzitn´ıho obrazu je nedostateˇcnˇe podm´ınˇen´a. Nab´ızej´ıc´ım se ˇreˇsen´ım je z´ıskat dva ˇci v´ıce sn´ımk˚ u z r˚ uzn´ ych m´ıst, kde zn´ame vz´ajemn´e rozm´ıstˇen´ı a natoˇcen´ı kamer v prostoru. Zp˚ usob takov´eho ˇreˇsen´ı z´ısk´an´ı hloubkov´e mapy sc´eny komplikuj´ı jednostrann´a nebo oboustrann´a okluze (kapitola 2.1.6), pˇr´ıtomnost ˇsumu v z´ısk´an´ ych sn´ımc´ıch, r˚ uzn´e radiometrick´e1 vlastnoti sc´eny v jednotliv´ ych sn´ımc´ıch, probl´em hled´an´ı vz´ajemn´ ych korespondenc´ı a v neposledn´ı ˇradˇe ˇcasov´a/v´ ypoˇcetn´ı n´aroˇcnost hled´an´ı tˇechto korespondenc´ı mezi sn´ımky. 1
Radiometrie je ˇc´ast optiky, kter´a se zab´ yv´a mˇeˇren´ım elektromagnetick´eho z´aˇren´ı, vˇcetnˇe svˇetla. Ra-
diometrie se zab´ yv´a absolutn´ımi veliˇcinami, zat´ımco fotometrie studuje obdobn´e veliˇciny, avˇsak z hlediska jejich p˚ usoben´ı na lidsk´e oko.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
6
Princip z´ısk´an´ı hloubkov´e mapy metodou stereovidˇen´ı lze v z´akladn´ım pod´an´ı popsat pomoc´ı tˇechto tˇr´ı krok˚ u: 1. Kalibrace obou kamer pouˇzit´ ych pro stereovidˇen´ı 2. Nalezen´ı korespondenc´ı bod˚ u mezi lev´ ym a prav´ ym sn´ımkem 3. V´ ypoˇcet tˇret´ıho rozmˇeru bodu v prostoru v z´avislosti na vzd´alenosti odpov´ıdaj´ıc´ıch si nalezen´ ych korespondenc´ı v lev´em a prav´em sn´ımku V n´asleduj´ıc´ım textu je uvedena teorie potˇrebn´a pro navrˇzen´ı algoritm˚ u uveden´ ych v kapitole 5.
2.1.1
´ Uvod do reprezentace obrazu a 3D vidˇ en´ı
Re´aln´ y svˇet, kter´ y vˇsichni dobˇre zn´ame, jenˇz n´as obklopuje a my jako lid´e se v tomto svˇetˇe pohybujeme a ˇzijeme, je trojrozmˇern´ y (3D). Pojem trojrozmˇern´ y (tj. trojdimenzion´aln´ı) znamen´a, ˇze body okoln´ıho prostˇred´ı interpretujeme pomoc´ı tˇr´ı promˇenn´ ych x, y, z a tyto promˇenn´e jsou souˇradnice reprezentuj´ıc´ı um´ıstˇen´ı bodu v prostoru. Pokud pouˇzijeme kart´ezskou soustavu souˇradnic (tzn. soustavu souˇradnic, u kter´e jsou souˇradn´e osy vz´ajemnˇe kolm´e, prot´ınaj´ı se v poˇc´atku soustavy souˇradnic a souˇradnice polohy bodu je moˇzno z´ıskat jako kolm´e pr˚ umˇety polohy k jednotliv´ ym os´am), m˚ uˇzeme graficky zn´azornit um´ıstˇen´ı bodu v prostoru tak, jak je to vyobrazeno na obr´azku obr. 2.3.
Obr´azek 2.3: Geometrie perspektivn´ıho zobrazen´ı bodu ve 3D sc´enˇe.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
7
Obr´azek obr. 2.3 z´aroveˇ n ukazuje princip geometrick´eho perspektivn´ıho prom´ıt´an´ı. V´ ysledkem perspektivn´ıho zobrazen´ı, tj. stˇredov´eho prom´ıt´an´ı, je dvojrozmˇern´ y (2D) obraz z´ıskan´ y neline´arn´ımi vztahy (2.1) a (2.2). x′ =
xf z
(2.1)
yf (2.2) z V modelu d´ırkov´e komory2 se vˇsechny body leˇz´ıc´ı ve 3D prostoru na jedn´e spoleˇcn´e y′ =
polopˇr´ımce, vych´azej´ıc´ı od stˇredu prom´ıt´an´ı a pokraˇcuj´ıc´ı do prostoru sc´eny, zobrazuj´ı do jedin´eho bodu a t´ım doch´az´ı ke ztr´atˇe informace o hodnotˇe na ose z, ˇcili o vzd´alenosti sejmut´eho bodu. Perspektivn´ı zobrazen´ı je neinvertovateln´e a geometrick´a u ´loha rekonstrukce 3D bodu v prostoru z jedin´eho 2D obrazu je nedostateˇcnˇe podm´ınˇen´a.
Obr´azek 2.4: Geometrie line´ arn´ı perspektivn´ı kamery. 2
D´ırkov´ a komora je zaloˇzena na principu, kdy svˇetlo proch´azej´ıc´ı mal´ ym otvorem do tmav´eho prostˇred´ı
vytv´ aˇr´ı v nˇem obraz venkovn´ıho svˇeta.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
8
Kameru s tenkou ˇcoˇckou lze dobˇre aproximovat modelem d´ırkov´e komory. Na obr´azku obr. 2.4 je vidˇet geometrie takov´eto kamery, kde se bod X ze sc´eny re´aln´eho svˇeta prom´ıt´a pˇres optick´ y stˇred kamery na obrazovou rovinu do bodu U. Vzd´alenost f optick´eho stˇredu C od obrazov´e roviny je zn´am´a jako ohniskov´a vzd´alenost. Kamera prov´ad´ı line´arn´ı transformaci 3D projektivn´ıho prostoru P 3 do 2D projektivn´ıho prostoru P 2 . Bod X um´ıstˇen´ y ve sc´enˇe vyj´adˇr´ıme v souˇradnicov´em syst´emu kamery (Xc ) pomoc´ı vztahu (2.3) s pouˇzit´ım translace t a rotace R.
xc
= R(XW − t) Xc = y c zc
(2.3)
V´ ypoˇcet bodu Uc vznikl´eho projekc´ı bodu X do obrazov´e roviny je d´an vztahem (2.4), definovan´ ym podobn´ ymi troj´ uhlen´ıky v obr´azku obr. 2.5. T Uc = −fzcxc , −fzcyc , −f
a b −u0 U u = V = 0 c −v0 W 0 0 1
−f xc zc −f yc zc
1
=
(2.4)
−f a −f b −u0 0
fc
0
0
−xc zc −yc zc
(2.5) −v0 1 1
Bod prom´ıtnut´ y do obrazov´e roviny m˚ uˇzeme vyj´adˇrit v homogenn´ıch3 souˇradn´ıc´ıch jako e = (U, V, W )T nebo ve 2D euklidovsk´ u ych souˇradnic´ıch u = (u, v)T = (U/W, V /W )T . Pˇri
pouˇzit´ı homogenn´ıch souˇradnic m˚ uˇzeme rovnici (2.5) n´asobit nenulovou konstantou (zc ) a z´ısk´ame
e = zc zc u
−f a −f b −u0 0
fc
0
0
=
3
v´ıce v literatuˇre [2]
−xc zc −yc zc
= −v0 1 1
−f a −f b −u0 0
fc
0
0
−f a −f b −u0 0
fc
0
0
−xc
−yc = (2.6) −v0 1 1
−v0 R(XW − t) = KR(XW − t) 1
(2.7)
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
9
Obr´azek 2.5: V´ ypoˇcet souˇradnic bodu vznikl´eho projekc´ı.
Tˇemito operacemi jsme se dostali ke kalibraˇcn´ı matici K. Tato matice je horn´ı troju ´heln´ıkov´a a jej´ı koeficienty se naz´ yvaj´ı vnitˇrn´ı parametry (anglicky intrisic parametres) a jsou nezbytn´e pro ud´an´ı vztahu mezi souˇradnicemi v obrazov´e rovinˇe a souˇradn´ ym syst´emem kamery. Vnˇejˇs´ı parametry kamery (anglicky extrinsic parametres) definuj´ı polohu a orientaci souˇradn´eho syst´emu kamery vzhledem ke zn´am´emu obecn´emu souˇradn´emu syst´emu. Podrobnˇejˇs´ı popis projektivn´ı geometrie pro 3D vidˇen´ı je uveden v literatuˇre [2].
2.1.2
Kalibrace kamery
Obraz z kamery je obykle deformov´an zkreslen´ım, kter´e lidsk´ ym okem nemus´ıme v˚ ubec odhalit, ale pro pouˇzit´ı v poˇc´ıtaˇcov´em zpracov´an´ı obrazu je toto zkreslen´ı nezanedbateln´e, b´ yv´a zpravidla nˇekolik pixel˚ u. Kalibrace kamery je postup, kde v´ ystupem je kalibraˇcn´ı matice. Pro aplikaci stereovidˇen´ı je z hlediska rychlosti zpracov´an´ı stereoskopick´ ych sn´ımk˚ u tuto korekci nutn´e prov´est. Rovnice korekc´ı souˇradnic (2.8) a (2.9) m˚ uˇzeme zapsat ve tvaru, kde u, v jsou korigovan´e souˇradnice, u e, ve jsou souˇradnice v p˚ uvodn´ım obraze a δu, δv jsou
korekce.
u=u e + δu
(2.8)
v = ve + δv
(2.9)
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
10
Typick´e b´ yv´a radi´aln´ı zkreslen´ı a zkreslen´ı, kdy je hlavn´ı bod um´ıstˇen mimo optickou osu. Informaci o bˇeˇzn´ ych zkreslen´ıch v´ yrobci v katalogu neuv´adˇej´ı, a tak parametry zkreslen´ı z´ısk´ame kalibrac´ı kamery. Radi´aln´ı zkreslen´ı je popsan´e rovnicemi druh´eho ˇr´adu (2.10) a (2.10) a d´ano optickou soustavou. Typick´ ym pˇredstavitelem je soudkovit´ y (anglicky barrel ) nebo poduˇskovit´ y (anglicky pincushion) tvar zkreslen´ı (obr. 2.6). Zkreslen´ı m˚ uˇze b´ yt samozˇrejmˇe sloˇzitˇejˇs´ıho charakteru. u=u e [1 ± κ1 (e u2 + ve2 )]
(2.10)
v = ve [1 ± κ1 (e u2 + ve2 )]
(2.11)
Obr´azek 2.6: Pˇr´ıklady zkreslen´ı obrazu - obraz bez zkreslen´ı (vlevo), soudkovit´e (uprostˇred), poduˇskovit´e (vpravo).
Aby hled´an´ı korespondenc´ı mezi stereoskopick´ ymi sn´ımky bylo co nejjednoduˇsˇs´ı a nejrychlejˇs´ı, je potˇreba pˇrev´est epipol´arn´ı geometrii sn´ımk˚ u do kanonick´eho tvaru, kde jsou epipol´arn´ı linie paraleln´ı a t´ım p´adem je moˇzn´e pˇrev´est u ´lohu 2D hled´an´ı korespondenc´ı na u ´lohu 1D prohled´av´an´ı - hled´an´ı korespondenc´ı v jednom ˇr´adku (viz. kapitola 2.1.3). T´ım si uˇsetˇr´ıme sloˇzitost algoritmizace a zrychl´ıme cel´ y proces z´ısk´an´ı hloubkov´e mapy. Kalibrace dvojice kamer pro stereovidˇen´ı je pops´ana v kapitole 5.4
2.1.3
Epipol´ arn´ı geometrie 2 kamer
V pˇr´ıpadˇe, ˇze zn´ame souˇradn´ y syst´em zkalibrovan´e kamery, m˚ uˇzeme jednoznaˇcnˇe urˇcit projektivn´ı paprsek spojuj´ıc´ı sn´ıman´ y bod s jeho prom´ıtnut´ım v obraze (senzoru kamery).
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
11
Stejnou u ´vahu provedeme i pro druhou kameru. Pokud tyto dvˇe kamery sn´ımaj´ı stejn´ y bod P ve sc´enˇe, pak z pr˚ useˇc´ıku projektivn´ıch paprsk˚ u obou kamer urˇc´ıme prostorov´e souˇradnice pozorovan´eho bodu P. Geometrie takov´eho syst´emu je zobrazena na obr´azku obr. 2.7 a naz´ yv´a se epipol´arn´ı geometrie.
Obr´azek 2.7: Epipol´arn´ı geometrie prostorov´eho vidˇen´ı.
Spojnice mezi body optick´ ych stˇred˚ u C a C′ se naz´ yv´a z´akladna (anglicky baseline). Z´akladna, spojnice mezi optick´ ym stˇredem C a bodem P a spojnice mezi optick´ ym stˇredem C′ a bodem P vymezuj´ı epipol´arn´ı rovinu. Pr˚ useˇcnice epipol´arn´ı roviny s levou, resp. pravou obrazovou rovninou se naz´ yv´a epipol´arn´ı linie l, resp. l′ . V pˇr´ıpadˇe, ˇze se bod v prostoru pohybuje, pak vˇsechny epipol´arn´ı linie l, resp. l′ vˇzdy proch´azej´ı bodem e, resp. e′ . Body e a e′ se naz´ yvaj´ı epip´oly. Jsou tvoˇreny pr˚ useˇc´ıkem z´akladny s levou a pravou obrazovou rovinou. Bod u je projekc´ı bodu P do lev´e obrazov´e roviny a bod u′ je projekc´ı bodu P do prav´e obrazov´e roviny. V pˇr´ıpadˇe, ˇze bod bude v prostoru mˇenit pouze vzd´alenost (zvˇetˇsuje se nebo zmˇenˇsuje z -tov´a souˇradnice), pak se spojnice optick´eho stˇredu C a bodu P, reprezentuj´ıc´ı veˇsker´e moˇzn´e vzd´alenosti bodu P ve sc´enˇe, z´aroveˇ n prom´ıt´a na epipol´arn´ı linii l′ prav´e obrazov´e roviny. Z toho plyne, ˇze korespondence bodu u′ z lev´e obrazov´e roviny bude vˇzdy leˇzet na epipol´arn´ı linii l′ n´aleˇz´ıc´ı prav´e obrazov´e rovinˇe. Tento poznatek je pro n´avrh algoritm˚ u velice d˚ uleˇzit´ y. Poskytuje omezen´ı hled´an´ı korespondence projekce u bodu P pouze na epipol´arn´ı linii l′ . Jak jiˇz bylo ˇreˇceno, zjednoduˇsuje probl´em vyhled´av´an´ı korespondence z 2D na 1D prohled´av´an´ı. Tuto u ´vahu lze pˇren´est i na hled´an´ı korespondence bodu u′ z prav´e obrazov´e roviny na epipol´arn´ı linii l leˇz´ıc´ı v lev´e obrazov´e rovinˇe.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
12
Dalˇs´ım d˚ uleˇzit´ ym zjednoduˇsen´ım a moˇznost´ı zrychlit z´akladn´ı algoritmus stereovidˇen´ı je uspoˇr´ad´an´ı kamer do tzv. kanonick´e konfigurace (obr´azek obr. 2.8). Princip spoˇc´ıv´a v um´ıstˇen´ı kamer tak, aby si obrazov´e ˇr´adky senzor˚ u kamer odpov´ıdaly - byly zarovn´any horizont´alnˇe. Optick´e osy kamer jsou t´ımto uzp˚ usoben´ım kamer paraleln´ı, epip´oly se pˇresunou do nekoneˇcna a epipol´arn´ı linie v obrazov´ ych rovin´ach se stanou tak´e paraleln´ı. Zarovn´an´ı kamer m˚ uˇze b´ yt tak´e horizont´aln´ı, ale pro jednoduchost zpracov´an´ı a principu sn´ım´an´ı obrazu kamerou po ˇr´adc´ıch, je lepˇs´ı hledat korespondence v ˇr´adku.
Obr´azek 2.8: Kanonick´a stereo konfigurace dvou kamer.
Aˇckoliv obˇe kamery um´ıst´ıme a mechanicky nastav´ıme tak, abychom dos´ahli co nejpˇresnˇejˇs´ıho moˇzn´eho horizont´aln´ıho zarovn´an´ı, je nutn´e prov´est geometrickou transformaci zvanou rektifikace (anglicky rectification). Bliˇzˇs´ı informace o rektifikaci je moˇzn´e naj´ıt v literatuˇre [2] nebo [10].
2.1.4
V´ ypoˇ cet vzd´ alenosti bodu v prostoru pro kanonickou konfigurace kamer
V tomto textu je pops´an princip v´ ypoˇctu vzd´alenosti bodu um´ıstˇen´eho v prostoru z kanonick´eho uspoˇr´ad´an´ı kamer. Na obr´azku obr. 2.9 je zobrazen pohled shora na dvˇe kamery s optick´ ymi stˇredy ve vzd´alenosti b = 2h. Na obr´azku si d´ale m˚ uˇzeme vˇsimnout bodu P, um´ıstˇen´eho v prostoru na souˇradnic´ıch x, y, z. Bod P je projektivn´ı transformac´ı prom´ıtnut do lev´e obrazov´e roviny do bodu Pl a z´aroveˇ n do bodu Pr v prav´e
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
13
obrazov´e rovinˇe. Osa z pˇredstavuje vzd´alenost bodu P od kamer. Kamery jsou um´ıstˇeny ve vzd´alenosti z = 0, v poˇc´atku. Osa x vyjadˇruje horizont´aln´ı vzd´alenost ze stˇredu um´ıstˇen´ı mezi kamerami a nav´ıc m´a kaˇzd´a ze dvou kamer sv˚ uj souˇradn´ y syst´em xl a xr se stˇredy v xl = 0 a xr = 0. Rozd´ıl mezi hodnotami xl a xr , resp. |Pl − Pr | > 0 je naz´ yv´an disparitou (anglicky disparity). Spojnice bod˚ u Pl , Cl a P , Cl jsou pˇrepony podobn´ ych pravo´ uhl´ ych troj´ uhlen´ık˚ u. Pomoc´ı z´akladn´ı geometrie dok´aˇzeme odvodit vztah (2.15) pro v´ ypoˇcet vzd´alenosti bodu P od kamer.
Obr´azek 2.9: Z´akladn´ı geometrie stereovidˇen´ı v kanonick´e formˇe.
Pouˇzit´ım zn´am´eho neline´arn´ıho vztahu (2.1) pro souˇradnice na ose x, do nˇehoˇz dosad´ıme pro levou obrazovou rovinu x′ = h + x, z´ısk´ame (2.12). (h + x)f (2.12) z Opˇetovn´ ym pouˇzit´ım vztahu (2.1) dosad´ıme pro pravou obrazovou rovinu x′ = h − x a −Pl =
z´ısk´ame (2.13). (h − x)f (2.13) z Ze vztah˚ u (2.12) a (2.13) dostaneme eliminac´ı promˇenn´e x vztah (2.14) a u ´prav´ıme do Pr =
tvaru (2.15). z(Pr − Pl ) = 2hf z=
2hf Pr − Pl
(2.14) (2.15)
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
14
Rozd´ıl Pr − Pl je v´ ysledn´a hodnota disparty pozorovan´eho bodu P a pokud je Pr − Pl = 0, pak znaˇc´ı, ˇze vzd´alenost bodu je teoreticky v nekoneˇcnu. Prakticky nulov´a disparita znaˇc´ı mez rozliˇsen´ı nejvˇetˇs´ı moˇzn´e mˇeˇren´e vzd´alenosti.
2.1.5
Geometrie dvou kamer - fundament´ aln´ı matice
Algoritmy v kapitole 5 jsou v navrˇzeny pro kanonickou konfiguraci kamer a rektifikovan´e sn´ımky. Zde je struˇcnˇe uveden matematick´ y popis obecn´eho modelu dvou kamer, kter´e nejsou v kanonick´e konfiguraci. V´ıce informac´ı lze opˇet naj´ıt v literatuˇre [2]. Souˇradn´ y syst´em lev´e obrazov´e roviny m˚ uˇze b´ yt transformov´an do prav´e obrazov´e roviny z bodu C optick´eho stˇredu lev´e kamery do optick´eho stˇredu prav´e kamery C′ pomoc´ı translace t a matice rotace R. Souˇradn´ y syst´em lev´e kamery pouˇzijeme jako vztaˇzn´ y. Projekce bodu v prostoru do lev´e obrazov´e roviny je pops´ana rovnic´ı (2.16), kde K je kalibraˇcn´ı matice lev´e kamery. u∼ = KX
(2.16)
Symbol ∼ = znaˇc´ı, ˇze nen´ı zn´amo mˇeˇr´ıtko. Transformace souˇradn´eho syst´emu prav´e obrazov´e roviny do souˇradn´eho syst´emu lev´e obrazov´e roviny je provedena v rovnici (2.17) v´ yrazem (RX − Rt), kde K ′ je kalibraˇcn´ı matice prav´e kamery. u′ ∼ = K ′ (RX − Rt) = K ′ X′
Obr´azek 2.10: Obecn´ a geometrie dvou kamer.
(2.17)
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
15
Vektory X, X′ a t jsou koplan´arn´ı4 . Vektor X′ v˚ uˇci prav´e kameˇre oznaˇc´ıme jako X′R a v˚ uˇci lev´e kameˇre jako X′L . Rotace souˇradn´ ych syst´emu vyj´adˇr´ıme vztahy (2.18) a (2.19). Rovnici vyjadˇruj´ıc´ı koplanaritu zap´ıˇseme jako (2.20). X′R = RX′L
(2.18)
X′L = R−1 X′R
(2.19)
′ XT L (t × XL ) = 0
(2.20)
Rovnici (2.16) vyj´adˇr´ıme ve tvaru XL = K −1 u, rovnici (2.17) jako X′R = (K ′ )−1 u′ , do rovnice (2.19) dosad´ıme X′R a z´ısk´ame vztah (2.21). X′L = R−1 (K ′ )−1 u′
(2.21)
Dosazen´ım (2.21) do (2.20) z´ısk´ame (K −1 u)T (t × R−1 (K ′ )−1 u′ ) = 0
(2.22)
Tato rovnice je vzhledem k t homogenn´ı, tud´ıˇz nen´ı urˇceno mˇeˇr´ıtko a absolutn´ı mˇeˇr´ıtko nez´ısk´ame, pokud nebudeme vˇedˇet alespoˇ n jednu vzd´alenost dvou bod˚ u ve sc´enˇe. Pro zjednoduˇsen´ı nahrad´ıme vektorov´ y souˇcin n´asoben´ım matic (2.23). Z vektoru translace t = (tx , ty , tz )T , za podm´ımky t 6= 0, vytvoˇr´ıme antisymetrickou matici S(t). 0 −tz ty S(t) = t 0 −t z x −ty tx 0 t × A = S(t)A
(2.23)
Rovnici (2.22) pˇrep´ıˇseme do tvaru (2.26) a stˇredn´ı ˇc´ast (2.25) je tzv. fundament´aln´ı matice F nesouc´ı informaci o geometrii kamer a jejich vz´ajemn´e poloze.
4
Leˇz´ı v dan´e rovinˇe.
uT (K −1 )T S(t)R−1 (K ′ )−1 u′ ) = 0
(2.24)
F = (K −1 )T S(t)R−1 (K ′ )−1
(2.25)
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
16
Pro kaˇzd´e dva koresponduj´ıc´ı body u = (u, v, 1)T a u′ = (u′ , v ′ , 1)T zapsan´e v homogenn´ıch souˇradnic´ıch plat´ı podm´ınka uT F u′ = 0.
(2.26)
Fundament´aln´ı matice F v sobˇe obsahuje veˇsker´e informace, kter´e mohou b´ yt odvozeny z dvojice sn´ımk˚ u, pokud vyˇreˇs´ıme probl´em korespondence.
2.1.6
Probl´ em okluze
Pˇri hled´an´ı korespondenc´ı mezi dvˇema sn´ımky lze narazit na probl´em jednostrann´e ˇci oboustrann´e okluze (anglicky occlusion). Pokud nenastane ˇz´adn´a okluze je bod sn´ıman´ y ve sc´enˇe na neuzavˇren´em povrchu vidˇet obˇema kamerami. V pˇr´ıpadˇe jednostrann´e okluze je konkr´etn´ı bod na neuzavˇren´em povrchu vidˇet pouze jednou kamerou a druh´a kamera vid´ı bod na uzavˇren´em povrchu. Jednostrann´a okluze je naznaˇcena na obr´azku obr. 2.11 vlevo. V pˇr´ıpadˇe oboustrann´e okluze jsou body viditeln´e obˇema kamerami um´ıstˇen´e na uzavˇren´em povrchu. Oboustrannou okluzi ukazuje obr´azek obr. 2.11 vpravo. V re´aln´ ych sc´en´ach nen´ı okluze pˇr´ıliˇs ˇcast´ ym jevem, kter´ y by z´asadnˇe ovlivnil v´ yslednou disparitn´ı mapu. U algoritm˚ u uveden´ ych v kapitole 5 je pouˇzito filtrov´an´ı korespondenc´ı, kter´e chybnˇe nalezen´e korespondence z disparitn´ı mapy vyˇrad´ı.
Obr´azek 2.11: Jednostrann´a okluze vlevo, oboustrann´ a okluze vpravo.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
2.2
17
Triangulaˇ cn´ı metoda vyuˇ z´ıvaj´ıc´ı ˇ c´ arov´ y laser a kameru
V t´eto kapitole je struˇcnˇe pops´ana triangulaˇcn´ı metoda vyuˇz´ıvaj´ıc´ı ˇc´arov´ y laser jako aktivn´ı zdroj svˇetla a kameru jako senzor. Vd´alenost a vz´ajemn´e natoˇcen´ı kamery a ˇc´arov´eho laseru je opˇet zn´am´e, stejnˇe jako v pˇr´ıpadˇe stereovidˇen´ı. Pokud pouˇzijeme bodov´e strukturovan´e svˇetlo, pak triangulac´ı m˚ uˇzeme vypoˇc´ıtat vzd´alenost jedin´eho bodu v prostoru. Strukturovan´e svˇetlo ˇc´arov´eho laseru (´ useˇcka - d´ale v textu obecnˇe uv´adˇena jako ˇc´ara) umoˇzn ˇuje tzv. 2D triangulaci, tj. z´ısk´an´ı vzd´alenost´ı bod˚ u v prostoru v dan´e rovinˇe prom´ıtan´eho vzoru (ˇc´ary). Pokud budeme do sc´eny prom´ıtat ploˇsn´e strukturovan´e svˇetlo (v jednom okamˇziku je osv´ıcena cel´a plocha sc´eny5 ), pak lze mluvit i o pˇr´ıpadu stereovidˇen´ı doplnˇen´em extern´ı texturou. Jakmile budeme laserov´ y paprsek tvaru bodu rozm´ıtat v ose x a y, lze postupnou 1D triangulac´ı z´ıskat kompletn´ı hloubkovou mapu. Kompletn´ı hloubkouvou mapu z´ısk´ame rovnˇeˇz rozm´ıt´an´ım laserov´eho paprsku tvaru ˇc´ara, tentokr´at v jedn´e ose a 2D triangulac´ı.
Obr´azek 2.12: Zn´azornˇen´ı triangulaˇcn´ı metody vyuˇz´ıvaj´ıc´ı ˇc´arov´ y laser a kameru.
Na obr´azku obr. 2.12 je vidˇet pˇr´ıpad pouˇzit´ı ˇc´arov´eho laseru a kamery. Kamera sn´ım´a okoln´ı sc´enu, kam dopad´a laserov´ y paprsek ve tvaru ˇc´ary. Laserov´ y paprsek vyv´aˇr´ı ve sc´enˇe tvar, kter´ y se prom´ıtne na obrazovou rovinu. Hled´an´ım maxim´aln´ı intenzity v ˇr´adku obrazu z´ıskame souˇradnici px . Soustava kamery, zdroje aktivn´ıho svˇetla a osvˇetlen´eho 5
V tomto pˇr´ıpadˇe nemus´ı b´ yt osv´ıcen´ y kaˇzd´ y bod ve sc´enˇe, ale prom´ıtan´ y vzor mus´ı vytv´ aˇred ve sc´enˇe
vhodnou texturu.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
18
bodu ve sc´enˇe na zkouman´em objektu tvoˇr´ı triangulaˇcn´ı troj´ uheln´ık (obr. 2.13). Vzd´alenost svˇeteln´eho zdroje a kamery se naz´ yv´a triangulaˇcn´ı b´az´ı b. Na stranˇe zdroje je u ´hel sv´ıran´ y s triangulaˇcn´ı b´az´ı nemˇenn´ y. Naopak na stranˇe sn´ımaˇce je u ´hel urˇcen promˇennou pozic´ı 3D bodu v prostoru. Ze zn´am´ ych informac´ı o troj´ uhlen´ıku (´ uhly nebo velikosti stran) a souˇradnic´ıch prom´ıtnut´eho bodu na senzor kamery lze urˇcit vzd´alenost bodu v prostoru.
Obr´azek 2.13: V´ ypoˇcet vzd´ alenosti z podobn´ ych troj´ uheln´ık˚ u.
V nejjednoduˇsˇs´ı konfiguraci kamery a laseru na obr´azku obr. 2.13, lze vzd´alenost pˇrek´aˇzky z urˇcit pomoc´ı vztahu (2.28) z rovnosti pomˇeru odvˇesen (2.27), kde b je vzd´alenost kamery a laseru, f ohniskov´a vzd´alenost a px je vzd´alenost nalezen´eho pixelu od optick´e osy. z f = b px
(2.27)
f px
(2.28)
z=b
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
2.3
19
Z´ısk´ an´ı hloubkov´ e mapy ze sn´ımk˚ u se zn´ amou ohniskovou vd´ alenost´ı
Z´akladn´ım principem pro zmˇeˇren´ı hloubkov´e mapy prostˇred´ı, pˇri znalosti zn´am´ ych ostˇr´ıc´ıch vzd´alenost´ı, je z´ısk´an´ı setu nˇekolika sn´ımk˚ u, kdy je kaˇzd´ y sn´ımek poˇr´ızen v jin´e (avˇsak zn´am´e) ostˇr´ıc´ı vzd´alenosti. Pro nalezen´ı kontrastn´ı oblasti hled´ame ve sn´ımku vysok´e frekvence (hrany). Vysok´e frekvence detekujeme frekvenˇcnˇe citliv´ ymi, smˇerovˇe nez´avisl´ ymi oper´atory. T´ımto oper´atorem je napˇr. Laplace˚ uv oper´ator. Tento oper´ator je naz´ yv´an Laplaci´an ▽2 f (x, y) a tvoˇr´ı ho suma druh´ ych parci´aln´ıch derivac´ı. Poˇzadavkem pro u ´spˇeˇsn´e zpracov´an´ı jsou dobr´e svˇeteln´e podm´ınky a sn´ımek mus´ı obsahovat dostatek detail˚ u pro urˇcen´ı kontrastu. Obdobnˇe je tomu tak i v pˇr´ıpadˇe stereovidˇen´ı. M´ame tedy soubor sn´ımk˚ u z r˚ uzn´ ych zn´am´ ych ostˇr´ıc´ıch vzd´alenost´ı, kde kaˇzd´ y sn´ımek obsahuje ostr´e a rozostˇren´e oblasti (viz. sn´ımky 1-5 na obr. 2.14). Zaostˇren´e oblasti odpov´ıdaj´ı pˇr´ısluˇsn´ ym ostˇr´ıc´ım vzd´alenostem. Z cel´eho souboru sn´ımk˚ u tak lze poskl´adat hloubkovou mapu a zobrazit ji v pˇr´ısluˇsn´e paletˇe barev (obr´azek obr. 2.14 vpravo dole).
Obr´azek 2.14: Obr´azky s r˚ uznou ostˇr´ıc´ı vzd´ alenost´ı a v´ ysledn´a hloubkov´a mapa
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
2.4
20
PMD technologie a PMD kamery
Dalˇs´ı moˇznost´ı, jak zmˇeˇrit vzd´alenost ve sc´enˇe, je zmˇeˇren´ım doby letu svˇeteln´eho paprsku (Time Of Flight - TOF metody). Mˇeˇr´ı se doba pr˚ uchodu paprsku od vys´ılaˇce k pˇrij´ımaˇci, resp. doba za kterou se z vys´ılaˇce dostane paprsek odrazem k pˇrij´ımaˇci. Rychlost svˇetla je konstantn´ı, zn´am´a a doba pr˚ uchodu paprsku je tedy u ´mˇern´a vzd´alenosti. Zmˇeˇren´e ˇcasy jsou pˇr´ıliˇs mal´e na to, aby se daly bˇeˇznˇe mˇeˇrit a z tohoto d˚ uvodu se mˇeˇren´ı doby letu nahrazuje mˇeˇren´ım f´azov´eho posuvu mezi vyslan´ ym a pˇrijat´ ym svˇeteln´ ym sign´alem. Na tomto principu je zaloˇzena PMD (Photonic Mixed Device) technologie, resp. PMD kamery.
2.4.1
PMD technologie
Pokud chceme mˇeˇrit zmˇenu f´aze vyslan´eho a pˇrijat´eho sign´alu, mus´ıme nejdˇr´ıve vys´ılan´ y sign´al namodulovat urˇcit´ ym referenˇcn´ım sign´alem. M˚ uˇzeme pouˇz´ıt t´emˇeˇr libovoln´ y zdroj svˇetla (LED, laser) s libovolnou vlnovou d´elkou. Vysl´an´ım a zpˇetn´ ym pˇrijet´ım sign´alu z´ısk´ame posuv f´aze u ´mˇern´ y dobˇe zpoˇzdˇen´ı td , kterou hled´ame. Porovn´an´ı f´az´ı se prov´ad´ı ve smˇeˇsovaˇci, tzv. 2D-EOM (Electro-Optical Mixer). Realizaci 2D-EOM lze prov´est pouˇzit´ım fotodiody nebo pˇr´ımo PMD prvkem.
Obr´azek 2.15: Princip metody mˇeˇren´ı TOF vyuˇz´ıvaj´ıc´ı fotodiodu na stranˇe pˇrij´ımaˇce.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
21
Realizace pomoc´ı fotodiody pouˇz´ıv´a fotodiodu jako pˇrevodn´ık svˇetla na elektrick´ y sign´al a je vidˇet na obr´azku obr. 2.15. Takto pˇrijat´ y sign´al se d´ale frekvenˇcnˇe omezuje p´asmov´ ym filtrem BP, kv˚ uli omezen´ı okoln´ıho ruˇsen´ı. Po odfiltrov´an´ı neˇz´adouc´ıch sloˇzek se zjiˇst’uje posuv f´aze ve zm´ınˇen´em smˇeˇsovaˇci (Electrical Mixer). PMD (prvek) senzor prov´ad´ı funkci smˇeˇsovaˇce jiˇz na u ´rovni dopadaj´ıc´ıho svˇetla. Pˇrev´ad´ı svˇetlo na elektrick´ y sign´al, ale i z´aroveˇ n vyhodnocuje zmˇenu f´aze. Princip lze popsat n´asleduj´ıc´ım zp˚ usobem. Na fotocitliv´e elektrody se pˇriv´ad´ı referenˇcn´ı modulaˇcn´ı napˇet’ov´ y sign´al. T´ımto sign´alem byl modulovan´ y i vyslan´ y svˇeteln´ y paprsek, pˇriˇcemˇz na jednu elektrodu se pˇriv´ad´ı sign´al f´azovˇe posunut´ y o 180◦ proti vedlejˇs´ı elektrodˇe. Pot´e se postupnou stˇr´ıdavou zmˇenou potenci´alu na obou elektrod´ach se odv´ad´ı nahromadˇen´ y n´aboj z dopadaj´ıc´ıho svˇetla bud’to na levou nebo na pravou sbˇerac´ı elektrodu. Tam je n´aboj sn´ım´an ˇctec´ı elektronikou. Pokud je dopadaj´ıc´ı svˇetln´ y paprsek ve f´azi s referenˇcn´ım sign´alem na elektrod´ach, tj. m´a stejn´ y pr˚ ubˇeh, je n´aboj odv´adˇen pravou sbˇernou elektrodu. Pokud je svˇetlo f´azovˇe posunuto o 180◦ je n´aboj odv´adˇen na levou sbˇernou elektrodu. V pˇr´ıpadˇe, ˇze by byl f´azovˇe posunut o 90◦ proti referenˇcn´ımu sign´alu, je n´aboj stejnomˇernˇe odv´adˇen na levou i pravou sbˇerac´ı elektrodou. Ze vznikl´ ych proud˚ u i1 a i2 z obou elektrod z´ısk´ame jejich souˇctem i1 + i2 intenzitu dopadaj´ıc´ıho z´aˇren´ı a rozd´ılem i1 − i2 z´ısk´ame f´azov´ y posuv mezi vyslan´ ym a pˇrijat´ ym sign´alem. Struktura PMD prvku (PMD pixelu) je zn´azornˇen na obr´azku obr. 2.16. T´ımto zp˚ usobem na v´ ystupu PMD senzoru dostaneme elektrick´ y sign´al s informac´ı o zmˇenˇe f´aze a intenzitˇe dopadaj´ıc´ıho z´aˇren´ı.
Obr´azek 2.16: Struktura PMD pixelu.
PMD senzor je zaloˇzen na technologii CMOS a v´ yraznˇe zjednoduˇsuje konstrukci zaˇr´ızen´ı pro mˇeˇren´ı vzd´alenost´ı ve 3D prostoru sc´eny. Pouˇzit´ım PMD senzoru odpadaj´ı vˇsechny diskr´etn´ı ˇc´asti a prvky od pˇr´ıjmu svˇetla aˇz po obvody zpracov´an´ı (Signal Processing). Realiazce s PMD prvkem je na obr´azku obr. 2.17.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
22
Obr´azek 2.17: Pouˇzit´ı PMD prvku m´ısto fotodiody na stranˇe pˇrij´ımaˇce.
2.4.2
PMD kamery
PMD kamery jsou v t´eto dobˇe velice diskutovan´ ym t´ematem a v r´amci napˇr. automobilov´e bezpeˇcnosti, se jimi intenzivnˇe zab´ yvaj´ı mnoh´e firmy. Souˇcasnˇe je vyuˇzit´ıch tˇechto kamer vhodn´e komplexn´ı ˇreˇsen´ı i pro robotick´e u ´ˇcely a tud´ıˇz tak´e pro modely mobiln´ıch zaˇr´ızen´ı (vzducholodˇe, vzn´aˇsedla, ...). Obecnˇe tyto kamery dok´aˇz´ı zpracovat sc´enu v re´aln´em ˇcase (framerate6 je 30 fps7 a v´ıce) nebo jemu bl´ızk´em a to pro rozliˇsen´ı v rozsahu od 64 x 16 aˇz 176 x 144 pixel˚ u. V nˇeker´ ych pˇr´ıpadech um´ı kamery velice dobˇre potlaˇcit vlivy okoln´ıho svˇetla. Dok´aˇz´ı si poradit i se sloˇzit´ ymi podm´ınkami a vlastnostmi okoln´ı sc´eny, ale samozˇrejmˇe jsou z´avisl´e pˇredevˇs´ım na odrazivosti materi´alu sc´eny, ˇclenitosti a dalˇs´ıch vlastnostech. Parametry, kter´e d´ale ovlivˇ nuj´ı kvalitu a vlastnosti 3D obrazu, jsou modulaˇcn´ı frekvence (v´ yrobcem b´ yv´a standartnˇe nastavena na hodnotu, pro n´ıˇz je kamera zkalibrov´ana) a d´ale tak´e doba integrace. Doba integrace je ˇcasov´a perioda, po kterou se akumuluj´ı pˇrijat´e fotony na jednom pixelu pro jeden mˇeˇr´ıc´ı cyklus, ve kter´em se urˇc´ı posuv f´aze, resp. vzd´alenost. Pokud je tedy integraˇcni doba pˇr´ıliˇs mal´a, pak amplituda pˇrijat´eho sign´alu bude n´ızk´a pro spr´avn´e urˇcen´ı vzd´alenosti. Napoak pˇri vysok´e dobˇe integrace dojde k saturaci a mˇeˇren´ı je tak´e nespr´avn´e. Omezuj´ıc´ım parametrem PMD 6 7
Framerate vyjadˇruje poˇcet zpracovan´ ych sn´ımk˚ u za vteˇrinu. Jednotkou je fps. frame per second“ - poˇcet sn´ımk˚ u za vteˇrinu ”
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
23
kamer je rozsah mˇeˇren´ ych vzd´alenost´ı, jehoˇz horn´ı hranic´ı je tzv. opakovac´ı vzd´alenost8 . Opakovac´ı vzd´alenost se odv´ıj´ı od modulaˇcn´ı frekvence. Z hlediska aplikace pro orientaci v prostˇred´ı pro mobiln´ı zaˇr´ızen´ı je nev´ yhodou tˇechto kamer jejich vysok´a cena a spotˇreba elektrick´e energie, aˇckoliv v´ yvoj 3D kamer je velmi intenzivn´ı a jak cena, tak spotˇreba se znatelnˇe sniˇzuj´ı a parametry se zlepˇsuj´ı. D´ale uv´ad´ım z´akladn´ı pˇrehled nˇekolika profesion´alnˇe vyr´abˇen´ ych PMD kamer firem PMDTechnologies GmbH, Mesa Imaging AG a Canesta, Inc. Informace o produktech tˇechto firem lze naj´ıt v literatuˇre [5]. 2.4.2.1
R 1k-S, 3k-S a 19k PMD[vision]
Jednou z firem zab´ yvaj´ıc´ı se v´ yvojem PMD technologie a v´ yrobou 3D PMD kamer je nˇemeck´a PMDTechnologies GmbH. PMD kamery se dod´avaj´ı jako kompletn´ı set kamery i se svˇeteln´ y zdrojem. R 1k–S, V nab´ıdce se v souˇcasn´e dobˇe objevuj´ı tyto modely PMD kamer: PMD[vision] R 3k–S, PMD[vision] R 19k, a novˇ R A-sample receiver s dosaPMD[vision] e PMD[vision]
hem aˇz 40m. Vˇsechny kamery obsahuj´ı Suppression of Background Illumination (SBI), ˇcili potlaˇcen´ı vlivu okoln´ıho osvˇetlen´ı jiˇz na b´azi samotn´ ych pixel˚ u a zpracov´an´ı zajiˇst’uje 32-bitov´ y procesor AMD Elan SC520 s operaˇcn´ım syst´emem eLinOS. Pro svoji funkˇcnost vyuˇz´ıvaj´ı vlnovou d´eklu bl´ızkou infraˇcerven´emu svˇetlu (NIR9 ). Na v´ ystupu pak pro kaˇzd´ y pixel z´ık´ame informaci o vzd´alenosti a intenzitn´ı obraz.
Obr´azek 2.18: PMD kamery z nab´ıdky PMDTechnologies GmbH. 8
Vzd´ alenost, kter´a je dan´ a modulaˇcn´ı frekvenc´ı. Pokud je tato vzd´alenost pˇrekroˇcena a pˇredmˇet je
um´ıstˇen za maxim´aln´ı mˇeˇritelnou vzd´alenost´ı, pak jiˇz nelze jednoznaˇcnˇe urˇcit, v jak´e vzd´alenosti se pˇredmˇet nach´az´ı. Tj. puls, kter´ y byl vysl´ an v kroku n doraz´ı k pˇrij´ımaˇci aˇz po vysl´ an´ı n + 1 pulsu a nelze mezi nimi rozliˇsit. 9 near-infra-red“ ”
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME R Typ kamery (PMD[vision] )
Rozliˇ sen´ı
1k-S
24
3k-S
19k
64 x 16 pixel˚ u 64 x 48 pixel˚ u 160 x 120 pixel˚ u
Pomˇ er stran
3:1
4:3
Modulaˇ cn´ı frekvence
standartnˇe 20 MHz
Opakovac´ı vzd´ alenost
7,5m
Rozliˇ sen´ı vzd´ alenosti
6mm
Framerate
aˇz 50 fps
Vlnov´ a d´ elka
aˇz 25 fps
4:3
aˇz 15 fps
870nm
Optick´ y v´ ykon
3W
ADC rozliˇ sen´ı
12 bit˚ u
V´ ystup
IEEE 1394a a Ethernet
V´ aha
1,4kg
Cena
na dotaz Tabulka 2.1: Specifikace PMD kamer z nab´ıdky PMDTechnologies GmbH.
Obr´azek 2.19: Uk´azka v´ ystupu - intenzitn´ı obr´ azek (vlevo) a hloubkov´a mapa (vpravo).
2.4.2.2
SwissRangerTM SR3000 a SR4000
Dalˇs´ı z firem zab´ yvaj´ıc´ı se v´ yvojem PMD technologi´ı a prodejem PMD kamer je ˇsv´ ycarsk´a firma Mesa Imaging AG. V souˇcasn´e dobˇe jsou k dispozici dva modely. Jsou to SwissRangerTM SR3000 a SR4000. Kamery v sobˇe maj´ı zabudovan´ y svˇeteln´ y zdroj a v re´aln´em ˇcase poskytuj´ı data hloubkov´e mapy ve stejn´e rozliˇsen´ı, tj. 176 x 144 pixel˚ u. Pro svoji funkˇcnost vyuˇz´ıvaj´ı opˇet vlnovou d´eklu bl´ızkou infraˇcerven´emu svˇetlu a na v´ ystupu pro kaˇzd´ y pixel z´ık´ame tak´e informaci o vzd´alenosti a intenzitn´ı obraz. Starˇs´ı model SwissRangerTM SR3000 oproti jeho n´astupci nebsahuje embedded DSP procesor a se sv´ ym svˇeteln´ ym zdrojem s 55 LED diodami m´a pˇribliˇznˇe dvojn´asobnou spotˇrebu.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
25
Obr´azek 2.20: PMD kamery z nab´ıdky Mesa Imaging AG SwissRangerTM SR3000 (vlevo) a SR4000 (vpravo).
Ve srovn´an´ı s produkty firmy PMDTechnologies GmbH je ˇrada SwissRangerTM urˇcen´a sp´ıˇse pro indoor aplikace (u SwissRangerTM SR4000 se pracuje na lepˇs´ım potlaˇcen´ı vlivu okoln´ıho svˇetla) a obecnˇe maj´ı niˇzˇs´ı optick´ y v´ ykon a t´ım p´adem i menˇs´ı dosah (≈5m). Kamery pouˇz´ıvaj´ı k´odovou modulaci, kter´a dovoluje provoz nˇekolika kamer ve stejn´em prostoru. Kamery jsou dod´av´any se SW bal´ıkem, kter´ y mimo jin´e obsahuje tak´e user interface pro Matlab a drivery pro r˚ uzn´e OS. Typ kamery (SwissRangerTM )
SR3000
Rozliˇ sen´ı
SR4000
176 x 144 pixel˚ u (QCIF)
Pomˇ er stran
4:3
Modulaˇ cn´ı frekvence
standartnˇe 20 MHz
standartnˇe 30 Mhz
Opakovac´ı vzd´ alenost
7,5m
5m (standartn´ı nastaven´ı)
Rozliˇ sen´ı vzd´ alenosti
1% z rozsahu
5mm
aˇz 25 fps
aˇz 54 fps
Framerate Vlnov´ a d´ elka Optick´ y v´ ykon
850nm 1W
0,5W
USB2.0
USB2.0, Ethernet
typicky 12W
typicky 7W
V´ aha
-
0,47kg
Cena
nab´ıdka na 5750 Euro
na dotaz
V´ ystup Spotˇ reba
Tabulka 2.2: Specifikace PMD kamer z nab´ıdky Mesa Imaging AG.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME
26
Obr´azek 2.21: Uk´azka z dod´avan´eho GUI kamery SwissRangerTM SR3000
2.4.2.3
Canesta
Posledn´ı zde uvedenou firmou zab´ yvaj´ıc´ı se PMD technologiemi a v´ yrobou 3D PMD kamer je americk´a firma Canesta, Inc. Tato firma nab´ız´ı v´ yvojov´e kity PMD kamer DP2xx a n´astupce DP3xx (obr´azek obr. 2.22), vˇcetnˇe SW. Svoje firemn´ı z´ajmy vˇsak nyn´ı soustˇred’uje pˇredevˇs´ım na pr˚ umyslov´e aplikace a k dispozici jiˇz nejsou volnˇe ke staˇzen´ı informace o jejich produktech. Proto je d´ale uvedena pouze specifikace starˇs´ı ˇrady v´ yvojov´ ych kit˚ u PMD kamer - DP2xx.
Obr´azek 2.22: Development kit DP300 a DP200 od firmy Canesta, Inc.
ˇ REN ˇ ´I POLOHY BODU ˚ V PROSTORU KAPITOLA 2. ME Typ kamery FOV
DP203
DP205
DP208
30◦
55◦
80◦
Rozliˇ sen´ı
64 x 64 pixel˚ u
Pomˇ er stran
1:1
Modulaˇ cn´ı frekvence Opakovac´ı vzd´ alenost Rozliˇ sen´ı vzd´ alenosti Framerate Vlnov´ a d´ elka
13 - 104 MHz 20 m
12 m aˇz 30 fps 785nm 0.1 - 1W
V´ ystup
USB 1.1
Cena
6m
30 cm
Optick´ y v´ ykon Spotˇ reba
27
10W na dotaz
Tabulka 2.3: Specifikace PMD kamer z nab´ıdky Canesta, Inc.
Kapitola 3 V´ ybˇ er HW a SW pro zpracov´ an´ı dan´ ych u ´ loh V t´eto kapitole jsou shrnuty informace o vybran´em HW a programov´em vybaven´ı, pouˇzit´em pro zpracov´an´ı obrazov´ ych dat v u ´loh´ach z´ısk´an´ı disparitn´ı a hloubkov´e mapy.
3.1
V´ ybˇ er vhodn´ eho prostˇ redku pro zpracov´ an´ı obrazov´ ych dat z digit´ aln´ıch kamer
Pro tuto diplomovou pr´aci bylo v prvn´ı ˇradˇe nutn´e zvolit vhodn´ y prostˇredek pro zpracov´an´ı obrazov´ ych informac´ı z dvou digit´aln´ıch kamer, ze kter´ ych je moˇzn´e vhodnou metodou extrahovat informace o vzd´alenostech obrazov´ ych bod˚ u ve sc´enˇe nebo pˇr´ımo celou hloubkovou mapu sc´eny. T´ımto prostˇredkem by mohl b´ yt napˇr´ıklad osobn´ı poˇc´ıtaˇc nebo jeho mobiln´ı modifikace, ale jeho architektura a rozmˇery, v´aha ˇci spotˇreba nevyhovuj´ı poˇzadavk˚ um pro modely mobiln´ıch zaˇr´ızen´ı, zm´ınˇen´ ych v u ´vodn´ı kapitole (1). Dalˇs´ımi vhodn´ ymi prostˇredky mohou b´ yt obvody typu: • FPGA (Field-programmable gate array) • ASIC/ASIP (Application-specific integrated circuit/instruction-set processor ) • CPLD (Complex programmable logic device) • VHDL (Very High Speed Integrated Circuit Hardware Description Language) • DSP (Digitall signal processor ) a dalˇs´ı ... 28
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
29
Bohuˇzel, vˇetˇsina tˇechto obvod˚ u (FPGA, ASIC, ...) m´a malou flexibilitu a vyˇzaduje specifick´ y, dosti ˇcasovˇe n´aroˇcn´ y a sloˇzit´ y n´avrh. Z´aroveˇ n jsou pro v´ yvoj cenovˇe nakladn´e. Pro bliˇzˇs´ı sezn´amen´ı s tˇemito obvody je vhodn´e pˇreˇc´ıst si ˇcl´anek [7] nebo pˇr´ısluˇsnou odbornou literaturu vˇenuj´ıc´ı se tomuto t´ematu. Jako vhodn´ y prostˇredek pro rychl´ y, energeticky nen´aroˇcn´ y, cenovˇe pˇr´ızniv´ y a flexibiln´ı v´ yvoj syst´emu pro stereovidˇen´ı (resp. ˇreˇsen´ı praktick´ ych u ´loh zpracov´an´ı obraz˚ u pro orientaci v prostˇred´ı a detekci pˇrek´aˇzek) byl vybr´an obvod typu sign´alov´ y procesor (DSP). Pro takov´eto procesory jsou od v´ yrobc˚ u vˇetˇsinou k dispozici v´ yvojov´a prostˇred´ı a pˇrekladaˇce, jenˇz umoˇzn ˇuj´ı v´ yvoj SW jak v jazyku assembler, tak i v jazyc´ıch vyˇsˇs´ıch - napˇr. jazyku C. Programov´an´ı ve vyˇsˇs´ım programovac´ım jazyku dovoluje rychlejˇs´ı a flexibilnˇejˇs´ı n´avrh algoritm˚ u ˇreˇsen´ı, naopak jazyk assembler umoˇzn ˇuje lepˇs´ı a efektivnˇejˇs´ı vyuˇzit´ı moˇznost´ı DSP. Z´aroveˇ n je od v´ yrobce k dispozici optimalizovan´a knihovna func´ı a uk´azkov´ ych pˇr´ıklad˚ u, jenˇz usnadˇ nuj´ı program´atorovi pr´aci a dovoluj´ı efektivnˇe vyuˇz´ıt tyto SW prostˇredky. DSP sign´alov´e procesory lze d´ale pˇribliˇznˇe dˇelit do n´asleduj´ıc´ıch tˇr´ı skupin: 1. low-cost fixed-point DSPs 2. high-performance fixed-point DSPs 3. floating-point DSPs Low-cost fixed-point DSP sign´alov´e procesory jsou zaloˇzeny na tradiˇcn´ı DSP architektuˇre z dˇr´ıvˇejˇs´ıch let, pracuj´ı s pevnou ˇr´adovou ˇc´arkou, typicky na frekvec´ıch niˇzˇs´ıch neˇz 350 MHz, obvykle maj´ı jednu MAC1 jednotku a jejich cena je n´ızk´a. Zcela jinou kategori´ı jsou floating-point DSP sign´alov´e procesory pracuj´ıc´ı s pohyblivou ˇr´adovou ˇc´arkou a maj´ıc´ı komplexn´ı obvodovou z´akladnu, velmi vysok´ y v´ ykon i vysokou pˇresnost pˇri ˇsirok´em dynamick´em rozsahu. Jejich nev´ yhoda spoˇc´ıv´a ve vˇetˇs´ı energetick´e n´aroˇcnosti a vyˇsˇs´ı cenˇe. Posledn´ı jmenovanou skupinou sign´alov´ ych procesor˚ u jsou nov´e high-performance fixed-point DSP procesory. Vˇetˇsinou podporuj´ı nˇekolikan´asobn´e vykon´an´ı instrukce bˇehem jednoho programov´em cyklu pouˇzit´ım techniky VLIW (very long instruction words) a tak´e obsahuj´ı v´ıce MAC jednotek. Tyto procesory jsou kompromisem mezi dvˇema v´ yˇse zm´ınˇen´ ymi skupinami. Zaruˇcuj´ı vlastnosti flexibiln´ıho, rychl´eho a v´ ykonn´eho DSP s pevnou ˇr´adovou ˇc´arkou, kter´ y m´a z´aroveˇ n n´ızk´e n´aroky na spotˇrebu, pˇri zachov´an´ı jednoduchosti programov´an´ı a pr´ace s n´ım. Nezanedbatelnou v´ yhodou jsou i n´ızk´e n´aklady. 1
jednotka multiply-accumulate
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
30
Dˇelen´ı DSP procesor˚ u do tˇechto tˇr´ı skupin se ˇcasto pˇrekr´ yv´a a proto nˇekter´e DSP procesory maj´ı vlastnosti, kter´e jsou typick´e pro r˚ uzn´e skupiny.
3.2
Pˇ rehled DSP procesor˚ u a v´ yvojov´ ych kit˚ u
Pˇri v´ ybˇeru DSP procesoru a n´aslednˇe i v´ yvojov´eho kitu jsem se zamˇeˇril na skupinu high-performance fixed-point DSP procesor˚ u a pokusil naj´ıt vhodn´eho kandid´ata, kter´ y sv´ ymi vlastnostmi nejl´epe vyhovuje potˇreb´am mobiln´ıch zaˇr´ızen´ı pro aplikace s rychl´ ym zpracov´an´ım (multimedi´aln´ıch) dat. Kromˇe v´ ykonu, spotˇreby, rozmˇer˚ u a v´ahy samotn´eho DSP procesoru byly br´any v potaz tak´e dostupnost vhodn´eho v´ yvojov´eho kitu, v´ yvojov´eho programov´eho vybaven´ı (vˇcetnˇe knihoven a pˇr´ıklad˚ u) a moˇznost pˇripojen´ı CMOS kamer na vhodn´e periferie. Mezi vedouc´ı firmy nejenom na poli DSP procesor˚ u lze jistˇe ˇradit: • Texas Intsrument (TI) • Analog Devices (ADI) • Freescale Semiconductor R ADSP-BF561 BlackFin
TMS320DM642-600TM
Analog Devices (ADI)
Texas Intsrument (TI)
600MHz (1 j´adro)
600MHz
MMACs
max. 2400
max. 4800
L1 a L2
328 kB
288 kB
Pˇ rip. kamery
2 PPI (ITU-656 comp.)
3 videoporty (ITU-656 comp.)
Typ. spotˇ reba
1100 mW
1700mW
Cena (>10ks)
20 - 30 USD
40 - 60 USD
297 ball PBGA
FCBGA 548-Pin
DSP procesor V´ yrobce Clock
Package
R ADSP-BF561 Tabulka 3.1: Srovn´avac´ı tabulka DSP procesor˚ u BlackFin
[21] a TMS320DM642-600TM [20].
Z nab´ıdky tˇechto firem (rok 2007/2008) byl vˇzdy vybr´an jeden kandid´at vhodn´eho high-performance fixed-point DSP procesoru. Z produkt˚ u firmy Freescale byl vybr´an DSP procesor i.MX21 (MC9328MX21), kter´ y vˇsak nemˇel moˇznost pˇripojen´ı obou kamer pro R ADSP-BF561 pˇr´ıpad stereovidˇen´ı. Mezi zbyl´e kandid´aty patˇr´ı DSP procesor BlackFin
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
31
od Analog Devices a TMS320DM642-600TM od Texas Instrument. Podle v´ yˇse uveden´ ych R ADSP-BF561. krit´eri´ı byl zvolen dvouj´adrov´ y DSP procesor BlackFin
Na z´avˇer je tˇreba ˇr´ıci, ˇze vˇsechny zde uveden´e DSP procesory maj´ı sv´e pro i proti a R ADSP-BF561 zohledˇ velice si konkuruj´ı. V´ ybˇer DSP procesoru BlackFin nuje pˇredevˇs´ım
dostupnost vhodn´eho kompaktn´ıho v´ yvojov´eho kitu (popsan´eho v kapitole 4) s rozˇsiˇruj´ıc´ı kartou pro pˇripojen´ı kamer, velikost on-chip pamˇeti a spotˇreba procesoru. V souˇcasn´e dobˇe v´ yvoj sign´alov´ ych procesor˚ u pokraˇcuje m´ılov´ ymi kroky vpˇred a napˇr. v nab´ıdce firmy Texas Instrument je moˇzn´e naj´ıt napˇr´ıklad DSP procesor TMS320C647xTM se tˇremi C64x+TM j´adry, kaˇzd´e bˇeˇz´ıc´ı na frekvenci 1 GHz a s aˇz 24000 MMAC2 . Nab´ıdka nov´ ych procesor˚ u umoˇzn ˇuje pˇri pouˇzit´ı stejn´ ych algoritm˚ u vyˇsˇs´ı rychlost zpracov´an´ı a niˇzˇsˇs´ı spotˇrebu.
Obr´azek 3.1: Funkˇcn´ı blokov´ y diagram souˇc´ast´ı ADSP-BF561. 2
Million Multiply ACcumulates per Second
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
3.3
32
Informace o Blackfin procesoru ADSP-BF561
Sign´alov´ y procesor s oznaˇcen´ım ADSP-BF561 (nebo struˇcnˇeji BF561) je z rodiny procesor˚ u Blackfin, kter´e jsou zamˇeˇreny pˇredevˇs´ım na multimedi´aln´ı aplikace. Procesor nab´ız´ı dvˇe nez´avisl´a j´adra zaloˇzen´a na architektuˇre Blackfin procesor˚ u. Procesory t´eto ˇrady nab´ızej´ı vysok´ y v´ ykon, velice n´ızkou spotˇrebu a jednoduchost pouˇzit´ı a k´odov´an´ı. Pr´avˇe tyto vlastnoti jsou kl´ıˇcov´e pro aplikace v´ ypoˇcetnˇe n´aroˇcn´ ych obrazov´ ych operac´ı pro mobiln´ı zaˇr´ızen´ı, kter´e je z´avisl´e na bateriov´em nap´ajen´ım a tud´ıˇz na n´ızk´e spotˇrebˇe elektrick´e energie. Architektura sign´alov´eho procesoru BF561 kombinuje du´aln´ı MAC jednotku, ortogon´aln´ı3 RISC4 instrukˇcn´ı set s flexibiln´ı single-instruction multiple-data (SIMD) moˇznostmi a tak´e single-instruction-set architekturu nˇekter´ ych multimedi´aln´ıch funkc´ı. Sign´alov´e procesory ˇrady Blackfin d´ale nab´ızej´ı moˇznost zmˇeny jak napˇet´ı j´adra, tak nastaven´ı frekvence j´adra a t´ım optimalizaci spotˇreby elektrick´e energie a moˇznost pˇrizp˚ usobit aplikaci dan´ ym potˇreb´am i v tomto ohledu. ADSP-BF561 obsahuje n´asleduj´ıc´ı periferie: • Rychl´e paraleln´ı sbˇernice - Parallel Peripheral Interfaces (PPI) • S´eriov´e porty - Serial Ports (SPORT) • Rozhran´ı SPI - Serial Peripheral Interface ˇ • Casovaˇ ce - General-Purpose Timers, Watchdog Timers • Rozhran´ı UART - Universal Asynchronous Receiver Transmitter • Obecn´e vstupy/v´ ystupy - General Purpose I/O (Programmable Flags) Vˇsechny v´ yˇse uveden´e periferie mimo general-purpose I/O a ˇcasovaˇc˚ u jsou podporov´any flexibln´ı strukturou DMA5 ˇradiˇc˚ u (DMA1 a DMA2) a tak´e ˇradiˇci vnitˇrn´ı pamˇeti (IMDMA). Kaˇzd´ y z DMA1 a DMA2 m´a 12 programovateln´ ych kan´al˚ u a dva oddˇelen´e DMA streamy urˇcen´e pro pˇrenos dat mezi pamˇetmi DSP a tak´e extern´ı SDRAM a asynchronn´ı pamˇet´ı. Sbˇernice jsou z´aroveˇ n dostateˇcnˇe dimenzovan´e svoj´ı propustnost´ı, aby dok´azaly obslouˇzit veˇsker´ y provoz jak perif´eri´ı, tak on-chip pamˇet´ı. 3
Architektura procesoru schopn´a rozdˇelit pˇri zpracov´ an´ı instrukci na v´ıce u ´kon˚ u a ty (d´ıky vhodn´emu
n´avrhu jeho ALU nebo jin´ ych integrovan´ ych obvod˚ u) prov´est v jednom strojov´em cyklu. 4 Reduced Instruction Set Computer - Poˇc´ıtaˇc s redukovanou instrukˇcn´ı sadou. 5 Direct Memory Access - umoˇzn ˇuje hardwarov´emu subsyst´emu pˇr´ım´ y pˇr´ıstup do operaˇcn´ı pamˇeti bez u ´ˇcasti procesoru.
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
3.4
33
Struktura sign´ alov´ eho procesoru ADSP-BF561
Tato kapitola popisuje vnitˇrn´ı strukturu sign´alov´eho procesoru ADSP-BF561. Jsou zde pops´any j´adra procesoru a uspoˇr´ad´an´ı pamˇet’ov´eho syst´emu.
3.4.1
Popis j´ adra procesoru ADSP-BF561
ADSP-BF561 m´a dvˇe identick´a Blackfin j´adra. Kaˇzd´e z tˇechto jader obsahuje dvˇe 16-bitov´e n´asobiˇcky, dvˇe 40-bitov´e sˇc´ıtaˇcky, dvˇe 40-bitov´e aritmeticko-logick´e jednotky (ALU), ˇctyˇri 8-bitov´e video aritmeticko-logick´e jednotky a 40-bitov´ y shifter (vykon´avaj´ıc´ı posun, rotaci, normalizaci, vyjmut´ı). K´aˇzd´a MAC jednotka vykon´av´a v jednom cyklu 16 x 16-bitov´e n´asoben´ı s akumulac´ı jako 40-bitov´ y v´ ysledek. V´ ypoˇcetn´ı jednotka pracuje s 8-bitov´ ymi, 16-bitov´ ymi a tak´e 32-bitov´ ymi daty. J´adro procesoru obsahuje 8-vstupov´ y 32-bitov´ y registr pro v´ ypoˇcetn´ı jendotky. ALU jednotky obsahuj´ı bˇeˇzn´ y set aritmetick´ ych a logick´ ych operac´ı, kter´e pracuj´ı s 16-bitov´ ymi a 32-bitov´ ymi daty. Pro nˇekter´e u ´lohy procesor obsahuje speci´aln´ı instrukce. Jedn´a se napˇr. videointrukce bytov´eho zarovn´an´ı, 8-bitov´e oprace sˇc´ıt´an´ı absolutn´ıch odchylek - SAA (subtract-absolute value-accumulate), 8-bitov´e oprace pr˚ umˇerov´an´ı nebo 16-bitov´e a 8-bitov´e sˇc´ıt´an´ı. Pro nˇekter´e instrukce mohou b´ yt dvˇe 16-bitov´e ALU operace vykon´any souˇcasnˇe na dvojici registr˚ u. V pˇr´ıpadˇe, ˇze pouˇzijeme obˇe ALU pak je moˇzn´e prov´est ˇctyˇri 16-bitov´e operace - quad 16-bitov´a operace. ˇ c podProgramov´ y sequencer ˇr´ıd´ı tok instrukc´ı, jejich zarovn´an´ı a dek´odov´an´ı. Radiˇ poruje PC-relative a nepˇr´ım´e podm´ınˇen´e skoky (se statickou podm´ınkovou predikc´ı) a vol´an´ı subrutin. Arichitektura procesoru je navrˇzena proti vzniku uv´aznut´ı pˇri pipeline zpracov´an´ı6 . Adresov´a aritmetick´a jednotka umoˇzn ˇuje adresov´an´ı pro du´aln´ı pˇr´ıstup k dat˚ um. Instrukce ˇrady Blackfin jsou optimalizov´any pro 16-bitov´e operaˇcn´ı k´ody, reprezentuj´ıc´ı nejv´ıce pouˇz´ıvan´e instrukce. Komplexn´ı DSP instrukce jsou k´odov´any do 32-bitov´ ych operaˇcn´ıch k´od˚ u jako multifunkˇcn´ı instrukce. To dovoluje program´atorovi vhodn´e vyuˇzit´ı zdroj˚ u v jednom instrukˇcn´ım cyklu. Architektura procesoru je optimalizovan´a pro pouˇzit´ı s pˇrekladaˇcem jazyka C. 6
Pipelining neboli zˇretˇezen´e zpracov´ an´ı, ˇci pˇrekr´ yv´an´ı instrukc´ı. Z´ akladn´ı myˇslenkou je rozdˇelen´ı
zpracov´ an´ı jedn´e instrukce mezi r˚ uzn´e ˇc´asti procesoru a t´ım i dosaˇzen´ı moˇznosti zpracov´ avat v´ıce instrukc´ı najednou.
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
34
Obr´azek 3.2: Struktura j´adra sign´alov´eho procesoru ADSP-BF561.
3.4.2
Architektura pamˇ eti procesoru ADSP-BF561
Hiearchicky uspoˇr´adan´a struktura pamˇet’ov´eho syst´emu je pojata jako spoleˇcn´ y 4GB adresn´ı prostor vyuˇz´ıvaj´ıc´ı 32-bitov´e adresov´an´ı. Vˇsechny pamˇet’ov´e zdroje (intern´ı pamˇet’, extern´ı pamˇet’, vstupnˇe/v´ ystupn´ı registry) pouˇz´ıvaj´ı oddˇelen´e sekce spoleˇcn´eho adresovac´ıho prostoru, kter´ y je uspoˇr´ad´an ve struktuˇre spojuj´ıc´ı vlastnosti a v´ ykon on-chip pamˇet´ı s pomalejˇs´ımi extern´ımi pamˇet’mi. Procesory ˇrady Blackfin podporuj´ı modifikovanou Harvardskou strukturu. Level 1 (L1) pamˇet’ pracuje pˇribliˇznˇe na stejn´e rychlosti jako samotn´e j´adro procesoru s mal´ ym nebo
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
35
t´emˇeˇr nulov´ ym zpoˇzdˇen´ım. L1 pamˇet obsahuje oddˇelen´e ˇc´asti pro instrukce, data a na tzv. scratchpad ˇc´asti pamˇeti jsou uloˇzeny informace o lok´aln´ıch promˇenn´ ych. K dispozici je nˇekolik L1 pamˇet’ov´ ych blok˚ u, konfigurovateln´ ych jako SRAM nebo cache. Memory Management Unit (MMU) poskytuje ochranu pamˇeti pro individu´aln´ı u ´lohy a chr´an´ı syst´emov´e registry proti ne´ umysln´ ym pˇr´ıstup˚ um.
Obr´azek 3.3: Architektura pamˇeti ADSP-BF561.
Obˇe j´adra procesoru ADSP-BF561 sd´ılej´ı tzv. on-chip“ L2 pamˇet’, dovoluj´ıc´ı rychl´ y ”
´ ER ˇ HW A SW PRO ZPRACOVAN ´ ´I DANYCH ´ ´ KAPITOLA 3. VYB ULOH
36
pˇr´ıstup k pamˇeti typu SRAM, avˇsak o nˇeco pomalejˇs´ı neˇz je tomu v pˇr´ıpadˇe L1 pamˇeti. Pamˇet’ typu L2 podporuje Von Neumannovskou strukturu. L2 je tedy spoleˇcn´a jak pro instrukce, tak pro data a pracuje pˇribliˇznˇe na poloviˇcn´ı frekvenci samotn´eho j´adra. Jej´ı velikost je 128 kB. Rychl´ y ˇsirokop´asmov´ y blokov´ y pˇrenos dat nebo k´odu mezi rychlou intern´ı (L1, L2) pamˇet´ı a pomalou extern´ı (L3) pamˇet’´ı umoˇzn ˇuje DMA ˇradiˇc. Extern´ı (tzv. off-chip“) ” pamˇet’ je pˇr´ıtupn´a pˇres External Bus Interface Unit (EBIU), coˇz je 32-bitov´ y interface poskytuj´ıc´ı pˇripojen´ı aˇz 4 bank sychronn´ı (SDRAM) pamˇeti a aˇz 4 bank asynchronn´ı ˇ c SDRAM (vyhovuj´ıc´ı standartu pamˇeti (flash pamˇet’, EPROM, ROM, SRAM). Radiˇ PC133) m˚ uˇze pˇristupovat aˇz k 512 MB SDRAM pamˇeti.
Kapitola 4 V´ yvojov´ y kit pro ADSP-BF561 Pˇri v´ ybˇeru vhodn´eho HW ˇreˇsen´ı u ´loh zpracov´an´ı obrazu a z´ısk´an´ı hloubkov´e mapy byl kladen d˚ uraz tak´e na dostupnost vhodn´eho v´ yvojov´eho kitu pro vybran´ y DSP procesor, kter´ y by byl z´aroveˇ n univerz´alnˇe vyuˇziteln´ y pro pˇr´ıpadn´e testov´an´ı na re´aln´ ych modelech. R ADSP-BF561 od Analog DePro oba vybran´e kandid´aty DSP procesor˚ u BlackFin
vices a TMS320DM642-600TM od Texas Instrument nab´ızej´ı v´ yrobci origin´aln´ı v´ yvojov´e R 1 pro ADSP-BF561 a DM648 Digital Video kity (napˇr. ADSP-BF561 EZ-KIT Lite
Development Platform2 pro TMS320DM642-600TM ). Tyto kity jsou sv´ ymi periferiemi uzp˚ usobeny nejen pro v´ yvoj video aplikac´ı, ale i audio a jin´ ych aplikac´ı. Sv´ ymi rozmˇery, hmotnost´ı a nadbyteˇcn´ ymi periferiemi nevyhovuj´ı univerz´aln´ı vyuˇzitelnosti. Mimo vlastnost´ı a moˇznost´ı ADSP-BF561, kter´e byly shrnuty v pˇredchoz´ı kapitole, byl ADSP-BF561 vybr´an pro realizaci ˇreˇsen´ı tak´e d´ıky dostupnosti vhodn´eho v´ yvojov´eho kitu R Z´ od firmy Bluetechnix [19], specializuj´ıc´ı se na DSP procesory ˇrady BlackFin . akladem
v´ yvojov´ ych kit˚ u firmy Bluetechnix je v´ yvojov´a deska s vybranou procesorovou jednotkou (Core Module). V´ yvojov´a deska d´ale disponuje 60-pinov´ ymi rozˇsiˇruj´ıc´ımi konektory, na kter´e se stavebnicovˇe pˇripojuj´ı rozˇsiˇruj´ıc´ı moduly podle potˇreby. V´ yvojov´ y kit vybran´ y pro stereovidˇen´ı se skl´ad´a z n´asleduj´ıc´ıh modul˚ u: • modul procesorov´e jednotky CM-BF561 • modul v´ yvojov´e desky DEV-BF5xxDA-Lite s integrovan´ ym USB Debug Agentem • modul rozˇsiˇruj´ıc´ı kamerov´e desky EXT-BF5xx-CAM (se dvˇema 2 MPix CMOS kamerami OV2640) 1 2
viz. webov´e str´ anky www.analog.com [21] viz. webov´e str´ anky www.ti.com [20]
37
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
38
V´aha v´ yvojov´e desky DEV-BF5xxDA-Lite je 60 g, procesorov´e jednotky CM-BF561 5 g, modulu rozˇsiˇruj´ıc´ı kamerov´e desky EXT-BF5xx-CAM i se dvˇema kamerami 40 g. Cel´ y kit tedy v´aˇz´ı 105 g. Rozmˇery v´ yvojov´e desky i rozˇsiˇruj´ıc´ıho kamerov´eho modulu jsou 75 x 75 mm. Odbˇer cel´eho v´ yvojov´eho kitu, mˇeˇren´ y na svorce JP1, byl 220 mA pˇri reˇzimu neˇcinnosti“, 250 mA pˇri bˇehu programu a 270 mA pˇri sn´ım´an´ı obraz˚ u z kamer ” (nap´ajec´ı napˇet´ı 5V).
4.1
V´ yvojov´ a deska DEV-BF5xxDA-Lite s integrovan´ ym Debug Agentem
V´ yvojov´a deska DEV-BF5xxDA-Lite s integrovan´ ym USB Debug Agentem (ve verzi 5.1) je urˇcena pro programov´an´ı a ladˇen´ı aplikac´ı pro procesory ˇrady Blackfin. V tomto konkr´etn´ım pˇr´ıpadˇe pro procesor ADSP-BF561, kter´ y je srdcem procesorov´e jednotky CM-BF561 (kapitola 4.3). USB Debug Agent, um´ıstˇen´ y na spodn´ı stranˇe v´ yvojov´e desky, je kompatibiln´ı s v´ yvojov´ ym prostˇred´ım Visual DSP++ 5.0 od Analog Devices, kter´e bylo pˇri v´ yvoji aplikac´ı pouˇzito.
Obr´azek 4.1: V´ yvojov´a deska DEV-BF5xxDA-Lite.
V´ yvojov´a deska DEV-BF5xxDA-Lite umoˇzn ˇuje pˇripojit procesorovou jednotku a d´ale disponuje dvˇema rozˇsiˇruj´ıc´ımi 60-pinov´ ymi konektory (X7 a X8), JTAG konektorem (X3)
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
39
dovoluj´ıc´ı pˇremostˇen´ı JTAG USB Debug Agenta (X4), slotem pro SD karty, nˇekolika obecnˇe pouˇziteln´ ymi LED diodami, univerz´aln´ım tlaˇc´ıtkem, tlaˇc´ıtkem RESET a nap´ajec´ım konektorem. D´ale v´ yvojov´a deska disponuje konektory pro perif´erie z´avisl´e na pouˇzit´em DSP procesoru: USB konektorem (X6) pro v´ ystup USB-UART pˇrevod´ıku (samotn´ y v´ ystup UART je k dispozici na konektoru X5), Ethernet konektorem (X1), konektorem (X9) pro OTG USB 2.0 rozhran´ı, CAN konektor (X10). Pro procesor ADSP-BF561 je k dispozici pouze USB-UART pˇrevod´ık. Jako zdroj napˇet´ı slouˇz´ı dod´avan´ y zdroj 12 V/2 A, kter´ y se pˇripojuje do konektoru X11 a d´ale jsou na v´ yvojov´e desce pouˇzity napˇet’ov´e regul´atory pro napˇet´ı 5 V/2 A a 3,3 V/1,5 A. Rozm´ıstˇen´ı a oˇc´ıslov´an´ı konektor˚ u na desce ploˇsn´ ych spoj˚ u je vidˇet na obr´azku obr. A.10. Rozˇsiˇruj´ıc´ı 60-pinov´e konektory v sobˇe pro procesorovou CM-BF561 mimo jin´e sdruˇzuj´ı pˇripojen´ı ke dvˇema paraleln´ım PPI sbˇernic´ım.
Obr´azek 4.2: Pˇrehled souˇc´ast´ı v´ yvojov´e desky DEV-BF5xxDA-Lite.
Rozˇsiˇruj´ıc´ı 60-pinov´ y konektor ˇc.1 pˇren´aˇs´ı sign´aly pro • s´eriov´ y port SPORT0 • JTAG • s´eriovou sbˇernici SPI • asynchronn´ı s´eriovou sbˇernici UART • paraleln´ı sbˇernici PPI1 • vstupy/v´ ystupy pro obecn´e pouˇzit´ı
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
40
Rozˇsiˇruj´ıc´ı 60-pinov´ y konektor ˇc.2 pˇren´aˇs´ı sign´aly pro • datovou sbˇernici • adresovou sbˇernici • ˇr´ıd´ıc´ı sign´aly pro pamˇet • paraleln´ı sbˇernici PPI2 • nap´ajec´ı napˇet´ı
4.2
Modul procesorov´ e jednotky CM-BF561
Vybran´a procesorov´a jednotka CM-BF561 ve verzi 2.0, zaloˇzen´a na dvouj´adrov´em procesoru ADSP-BF561 (ADSP-BF561SKBCZ600), poskytuje vysok´ y v´ ykon fixed-point DSP procesoru a zaruˇcuje n´ızkou spotˇrebu d´ıky moˇznosti dynamicky zmˇenit napˇet´ı j´adra a jeho frekvenci. Pˇri sv´ ych rozmˇerech 31 x 36 mm a v´aze pouh´ ych 5 gram˚ u jde o ide´aln´ı variantu pro mobiln´ı aplikace.
Obr´azek 4.3: Procesorov´a jednotka CM-BF561.
Procesorov´a jednotka CM-BF561 d´ale obsahuje 25 MHz krystal jako zdroj frekvence, napˇet’ov´ y regul´ator pro j´adra procesoru (0,8V - 1,2V), 64 MB 32-bitov´e SDRAM pamˇeti (2x MT48LC16M16A2BG-75IT) s moˇznost´ı pracovat na frekvenci aˇz 133 MHz a 8 MB Flash pamˇeti (Intel P30 8MB). Pˇripojen´ı k v´ yvojov´e desce DEV-BF5xxDA-Lite tvoˇr´ı opˇet dva 60-pinov´e konktory, na kter´e jsou pˇripojeny rozhran´ı UART, SPI, SPORT a paraleln´ı sbˇernice PPI1, PPI2. Pˇres tyto konektory je procesorov´a jednotka nap´ajena nap´ajec´ım
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
41
napˇet´ım 3,3V. Blokov´ y diagram procesorov´e jednotky CM-BF561 je na obr´azku obr. 4.4.
Obr´azek 4.4: Blokov´ y diagram procesorov´e jednotky CM-BF561.
8 MB Flash pamˇet’ je adresov´ana od 0 x 20000000 do 0 x 207FFFFF. Adresovac´ı prostor pamˇeti SDRAM je 0 x 00000000 aˇz 0 x 03FFFFFF. Maxim´aln´ı dod´avan´ y proud pro procesorovou jednotku m˚ uˇze b´ yt 550 mA pˇri nap´ajec´ım napˇet´ı 3,3 V a napˇet´ı j´adra 1,2 V. N´asleduj´ıc´ı tabulka tabulka 4.1 ud´av´a typickou spotˇrebu procesorov´e jednotky CM-BF561 pro dan´e podm´ınky (t = 25◦ C). Frekvence j´ adra Napˇ et´ı j´ adra
2 x 600 MHz 2 x 600 MHz 1 x 600 MHz 1,21 V
Vyt´ıˇ zen´ı SDRAM pamˇ eti Spotˇ reba
0,8 V
1,16 V
20% 470 mA
160 mA
330 mA
Tabulka 4.1: Typick´a spotˇreba procesorov´e jednotky CM-BF561.
Znaˇcen´ı uveden´e na sch´ematick´e znaˇcce CM-BF561 (obr. 4.5) odpov´ıd´a znaˇcen´ı z katalogov´eho listu Analog Devices pro ADSP-BF561 [12], [13]. V pˇr´ıloze jsou k dispozici tabulky tabulka A.1, tabulka A.2 a tabulka A.3, tabulka A.4 se seznamem jednotliv´ ych
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
42
v´ yvod˚ u pro oba konektory procesorov´e jednotky CM-BF561. Voliteln´ y konektor X3 pro rozˇs´ıˇren´ı poˇctu obecnˇe pouˇziteln´ ych vstup˚ u/v´ ystup˚ u nebyl v tomto pˇr´ıpadˇe pouˇzit.
Obr´azek 4.5: Popis v´ yvod˚ u procesorov´e jednotky CM-BF561.
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
4.3
43
Rozˇ siˇ ruj´ıc´ı modul EXT-BF5xx-CAM
Samotn´a v´ yvojov´a deska neumoˇzn ˇuje pˇripojen´ı dvojice kamer. Z tohoto d˚ uvodu byl pˇrid´an rozˇsiˇruj´ıc´ı stavebnicov´ y modul EXT-BF5xx-CAM, kter´ y je na obr´azku obr. 4.6. Tento kamerov´ y modul se k v´ yvojov´e desce pˇripojojuje pomoc´ı 60-pinov´ ych rozˇsiˇruj´ıc´ıch konektor˚ u X7 a X8, kter´e umoˇzn ˇuj´ı jeho nap´ajen´ı a veˇskerou komunikace s v´ yvojovou deskou, resp. s procesorem ADSP-BF561, vˇcetnˇe z´ısk´an´ı obrazov´ ych dat. Tyto konektory jsou na kamerov´em modulu EXT-BF5xx-CAM pr˚ uchoz´ı“ a na vrchn´ı stranˇe je moˇzn´e ” pˇripojit dalˇs´ı stavebnicov´ y rozˇsiˇruj´ıc´ı modul podle poˇzadavk˚ u aplikace. Pro tuto diplomovou pr´aci byl pouˇzit pouze jeden rozˇsiˇruj´ıc´ı modul.
Obr´azek 4.6: Rozˇsiˇruj´ıc´ı kamerov´a deska EXT-BF5xx-CAM.
Rozˇsiˇruj´ıc´ı modul EXT-BF5xx-CAM podporuje pˇripojen´ı dvojice kamer3 s obrazov´ ym senzorem Omnivision OV7760, OV2630 a OV2640. Pokud je pˇripojen´a pouze kamera ˇc. 2 (nebo ˇz´adn´a), je moˇzn´e pˇripojit ke kamerov´emu modulu tak´e jeden z Hitachi displej˚ u (TX09D50VM1CCA, TX09D70VM1CDA) nebo nˇejak´ y z kompatibiln´ıch displej˚ u. Nastaven´ı modulu pro 2 kamery OV2640 je pops´ano v kapitole 4.6.2. 3
Dvojici kamer nebo kameru spoleˇcnˇe displejem je moˇzn´e pˇripojit pouze pˇri pouˇzit´ı procesorov´e
jednotky CM-BF561, resp. procesoru ADSP-BF561.
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
4.4
44
CMOS kamery OV2640FSL
Jak jiˇz bylo ˇreˇceno, rozˇsiˇruj´ıc´ı modul EXT-BF5xx-CAM byl pro metodu stereovidˇen´ı dod´an spoleˇcnˇe se dvˇema barevn´ ymi kamerami OV2640FSL (obr´azek obr. 4.7). Tyto kamery jsou zaloˇzeny na CMOS technologii a maj´ı maxim´aln´ı rozliˇsen´ı 1600 x 1200 pixel˚ u, tj. 2 MPix (UXGA4 ). Podporuj´ı YUV422(420)/YCbCr422 a RGB565/555 8-bitov´ y form´at v´ ystupu, 8/10-bitov´ y RAW RGB v´ ystup5 a tak´e komprimovan´ y obraz. Maxim´aln´ı poˇcet sn´ımk˚ u za vteˇrinu, kter´ y je kamera schopna poˇr´ıdit, je 15 pro rozliˇsen´ı UXGA, 30 pro SVGA a aˇz 60 pro CIF a niˇzˇs´ı. Optick´a soustatva m´a plastovou ˇcoˇcku. Diagon´aln´ı zorn´ y u ´hlel je 60◦ a ohniskov´a vzd´alenost f = 3, 78 mm. Kamera m´a pevnˇe dan´ y ostˇr´ıc´ı rozsah 60 cm → ∞. Citlivost pouˇzit´eho senzoru OV2640 je 0,6 V/Lux-sec a velikost jednoho pixelu 2,2 x 2,2 µm. Kamera vyˇzaduje stejnosmˇern´e nap´ajen´ı j´adra o velikosti 1,3 V a nap´ajen´ı pro analogov´e obvody v rozsahu 2,5 - 3 V. Spotˇreba je 125 mW6 .
Obr´azek 4.7: CMOS kamery OV2640FSL (pohled zepˇredu, zezadu a popis pin˚ u konektoru kamery).
Rozmˇery pouzdra jsou 8 x 8 x 6 mm. Pouˇzit´ y konektor pro nap´ajen´ı a data je typu flex cable“. ” 4
Velikosti rozliˇsen´ı: QVGA 320 x 240, (CIF 400 x 292), VGA 640 x 480, SVGA 800 x 600 ... UXGA
1600 x 1200 pixel˚ u. 5 RAW (soubor obsahuj´ıc´ı minim´alnˇe zpracovan´a data ze sn´ımaˇce), YUV (barevn´ y model, kde Y je jasov´ a sloˇzka a U a V jsou barevn´e sloˇzky), RGB (aditivn´ı zp˚ usob m´ıch´an´ı barev ˇcerven´e, zelen´e a modr´e) 6 rozliˇsen´ı UXGA, YUV m´od, 15 fps
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
4.5
45
V´ yvojov´ e prostˇ red´ı Visual DSP++ 5.0
Jako v´ yvojov´e prostˇred´ı pro programov´an´ı procesoru ADSP-BF561 byl pouˇzit SW od firmy Analog Devices Visual DSP++ 5.0. Toto prostˇred´ı podporuje USB Debug Agent dod´avan´ y s v´ yvojovou deskou DEV-BF5xxDA-Lite. Vyvtoˇren´ı a nastaven´ı tzv. Session“ ” je pops´ano kapitole 4.6.4. Ta slouˇz´ı k nastaven´ı rozhran´ı mezi Visual DSP++ 5.0 a konkr´etn´ım HW.
Obr´azek 4.8: Uˇzivatelsk´e prostˇred´ı Visual DSP++ 5.0
V´ yvojov´e prostˇred´ı Visual DSP++ 5.0 poskytuje plnˇe integrovan´e uˇzivatelsk´e prostˇred´ı s moˇznost´ı spr´avy projekt˚ u (podporuj´ıc´ı i projekty pro v´ıcej´adrov´e procesory), ladˇen´ı programu, simul´ator r˚ uzn´ ych procesor˚ u vˇcetnˇe ADSP-BF561, podporuje jazyky C/C++ a assembler, umoˇzn ˇuje spr´avu pamˇeti na v´ yvojov´em kitu pomoc´ı programu expert linker, anal´ yzu bˇehu programu a ˇcasov´e n´aroˇcnosti jednotliv´ ych funkc´ı, grafick´e zn´azornˇen´ı dat procesoru a n´astroje pro optimalizaci.
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
4.6
46
Nastaven´ı a instalace v´ yvojov´ eho kitu DEV-BF5xxDA-Lite pro CM-BF561
V t´eto kapitole jsou shrnuty z´akladn´ı kroky pro zapojen´ı a nastaven´ı v´ yvojov´e desky DEV-BF5xxDA-Lite a rozˇsiˇruj´ıc´ıho kamerov´eho modulu EXT-BF5xx-CAM. Nastaven´ı je provedeno pro dvojici CMOS kamer OV2640FSL a procesor ADSP-BF561. D´ale je pops´ana instalace driver˚ u pro OS Microsoft WinXP a nastaven´ı v´ yvojov´eho prostˇred´ı Visual DSP++ 5.0 pro pr´aci s HW Bluetechnix.
4.6.1
Nastaven´ı v´ yvojov´ eho desky DEV-BF5xxDA-Lite
Nastaven´ı v´ yvojov´eho desky DEV-BF5xxDA-Lite provedeme pomoc´ı DIP pˇrep´ınaˇc˚ uS a jumper˚ u JP. DIP pˇrep´ınaˇc S1 slouˇz´ı k pˇripojen´ı konektoru Ethernetu k j´adru. Pro procesor ADSP-BF561 nelze Ethernet pouˇz´ıt, a tak jsou vˇsechny pˇrep´ınaˇce na S1 v poloze Off“. DIP pˇrep´ınaˇcem S2 vol´ıme pouˇzitou procesorovou jednotku a bootovac´ı nastaven´ı. ” CM-BF561 m´a omezen´ y poˇcet voln´ ych pin˚ u a z tohto d˚ uvodu nelze nastavit bootovac´ı m´od - pˇrep´ınaˇce 1 - 4 jsou v poloze Off. Nastaven´ı pˇrep´ınaˇc˚ u 5 - 8 procesorov´e jednotky CM-BF561 je 5 - Off, 6 - On, 7 - Off, 8 - Off. DIP pˇrep´ınaˇcem S4 pˇrep´ın´ame mezi v´ ystupem portu UART na konektor X5 (pˇrep´ınaˇc v poloze 1) nebo na USB-UART pˇrevodn´ık, pˇripojen´ y na USB konektor X6 (pˇrep´ınaˇc v poloze 0). Jumper JP1 pˇripojuje nap´ajec´ı napˇet´ı na v´ yvojov´e desce a lze tak´e pouˇz´ıt k mˇeˇren´ı odbˇeru proudu. JP2 pˇripojuje Vdd RTC na napˇet´ı 3,3 V procesorov´e jednotky. Alternativnˇe lze jumper vyjmout a Vdd RTC7 nap´ajet z bateriov´eho zdroje. Jumpery JP3 a JP6 jsou pˇri pouˇzit´ı CM-BF561 rozpojen´e. V´ yvojov´a deska d´ale obsahuje dvˇe tlaˇc´ıtka a nˇekolik informaˇcn´ıch LED diod. Tlaˇc´ıtko S3 je resetovac´ı a tlaˇc´ıtko S6 slouˇz´ı k obecn´emu pouˇzit´ı a na CM-BF561 je pˇripojen´e na v´ yvod PF46. V tabulce tabulka A.6 je seznam LED diod s popisem funkce. LED diody V5 - V8 indikuj´ı stav USB Debug Agenta a diody V9 a V10 slouˇz´ı k obecn´emu pouˇzit´ı.
4.6.2
Nastaven´ı rozˇ siˇ ruj´ıc´ıho modulu EXT-BF5xx-CAM
Na obr´azku obr. A.11 v pˇr´ıloze je vidˇet rozm´ıstˇen´ı konektor˚ u a pˇrep´ınaˇc˚ u rozˇsiˇruj´ıc´ı kamerov´e desky EXT-BF5xx-CAM. Konektory Cam1 a Cam2 slouˇz´ı k pˇripojen´ı CMOS kamer. EX1 a EX2 je v tomto pˇr´ıpadˇe oznaˇcen´ı pr˚ uchoz´ıch“ 60-pinov´ ych rozˇsiˇruj´ıc´ıch ” 7
Real-Time Clock
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
47
konektor˚ u pro pˇripojen´ı dalˇs´ıho modulu. Na desce EXT-BF5xx-CAM jsou um´ıstˇeny tak´e tˇri pˇrep´ınaˇce S1, S2 a S3. DIP ˇrep´ınaˇc S1 umoˇzn ˇuje vybrat pˇripojen´ y HW (diplej, kamery). Pro 2 kamery nastav´ıme jednotliv´e pˇrep´ınaˇce S1 do pozic (1, 2, 8, 9 - Off a 3, 4, 5, 6 - On). Pro typ kamer OV26x0 nastav´ıme pˇrep´ınaˇc S2 do pozice 0. Pˇrep´ınaˇcem S3 vybereme typ procesorov´e jednotky - pozice 0 pro CM-BF561. Kamery s obrazov´ ym senzorem Omnivision OV7760, OV2630 a OV2640 vyˇzaduj´ı r˚ uzn´e analogov´e nap´ajec´ı napˇet´ı V ccA a r˚ uzn´e napˇet´ı pro sv´e j´adro V ccC . Konkretn´ı pouˇzit´a kamera OV2640FSL vyˇzaduje V ccA = 1, 3 V a V ccC = 2, 7 V. Napˇet´ı V ccA se nastav´ı rezistory R11 = 10 kΩ a R12 = 120 kΩ. Napˇet´ı V ccA rezistory R14 = 14 kΩ a R15 = 10 kΩ. Jumper JP1 na kamerov´e desce EXT-BF5xx-CAM pˇripojuje nap´ajec´ı napˇet´ı a je moˇzn´e ho opˇet pouˇz´ıt pro mˇeˇren´ı odbˇeru proudu. Konektor P1 slouˇz´ı k pˇripojen´ı displeje a je nevyuˇzit´ y.
4.6.3
Ovˇ eˇ ren´ı funkˇ cnosti cel´ eho kitu a komunikace pˇ res UART
Abychom mohli s v´ yvojovou deskou DEV-BF5xxDA-Lite komunikovat pˇres rozhran´ı UART, je nutn´e nejdˇr´ıve nainstalovat ovladaˇce pro pˇrevodn´ık USB-UART. Do konektor˚ u desky DEV-BF5xxDA-Lite zapoj´ıme procesorovou desku CM-BF561 a do konektoru X11 pˇripoj´ıme nap´ajec´ı napˇet´ı z dod´avan´eho 12 V adapt´eru. Propojovac´ı USB kabel zapoj´ıme konektorem typu B do konektoru X6 a konektor typu A do PC. OS Windows XP by nyn´ı mˇel s´am rozeznat zaˇr´ızen´ı a dot´azat se na instalaci ovladaˇc˚ u. Zvol´ıme v´ ybˇer pro specifikaci um´ıstˇen´ı ovladaˇce. Na CD Bluetechnix se nach´azej´ı potˇrebn´e soubory ovladaˇc˚ u, pˇr´ıpadnˇe je moˇzn´e ovladaˇc st´ahnout z webov´ ych str´anek [19]. Tuto proceduru je nutn´e zopakovat dvakr´at. Jednou pro samotn´e USB a podruh´e pro UART bridge. Soubory ovladaˇce jsou pokaˇzd´e stejn´e. Ve spr´avci zaˇr´ızen´ı OS pot´e zkontrolujeme, zda-li se objevilo nov´e zaˇr´ızen´ı - nov´ y COM port CP2101 USB to UART bridge controller“ (nejsp´ıˇse ” COM4 nebo podobnˇe). Pokud ano, pak komunikaci vyzkouˇs´ıme pˇres termin´alov´ y program (napˇr. Hypertermin´al obsaˇzen´ y v OS Windows XP). Otevˇreme termin´al a nastav´ıme tyto parametry: • rychlost 115200 Baud • poˇcet datov´ ych bit˚ u8 • parita ˇz´adn´a • poˇcet stop-bit˚ u 1, ˇr´ızen´ı toku ˇz´adn´e
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
48
Pokud vˇse probˇehlo korektnˇe, pak se stiskem tlaˇc´ıtka S3 (RESET) objev´ı v oknˇe Hypertermin´alu bootovac´ı obrazovka syst´emu BLACKSheep, kter´ y je firmou Bluetechnix defaultnˇe nahr´an v procesoru.
4.6.4
Instalace ovladaˇ c˚ u USB Debug Agenta a v´ yvojov´ eho prostˇ red´ı Visual DSP++ 5.0
Nejdˇr´ıve provedeme instalaci a registraci v´ yvojov´eho prostˇred´ı Visual DSP++ 5.0. Instalace a registrace je popsan´a v pˇriloˇzen´em manu´alu a je intuitivn´ı. Instalaci je vhodn´e doplnit o posledn´ı dostupn´ y update [21]. Pro nahr´an´ı a ladˇen´ı program˚ u procesoru ADSP-BF561 je jeˇstˇe potˇreba nastavit tzv. Session, kter´a zprostˇredkov´av´a komunikaci s USB Debug Agentem um´ıstˇen´ ym na v´ yvojov´e desce DEV-BF5xxDA-Lite. Jakmile dokonˇc´ıme instalaci Visual DSP++ 5.0 spust´ıme utilitu DEV-BF5xxDA-Lite Installer (obr. 4.9), kter´a nakonfiguruje v´ yvojov´e prostˇred´ı pro podporu Bluetechnix v´ yvojov´e desky. Z nab´ıdky vybereme procesorovou desku CM-BF561 a nainstalujeme.
Obr´azek 4.9: Obrazovka utility DEV-BF5xxDA-Lite Installer.
Pˇripoj´ıme dalˇs´ı USB kabel, obdobnˇe jako pro USB-UART pˇrevod´ık (viz. v´ yˇse), tentokr´at do konektoru X4. Ovladaˇce nainstalujeme pomoc´ı automatick´e instalace. Spust´ıme Visual DSP++ Configurator, kter´ y se n´am nainstaloval spolu s v´ yvojov´ ym prostˇred´ım. Zad´ame n´azev a vybereme spr´avn´ y typ platformy Bluetechnix CM-BF561 EZ-Kit, jak je tomu naznaˇceno na obr´azc´ıch obr. 4.10 a obr. 4.11. Zavˇreme Visual DSP++ Configurator a ve v´ yvojov´em prostˇred´ı VisualDSP++ 5.0 vybereme z menu poloˇzku Session->New Session, vybereme procesor ADSP-BF561, stiskneme tlaˇc´ıtko Next, vybereme EZ-Kit Lite connection type a ukonˇc´ıme stiskem tlaˇc´ıtka
´ ´ KIT PRO ADSP-BF561 KAPITOLA 4. VYVOJOV Y
49
Finish. Tˇemito kroky jsme nastavili komunikaci v´ yvojov´eho prostˇred´ı Visual DSP++ 5.0 s USB Debug Agentem.
Obr´azek 4.10: Visual DSP++ konfigur´ ator - nastaven´ı platformy.
Obr´azek 4.11: Visual DSP++ konfigur´ ator - v´ ybˇer platformy.
Kapitola 5 Algoritmizace metody stereovidˇ en´ı na procesoru ADSP-BF561 ´ Uloha stereovidˇen´ı a probl´emy s n´ı spojen´e jsou v souˇcasn´e dobˇe intenzivnˇe ˇreˇsen´ ym probl´emem poˇc´ıtaˇcov´eho vidˇen´ı. K dispozici je nˇekolik pˇr´ıstup˚ u a metod ˇreˇsen´ı probl´emu stereovidˇen´ı, resp. hled´an´ı korespondenc´ı. V z´asadˇe je m˚ uˇzeme shrnout do tˇechto dvou zbˇeˇzn´ ych kategori´ı: tzv. area-based pˇr´ıstup (vyuˇz´ıv´ame urˇcit´eho v´ yˇrezu jasov´ ych u ´rovn´ı typu okno z jednoho obrazu k porovn´an´ı/korelaci s pohybuj´ıc´ım se oknem stejn´e velikosti v dalˇs´ım obrazu) nebo tzv. feature-based pˇr´ıstup (korelaci prov´ad´ıme mezi jist´ ymi objekty nalezen´ ymi v obraze - m˚ uˇze j´ıt o hrany, ˇc´ary, sloˇzitˇejˇs´ı objetky, ap.). Tyto kategorie se prol´ınaj´ı a lze nal´ezt tak´e hybridn´ı pˇr´ıstupy, spojuj´ıc´ı jejich vlastnosti. Hlavn´ım probl´emem hled´an´ı korespondenc´ı je obecnˇe velk´e mnoˇzstv´ı obrazov´ ych dat, kter´e je nutn´e prohled´avat a ˇcast´a nejednoznaˇcnost nalezen´ ych korespondenc´ı, pˇredevˇs´ım v area-based pˇr´ıstupu pˇri nepˇr´ıliˇs strukturovan´e sc´enˇe s n´ızk´ ym kontrastem, bez dostateˇcn´e ˇ textury. Reˇsen´ı sloˇzitˇejˇs´ıch pˇr´ıstup˚ u k stereovidˇen´ı pˇresahuje r´amec t´eto diplomov´e pr´ace. Mobiln´ı zaˇr´ızen´ı, kter´e se chce pohybovat a orientovat v prostoru, detekovat pˇrek´aˇzky, vyˇzaduje dostateˇcnˇe rychl´e zpracov´an´ı disparitn´ı/hloubkov´e mapy, aby na tyto vnˇejˇs´ı podnˇety staˇcilo reagovat. Pokud chceme stereovidˇen´ı pouˇz´ıt k z´akladn´ı detekci pˇrek´aˇzek, je nutn´e vybrat takov´ y pˇr´ıstup zpracov´an´ı obrazov´ ych dat, kter´ y bude vybran´ y HW schopen zpracovat v pˇrimˇeˇren´e rychlosti. Z tˇechto d˚ uvodu bylo zvoleno n´ızk´e rozliˇsen´ı zpracovan´ ych obrazov´ ych sn´ımk˚ u z kamer, kter´e je moˇzn´e uloˇzit do rychl´ ych vnitˇrn´ıch pamˇet´ı samotn´eho procesoru. Vybran´ y postup hled´an´ı korespondenc´ı, jejich filtrace a z´ısk´an´ı disparitn´ı mapy vych´az´ı z ˇcl´anku [11]. Tento algoritmus byl nejdˇr´ıve otestov´an ve v´ yvojov´em prostˇred´ı Matlab verze 7.1. Pro zpracov´an´ı na samotn´em DSP procesoru byl algoritmus upraven a je pops´an v kapitole 5.5. K´odov´an a odladˇen je ve v´ yvojov´e prostˇred´ı 50
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
51
Visual DSP++ 5.0. Prostˇred´ı Matlab bylo takt´eˇz pouˇzito pro tvorbu a ˇcten´ı datov´ ych soubor˚ u pˇren´aˇsen´ ych z DSP procesoru do PC a naopak. Pˇred samotn´ ym hled´an´ım korespondenc´ı, je nezbytn´e prov´est zarovn´an´ı z´ıskan´ ych stereoskopick´ ych sn´ımk˚ u procedurou nazvanou rektifikace, zahrnuj´ıc´ı i odstranˇen´ı zkreslen´ı kamer (popsanou v kapitole 5.4.1 o kalibraci kamer). Rektifikaˇcn´ı a kalibraˇcn´ı parametry steroskopick´eho uspoˇr´ad´an´ı kamer byly vypoˇcteny pouˇzit´ım Matlab Camera Calibration Toolboxu. Vybran´ y DSP procesor ADSP-BF561 je pˇred samotn´ ym zpracov´an´ım algoritmu nutn´e uv´est do poˇzadovan´eho pracovn´ıho stavu, nastavit periferie pro z´ısk´an´ı obrazov´ ych informac´ı a komunikaci s PC. T´eto ˇc´asti se vˇenuje kapitola 5.1 aˇz 5.3. V´ yvojov´e prostˇred´ı a zp˚ usob algoritmizace dovoluj´ı optimalizaci v´ ykonu v´ ysledn´eho programu stereovidˇen´ı, ˇc´ımˇz se zab´ yv´a z´avˇereˇcn´a kapitola 5.7.
5.1
Nastaven´ı projektu ve Visual DSP++ 5.0
V´ yvojov´e prostˇred´ı Visual DSP++ 5.0 nab´ız´ı vytvoˇren´ı hned nˇekolika odliˇsn´ ych typ˚ u projekt˚ u obsahuj´ıc´ı zdrojov´e k´ody pro dvouj´adrov´ y procesor ADSP-BF561. Jsou to tyto tˇri z´akladn´ı pˇr´ıstupy: • aplikace bˇeˇz´ıc´ı pouze na jendom j´adˇre (druh´e j´adro je uvedeno do neˇcinn´eho stavu Idle) - tzv. Single-Core Application • j´adra se chovaj´ı jako nez´avisl´e procesory, aplikace jsou zkompilov´any zvl´aˇst’ a kaˇzd´a bˇeˇz´ı na sv´em j´adˇre (sd´ılen´e prostˇredky jsou obsluhov´any v´ yvoj´aˇrem) - tzv. One Application Per Core • jedna aplikace je zkompilov´ana pro obˇe j´adra a sd´ılen´e prostˇredky jsou obsluhov´any linkerem - tzv. Single Application/Dual Core Pˇri algoritmizaci metody stereovidˇen´ı byl pouˇzit nejdˇr´ıve prvn´ı pˇr´ıstup aplikace bˇeˇz´ıc´ı pouze na jednom j´adˇre a pozdˇeji tˇret´ı pˇr´ıstup, kdy byla aplikace rozdˇelena na dvˇe ˇc´asti bˇeˇz´ıc´ı paralelnˇe na obou j´adrech. V pˇr´ıpadˇe prvn´ıho pˇr´ıstupu obsahuje tzv. Project group 1 dva projekty. Projekt s aplikac´ı pro prvn´ı j´adro a defaultn´ı neˇcinn´ y“ projekt pro j´adro ” druh´e. Projekty jsou rozdˇeleny na sloˇzky zdrojov´ ych k´od˚ u, hlaviˇckov´ ych a linkovac´ıch soubor˚ u, soubor˚ u vygenerovan´ ych v´ yvojov´ ym prostˇred´ım a z´avislostmi mezi projekty. Tˇret´ı pˇr´ıstup k programov´an´ı dvouj´adrov´eho procesoru se skl´ad´a ze speci´aln´ı struktury 1
Pracovn´ı skupina, ve kter´e jsou v definovan´e struktuˇre uloˇzeny jednotliv´e projekty.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
52
5 projekt˚ u (projekt pro j´adro A, projekt pro j´adro B, sd´ılen´ y k´od a data pamˇeti L2, sd´ılen´ y k´od a data pamˇeti L3 a hlavn´ı projekt). Hlavn´ı projekt obsahuje z´avislosti na ostatn´ı projekty a linkovac´ı LDF2 soubor. Aplikace projektu pro j´adro A nebo B m˚ uˇze vyuˇz´ıt k´od ze sv´e L1 pamˇeti nebo sd´ılen´e pamˇeti L2, L3. Pˇreloˇzen´ım t´eto pˇetice projekt˚ u z´ısk´ame dva spustiteln´e soubory, jeden pro kaˇzd´e j´adro.
5.2
Nastaven´ı procesoru
Pˇred samotn´ ym zpracov´an´ım dat se pro procesor ADSP-BF561 mus´ı spustit bˇeh druh´eho j´adra pomoc´ı funkce adi core b enable(). V t´eto funkci se nepˇred´av´a ˇz´adn´ y parametr. Pomoc´ı syst´emov´ ych power management funkc´ı s prefixem ADI PWR “ lze ” nastavit napˇet´ı j´adra a/nebo jeho frekvenci. V pˇr´ıpadˇe, ˇze nastav´ıme pouze frekvenci, napˇet´ı j´adra se nastav´ı na nejmenˇs´ı moˇznou hodnotu, kv˚ uli spotˇrebˇe. Pokud nastav´ıme pouze napˇet´ı j´adra, nastav´ı se max. moˇzn´a pracovn´ı frekvence j´adra. Tak´e m˚ uˇzeme oba parametry kombinovat nebo nastavit vlastnosti j´adra pˇr´ımo pomoc´ı syst´emov´ ych registr˚ u. D´ale je nutn´e nastavit frekvenci sbˇernice extern´ı pamˇeti. Jako typick´e pracovn´ı nastaven´ı ADSP-BF561 byla pouˇzita frekvece j´adra 500 MHz a frekvence sbˇernice extern´ı SDRAM pamˇeti 125 MHz. Podrobn´e informace o power managementu procesoru ADSP-BF561 lze naj´ıt v literatuˇre [14], pˇr´ıpadnˇe o dynamick´em power managementu v literatuˇre [13]. Po nastaven´ı parametr˚ u jader inicializujeme syst´em pˇreruˇsen´ı - ADI interrupt manager a definujeme pamˇet’ov´e buffery pro zpracov´an´ı obrazov´ ych dat. Abychom mohli ˇcinnost aplikace rozdˇelit na dvˇe j´adra procesoru, mus´ıme zabezpeˇcit vhodnou komunikaci. Komplexn´ı komunikaci a sd´ılen´ı prostˇredk˚ u m˚ uˇze zajiˇst’ovat VDK3 v´ yvojov´eho prostˇred´ı Visual DSP++ 5.0, ale pro potˇreby navrˇzen´e aplikce byla zbyteˇcnˇe komplikovan´a. Z tohoto d˚ uvodu byla naprogramov´ana jednoduch´a fronta zpr´av. Vyuˇz´ıv´a syst´emov´e funkce zamyk´an´ı claim lock() a odemyk´an´ı release lock() promˇenn´ ych, um´ıstˇen´ ych v L2 (L3) pamˇeti, kter´a vz´ajemnˇe pˇred´av´a stavy proces˚ u jader a potˇrebn´a data. Blokov´e sch´ema t´eto fronty zpr´av s jednotliv´ ymi stavy procesor˚ u je na obr´azku obr. 5.1. 2 3
Linker Description File - um´ıstˇen´ı k´ odu, dat v pamˇeti VisualDSP++ Kernel
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
53
Obr´azek 5.1: Blokov´e sch´ema pouˇzit´e fronty zpr´ av pro komunikaci jader.
5.3
Nastaven´ı rozhran´ı UART, kamer a paraleln´ıch sbˇ ernic PPI
V n´asleduj´ıc´ım kroku programu jsou inicializov´any a nastaveny obecn´e vstupy a v´ ystupy v´ yvojov´e desky DEV-BF5xxDA-Lite, komunikaˇcn´ı rohran´ı UART, obˇe paraleln´ı PPI sbˇernice, komunikace s kamerami prostˇrednictv´ım protokolu SCCB4 a registry kamer. Pr˚ ubˇeh inicializace a stav aplikace je pr˚ ubˇeˇznˇe zobrazen na obrazovce hypertermin´alov´eho programu prostˇrednictv´ım komunikace pˇres rozhran´ı UART. Nastaven´ı komunikace rozhran´ı UART se provede pomoc´ı 2 funkc´ı uart open(...) a uart setMode(...). T_UART_HANDLE hUART = uart_open(0, sclk, 1024, 1024, 0); uart_setMode(hUART, UART_BAUD_RATE, UART_NONE, 8, 1);
Funkc´ı uart open(...) z´ısk´ame UART handler hUART. Parametry funkce jsou ˇc´ıslo UART portu, hodnota syst´emov´ ych hodin, velikost vstupn´ıho a v´ ystupn´ıho bufferu. Posledn´ım parametrem je callback funkce. Funkce uart setMode(...) pro handler hUART nastav´ı stejn´e parametry jako v kapitole 4.6.3 (rychlost, ˇz´adn´e ˇr´ızen´ı toku, 8 datov´ ych bit˚ u a 1 stop-bit). V´ ypis textu na obrazovku obstar´av´a funkce uart writeString(...). Pro nahr´an´ı datov´ ych soubor˚ u z PC do procesoru a naopak jsou vyuˇzity funkce XM ReceiveFile a XM TransmitFile pouˇz´ıvaj´ıc´ı protokol X-Modem. uart_writeString (hUART, sMessage); XM_ReceiveFile (hUART, datFile); XM_TransmitFile (hUART, datFile, size); 4
Serial Control Camera Bus
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
54
Nastaven´ı registr˚ u kamer (parametr pCfgParam) je provedeno funkc´ı cam setup(...). phCamera je ukazatel na handler kamery. tSIOCf je hodinov´ y sign´al, tSIODf datov´ y sign´al pro SCCB komunikaci s kamerou a tPwdn sign´al sn´ıˇzen´ı spotˇreby kamery. Adresa v parametru CAM ADDRESS je 0x60 pro kamery OV2640. Parametr cclk pˇred´av´a informaci o frekvenci j´adra. T_ERROR_CODE erResult = cam_setup(&phCamera, tSIOCf, tSIODf,tPwdn, CAM_ADDRESS, pCfgParam, cclk, 0);
Obr´azek 5.2: Uk´azka hypertermin´alov´e obrazovky komunikuj´ıc´ı s procesorem ADSP-BF561, na kter´em bˇeˇz´ı program stereovidˇen´ı.
Jakmile je veˇsker´a inicializace hotova, hypertermin´alov´a obrazovka vyzve k nahr´an´ı setu kalibraˇcn´ıch a rektifikaˇcn´ıch dat. M˚ uˇzeme se tak´e rozhodnout, zda chceme pracovat se sn´ımky z kamer nebo se sn´ımky nahran´ ymi pˇres rozhran´ı UART (tato moˇznost volby se mˇen´ı pˇr´ımo ve zdrojov´em k´odu). Abychom z´ıskali sn´ımky z kamer, nakonfigurujeme sbˇernici PPI pro DMA pˇrenos, vybran´ y m´od obrazu YUV a rozliˇsen´ı nXsize x nYsize funkc´ı ppi setup gp(...), kde cPPI5 je ˇc´ıslo PPI sbˇernice, YUVbuffer je buffer pro uloˇzen´ı sn´ımku. Ostatn´ı parametry funkce nastavuj´ı registry PPI sbˇernice a vlastnosti DMA pˇrenosu dat pro poˇzadovan´ y form´at 5
PPI1 = 0, PPI2 = 1
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
55
obrazov´ ych dat (bl´ıˇze jsou pops´any v hlaviˇckov´em souboru funkce). Posledn´ım parametrem je callabck funkce pro dokonˇcen´ı DMA pˇrenosu. ppi_setup_gp(cPPI, YUVbuffer, 0x002c, nYsize, (nXsize * 2) - 1, 0, 0x00b2, nXsize * 2, 1, nYsize, 1, 0, (T_PPI_CALLBACK)PPIHandler);
Sn´ımky z kamer z´ıskame DMA pˇrenosem, aktivovan´ ym funkc´ı ppi enable(cPPI). Pokud bˇehem dan´eho ˇcasov´eho intervalu nez´ısk´ame poˇzadovan´ y sn´ımek, objev´ı se na hypertermin´alov´e obrazovce chybov´a hl´aˇska. Pokud je pˇrenos obrazov´ ych dat z kamer do pamˇeti u ´spˇeˇsn´ y pokraˇcuje program ve vykon´av´an´ı programu d´ale popsan´eho v kapitole 5.5. Veˇsker´e zde popisovan´e kroky jsou tak´e vidˇet na blokov´em sch´ematu na obr´azku obr. 5.5.
5.4
Kalibrace a rektifikace kamer - MATLAB Camera Calibration Toolbox
Jak bylo ˇreˇceno v kapitole 2.1.2, sn´ımky z kamer jsou zat´ıˇzeny zkreslen´ım a kamerov´e ˇr´adky nejsou obecnˇe zcela horizont´alnˇe zarovn´any. Proto pˇred samotn´ ym zpracov´an´ım dvojice streoskopick´ ych sn´ımk˚ u pro disparitn´ı mapu odstran´ıme zkreslen´ı a provedeme rektifikaci. T´ım zjednoduˇsˇs´ıme probl´em 2D prohled´av´an´ı na prohled´av´an´ı korespondenc´ı v jednom kamerov´em ˇr´adku. Pro kalibraci kamer a rektifikaci stereoskopick´ ych sn´ımk˚ u byl pouˇzit Camera Calibration Toolbox v prostˇred´ı MATLAB 7.1. Tento Matlab toolbox je intuitivn´ı a v´ ybornˇe popsan´ y v literatuˇre [10], vˇcetnˇe praktick´ ych uk´azek pouˇzit´ı. V´ ypoˇcet kalibraˇcn´ıch matic a parametr˚ u rektifikace se provede pouze jednou ( offline“). ” Tato vlastnost je velice d˚ uleˇzit´a, protoˇze pro aplikaci na DSP procesoru staˇc´ı vypoˇcten´e parametry pouze“ aplikovat na sejmut´e sn´ımky. ”
5.4.1
Kalibrace kamer
Abychom mohli kameru (kamery) zkalibrovat pomoc´ı Camera Calibration Toolboxu, potˇrebujeme ve sc´enˇe nasn´ımat kalibraˇcn´ı vzor. V tomto pˇr´ıpadˇe ˇsachovnice“ se zn´am´ ymi ” parametry. Kalibraˇcn´ı vzor ˇsachovnice“ byl vytiˇstˇen na pap´ır form´atu A4 a obsahoval ” 7 x 9 pol´ı o velikosti 27,5 x 27,5 mm. Vzor byl um´ıstˇen na pevn´ y podklad a nasn´ım´an v dostateˇcn´em poˇctu (cca 10) sn´ımk˚ u v r˚ uzn´ ych vzd´alenostech a pod r˚ uzn´ ym u ´hlem
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
56
obˇema kamerami. Sn´ım´an´ı sn´ımk˚ u pravou i levou kamerou z´aroveˇ n je d˚ uleˇzit´e pro rektifikaci. Nyn´ı v Camera Calibration Toolboxu spust´ıme pˇr´ıkazem calib gui nab´ıdku funkc´ı, kter´e toolbox nab´ız´ı pro kalibraci kamer. Vybereme sn´ımky kalibrovan´e kamery, kter´e chceme pouˇz´ıt a naˇceteme je do pamˇeti. Calibration images
Obr´azek 5.3: Nasn´ıman´ y kalibraˇcn´ı vzor.
Jakmile jsou vˇsechny sn´ımky k dispozici, provedeme ruˇcn´ı zad´an´ı referenˇcn´ıch bod˚ u, v pˇr´ıpadˇe ˇsachovnice“ zad´an´ı souˇradnic 4 obvodov´ ych roh˚ u pro vˇsechny naˇcten´e sn´ımky. ” Po zad´an´ı 4 obvodov´ ych roh˚ u extrahuje Camera Calibration Toolbox v kaˇzd´em sn´ımku vˇsechny rohy pol´ı ve sn´ımku unvitˇr obd´eln´ıku vymezen´eho obvodov´ ymi rohy. Z tˇechto dat Camera Calibration Toolbox provede kalibraci kamer - vypoˇctˇe vnitˇrn´ı a vnˇejˇs´ı parametry uˇzit´ım ˇreˇsen´ı uzavˇren´eho tvaru (anglicky closed-form solution), vypoˇcte koeficienty radi´aln´ı distorze ˇreˇsen´ım line´arn´ı regrese a veˇsker´e parametry zpˇresn´ı minimalizac´ı. Pot´e si m˚ uˇzeme zobrazit vnˇejˇs´ı parametry kamery a pˇrehledn´e vykreslen´ı jednotliv´ ych pozic kalibraˇcn´ıho vzoru v prostoru. K dispozici je tak´e graf s chybami. Podle tohoto grafu se m˚ uˇzeme rozhodnout, jestli vyˇrad´ıme nˇejak´ y sn´ımek, kter´ y zp˚ usobuje velkou chybu nebo jestli chceme znovu definovat obvodov´e rohy. T´ım m˚ uˇzeme chybu kalibrace sn´ıˇzit. Po dokonˇcen´ı kalibrace m˚ uˇzeme ze sn´ımk˚ u odstranit zkreslen´ı pˇr´ımo v toolboxu. V´ ysledky kalibrace pro levou a pravou kameru uloˇz´ıme do *.mat soubor˚ u, kter´e pozdˇeji pouˇzijeme pro v´ ypoˇcet rektifikaˇcn´ıch parametr˚ u. Parametry kamer jsou k dispozici v pˇr´ıloze na obr´azku obr. A.13.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
5.4.2
57
Rektifikace sn´ımk˚ u
Data z´ıskan´e kalibrac´ı dvojice kamer pouˇzijeme pro kalibraci a rektifikaci stereoskopick´ ych sn´ımk˚ u. V Camera Calibration Toolboxu zad´ame pˇr´ıkaz streo gui. Otevˇre se n´am opˇet intuitvn´ı menu, tentokr´at pro stereo kalibraci a rektifikaci. Vybereme vypoˇcten´e kalibraˇcn´ı soubory pro obˇe kamery a spust´ıme stereo kalibraci. Pot´e si m˚ uˇzeme zobrazit vnitˇrn´ı parametry kamer, zobrazit ve 3D prostoru vnˇejˇs´ı parametry obou kamer a pozice nasn´ıman´ ych kalibraˇcn´ıch vzor˚ u (viz. obr. 5.4) a uloˇzit vypoˇcten´e parametry do souboru. Data vygenerovan´e toolboxem jsou nyn´ı uloˇzeny v tˇechto datov´ ych pol´ıch obsahuj´ıc´ıch: • indexy pixelu v nov´em sn´ımku (ind new left a ind new right) • indexy pixel˚ u p˚ uvodn´ıho sn´ımku pro line´arn´ı interpolaci (ind 1 left - ind 4 left a ind 1 right - ind 4 right) • interpolaˇcn´ı koeficienty pro jednotliv´e indexy star´eho sn´ımku (a 1 left - a 4 left a a 1 right - a 4 right)
Extrinsic parameters
5 8 79
63 1 4
2
80 60 40 20 Left Camera 0 −20 Z
−40 −60
X
−80
600
Z 500
X Right Camera
Y
400 300
Y
−100
200
−50 0
100 50 0
Obr´azek 5.4: Zobrazen´ı vnˇejˇs´ıch parametr˚ u kamer v 3D prostoru a nasn´ıman´ ych kalibraˇcn´ıch vzor˚ u.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
58
Tyto data je nutn´e nahr´at do pamˇeti ADSP-BF561, abychom mohli sn´ımky rektifikovat. Soubory s indexy jsou datov´eho typu unsigned short (16 bit˚ u). V z´avislosti na poˇctu pouˇzit´ ych index˚ u je velikost souboru s indexy pixel˚ u v nov´em sn´ımku jedn´e kamery pˇribliˇznˇe 37 kB6 , souboru s indexy pixel˚ u p˚ uvodn´ıho sn´ımku jedn´e kamery pˇribliˇznˇe 148 kB7 . Interpolaˇcn´ı koeficienty index˚ u p˚ uvodn´ıho sn´ımku jsou uloˇzeny jako desetinn´a ˇc´ısla. Z d˚ uvodu u ´spory jak pamˇet’ov´eho m´ısta, tak zrychlen´ı algoritmu sn´ıˇzen´ım pˇr´ıstup˚ u do pamˇeti, byly provedeny n´asleduj´ıc´ı kroky. Interpolaˇcn´ı koeficienty8 byly z desetinn´ ych ˇc´ısel pˇrevedeny na kladnou celoˇc´ıselnou reprezentaci bez znam´enkov´eho bitu vlastn´ıho datov´eho typu fract8 (8 bit˚ u) pomoc´ı v´ yrazu (5.1). Jak jiˇz bylo ˇreˇceno, pro v´ ypoˇcet hodnoty intenzity nov´eho pixelu potˇrebujeme 4 interpolaˇcn´ı koeficienty k1x , k2x , k3x a k4x . Ty jsou uloˇzeny v t´eto posloupnosti: k11 , k21 , k31 , k41 , k12 , k22 , k32 , k42 , ... , k1n , k2n , k3n , k4n . Velikost souboru s interpolaˇcn´ımi koeficienty pro jednu kameru je tedy pˇriblˇznˇe 74 kB9 . N = round(256 ∗ x)
(5.1)
Datov´a struktura pol´ı index˚ u p˚ uvodn´ıho sn´ımku v Camera Calibration Toolboxu je uloˇzena tak, ˇze kaˇzd´emu interpolaˇcn´ımu koeficientu je pˇriˇrazen jeden index. Tato struktura je vˇsak redundantn´ı, jelikoˇz nov´ y pixel se interpoluje vˇzdy ze 4 nejbliˇzˇs´ıch soused˚ u. Pokud si tedy ych uloˇz´ıme pouze soubor ind 1 left pro levou kameru, ostatan´ı indexy uloˇzen´e v datov´ pol´ıch ind 2 left - ind 4 left lze spoˇc´ıtat podle rovnic (5.2), kde yWidth je v´ yˇska sn´ımku. ind 2 lef t = ind 1 lef t + yW idth ind 3 lef t = ind 1 lef t + 1
(5.2)
ind 4 lef t = ind 1 lef t + yW idth + 1 T´ımto zjednoduˇsen´ım jsme p˚ uvodn´ı velikosti souboru sn´ıˇzili ze 148 kB na 37 kB. Celkov´ y pamˇet’ov´ y prostor potˇrebn´ y pro rektifikaˇcn´ı soubory je pˇribliˇznˇe 148 kB pro kaˇzdou kameru, 296 kB celkem. Pˇri spuˇstˇen´ı syst´emu stereovidˇen´ı nejdˇr´ıve nahrajeme do syst´emu vˇsechny soubory potˇrebn´e pro rektifikaci obou kamer (prostˇrednictv´ım Hypertermin´alu komunikuj´ıc´ıho pˇres USB port PC s pˇrevodn´ıkem USB-UART na v´ yvojov´e desce). Poˇrad´ı v jak´em se soubory maj´ı nahr´at vypisuje obrazovka Hypertermin´alu. 6
V´ ypoˇcet pro 18706 index˚ u, uloˇzen´ ych jako data typu unsigned short. V´ ypoˇcet pro 4*18706 index˚ u, uloˇzen´ ych jako data typu unsigned short. 8 Koeficienty nab´ yvaj´ı hodnot h0, 1i a souˇcet tˇechto 4 koeficient˚ u je roven 1. 9 V´ ypoˇcet pro 4*18706 index˚ u, uloˇzen´ ych jako data typu fract8, resp. unsigned char.
7
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
5.5
59
Algoritmizace stereovidˇ en´ı
Z teoretick´eho u ´vodu v kapitole 2.1 jsme se dozvˇedˇeli o z´akladn´ı geometrii dvou kamer, jak je pˇrev´est do kanonick´eho uspoˇr´ad´an´ı a vypoˇc´ıtat vzd´alenost koresponduj´ıc´ıch si bod˚ u od kamerov´e z´akladny. V t´eto kapitole je pops´ana algoritmizace jednotliv´ ych u ´loh pro z´ısk´an´ı v´ ysledn´e disparitn´ı mapy z dvou stereoskopick´ ych sn´ımk˚ u.
5.5.1
Zpracov´ an´ı sn´ımk˚ u z kamer
Sn´ımky z kamer z´ıskame postupem popsan´ ym v kapitole 5.3. Pokud bˇehem dan´eho ˇcasov´eho intervalu nez´ısk´ame poˇzadovan´ y sn´ımek, objev´ı se chybov´a hl´aˇska na hypertermin´alov´e obrazovce. Pokud je pˇrenos obrazov´ ych dat z kamer do pamˇeti u ´spˇeˇsn´ y n´asleduje pˇrevod barevn´eho YUV form´atu na intenzitn´ı ˇcernob´ıl´ y“ obraz funkc´ı ” imageConvertYUV2GS (YUVbuffer, imBuffer, nXsize, nYsize);
a sn´ıˇzen´ı rozliˇsen´ı na poˇzadovan´ ych 160 x 120 pixel˚ u funkc´ı imageScalingDownBy2(imBuffer, imBufferSmall, nXsize, nYsize);
Parametry tˇechto funkc´ı jsou YUVbuffer, kter´ y se pˇrevede na intenzitn´ı obraz uloˇzen´ y v imBuffer a ten se pot´e zmenˇs´ı na potˇrebn´e rozliˇsen´ı do imBufferSmall. nXsize a nYsize jsou rozmˇery p˚ uvodn´ıho sn´ımku. YUV (spr´avn´e oznaˇcen´ı pro uˇzit´ı v digit´aln´ıch syst´emech je YCbCr) form´at dat byl zvolen z d˚ uvodu jeho jednoduch´e konverze na intenzitn´ı obraz. YCbCr je barevn´ y prostor reprezentovan´ y sloˇzkou jasu (luminescence) Y a komponentami Cb a Cr, jeˇz jsou modrou a ˇcervenou chromatickou komponentou. Pro z´ısk´an´ı intenzitn´ıho obrazu tedy staˇc´ı z pˇrijat´ ych dat uloˇzit pouze jasovou sloˇzku Y. Popis tohoto barevn´eho prostoru, grafick´e zn´azornˇen´ı sloˇzek a pˇrevod do barevn´eho prostoru RGB je uveden v literatuˇre [23]. Pokud je to potˇreba, sn´ımek je d´ale rektifikov´an pomoc´ı funkce imageRectification(original_image, rectified_image, new_index, old_index, coeficients, nIndexes);
Vstupem funkce je p˚ uvodn´ı sn´ımek original image a v´ ystupem rektifikovan´ y sn´ımek rectified image. Ostatn´ı parametry (viz. kapitola 5.4.2) jsou koeficienty line´arn´ı transformace, indexy p˚ uvodn´ıho a rektifikovan´eho obr´azku a jejich poˇcet. Z tˇechto upraven´ ych sn´ımk˚ u je moˇzn´e vypoˇc´ıtat disparitn´ı mapu.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
Obr´azek 5.5: Blokov´ y diagram algorotmizace stereovidˇen´ı.
60
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
5.5.2
61
Z´ısk´ an´ı disparitn´ı mapy
Sn´ımky jsou rektifikovan´e a zmenˇsen´e na poˇzadovanou velikost. Samotn´ y v´ ypoˇcet disparitn´ı mapy sest´av´a z cyklicky prov´adˇen´ ych krok˚ u: • posun lev´eho/prav´eho sn´ımku o jeden krok (pixel) vlevo/vpravo • vytvoˇren´ı differenˇcn´ı mapy odeˇcten´ım prav´eho posunut´eho sn´ımku od lev´eho/lev´eho posunut´eho sn´ımku od prav´eho • filtrace diferenˇcn´ı mapy pr˚ umˇerovac´ım filtrem • aktualizace disparitn´ı mapy v z´avislosti na novˇe vypoˇcten´ ych hodnot´ach filtrovan´e diferenˇcn´ı mapy Tyto kroky se prov´adˇej´ı dvakr´at - jednou se posuv´a prav´ y sn´ımek vpravo a odeˇc´ıt´a se s lev´ ym a podruh´e posouv´a lev´ y sn´ımek vlevo a odeˇc´ıt´a s prav´ ym. Tento zdvojen´ y v´ ypoˇcet (tzv. L-R a R-L10 disparitn´ı mapy) slouˇz´ı k vyˇrazen´ı tˇech hodnot disparit mezi L-R a R-L mapami, jejichˇz rozd´ıl je vˇetˇs´ı neˇz povolen´a tolerance a bereme je jako ˇspatn´e. Prvn´ım krokem cyklu v´ ypoˇctu disparitn´ı mapy sejmut´e sc´eny je posun sn´ımku. Tato operace je provedna bud’to funkc´ı imageShiftLeft(...) nebo funkce imageShiftRight(...), kde vstupem je lev´ y/prav´ y sn´ımek left image/right image. Rozmˇery dan´eho sn´ımku jsou inImgXSize x inImgYSize a v´ ystupem je obr´azek shifted image posunut´ y o poˇcet pixel˚ u hodnoty promˇenn´e uloˇzen´e v shift. imageShiftRight(right_image,shifted_image,inImgXSize,inImgYSize,shift); imageShiftLeft(left_image,shifted_image,inImgXSize,inImgYSize,shift);
Diferenˇcn´ı mapa diff map je z´ısk´ana funkc´ı imageDiff(...), jej´ıˇz prvn´ımi dvˇema parametry jsou lev´ y (prav´ y) posunut´ y obr´azek a prav´ y (lev´ y) p˚ uvodn´ı rektifikovan´ y sn´ımek. imageDiff(shifted_image,image,diff_map,inImgXSize,inImgYSize);
Diferenˇcn´ı mapa je pot´e filtrov´ana funkc´ı imageSmoothing(...) pr˚ umˇerovac´ıho filtru dan´eho j´adrem o velikosti n = 2∗AV G F ILT ER SIZE+1. Filtrace je cyklicky prov´adˇena jako 2D konvoluce (5.3), kde h je konvoluˇcn´ı j´adro (5.4) rozmˇeru n x n a f jsou vstupn´ı data. Jinak ˇreˇceno, pr˚ umˇerovac´ı filtr provede souˇcet vstupn´ıch hodnot a pot´e je vydˇel´ı jejich poˇctem (n2 ). g(x, y) =
n−1 n−1 X X k=0
10
Left to Right, Right to Left
l=0
((h(x − k, y − l)f (k, l)
(5.3)
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
1 ... 1 .. . . h= 2 . . n 1 ...
1 .. . 1
62
(5.4)
imageSmoothing(diff_map_filtered,diff_map,AVG_FILTER_SIZE,inImgXSize,inImgYSize);
Aktualizaci L-R nebo R-L disparitn´ı mapy provedeme porovn´an´ım hodnot aktu´alnˇe vypoˇc´ıtan´e diferenˇcn´ı mapy a diferenˇcn´ı mapy z pˇredchoz´ıho kroku. K tomu slouˇz´ı funkce updateDisparityMap(). diff map filtered je aktu´aln´ı a diff map tmp pˇredchoz´ı diferenˇcn´ı mapa. updateDisparityMap(diff_map_tmp,diff_map_filtered,disparity,inImgXSize,inImgYSize,shift);
Pro ty hodnoty, kter´e budou menˇs´ı nebo rovny neˇz hodnoty diferenˇcn´ı mapy z pˇredchoz´ıho kroku, aktualizujeme souˇradnicovˇe odpov´ıdaj´ıc´ı hodnotu disparitn´ı mapy na hodnotu aktu´aln´ıho posunu shift. Nejvyˇsˇs´ı moˇzn´a hodnota disparity ve zpracovan´e disparitn´ı mapˇe je dan´a konstantou MAX DISP, kterou si zvol´ıme podle poˇzadovan´eho rozsahu mˇeˇren´ ych vzd´alenost´ı (napˇr. pro M AX DISP = 15 je interval mˇeˇren´ ych vzd´alenost´ı h34, 4; ∞) cm, pro parametry uveden´e v kapitole 5.6. Zde uveden´ y programov´ y cyklus prov´ad´ı v´ ypoˇcet L-R disparitn´ı mapy (R-L v´ ypoˇcet je analogick´ y). Oproti zdrojov´emu k´odu obsahuje jenom funkce d˚ uleˇzit´e pro pochopen´ı principu. Procedura rektifikace prav´eho, lev´eho sn´ımku a v´ ypoˇcet L-R, R-L disparitn´ı mapy je jednoduˇse dekomponovateln´ y na dvˇe ˇc´asti, z nichˇz kaˇzd´a m˚ uˇze bˇeˇzet na jednom j´adˇre. // L-R disparity map for (p = 0; p<MAX_DISP; p++) { imageShiftRight(right_image,shifted_image,inImgXSize,inImgYSize,shift); imageDiff(shifted_image,image,diff_map,inImgXSize,inImgYSize); imageSmoothing(diff_map_filtered,diff_map,AVG_FILTER_SIZE,inImgXSize,inImgYSize); updateDisparityMap(diff_map_tmp,diff_map_filtered,disparity,inImgXSize,inImgYSize,shift); }
Na obr´azku obr. 5.6 jsou v horn´ı ˇcasti je vyobrazeny v´ ysledky funkce imageDiff(...) pro posun shif t = [0, 3, 6, 9, 14] pixel˚ u, uprostˇred v´ ysledky pr˚ umˇerovac´ıho filtru a ve spodn´ı ˇc´asti aktualizovan´a disparitn´ı mapa pro jednotliv´e posuny. Horn´ı dva ˇr´adky obr´azk˚ u
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
63
odpov´ıdaj´ı rozsahu 0 - tmavˇe modr´a aˇz 255 - tmavˇe ˇcerven´a. Aktualizace disparitn´ıch map je v rozsahu 0 - tmavˇe modr´a aˇz 15 - tmavˇe ˇcerven´a. Shift = 0
Shift = 3
Shift = 6
Shift = 9
Shift = 14
Obr´azek 5.6: Grafick´e zobrazen´ı krok˚ u v´ ypoˇctu disparitn´ı mapy.
Jakmile z´ısk´ame L-R i R-L disparitn´ı mapu, pouˇzijeme funkci findBestCandidates(...), kter´a mezi tˇemito mapami vyhled´a kandid´aty spr´avn´e“ diparity. Spr´avn´ı kandid´ati vy” hovuj´ı podm´ınce (5.5). Abychom jeˇstˇe v´ıce potlaˇcili chyby zp˚ usoben´e nespr´avnˇe nalezen´ ymi korespondencemi, filtrujeme mapu spr´avn´ ych“ kandid´at˚ u medi´anov´ ym filtrem. ” Parametr diparity map, pouˇzit´ y ve funkci median(...), obsahuje data v´ ysledn´e disparitn´ı mapy. |dispmapL−R − dispmapL−R | < T OLERAN CE
(5.5)
Vliv rozmˇeru konvoluˇcn´ıho j´adra (n x n) pr˚ umˇerovac´ıho filtru na v´ yslednou disparitn´ı ˇ ım je jeho rozmˇer vˇetˇs´ı, t´ım v´ıce se mapu (obr. 5.7) je vidˇet na obr´azku obr. 5.8. C´ st´avaj´ı plochy disparitn´ı mapy spojit´e. Nev´ yhoda spoˇc´ıv´a v rozmaz´av´an´ı zpracovan´ ych dat ( hranic objekt˚ u“) a nemoˇznosti rozliˇsit mal´e pˇredmˇety. Pro u ´lohu detekce pˇrek´aˇzek ” to vˇsak nem´a z´asadn´ı v´ yznam. V ostatn´ıch dispartin´ıch map´ach bylo pouˇzito konvoluˇcn´ı j´adro 5 x 5.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
64 6
20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
120
50
100
150
50
100
150
120
4 2 0 50
100
150
Obr´azek 5.7: Disparitn´ı mapa pro zn´ am´ y dataset tsukuba“. ”
8 20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
50
100
150
120
50
100
150
120
6 4 2 50
100
150
0
Obr´azek 5.8: Vliv konvoluˇcn´ıho j´adra pr˚ umˇerovac´ıho filtru na v´ yslednou disparitn´ı mapu. Vlevo je disparitn´ı mapa pro rozmˇer konvoluˇcn´ıho j´adra 3 x 3, uprostˇred 5 x 5 a vpravo 7 x 7.
findBestCandidates(disparityL_R,disparityR_L,disparity,inImgXSize,inImgYSize,TOLERANCE); _median(disparity,inImgXSize,inImgYSize,disparity_map);
V pˇr´ıloze A jsou uvedeny v´ ysledky vypoˇcten´ ych disparitn´ıch map r˚ uzn´ ych sc´en zde popsan´ ym algoritmem. U obr´azku obr. A.8 nebo obr. A.1 je dobˇre vidˇet probl´em vzniku faleˇsn´ ych korespondenc´ı. Ty mohou vznikat napˇr. v d˚ usledku r˚ uzn´ ych radiometrick´ ych vlastnost´ı dvou sn´ımk˚ u. Na obr´azku obr. A.9 jsou dva umˇele vytvoˇren´e ˇcern´e sn´ımky. Z tˇechto sn´ımk˚ u je patrn´e, ˇze nem˚ uˇze b´ yt nalezena ˇza´dn´a korespondence, ale d´ıky filtraci nevznikaj´ı ani faleˇsn´e korespondence. M´alo texturovan´ y je tak´e obr´azek obr. A.7. Aˇckoliv lidsk´ ym okem rozezn´ame objekty a jejich pˇribliˇznou vzd´alenost, pouˇzit´ y algoritmus m´a s tˇemito sn´ımky probl´emy. Na obr´azku obr. A.6 m˚ uˇzeme dobˇre pozorovat vliv probl´emu okluze, kdy dˇrevˇen´a pˇrep´aˇzka uprostˇred sn´ımku tvoˇr´ı“ uzavˇren´ y povrch pro pravou ” kameru a neuzavˇren´ y povrch pro kameru levou. Lev´ y pruh nulov´ ych disparitn´ıch hodnot smˇerem od dˇrevˇen´e pˇrep´aˇzky je tvoˇren pr´avˇe okluz´ı.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
5.6
65
V´ ypoˇ cet hloubkov´ e mapy
V kapitole 2 byly pops´any pojmy disparitn´ı mapa a hloubkov´a mapa. Disparitn´ı mapu, vyjadˇruj´ıc´ı pixelovou vzd´alenost dvou koresponduj´ıc´ıch si bod˚ u v lev´em a prav´em sn´ımku, kterou jsme z´ıskali algoritmy popsan´ ymi v pˇredchoz´ım textu, chceme pˇrepoˇc´ıtat na mapu hloubkovou. Hloubkovou mapu, vyjadˇruj´ıc´ı vzd´alenosti, vypoˇcteme podle vztahu (5.6). D=
bf ddisparity psize
,
(5.6)
kde D je vzd´alenost bodu v prostoru, b z´akladna (vzd´alenost optick´ ych stˇred˚ u kamer), f ohniskov´a vzd´alenost, psize ˇs´ıˇrka jednoho pixelu kamerov´eho senzoru a ddisparity je jedna hodnota z disparitn´ı mapy. Na obr´azku je zobrazena disparitn´ı mapa (vpravo nahoˇre) a z n´ı vypoˇc´ıtan´a hloubkov´a mapa v odliˇsn´e barevn´e paletˇe (vpravo dole). Jednotky hloubkov´e mapy jsou uvedeny v cm.
Rektifikovany levy obrazek
Disparitni mapa
20
20
40
40
60
60
80
80
100
100
120
50
100
150
120
Rektifikovany pravy obrazek
10 5
50
100
150
0
Hloubkova mapa 500
20
20
40
40
60
60
300
80
80
200
100
100
100
120
50
100
150
120
400
50
100
150
Obr´azek 5.9: V lev´e ˇc´asti jsou rektifikovan´e stereoskopick´e sn´ımky a vpravo je v´ ysledn´a disparitn´ı a hloubkov´a mapa (hodnoty jsou uvedeny v cm).
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
66
Rozmˇery v´ yvojov´eho kitu jsou jsou relativnˇe mal´e a tud´ıˇz i vzd´alenost optick´ ych stˇred˚ u kamer (z´akladna b) je tomu usp˚ usobena a ˇcin´ı 3 cm. Na obr´azku obr. 5.11 vid´ıme graf zn´azorˇ nuj´ıc´ı z´avislost vzd´alenosti bodu v prostoru na hodnotˇe disparity a velikosti z´akladny b. Z tohoto grafu je zˇrejm´e, ˇze pro velikost z´akladny 3cm a parametry kamer uveden´e v kapitole 4.4 odpov´ıd´a disparitˇe ddisparity = 1 vzd´alenost bodu v prostoru 5 m. Z´avislost vzd´alenosti na disparitˇe je hyperbolick´a a vzd´alenost 5 m (pro b = 3cm) je mezn´ı hodnotou. Z´aroveˇ n disparita ddisparity = 1 je hodnota, kter´a zp˚ usobuje velkou chybu. Modely (vzducholod’, vzn´aˇsedlo, ...) potˇrebuj´ı pro svoji orientaci v prostoru sp´ıˇse vˇetˇs´ı rozsah vzd´alenost´ı (do 10 m) a proto by l´epe vyhovovala z´akladna b o velikost pˇribliˇznˇe 10 aˇz 20 cm. Tato velikost z´akladny by, pˇri hodnotˇe disparity ddisparity = 1, dovolovala mˇeˇrit vzd´alenosti aˇz do 17,2 m (pro b = 10cm) nebo 34,4 m (pro b = 20cm). Pˇredevˇs´ım by se vˇsak zjemnil krok mˇeˇren´ ych vzd´alenost´ı v rozsahu do 10 m. Bohuˇzel, v´ yvojov´ y kit nem´a moˇznost mˇenit ˇs´ıˇrku z´akladny b.
0
20
40
60
80
100
120
140
160 0
20
40
60
80
100
120 0
100
200
300
Obr´azek 5.10: Hloubkov´a
mapa
odpov´ıdaj´ıc´ı pˇredchoz´ımu
vykreslen´ a ve 3D prostoru.
obr´ azku,
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
67
35 b = 20 cm b = 10 cm b = 5 cm b = 3 cm
Vzdalenost v prostoru [m]
30
25
20
15
10
5
0
1
2
3
4
5
6
7 8 9 Disparita [pixel]
10
11
12
13
14
15
Obr´azek 5.11: Z´avislost vzd´ alenosti bodu v prostoru na disparitˇe pro r˚ uzn´e hodnoty z´akladny b.
5.7
Optimalizace algoritmu stereovidˇ en´ı a v´ ysledky
Z hlediska rychlosti zpracov´an´ı jsou v tomto algoritmu kl´ıˇcov´e funkce, jenˇz prob´ıhaj´ı v cyklu aktualizace disparitn´ı mapy: • posun sn´ımku (imageShiftLeft() nebo imageShiftRight()) • rozd´ıl sn´ımk˚ u (imageDiff()) • filtrace diferenˇcn´ı mapy pr˚ umˇerovac´ım filtrem (imageSmoothing()) • aktualizace disparitn´ı mapy (updateDisparityMap()) U filtrace diferenˇcn´ı mapy je moˇzn´e prov´est zrychlen´ı s vyuˇzit´ım vypoˇc´ıtan´ ych dat v pˇredeˇsl´ ych kroc´ıch. Nejprve vypoˇcteme sumu n ˇr´adkov´ ych hodnot p(y, x) pˇr´ısluˇsn´eho sloupce. Hodnoty odpov´ıdaj´ıc´ı jednotliv´ ym sloupc˚ um v´ yˇsky n si uloˇz´ıme do pomocn´eho 1D pole o stejn´e velikosti jako ˇs´ıˇrka datov´eho pole. Z pomocn´eho pole seˇcteme n prvn´ıch hodnot a vydˇel´ıme poˇctem prvk˚ u pr˚ umˇerovac´ıho filtru n2 . Z´ısk´ame prvn´ı hodnotu nValue
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
68
filtrovan´ ych dat (viz. ˇcerven´ y r´ameˇcek na obr´azku obr. 5.12). Aˇz do tohoto kroku je v´ ypoˇcet stejn´ y jako pˇri pouˇzit´ı p˚ uvodn´ıho algoritmu pr˚ umˇerovac´ıho filtru (resp. toto plat´ı pro vˇsechny hodnoty prvn´ıho sloupce vypoˇc´ıtan´e pr˚ umˇerovac´ım filtrem). Ostatn´ı hodnoty v prvn´ım ˇr´adku z´ısk´ame t´ımto cyklem: for (j = 0; j<xWidth - n; j++) { nValue += (row[j + n] - row[j]); *memIndexSmooth++ = (unsigned char)((nValue / avgCoef) & 0xff); }
Od pˇredchoz´ıho celkov´eho souˇctu (nV alue) je odeˇctena hodnota jeho prvn´ıho sloupce a z´aroveˇ n se pˇriˇcte hodnota sloupce n´asleduj´ıc´ıho (napˇr. nV alue - s11 + s16 pro n = 5, viz. zelen´ y r´ameˇcek na obr´azku obr. 5.12). Vydˇelen´ım v´ ysledku poˇctem pr˚ umˇerovan´ ych hodnot avgCoef = n2 z´ısk´ame ostatn´ı ˇr´adkov´e hodnoty pr˚ umˇerovac´ıho filtru. Podobn´a u ´vaha byla provedena i pro aktualizaci sloupc˚ u pomocn´eho pole. Aktualizace se provede v tomto cyklu: for (k = 0; k<xWidth; k++) { row[k] += *(memIndexOrig + (i + n)*xWidth + k) - *(memIndexOrig + i*xWidth + k); }
Promˇenn´a i vyjadˇruje aktu´aln´ı ˇr´adek. Od pˇredchoz´ı hodnoty sloupce se odeˇcte hodnota prvn´ıho sloupcov´eho prvku a pˇriˇcte se hodnota n´asleduj´ıc´ıho sloupcov´eho prvku (napˇr. s21 = s11 − p11 + p61 pro n = 5, viz. obr. 5.12). Opakov´an´ım uveden´ ych cykl˚ u z´ısk´ame kompletn´ı filtrovan´e datov´e pole pr˚ umˇerovac´ım filtrem.
Obr´azek 5.12: Princip zrychlen´eho v´ ypoˇctu hodnot pr˚ umˇerovac´ıho filtru.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN
69
Funkce posunu sn´ımk˚ u, v´ ypoˇctu diferenˇcn´ı mapy, aktualizace disparitn´ı mapy, rektifikace sn´ımk˚ u, ap. byly optimalizov´any pˇredevˇs´ım s vyuˇzit´ım rychl´ ych vnitˇrn´ıch pamˇet´ı procesoru a vlastnost´ı pˇrekladaˇce. V´ yrazn´eho urychlen´ı zpracov´an´ı stereoskopick´ ych sn´ımk˚ u dos´ahneme vyuˇzit´ım rychl´e vnitˇrn´ı pamˇeti L1. Tato pamˇet’ pracuje na stejn´e frekvenci jako j´adra procesoru. Rozliˇsen´ı sn´ımk˚ u sc´eny bylo zvoleno na 160 x 120 pixel˚ u (pro 8-bitov´e obrazov´e data v tomto rozliˇsen´ı potˇrebujeme 19,2 kB pamˇeti). L1 pamˇet’ jednoho j´adra n´am svoj´ı velikost´ı 64 kB rozdˇelenou do 2 bank (A a B) dovoluje vytvoˇrit dva obrazov´e“ buffery. Pro paraleln´ı ” zpracov´an´ı disparitn´ı mapy m´a druh´e j´adro stejnˇe velkou a stejnˇe koncipovanou L1 pamˇet’, takˇze zpracov´an´ı prob´ıh´a stejnou rychlost´ı a nez´avisle. V tabulce tabulka 5.1 a tabulka 5.2 je uveden pˇrehled nˇekter´ ych testovan´ ych funkc´ı, pro kter´e byly pouˇzit´a data uloˇzeny v pamˇeti L1, L2 nebo L311 . Algoritmus stereovidˇen´ı byl nejdˇr´ıve testov´an na jednom j´adru bez optimalizace k´odu pˇrekladaˇcem, s neoptimalizovan´ ymi funkcemi v´ ypoˇctu disparitn´ı mapy a vyuˇz´ıval pamˇet’ typu L3. Doba zpracov´an´ı byla pˇribliˇznˇe 1,25 s pro jednu kompletn´ı disparitn´ı mapu. Optimalizovan´ y algoritmus dosahuje na obou j´adrech rychlosti zpracov´an´ı necel´ ych 10 sn´ımk˚ u za vteˇrinu. Doba zpracov´an´ı jedn´e kompletn´ı disparitn´ı mapy je 109,3 ms. Optimalizac´ı bylo dosaˇzeno v´ıce neˇz 10-ti n´asobn´eho zrychlen´ı. Pamˇ et’
vylepˇsen´a imageSmoothing()
imageSmoothing()
conv2d5x5 gen()
Bez optimalizace k´odu pomoc´ı pˇrekladaˇce L1
4,255 ms
12,86 ms
0,954 ms
L2
7,259 ms
19,125 ms
7,856 ms
Optimalizace k´odu pomoc´ı pˇrekladaˇce L1
0,513 ms
1,627 ms
0,954 ms
L2
1,037 ms
7,859 ms
0,954 ms
Tabulka 5.1: Pˇrehled rychlost´ı funkc´ı pro pr˚ umˇerovac´ı filtr (data 160 x 120 pixel˚ u). 11
Nastaven´ı DSP procesoru: frekvence CPU 500 MHz, frekvence extern´ı pamˇet’i 125 MHz. Pr˚ umˇerovac´ı
filtr: n = 5. M AX DISP = 15.
ˇ ´I KAPITOLA 5. ALGORITMIZACE METODY STEREOVIDEN Pamˇ et’i
imageShiftLeft()
imageDiff()
70
updateDisparityMap()
Bez optimalizace k´odu pomoc´ı pˇrekladaˇce L1 a L2
0,935 ms
2,124 ms
2,69 ms
Optimalizace k´odu pomoc´ı pˇrekladaˇce L1 a L2
0,020 ms
1,686 ms
0,694 ms
L1 a L3
0,036 ms
1,786 ms
1,619 ms
Tabulka 5.2: Pˇrehled rychlost´ı dalˇs´ıch pouˇzit´ ych funkc´ı v cyklu z´ısk´ an´ı disparitn´ı mapy (data 160 x 120 pixel˚ u).
Funkce 2D konvoluce conv2d() nebo speci´aln´ı pˇr´ıpad konvoluce s j´adrem velikosti 5 x 5 conv2d5x5 gen() je k dispozici v knihovnˇe Visual DSP++ 5.0. Tyto funkce jsou optimalizov´any pro dan´ y procesor v jazyku assembler, ale vstupn´ı a v´ ystupn´ı data jsou ve form´atu fract16 (pˇr´ıpadnˇe fract32 ). Form´at fract16 je zn´azorˇ nen na obr´azku obr. 5.13. Nev´ yhoda tohoto form´atu dat je pro navrˇzen´ y algoritmus stereovidˇen´ı v tom, ˇze jsou 16-bitov´a a koncipovan´a jako desetinn´e ˇc´ıslo v intervalu h−1; 1), ve tvaru 1.15“ (MSB je znam´enkov´ y ” bit a ostatn´ı bity jsou v´ahov´e). Obr´azek se tedy mus´ı nejdˇr´ıve do toho form´atu konvertovat a vyˇzaduje 2-kr´at v´ıce pamˇeti (pro rozliˇsen´ı 160 x 120 jiˇz nelze vytvoˇrit takto velk´e buffery v L1 pamˇeti). Funkce conv2d5x5 gen(), optimalizov´ana pro obecnou 2D konvoluci, je v koneˇcn´em d˚ usledku pomalejˇs´ı, neˇz vylepˇsen´a imageSmoothing(). Z tˇechto d˚ uvod˚ u nen´ı v ˇreˇsen´ı pouˇzita.
Obr´azek 5.13: Struktura form´ atu dat typu fract16.
Jeˇstˇe vyˇsˇs´ı optimalizace k´odu C je moˇzn´e dos´ahnout moˇznostmi pˇrekladaˇce. Ten ve vlastnostech pˇrekl´adan´eho projektu umoˇzn ˇuje mˇenit pomˇer mezi velikost´ı zkompilovan´eho souboru a optimalizac´ı rychlosti. Pro algoritmus stereovidˇen´ı byla zvolena optimalizace rychlosti.
Kapitola 6 Z´ avˇ er Vu ´vodu t´eto diplomov´e pr´ace byly pops´any vybran´e metody mˇeˇren´ı hloubkov´e mapy pro orientaci v prostoru, resp. detekci pˇrek´aˇzek, se zamˇeˇren´ım na metodu stereovidˇen´ı a PMD kamery. Jako vhodn´a byla pro modely mobiln´ıch zaˇr´ızen´ı zvolena metoda stereovidˇen´ı. Princip spoˇc´ıv´a v z´ısk´an´ı dvou stereoskopick´ ych sn´ımk˚ u se zn´am´ ymi parametry, z nichˇz lze vhodn´ ym postupem z´ıskat disparitn´ı a hloubkovou mapu. Modely mobiln´ıch zaˇr´ızen´ı jsou z´avisl´e na spotˇrebˇe elektrick´e energie a hmotnosti palubn´ı elektroniky, kterou nesou. Z´aroveˇ n je nutn´e br´at ohled na dostateˇcnou rychlost zpracov´an´ı dan´e metody, aby modely mˇely moˇznost vˇcas reagovat na podm´ınky v okoln´ım prostoru. Tyto poˇzadavky byly br´any v u ´vahu pˇri v´ ybˇeru HW ˇc´asti. Pro ˇreˇsen´ı u ´lohy stereovidˇen´ı a jej´ı algoritmizaci byl vybr´an sign´alov´ y dvouj´adrov´ y procesor s pevnou ˇr´adovou ˇc´arkou a n´ızkou spotˇrebou ADSP-BF561 od firmy Analog Devices. ADSP-BF561 obsahuje dvˇe identick´a j´adra, kaˇzd´e pracuje aˇz na frekvenci 600 MHz a disponuje 100 kB vnitˇrn´ı L1 pamˇeti pro rychl´e zpracov´an´ı dat. D´ale obsahuje 128 kB L2 pamˇeti sd´ılen´e obˇema j´adry a periferie dovoluj´ıc´ı komunikovat s okoln´ım svˇetem (rozhran´ı UART, SPI) a CMOS kamerami (dvˇe paraleln´ı sbˇernice PPI a GPIO). K tomuto sign´alov´emu procesoru byl d´ale vybr´an vhodn´ y v´ yvojov´ y kit od firmy Bluetechnix, skl´adaj´ıc´ı se z v´ yvojov´e desky DEV-BF5xxDA-Lite, procesorov´e jednotky CM-BF561 s procesorem ADSP-BF561 a rozˇsiˇruj´ıc´ıho kamerov´eho modulu EXT-BF5xx-CAM. Tento modul byl nav´ıc doplnˇen 2 kamerami OV2640FSL. Prvotn´ı ˇreˇsen´ı jednoduch´ ych algoritm˚ u zaloˇzen´ ych na rozd´ılu stereoskopick´ ych sn´ımk˚ u, filtraci takto vznikl´e diferenˇcn´ı mapy a kontroly konzistence L-R a R-L disparitn´ıch map bylo u ´spˇeˇsnˇe provedeno a ovˇeˇreno v prostˇred´ı Matlab 7.1. Stejnˇe tak v´ ypoˇcet kalibraˇcn´ıch koeficient˚ u jednotliv´ ych kamer a rektifikaˇcn´ıch koeficient˚ u stereoskopick´ ych sn´ımk˚ u byl proveden v prostˇred´ı Matalab pomoc´ı Camera Calibration Toolboxu. V´ ysledn´e ˇreˇsen´ı 71
´ ER ˇ KAPITOLA 6. ZAV
72
stereovidˇen´ı bylo pro ADSP-BF561 k´odov´ano ve v´ yvojov´em prostˇred´ı Visual DSP++ 5.0. Byly zvl´adnuty kroky z´ısk´an´ı obraz˚ u z obou pouˇzit´ ych kamer, jejich pˇrevod z YUV form´atu na intenzitn´ı obraz, rektifikace pro n´asledn´e optimalizovan´e hled´an´ı korespondenc´ı mezi sn´ımky a v´ ypoˇcet disparitn´ı mapy. Optimalizac´ı pouˇzit´ ych funkc´ı, vyuˇzit´ım rychl´ ych L1 (L2) pamˇet´ı procesoru ADSP-BF561 a optimalizaˇcn´ıch metod nab´ızen´ ych pˇrekladaˇcem v´ yvojov´eho prostˇred´ı Visual DSP++ 5.0, bylo dosaˇzeno rychlosti 6 sn´ımk˚ u za vteˇrinu (6 fps) pro jednoj´adrovou aplikaci a necel´ ych 10 fps pro dvouj´adrovou aplikaci v rozliˇseni 160 x 120 pixel˚ u a pro maxim´aln´ı hodnotu prohled´avan´e disparity 15 pixel˚ u. V´ ysledky v´ ypoˇct˚ u disparitn´ıch map pouˇzit´eho algoritmu jsou z´avisl´e na mnoˇzstv´ı textury ve sc´enˇe a v tomto ohledu nejsou pˇr´ıliˇs robustn´ı, pˇri mal´em mnoˇzstv´ı textury nemusej´ı odpov´ıdat realitˇe (viz. obr´azky v pˇr´ıloze A). Vylepˇsen´ı robustnosti by mohlo b´ yt provedeno vyuˇzit´ım varianˇcn´ı mapy intenzitn´ıho obr´azku a variaˇcn´ı mapy v´ ysledn´e disparitn´ı mapy pro odstranˇen´ı ˇspatn´ ych hodnot disparit m´alo kontrastn´ıch ploch. Dalˇs´ım ˇreˇsen´ım by jistˇe bylo i uˇzit´ı sofistikovanˇejˇs´ıch algoritm˚ u stereovidˇen´ı, kter´e by vˇsak potˇrebovaly v´ıce v´ ypoˇcetn´ıho v´ ykonu/ˇcasu. Moˇznost´ı je tak´e prom´ıt´an´ı aktivn´ı ” textury“ do sc´eny, z ˇcehoˇz vˇsak vypl´ yv´a vyˇsˇs´ı spotˇreba.
Literatura ´c ˇ, V.,Sedla ´c ˇek, M. (2003). Zpracov´ [1] Hlava an´ı sign´ al˚ u a obraz˚ u (2. pˇrepracovan´e ˇ vyd´an´ı). Vydavatelstv´ı CVUT 2003 ´c ˇ, V.,Boyle, R. (1999). Image Processing, Analysis, and Ma[2] Sonka, M.,Hlava chine Vision, 2nd edition. Thomson Learning, Toronto, April 2007, 821 p, ISBN 049508252X (2nd edition Brooks/Cole, Pacific Grove, CA, 1999, 1st edition Chapman & Hall, London 1993, ). ˇ [3] Ton, O. (2006). Orientace v prostˇred´ı. Bakal´aˇrsk´a pr´ace, Praha: CVUT, Katedra ˇrid´ıc´ı techniky. ˇ ´ stra ´ nky katedry r ˇ´ıdic´ı techniky CVUT-FEL [4] Webove Praha (2008). Prezentace projekt˚ u a t´emat DP, BP, PMI hhttp://dce.felk.cvut.cz/prezentace/i ´ stra ´ nky vy ´ robc˚ [5] Webove u PMD kamer -
hhttp://www.pmdtec.comi,
hhttp://www.swissranger.chi, hhttp://www.canesta.comi [6] Hw.cz (2007). PMD senzor a 3D mˇeˇren´ı vzd´alenosti - 1. a 2. ˇc´ast. hhttp://www.hw.cz/externi/1642/i [7] Wikipedia.org (2008). Programmable logic device. Category: Gate arrays hhttp://en.wikipedia.org/wiki/Programmable logic devicei [8] BTDI - www.dspdesignline.com (2007). A Survey of Mainstream DSP Processors hhttp://www.dspdesignline.com/howto/198800216i ´ stra ´ nky BDTI (2007). BDTI DSP Kernel BenchmarksTM Results [9] Webove hhttp://www.bdti.com/bdtimark/BDTImark2000.htmi [10] Jean-Yves
Bouguet
(2008).
Camera
Calibration
hhttp://www.vision.caltech.edu/bouguetj/calib doc/i 73
Toolbox
for
Matlab.
74
LITERATURA [11] Shawn
Lankton
(2008).
3D
Stereo
Disparity.
hhttp://www.mathworks.de/matlabcentral/fileexchange/19406i [12] Analog Device (2007). Blackfin Embedded Symmetric Multiprocessor ADSPBF561 - Rev. C hhttp://www.analog.comi R Processor Hardware Reference [13] Analog Device (2007). ADSP-BF561 Blackfin
Revision 1.1 hhttp://www.anlog.comi [14] Analog Device (2008). VisualDSP++ 5.0 Device Drivers and System Services Manual for Blackfin Processors - Revision 3.2 hhttp://www.analog.comi [15] Analog Device (2008). VisualDSP++ 5.0 C/C++ Compiler and Library Manual for Blackfin Processors - Revision 5.1 hhttp://www.analog.comi [16] Analog Device (2008). Blackfin Processor Programming Reference - Revision 1.3 hhttp://www.analog.comi [17] Analog Device (2007). VisualDSP++ 5.0 Users Guide - Revision 3.0 hhttp://www.analog.comi [18] Analog Device (2008). VisualDSP++ 5.0 Linker and Utilities Manual - Revision 3.1 hhttp://www.analog.comi ´ [19] Webove
´ nky stra
firmy
Bluetechnix
(2008).
Blackfin family tools
hhttp://www.bluetechnix.comi ´ stra ´ nky Texas Intsrument, Inc. (2007/2008). DSP Design Support [20] Webove hhttp://www.ti.comi ´ stra ´ nky Analog Devices, Inc. (2008). Embedded processing and DSP [21] Webove hhttp://www.analog.com/embedded-processing-dsp/processors/en/index.htmli ¨ ller and D. Scharstein. (2007). Evaluation of cost func[22] H. Hirschmu tions for stereo matching.. In IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR 2007), Minneapolis, MN, June 2007. hhttp://vision.middlebury.edu/stereo/data/i [23] Wikipedia.org
(2008).
YCbCr .
hhttp://cs.wikipedia.org/wiki/YCbCri
Kategorie:
Barevn´e
prostory
Pˇ r´ıloha A Pˇ r´ılohy Na zaˇc´atku t´eto pˇr´ılohy jsou zobrazeny v´ ysledky disparitn´ıch map pouˇzit´eho algoritmu stereovidˇen´ı. Barevn´e sn´ımky jsou pouˇzity z knihovny rektifikovan´ ych obr´azk˚ u [22]. ˇ Cernob´ ıl´e“ sn´ımky jsou re´aln´e sc´eny poˇr´ızen´e kamerami v´ yvojov´eho kitu. ” 20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
50
100
150
120
50
100
150
120
10 5
50
100
150
0
Obr´azek A.1: Disparitn´ı mapa pro dataset Midd1“. ”
20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
120
50
100
150
50
100
150
120
10 5
50
100
Obr´azek A.2: Disparitn´ı mapa sc´eny ˇc. 1 poˇr´ızen´e z kamer.
I
150
0
ˇ ´ILOHA A. PR ˇ ´ILOHY PR
II
20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
120
50
100
150
50
100
150
120
10 5
50
100
150
0
Obr´azek A.3: Disparitn´ı mapa sc´eny ˇc. 2 poˇr´ızen´e z kamer.
20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
120
50
100
150
50
100
150
120
10 5
50
100
150
0
Obr´azek A.4: Disparitn´ı mapa sc´eny ˇc. 3 poˇr´ızen´e z kamer.
20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
120
50
100
150
50
100
150
120
10 5
50
100
150
0
Obr´azek A.5: Disparitn´ı mapa sc´eny pracovn´ıho stolu s notebookem.
20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
120
50
100
150
50
100
150
120
20 10
50
Obr´azek A.6: Disparitn´ı mapa pro dataset Wood1“. ”
100
150
0
ˇ ´ILOHA A. PR ˇ ´ILOHY PR
III
20 20
20
20
40
40
40
15
60
60
60
10
80
80
80
100
100
100
120
50
100
150
120
50
100
150
120
5 0 50
100
150
Obr´azek A.7: Disparitn´ı mapa pro dataset Plastic“. ”
20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
120
50
100
150
50
100
150
120
10 5
50
100
150
0
Obr´azek A.8: Disparitn´ı mapa pro sc´enu b´ıl´e“ zdi. ”
1 20
20
20
40
40
40
60
60
60
80
80
80
100
100
100
120
50
100
150
120
50
100
150
120
0.5 0 −0.5 50
100
Obr´azek A.9: Disparitn´ı mapa pro umˇele vytvoˇren´e ˇcern´e obr´ azky.
150
−1
ˇ ´ILOHA A. PR ˇ ´ILOHY PR
Obr´azek A.10: Rozm´ıstˇen´ı a oˇc´ıslov´an´ı konektor˚ u na desce ploˇsn´ ych spoj˚ u DEV-BF5xxDA-Lite.
Obr´azek A.11: Rozm´ıstˇen´ı a oˇc´ıslov´an´ı konektor˚ u na rozˇsiˇruj´ıc´ı desce EXT-BF5xx-CAM.
IV
ˇ ´ILOHA A. PR ˇ ´ILOHY PR ˇ ıslo pinu C´
V
N´ azev sign´ alu
Vstup(I)/V´ ystup(O)/nap´ ajen´ı
1
RSCLK0 / PF28
I/O
2
DR0PRI
I
3
TSCLK0 / PF29
I/O
4
DT0PRI / PF18
I/O
5
PF11(Clk out) *
I/O
6
PF9
I/O
7
PF7 / SPISEL7 / TMR7
I/O
8
PF5 / SPISEL5 / TMR5
I/O
9
Vin 3V3
nap´ajen´ı
10
Vin 3V3
nap´ajen´ı
11
PPI1D0
I/O
12
PPI1D2
I/O
13
PPI1D4
I/O
14
PPI1D6
I/O
15
PPI1D8 / PF40
I/O
16
PPI1D10 / PF42
I/O
17
PPI1D12 / PF44
I/O
18
PPI1D14 / PF46
I/O
19
PPI1SYNC3
I/O
20
PPI1SYNC1 / TMR8
I/O
21
PF3 / SSEL3 / TM3
I/O
22
PF1 / SPISEL1 / TMR1
I/O
23
RX / PF27
I/O
24
MOSI
I/O
25
SCK
I/O
26
nABE2 / SDQM2
O
27
ARDY
I
28
TCK
I
29
TDI
I
30
TRST
I
Tabulka A.1: V´ yvody konektoru X1 procesorov´e jednotky CM-BF561.
ˇ ´ILOHA A. PR ˇ ´ILOHY PR ˇ ıslo pinu C´
VI
N´ azev sign´ alu
Vstup(I)/V´ ystup(O)/nap´ ajen´ı
31
EMU
O
32
TMS
I
33
TDO
O
34
AMS3
O
35
ABE1/SDQM1
O
36
ABE0/SDQM0
O
37
MISO
I/O
38
TX / PF26
I/O
39
PF0/SPISS/TMR0
I/O
40
PF2/SSEL2/TMR2
I/O
41
PPI1CLK
I
42
PPI1SYNC2 / TMR9
I/O
43
PPI1D15 / PF47
I/O
44
PPI1D13 / PF45
I/O
45
PPI1D11 / PF43
I/O
46
PPI1D9 / PF41
I/O
47
PPI1D7
I/O
48
PPI1D5
I/O
49
PPI1D3
I/O
50
PPI1D1
I/O
51
GND
nap´ajen´ı
52
GND
nap´ajen´ı
53
PF4/SPISEL4/TMR4
I/O
54
PF6/SPISEL6/TMR6
I/O
55
PF8
I/O
56
PF10
I/O
57
DT0SEC / PF17
O
58
TFS0 / PF16
I/O
59
DR0SEC / PF20
I
60
RFS0 / PF19
I/O
Tabulka A.2: V´ yvody konektoru X1 procesorov´e jednotky CM-BF561.
ˇ ´ILOHA A. PR ˇ ´ILOHY PR ˇ ıslo pinu C´
VII
N´ azev sign´ alu
Vstup(I)/V´ ystup(O)/nap´ ajen´ı
61
ABE3/SDQM3
O
62
A3
O
63
A5
O
64
A7
O
65
A9
O
66
A11
O
67
A13
O
68
A15
O
69
PPI2SYNC1
I/O
70
PPI2SYNC2
I/O
71
PPI2D1
I/O
72
PPI2D3
I/O
73
PPI2D5
I/O
74
PPI2D7
I/O
75
PPI2D9 / PF33
I/O
76
PPI2D11 / PF35
I/O
77
PPI2D13 / PF37
I/O
78
PPI2D15 / PF39
I/O
79
GND
nap´ajen´ı
80
AMS1
O
81
AWE
O
82
NMI 0
I
83
D0
I/O
84
D2
I/O
85
D4
I/O
86
D6
I/O
87
D8
I/O
88
D10
I/O
89
D12
I/O
90
D14
I/O
Tabulka A.3: V´ yvody konektoru X2 procesorov´e jednotky CM-BF561.
ˇ ´ILOHA A. PR ˇ ´ILOHY PR ˇ ıslo pinu C´
VIII
N´ azev sign´ alu
Vstup(I)/V´ ystup(O)/nap´ ajen´ı
91
D15
I/O
92
D13
I/O
93
D11
I/O
94
D9
I/O
95
D7
I/O
96
D5
I/O
97
D3
I/O
98
D1
I/O
99
RESET
I
100
AOE
O
101
ARE
O
102
AMS2
O
103
N.C
-
104
PPI2D14 / PF38
I/O
105
PPI2D12 / PF36
I/O
106
PPI2D10 / PF34
I/O
107
PPI2D8 / PF32
I/O
108
PPI2D6
I/O
109
PPI2D4
I/O
110
PPI2D2
I/O
111
PPI2D0
I/O
112
PPI2SYNC3
I/O
113
PPI2CLK
I
114
A14
O
115
A12
O
116
A10
O
117
A8
O
118
A6
O
119
A4
O
120
A2
O
Tabulka A.4: V´ yvody konektoru X2 procesorov´e jednotky CM-BF561.
ˇ ´ILOHA A. PR ˇ ´ILOHY PR ˇ pinu C.
IX
Sign´ al kamery
Kamera ˇ c. 1
Kamera ˇ c. 2
1
not connected
not connected
not connected
2
AGND
not connected
not connected
3
SIO D
PPI1D12
PPI2D11
4
AVDD
not connected
not connected
5
SIO C
PPI1D15
PPI2D10
6
RESET
not connected
not connected
7
VSYNC
PPI1Sy2
PPI2Sy2
8
PWDN
not connected
not connected
9
HREF
PPI1Sy1
PPI2Sy1
10
DVDD
not connected
not connected
11
DOVDD
not connected
not connected
12
D7
PPI1D7
PPI2D7
13
CamClk
not connected
not connected
14
D6
PPI1D6
PPI2D6
15
DGND
not connected
not connected
16
D5
PPI1D5
PPI2D5
17
PCLK
PPI1Clk
PPI2Clk
18
D4
PPI1D4
PPI2D4
19
D0
PPI1D0
PPI2D0
20
D3
PPI1D3
PPI2D3
21
D1
PPI1D1
PPI2D1
22
D2
PPI1D2
PPI2D2
23
D8
PPI1D8
PPI2D8
24
D9
PPI1D9
PPI2D9
Tabulka A.5: Tabulka pˇripojen´ı kamery ˇc. 1 a ˇc. 2 ke sbˇernic´ım PPI1 a PPI2 CM-BF561.
ˇ ´ILOHA A. PR ˇ ´ILOHY PR Oznaˇ cen´ı
X Barva
Funkce
V1
ˇ Cerven´ a
Full Duplex (Ethernet)
V2
Zelen´a
Activity (Ethernet)
V3
Zelen´a
100MB Speed LED (Ethernet)
V5
Zelen´a
Flag0 (Debug Agent)
V6
Flag1 (Debug Agent)
V7
Zelen´a ˇ Cerven´ a
Monitor (Debug Agent)
V8
Zelen´a
Pr. done (Debug Agent)
V9
GPIO (PF43)
V10
Zelen´a ˇ Cerven´ a
V14
ˇ a Zlut´
nap´ajen´ı
GPIO (PF42)
Tabulka A.6: Funkce jednotliv´ ych LED diod na v´ yvojov´e desce DEV-BF5xxDA-Lite.
Obr´azek A.12: V´ ysledky fixed-point DSP procesor˚ u z dan´e ˇrady v testu BDTImark2000TM [9] v z´avislosti na pomˇeru cena/v´ ykon (cost-effective). Vyˇsˇs´ı v´ ysledek je lepˇs´ı.
ˇ ´ILOHA A. PR ˇ ´ILOHY PR
Obr´azek A.13: Kalibraˇcn´ı a rektifikaˇcn´ı parametry kamer.
XI
Pˇ r´ıloha B Obsah pˇ riloˇ zen´ eho CD K t´eto pr´aci je pˇriloˇzeno CD, na kter´em jsou uloˇzeny zdrojov´e k´ody, katalogov´e listy, manu´aly, doplˇ nkov´ y SW a tato diplomov´a pr´ace ve form´atu PDF.
Seznam hlavn´ıch adres´aˇr˚ u: • BF561 code: zdrojov´ y k´od pro DSP procesor ADSP-BF561 • BF561 documents: manu´aly a katalogov´e listy k DSP procesoru ADSP-BF561 • Bluetechnix : manu´aly, katalogov´e listy, v´ ykresy k v´ yvojov´emu kitu a kamer´am • Diploma thesis: text t´eto DP v PDF form´atu • DSP processors: informace o DSP procesorech • Matlab: zdrojov´e k´ody a data pro prostˇred´ı Matlab, Camera Calibration Toolbox • VisualDSP : manu´aly a update k v´ yvojov´emu prostˇred´ı Visual DSP++ 5.0
XII