VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Podobné dokumenty
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

DIGITÁLNÍ FOTOGRAFIE

Grafika na počítači. Bc. Veronika Tomsová

13 Barvy a úpravy rastrového

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 4.ročník MĚŘICKÝ SNÍMEK PRVKY VNITŘNÍ A VNĚJŠÍ ORIENTACE CHYBY SNÍMKU

Úloha - rozpoznávání číslic

Jasové transformace. Karel Horák. Rozvrh přednášky:

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY. MRBT Robotika

zdroj světla). Z metod transformace obrázku uvedeme warping a morfing, které se

VYUŽITÍ POČÍTAČOVÉ GRAFIKY

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO

Spektrální charakteristiky

Návod k použití softwaru Solar Viewer 3D

PRAKTIKUM III. Oddělení fyzikálních praktik při Kabinetu výuky obecné fyziky MFF UK

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Konverze grafických rastrových formátů

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Kalibrační proces ve 3D

Světlo. Podstata světla. Elektromagnetické záření Korpuskulární charakter. Rychlost světla. Vlnová délka. Vlnění, foton. c = ,8 km/h

Počítačová grafika. Studijní text. Karel Novotný

Algoritmizace prostorových úloh

Ing. Jakub Ulmann. Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově

Inovace a zkvalitnění výuky prostřednictvím ICT Technické vybavení Digitální fotoaparáty Ing. Jakab Barnabáš

Měření spektra světelných zdrojů LED Osvětlovací soustavy - MOSV

Úvod do mobilní robotiky AIL028

Fotokroužek 2009/2010

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Měření průtoku kapaliny s využitím digitální kamery

Rozdělení přístroje zobrazovací

Interpolace obrazu pro experimentální měřiče plošného teplotního rozložení

M I K R O S K O P I E

Analýza a zpracování digitálního obrazu

SYLABUS PŘEDNÁŠKY 10 Z GEODÉZIE 1

ZÁKLADNÍ METODY REFLEKTOMETRIE

Mikroskopická obrazová analýza

aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš tomas.d@centrum.cz

Digitální fotografie. Mgr. Milana Soukupová Gymnázium Česká Třebová

Fyzikální sekce přírodovědecké fakulty Masarykovy univerzity v Brně FYZIKÁLNÍ PRAKTIKUM. Praktikum z pevných látek (F6390)

Zadání: Úkolem je sestrojit jednoduchý spektrometr a určit jeho základní parametry pozorováním spektra známého objektu.

Programátorská dokumentace

Panoramatická fotografie

Mgr. Ladislav Zemánek Maturitní okruhy Matematika Obor reálných čísel

CZ.1.07/2.2.00/ )

12 Metody snižování barevného prostoru

Fyzikální laboratoř. Kamil Mudruňka. Gymnázium, Pardubice, Dašická /8

Meo S-H: software pro kompletní diagnostiku intenzity a vlnoplochy

kamerou. Dle optických parametrů objektivu mohou v získaném obraze nastat geometrická

GEODETICKÉ VÝPOČTY I.

Úprava naměřených stavů

KOMPRIMACE. aneb Aby to zabralo méně místa

5. Lokální, vázané a globální extrémy

B) výchovné a vzdělávací strategie jsou totožné se strategiemi vyučovacího předmětu Matematika.

Zavádění inovativních metod a výukových materiálů do přírodovědných předmětů na Gymnáziu v Krnově 07_10_Zobrazování optickými soustavami 1

Specializovaná mapa s odborným obsahem

Chyby měření 210DPSM

Digitální fotografie

Počítačová grafika a vizualizace I

Měření optických vlastností materiálů

MULTIMEDIÁLNÍ A HYPERMEDIÁLNÍ SYSTÉMY

Moderní multimediální elektronika (U3V)

Rozšíření bakalářské práce

b) Po etní ešení Všechny síly soustavy tedy p eložíme do po átku a p ipojíme p íslušné dvojice sil Všechny síly soustavy nahradíme složkami ve sm

ZPRACOVÁNÍ OBRAZU přednáška 4

Základy digitální fotografie

Barvy a barevné modely. Počítačová grafika

PROJEKT 3 2D TRAJEKTORIE KAMERY SEMESTRÁLNÍ PRÁCE DO PŘEDMĚTU MAPV

Teprve půlka přednášek?! já nechci

Barvy v digitální fotografii. Jaroslav Svoboda

REGRESNÍ ANALÝZA V PROSTŘEDÍ MATLAB

Volba zobrazení (Direct Current, Scaling) - FFT 1D, FFT 2D

Fraktální analýza prahovaných a neprahovaných signálů (View+HT) HT 1D

11 Zobrazování objektů 3D grafiky

Grafické systémy. Obrázek 1. Znázornění elektromagnetického spektra.

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Algoritmy a struktury neuropočítačů ASN - P11

h n i s k o v v z d á l e n o s t s p o j n ý c h č o č e k

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Zpracování obrazu v FPGA. Leoš Maršálek ATEsystem s.r.o.

Měření závislosti indexu lomu kapalin na vlnové délce

Přednáška kurzu MPOV. Barevné modely

SIFT: Scale Invariant Feature Transform Automatické nalezení korespondencí mezi dvojicí obrázků

2 (3) kde S je plocha zdroje. Protože jas zdroje není závislý na směru, lze vztah (5) přepsat do tvaru:

Úvod do počítačové grafiky

Vývoj počítačové grafiky. Tomáš Pastuch Pavel Skrbek

VY_32_INOVACE_INF.10. Grafika v IT

DETEKCE HRAN V BIOMEDICÍNSKÝCH OBRAZECH

GIS Geografické informační systémy

1 Základní funkce pro zpracování obrazových dat

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Vlákno (anglicky: thread) v informatice označuje vlákno výpočtu neboli samostatný výpočetní tok, tedy posloupnost po sobě jdoucích operací.

Kurz digitální fotografie. blok 1 data/úpravy fotografií

TELEVIZNÍ ZÁZNAM A REPRODUKCE OBRAZU

Geometrická optika. Vnímání a měření barev. světlo určitého spektrálního složení vyvolá po dopadu na sítnici oka v mozku subjektivní barevný vjem

Kalibrace monitoru pomocí Adobe Gamma

ÚVOD DO PROBLEMATIKY PIV

DIGITÁLNÍ FOTOGRAFIE

MATURITNÍ TÉMATA Z MATEMATIKY

1 3D snímání: Metody a snímače

Transkript:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS MĚŘENÍ VZDÁLENOSTI STEREOSKOPICKÝM SENZOREM DIPLOMOVÁ PRÁCE MASTER'S THESIS AUTOR PRÁCE AUTHOR Bc. ONDŘEJ VAVROŠ BRNO 2014

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS MĚŘENÍ VZDÁLENOSTI STEREOSKOPICKÝM SENZOREM STEREOSCOPIC SENSOR FOR DISTANCE MEASUREMENT DIPLOMOVÁ PRÁCE MASTER'S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Bc. ONDŘEJ VAVROŠ Ing. MARTIN HASMANDA BRNO 2014

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Ústav telekomunikací Diplomová práce magisterský navazující studijní obor Telekomunikační a informační technika Student: Bc. Ondřej Vavroš ID: 125691 Ročník: 2 Akademický rok: 2013/2014 NÁZEV TÉMATU: Měření vzdálenosti stereoskopickým senzorem POKYNY PRO VYPRACOVÁNÍ: Cílem studenta bude za pomocí soustavy, tvořené dvojicí kalibrovaných kamer, zpracovat pořízené stereoskopické snímky do podoby hloubkové mapy. Z takto vypočtené hloubkové mapy a známých kalibračních parametrů, které student získá z kalibrace kamer, dále vypočte vzdálenosti předmětů před soustavou kamer. Praktickým výstupem diplomové práce bude návrh aplikace, pracující s pořízeným stereoskopickým záznamem, která zobrazí vzdálenosti sledovaných předmětů před soustavou kamer. Pro zvýšení přesnosti měření bude uvažován výpočet disparitní mapy se sub-pixelovou přesností. DOPORUČENÁ LITERATURA: [1] Andrew Harltey and Andrew Zisserman. Multiple view geometry in computer vision (2. ed.). Cambridge University Press, 2006. [2] BRADSKI, Gary; KAEHLER, Adrian. Learning OpenCV. [s.l.] : O'Reilly, 2008. [3] CYGANEK, B.; SIEBERT, P., J.; An Introduction to 3D Computer Vision Techniques and Algorithms: Wiley 2009. Termín zadání: 10.2.2014 Termín odevzdání: 28.5.2014 Vedoucí práce: Ing. Martin Hasmanda Konzultanti diplomové práce: UPOZORNĚNÍ: doc. Ing. Jiří Mišurec, CSc. Předseda oborové rady Autor diplomové práce nesmí při vytváření diplomové práce porušit autorská práva třetích osob, zejména nesmí zasahovat nedovoleným způsobem do cizích autorských práv osobnostních a musí si být plně vědom následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č.40/2009 Sb.

ABSTRAKT Tato diplomová práce vás provede teoretickým postupem, který vám umožní určit vzdálenost objektu od stereoskopického senzoru. Součástí práce je popis kroků pro dosažení cíle, tzn. získání obrazu, provedení kalibrace, rektifikace. Dále vás práce provede přehledem algoritmů pro vytvoření disparitní mapy a určením vzdálenosti objektu od senzoru. V následující části se práce věnuje implementaci těchto postupů do aplikace, jejichž cílem je měření vzdálenosti. KLÍČOVÁ SLOVA Stereoskopie, stereo obraz, epipolární geometrie, rektifikace, disparita, disparitní mapa, algoritmus, měření vzdálenosti, webkamera ABSTRACT This master s thesis will take us through theoretical procedure that allows us to determine the distance of an object by stereoscopic sensor. Part of this work presents the description of the steps to achieve image of objects, calibraton and rectification. At the next part our study provides an overview of algortihms for creating disparity maps and determining the distance of the object from sensor. In the following part of thesis deals with the implementation of these processes into aplication which aim is to measure the distance. KEYWORDS Stereoscopy, stereo picture, epipolar geometry, rektification, disparity, disparity map, algorithm, distance measurement, webcam VAVROŠ, Ondřej Měření vzdálenosti stereoskopickým senzorem: diplomová práce. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií, Ústav telekomunikací, 2014. 46 s. Vedoucí práce byl Ing. Martin Hasmanda

PROHLÁŠENÍ Prohlašuji, že svou diplomovou práci na téma Měření vzdálenosti stereoskopickým senzorem jsem vypracoval samostatně pod vedením vedoucího diplomové práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené diplomové práce dále prohlašuji, že v souvislosti s vytvořením této diplomové práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a/nebo majetkových a jsem si plně vědom následků porušení ustanovení S 11 a následujících autorského zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon), ve znění pozdějších předpisů, včetně možných trestněprávních důsledků vyplývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č. 40/2009 Sb. Brno................................................. (podpis autora)

PODĚKOVÁNÍ Rád bych poděkoval vedoucímu diplomové práce panu Ing. Martinovi Hasmandovi za odborné vedení, konzultace, trpělivost a podnětné návrhy k práci. Brno................................................. (podpis autora)

Faculty of Electrical Engineering and Communication Brno University of Technology Technická 12, CZ-61600 Brno Czech Republic http://www.six.feec.vutbr.cz PODĚKOVÁNÍ Výzkum popsaný v této diplomové práci byl realizován v laboratořích podpořených z projektu SIX; registrační číslo CZ.1.05/2.1.00/03.0072, operační program Výzkum a vývoj pro inovace. Brno................................................. (podpis autora)

OBSAH Úvod 11 1 Specifikace cíle a popis problémů 12 2 Analýza a návrh řešení 13 2.1 Získání obrazu............................... 13 2.1.1 Snímač CMOS.......................... 13 2.1.2 Snímač CCD........................... 14 2.1.3 Barevné modely.......................... 14 2.1.4 JPEG komprese.......................... 16 2.2 Předzpracování obrazu pro stereoskopii................. 17 2.2.1 Dírkový model kamery...................... 17 2.2.2 Stereoskopie............................ 19 2.2.3 Epipolární geometrie....................... 19 2.3 Algoritmy pro stereoskopii........................ 20 2.3.1 Census Matching......................... 22 2.3.2 SSD (Sum of Squared Differences)................ 22 2.3.3 Další algoritmy.......................... 22 2.4 Změna vzájemné polohy a úhlu kamer................. 23 2.4.1 Vliv změn poloh kamer na měření vzdálenosti......... 23 2.5 Určení vzdálenosti............................ 24 2.5.1 Cizí řešení............................. 25 2.5.2 Vlastní řešení........................... 25 3 Realizace 26 3.1 Kamery.................................. 26 3.2 Software.................................. 27 3.2.1 Snímání obrazu z kamery.................... 27 3.2.2 Kalibrace............................. 27 3.2.3 Rektifikace............................ 27 3.2.4 Disparita............................. 27 3.2.5 Měření vzdálenosti........................ 28 3.3 Měření................................... 30 3.3.1 Metodika měření......................... 30 3.3.2 Naměřené hodnoty........................ 32 3.3.3 Zhodnocení měření........................ 36 3.3.4 Faktory ovlivňující měření.................... 36

3.4 Aplikace.................................. 37 3.4.1 Návod k použití aplikace..................... 38 4 Závěr 41 Literatura 42 Seznam symbolů, veličin a zkratek 44 Seznam příloh 45 A Kompaktní disk 46 A.1 Diplomová práce............................. 46 A.2 OpenCV................................. 46 A.3 Zdrojový kód aplikace.......................... 46 A.4 Zkompilovaná aplikace.......................... 46

SEZNAM OBRÁZKŮ 2.1 Struktura konvenčního CMOS čipu a čipu Exymor R od firmy Sony[5] 13 2.2 Princip činnosti CCD a CMOS snímače[7]............... 14 2.3 Krychle RGB modelu[9]......................... 15 2.4 Přepočet RGB modelu do YUV[12]................... 15 2.5 Bayerova maska filtrů (šedá je snímací čip)[13]............. 16 2.6 Dírkový model kamery[10]........................ 17 2.7 Ukázka provádění kalibrace[17]..................... 18 2.8 Epipolární geometrie, pohled dvou kamer[18].............. 19 2.9 Ukázka opravy distorze obrazu a rektifikace[17]............ 20 2.10 Ukázka dokonalé disparitní mapy (vpravo)[17]............. 21 2.11 Situační nákres posunu jedné z kamer do strany............ 23 2.12 Situační nákres vzájemně natočených kamer a posunu jedné z kamer do strany................................. 24 3.1 Použitá kamera Sweex webcam WC035V2[20]............. 26 3.2 Ukázka disparity BM, SGBM a VAR.................. 28 3.3 Ukázka postupu kalibrace........................ 30 3.4 Výřez disparitní mapy - blízký kalibrační bod............. 31 3.5 Ukázka špatně a dobře exponovaného snímku............. 32 3.6 Graf měření vzdálenosti, kamery rovnoběžně, rozteč 4,5 cm...... 34 3.7 Graf měření vzdálenosti, kamery rovnoběžně, rozteč 10 cm...... 34 3.8 Graf měření vzdálenosti, kamery natočené k sobě, rozteč 10 cm... 35 3.9 Graf měření vzdálenosti, kamery natočené k sobě, rozteč 4,5 cm... 35 3.10 Diagram struktury aplikace....................... 38 3.11 Aplikace - Konzolové okno........................ 38 3.12 Aplikace - Určení kamer......................... 39 3.13 Aplikace - Snímání a kalibrace...................... 40 3.14 Aplikace - Snímání pro měření...................... 40

SEZNAM TABULEK 3.1 Měření vzdálenosti, kamery rovnoběžně, rozteč 4,5 cm......... 32 3.2 Měření vzdálenosti, kamery rovnoběžně, rozteč 10 cm......... 33 3.3 Měření vzdálenosti, kamery k sobě, rozteč 10 cm............ 33 3.4 Měření vzdálenosti, kamery k sobě, rozteč 4,5 cm........... 33

ÚVOD Práce se zabývá využitím obyčejných webových kamer pro snímání stereo obrazu. Využití stereo obrazu je široké, například promítat vzdálený objekt pro každé oko zvlášť a zprostředkovat tím tak prostorový vjem tohoto vzdáleného objektu. Jinou variantou využití stereo obrazu je jeho počítačové zpracování, například do hloubkové mapy. Hloubková mapa vyjadřuje vzdálenost jednotlivých soustav ploch od kamery. Pokročilejším zpracováním lze dosáhnout 3D modelu pozorované scény. V tomto případě se zaměříme na zpracování stereo obrazu do hloubkové mapy a určení vzdálenosti pozorovaného objektu od kamery. Jak již bylo řečeno, stereoskopický senzor bude tvořen dvěma běžně dostupnými webovými kamerami. Dále bude tento stereoskopický senzor doplněný o aplikaci naprogramovanou v jazyce C/C++ za současného využití knihoven pro počítačové vidění známé jako OpenCV. V první části práce si specifikujeme cíle. V druhé části probereme teorii získání obrazu pomocí webkamery, dále zpracování obrazu pro stereoskopii a určování vzdálenosti. V třetí části bude realizace práce. 11

1 SPECIFIKACE CÍLE A POPIS PROBLÉMŮ Tato práce je založena na využití běžného počítače, v tomto případě notebooku s operačním systémem Windows, a příslušenství, tj. webkamer. Webkamery komunikují s počítačem prostřednictvím USB (Universal Serial Bus, univerzální sériová sběrnice). Jelikož se jedná o takzvané generické zařízení, odpadá tím pro nás nutnost manuální instalace ovladačů pro webkamery a s tím spojená možná nekompatibilita s operačním systémem. Jelikož tyto ovladače pro generická zařízení má operační systém v základu, provede se instalace webkamer automaticky. Pro stereoskopický efekt budou webkamery umístěny tak, aby byly objektivy nasměrované rovnoběžně k objektu zájmu a měly rozestup odpovídající minimálně rozestupu očí. Pro úspěšné snímání stereo obrazu je zapotřebí prozkoumat problematiku kalibrace webkamer. Z toho plyne, že musí být zajištěna vzájemná obrazová synchronizace. Jinými slovy je třeba odstranit geometrické poruchy, například soudkovitost, způsobené nedokonalou optikou webkamer, dále je nutné zajistit řádkovou synchronizaci, např. aby konkrétní roh snímaného objektu byl na stejném řádku jak v levém, tak v pravém snímku páru. Dalším bodem bude zpracování nasnímaného páru snímků. Pro jeho zpracování již existují více či méně složité algoritmy, které nám vytvoří takzvanou hloubkovou mapu resp. disparitní mapu. Abychom mohli určit, který algoritmus je pro naše účely nejvhodnější, musíme prostudovat současné existující řešení a problematiku stereoskopie. Nabyté vědomosti zužitkujeme i při určování vzdálenosti objektů z hloubkové mapy. Na základě nastudovaných znalostí o kalibraci kamer a stereoskopii budeme uvažovat o možnosti vzájemného posuvu a změny úhlů obou webkamer. Představa je, že změnou rozestupu a/nebo změnou vzájemného úhlu kamer se zvýší přesnost a maximální měřitelná vzdálenost systému. O vlivu těchto změn pro měření vzdálenosti budeme diskutovat. Vývoj stereoskopického systému bude probíhat na běžném počítači, konkrétně notebooku, vybaveném operačním systémem Windows, vývojovým nástrojem Visual Studio a svobodnou multiplatformní knihovnou pro manipulaci s obrazem OpenCV. Díky použití OpenCV, která disponuje funkcemi využívající OpenCL (Open Compute Language, průmyslový standard pro paralelní programování) nebo CUDA (Compute Unified Device Architecture, architektura umožňující běh programů na technologii OpenCL), lze na vybavenějším počítači užít těchto paralelizačních technik a zpracování obrazu urychlit až do reálného času. Rovněž díky multiplatformnosti lze, s menší úpravou kódu, provozovat zpracování obrazu na operačním systému založeném na Linuxovém jádře a na embeded zařízeních. Toho může být využito v budoucích pracích. 12

2 ANALÝZA A NÁVRH ŘEŠENÍ 2.1 Získání obrazu Jak již bylo psáno dříve, k pořízení snímků stereo obrazu budou použity dvě USB webkamery. Běžné webkamery používají snímače CCD nebo CMOS, barevné modely RGB nebo YUV a kompresi obrazu, datového streamu nebo kombinaci obojího. Komprese datového streamu bývá založena na Huffmanově či RLE kódování. Tyto komprese jsou bezeztrátové a se zvyšující se entropií dat se snižuje efektivita komprese. Kompresí obrazu se rozumí redukce redundantních informací. Tato redukce je založena na fyziologii oka a vidění, přesněji, využívá nedokonalosti lidského oka k odstranění přebytečných informací, které by stejně nebylo schopno rozpoznat. Při zpětné rekonstrukci komprimovaného obrazu již obraz nezíská kvalitu původního zdrojového obrazu, jedná se tedy o ztrátovou kompresi a jedna z nich je JPEG. Nakonec provedeme převod barevného snímku do černobílého, resp. získáme jasovou složku, jelikož většina algoritmů pro tvorbu disparitní mapy pracuje jen s jasovou složkou. 2.1.1 Snímač CMOS CMOS obvody byly vynalezeny v roce 1967 společností Fairchild Semiconductor. Konvenční světlocitlivé CMOS čipy existovaly ještě před příchodem technologie CCD, avšak pro nízkou citlivost danou konstrukcí čipu byla technologie CMOS vytlačena technologií CCD. V roce 2009 firma Sony přišla s novou konstrukcí CMOS čipu Exymor R, která výrazně zlepšila citlivost snímače a způsobila tak, zejména díky nízké výrobní ceně oproti CCD, masové rozšíření do kompaktních fotoaparátů a "chytrých"telefonů.[3][4] Obr. 2.1: Struktura konvenčního CMOS čipu a čipu Exymor R od firmy Sony[5] 13

2.1.2 Snímač CCD CCD vynalezli pánové Williard Boyle a George E. Smith v Bellových laboratořích v roce 1969. Za tento vynález dostali Nobelovu cenu za fyziku.[6] Z jednoduchého pohledu si můžeme CCD představit jako posuvný registr vystavený působení světla. CCD využívá podobně jako ostatní světlocitlivé snímače fyzikálního jevu známého jako fotoefekt. Jev spočívá v tom, že foton při nárazu do atomu dokáže vybudit některý z jeho elektronů do excitovaného stavu a odevzdá mu energii. Princip činnosti je znázorněn na Obr. 2.2. Nástup CCD dočasně zatlačil CMOS do pozadí, díky v té době lepším vlastnostem jako jsou vysoká citlivost, dynamický rozsah, nízký šum. I po návratu vylepšeného CMOS snímače zůstává nadále hojně používán i přes některé nevýhody vyplývající z jeho principu činnosti. Obr. 2.2: Princip činnosti CCD a CMOS snímače[7] 2.1.3 Barevné modely Barevný model používá základní barvy a mísení těchto základních barev do barvy výsledné. Barva světla je v nejjednodušších případech dána jedinou vlnovou délkou viditelného záření. Běžně v přírodě však jde o soubor mnoha záření různých vlnových délek, často i soubory celých spojitých spekter. Možných kombinací existuje mnoho, lidské oko z nich vnímá jen některé. Různé barevné modely se snaží replikovat barvy co nejvěrněji, v praxi se však volí vhodný kompromis mezi přesností podání barvy, 14

složitostí konkrétního modelu a obtížností jeho použití.[11] Barevných modelů existuje celá řada, každá má určité uplatnění. Zde si popíšeme barevné modely RGB a YUV. RGB model využívá míchání tří základních barev - červené, zelené a modré, používané ve všech monitorech a projektorech. Jedná se o aditivní způsob míchání vyzařovaných barev a tudíž nepotřebuje vnější světlo.[8] Tento model je založen na faktu, že lidské oko je citlivé právě na tyto tři barvy, ostatní barvy získáme kombinací sytostí těchto barev. Model lze vyjádřit pomocí krychle, ve které jednotlivé osy odpovídají jedné barvě, viz Obr. 2.3. Jelikož tento model nepracuje s jasovou složkou, musíme tuto složku z RGB modelu dopočítat dle Obr. 2.4. Obr. 2.3: Krychle RGB modelu[9] Obr. 2.4: Přepočet RGB modelu do YUV[12] Tento model rovněž používá Bayerova maska, což je pole barevných filtrů, která se používá k filtraci dopadajícího světla na snímací čip většiny digitálních fotoaparátů a kamer. Je pojmenována po svém tvůrci, Bryci E. Bayerovi z firmy Eastman Kodak, který ji patentoval v roce 1976. Maska se skládá ze tří filtrů. Každý propouští světlo jedné vlnové délky a jsou uspořádány v pravidelné mřížce, přičemž převládá filtr pro zelenou složku. To odráží vlastnosti lidského oka, které je právě na zelenou barvu nejcitlivější.[13] Ukázku Bayerova fitru můžeme vidět na Obr. 2.5. YUV model vznikl, když bylo třeba vytvořit způsob přenosu barevného signálu, který by byl kompatibilní s černobílým vysíláním. Ke stávající jasové složce byly přidány složky barevné. Model popisu používá tříprvkový vektor [Y,U,V], kde Y 15

Obr. 2.5: Bayerova maska filtrů (šedá je snímací čip)[13] je jasová složka, U a V jsou barevné složky. Barevné složky jsou v rozsahu od - 0,5 do 0,5, jasová složka má rozsah od 0 do 1. Výhodou YUV je oddělení jasové složky, kterou lidské oko přesněji vnímá.[12] Pak je možné barevné složky silněji komprimovat, jak se tomu děje například u JPEG komprese. Pokud by datový stream z webkamery využíval modelu YUV, jasovou složku získáme snadno, jednalo by se jenom o paměťové přesuny. 2.1.4 JPEG komprese JPEG komprese je jeden ze zástupců ztrátových kompresních metod využívaných k ukládání digitálních obrázků ve fotorealistické kvalitě. Formát souboru, který tuto kompresi používá, se také běžně nazývá JPEG, rovněž přípona tohoto formátu je.jpg,.jpeg,.jfif,.jpe. Skutečným názvem typu souboru je JFIF, což znamená JPEG File Interchanged Format. Zkratka JPEG znamená Joint Photographic Experts Group, což je konsorcium, které tuto kompresi navrhlo. JPEG/JFIF je nejčastější formát používaný pro přenos a ukládání fotografií na Internetu. Tento formát však není vhodný pro perokresby, zobrazení textu nebo ikonky, protože kompresní metoda vytváří viditelné a rušivé artefakty.[14] Kompresi vykoná sama webkamera resp. její kompresní čip. Proto nám bude pro zpracování ve stereoskopických algoritmech stačit stream z kamery dekomprimovat. Poněvadž kompresní algoritmus využívá barevný model YCbCr, tedy jasovou a chrominační složku, nemusíme se starat o získání jasové složky, přesněji, můžeme vynechat krok převádějící YCbCr model do RGB modelu. Kompletní dekomprese JPEG souboru se skládá z těchto kroků: 1. Remove header info and get quantisation factors 2. Extract data from Huffman encode bit stream 3. Scale each coefficient by inverse quantisation factors 4. Prepare the coefficients for IDCT in 8x8 blocks 16

5. IDCT each coefficient block 6. Put the 8x8 pixel blocks into the image buffer 7. Scale up the CbCr components 8. Convert the YCbCr components into an RGB image Vzhledem k tomu, že nepotřebujeme RGB, můžeme poslední, ba dokonce i předposlední krok vynechat, protože si vystačíme s jasovou složkou, a se zpracováním chrominačních složek se nemusíme nadále obtěžovat. Výpočetně náročná část ze všech kroků je diskrétní kosinova transformace, která se vyznačuje kvadratickou složitostí O(N 2 ), proto se transformace používá jen na makrobloky 8 x 8 pixelů. Výpočetní náročnost dekomprese nás v tomto případě nebude příliš trápit, především proto, že v současnosti běžné počítače mají dostatek výkonu k dekompresi v přijatelném čase a nepočítáme, alespoň pro začátek, s možností měřit vzdálenost v reálném čase. V současnosti rovněž nemusíme vytvářet vlastní JPEG dekompresor. Zdrojové kódy pro dekompresi JPEG jsou k dispozici od Independent JPEG Group[16], na stránkách pro otevřené zdrojové kódy Sourceforge.net[15] nebo je rovněž dekompresor implementován v otevřené knihovně pro počítačové vidění OpenCV, kterou využijeme v této práci.[17] 2.2 Předzpracování obrazu pro stereoskopii Budeme snímat cílový 3D objekt do dvou 2D snímků. Abychom pochopili, jak jsou jednotlivé body 3D prostoru promítány obrazy v kamerách, poslouží nám model kamery. 2.2.1 Dírkový model kamery Dírkový model kamery je jeden z jednodušších modelů kamery. Používá takzvané centrální projekce. Model pracuje s 11 parametry, 5 vnitřními, popisujícími vlastnosti Obr. 2.6: Dírkový model kamery[10] 17

kamery, a 6 vnějšími, udávajícími polohu kamery. neboli Matematicky je model vyjádřen takto: Kde: s u v 1 = s m = K [R t] M, (2.1) f x 0 c x 0 f y c y 0 0 1 X r 11 r 12 r 13 t 1 r 21 r 22 r 23 t 2 Y Z r 31 r 32 r 33 t 3 1 (X,Y,Z) jsou globální souřadnice bodu v 3D prostoru, (u,v) jsou souřadnice projekce bodu v pixelech, K je kalibrační matice kamery obsahující vnitřní parametry: c x, c y jsou středy obrazu (2.2) f x, f y jsou ohniskové vzdálenosti v upravených jednotkách (k pixelu) R, t je matice otočení a posunutí, tvoří vnější parametry U běžných kamer výrobce vnitřní parametry neuvádí vůbec, uvádí je jen u některých profesionálních kamer, proto vnitřní parametry musíme získat jinak, kalibrací. Metod kalibrace kamer existuje několik, v našem případě se spokojíme s kalibrací na základě známé scény, objektu či obrazce. Kameře předložíme obrazec, kalibrační metoda jeho strukturu zná a proto rozpozná jeho záchytné body. Z pozic záchytných bodů se odhadnou vnitřní případně korekční parametry kamery. K tomuto účelu opět využijeme knihovnu OpenCV, která obsahuje funkce pro odhad ze známých záchytných bodů. Tyto záchytné body získáme jinou funkcí zajišťující detekci rohů na šachovnici. Pro kalibraci kamer bude stačit před ní podržet v různých polohách a na určitý čas černobílou šachovnici. Obr. 2.7: Ukázka provádění kalibrace[17] 18

2.2.2 Stereoskopie Porovnávat dva dvourozměrné obrazce a hledat v nich vzájemně korespondující pixely by bylo neúnosně složité a zdlouhavé. Epipolární geometrie nám pomůže zredukovat prohledávaný prostor. S její pomocí provedeme rektifikaci obrazu. Po této úpravě si jednotlivé řádky stereoskopického páru obrazu budou korespondovat a nám se zredukuje vyhledávaný prostor do jednoho rozměru. 2.2.3 Epipolární geometrie Pokud umístíme 2 kamery libovolně v prostoru, jejich vzájemná pozice bude neznámá a kamery musí být zkalibrovány. Tato stereo kalibrace je odvozena od epipolární geometrie. Epipolární geometrie je vnitřní projektivní geometrie mezi dvěma pohledy kamer, je nezávislá na struktuře scény a je pouze závislá na vnitřních a vnějších parametrech kamer. Máme-li dva pohledy kamer a definujeme-li si matici F (Fundamendální matice), která zahrnuje geometrii scény a je rozměru 3 x 3, a bod v prostoru X, pak bod X je zobrazen v jednom pohledu jako bod x a ve druhém jako bod x, pak platí následující vztah x T F x = 0 (2.3) Obr. 2.8: Epipolární geometrie, pohled dvou kamer[18] Obr. 2.8 ukazuje vlastnosti epipolární geometrie. Význačné části scény jsou následující: Epipole e l, e r je místo na projekční rovině (v obraze kamery), kterou prochází spojnice mezi kamerami (základní linie) 19

Epipolární rovina Π e je rovina, která obsahuje základní linii a libovolný bod P v prostoru Epipolární linie u l, u r vznikne průnikem epipolární roviny Π e s projekční rovinou kamery Π l nebo Π r. Všechny epipolární linie se setkávají v jednom bodě, v epipolu. Epipolární linie se často používají k nalezení korespondence mezi body obou obrazů kamer. V jednom obraze kamery najdeme bod, u kterého chceme vypočítat 3D souřadnici. V druhém obraze kamery leží tento bod na epipolární linii.[18][1] Pro odhad fundamendální matice a provedení rektifikace opět můžeme využít knihovnu OpenCV[17]. Obr. 2.9: Ukázka opravy distorze obrazu a rektifikace[17] Pokud obě kamery umístíme tak, aby jejich osy objektivů byly rovnoběžné a "dívaly"se do nekonečna, nebude zapotřebí složité rektifikace. Nicméně je zcela jisté, že při umísťování kamer k nějakému vzájemnému otočení či posunutí dojde, byť nepatrnému. K nápravě těchto nepatrných odchylek nemusíme provádět odhad fundamendální matice, ale vystačíme si s jednodušší metodou, a to afinní transformací mezi obrazy na základě detekovaných rohů kalibračního obrazce, tj. šachovnice. 2.3 Algoritmy pro stereoskopii Z výše uvedeného víme, že prohledávaný prostor se nám zmenšil do jedné dimenze. Nyní musíme odhadnout, kam se zkoumaný pixel z jednoho obrazu posunul na druhém obrazu. Pokud by pixel odpovídal pozadí, bude jeho poloha stejná nebo blízká poloze v druhém obraze. 20

Pro vyjádření vzdálenosti mezi pixely byl zaveden pojem disparity (jedná se o inverzní vyjádření hloubky). Pixely odpovídající si polohou mají nulovou disparitu. Odhad disparity pro každý pixel nám zajistí algoritmy pro tvorbu hloubkové mapy, případně též disparitní mapy. Porovnávání jednoho pixelu by vedlo k velkému rozdílu disparity mezi sousedními pixely a výsledná mapa by neměla valnou vypovídací hodnotu, proto se využívá složitějších metod. Tyto metody pracují s celou skupinou pixelů. Předpokládá se totiž, že v obraze budou velké či celé plochy s podobnou disparitou a jen občas se vyskytne nějaký rozdíl, kde nastane změna hloubky v obraze. Obr. 2.10: Ukázka dokonalé disparitní mapy (vpravo)[17] Na Obr. 2.10 vpravo vidíme ideální disparitní mapu. Vidíme, že nejtmavší plocha představuje pozadí, čím blíže se vyskytuje objekt, tím světlejší bude objekt v disparitní mapě. Velká skupina algoritmů funguje obdobně, jen na některé fáze výpočtů používají jiné funkce, jež mají podobný význam. Pracují tak, že pro několik iterací disparit se určí míra neshody intenzit odpovídajích bodů. Pokud intenzity pixelů korespondují, je míra neshody nulová. V opačném případě se bude zvyšovat míra neshody. Hodnoty míry neshody přes všechny pixely a disparity tvoří prostor disparitních obrazů. Daný algoritmus nalezne v tomto prostoru optimální výběr disparit tak, že nejlépe odpovídají povrchům objektů v obraze. Určování hodnoty míry neshody, reakce na změny podobnosti sousedních pixelů a volba vítězné disparity je u každého z algoritmů specifická. Společným rysem těchto algoritmů jsou tyto 3 fáze: 1. Určení míry neshody pro všechny disparity 2. Seskupení vypočtených mír neshody při dané disparitě 3. Volba výsledné disparity pro každý pixel 21

Ad 1. Pro určení míry neshody se používá absolutní rozdíl nebo kvadrát rozdílu. Další úprava spočívá v aplikaci saturace, kdy větší hodnota než definovaná se změní v tuto definovanou. Saturace dále upraví hodnoty pro lepší výsledky v dalším kroku. Další metody v určení míry neshody nebo naopak podobnosti jsou vzájemná korelace a dvoustavové porovnání (souhlasí/nesouhlasí). Ad 2. Seskupení má za úkol odstranit drobné odchylky. U metod založených na blokovém zpracování se jedná o průměrování či sčítání. Jiné metody používají informaci z disparitních obrazů pro omezení změny disparity a omezení gradientu disparity. Ad 3. Jednodušší lokální metoda spočívá v nalezení disparity daného pixelu, která má nejmenší agregovanou míru neshody. Agregace zajišťuje souvislé plochy a vyhlazení jednopixelových chyb. Složitější globální metoda hledá disparitní funkci minimalizující globální energii. Jakmile máme definovanou energii, aplikuje se některý z algoritmů pro její minimalizaci (max-flow, graph-cut či jiné přístupy). Výsledkem je nalezení takové disparity, která je optimální pro všechny pixely. 2.3.1 Census Matching Využívá vzájemné korelace obou obrazů. Vzhledem k tomu, že korelace je v podstatě iterativní násobení a sčítání, lze tuto metodu použít na jednodušších zařízeních. Nicméně výsledná disparitní mapa je nekvalitní, většinou je tento algoritmus rozšiřován o další funkce, které disparitní mapu vylepší. 2.3.2 SSD (Sum of Squared Differences) Jeden ze zástupců jednoduchých algoritmů, který i přes svou jednoduchost podává poměrně dostatečné výsledky. Jak již vyplývá z názvu, pracuje s kvadrátem rozdílů, dále je přes čtvercové okno agregován a výsledná disparita je vybrána jako minimální agregovaná hodnota. 2.3.3 Další algoritmy Belief Propagation algoritmus je založen na graph cut a belief propagation, původní postupy jsou nahrazeny optimalizovanými postupy produkujícími ekvivalentní výsledky. Semi-Global Block Matching algoritmus minimalizuje globální energii v horizontálním, vertikálním i diagonálním směru do hloubky 8 nebo 16 sousedících pixelů. Dále se uplatňuje systém penalizací při hledání nejoptimálnější disparity. 22

Tyto a další algoritmy pro tvorbu disparitních map jsou rovněž implementovány v knihovně OpenCV[17] 2.4 Změna vzájemné polohy a úhlu kamer Po nastudování problematiky kalibrace kamer a projekce obrazu jsme došli k názoru, že měnit vzájemnou polohu a úhel kamer během měření vzdálenosti by vyžadovalo mnohem hlubší znalosti této problematiky. Při každém vzájemném pohybu kamer bychom museli vždy upravit projekční matice kamer, a to bylo zdlouhavé a nepraktické. Existují kalibrační metody pro získání souhrnu projekčních matic přednastavených poloh kamer, tyto jsou natolik složité, že od jejich implementace upustíme. Nicméně si můžeme ukázat vliv jednotlivých poloh kamer pro měření. 2.4.1 Vliv změn poloh kamer na měření vzdálenosti Abychom následující znázornění pochopili, popíšeme si situaci. Kamera 1 je fixní, kamera 2 je pohyblivá, momentálně se nachází blízko kamery 1, kamera 2 označuje kameru 2 po posunu do vzdálenější pozice a pro názornost je opatřena průhlednější barvou. Červená přerušovaná čára znamená hranici s maximální disparitou, zelená přerušovaná čára pak hranici s nulovou disparitou. Průhledná přerušovaná červená a zelená čára náleží ke kameře 2. Obr. 2.11: Situační nákres posunu jedné z kamer do strany V prvním případě je znázorněn vliv rovnoběžného posunu kamer, jenž je zobrazen na Obr. 2.11. V tomto případě, kdy osy objektivů jsou rovnoběžné, nemůžeme přesně určit hranici nulové disparity, teoreticky je tato hranice v nekonečnu, v praxi se tato hranice vyskytuje podstatně blíže a je silně závislá na rozlišovací schopnosti kamer. 23

Hranici maximální disparity můžeme určit v momentě, kdy se sledovaný objekt ztratí ze zorného pole jedné z kamer. Jinak řečeno se tato hranice vyskytuje v místě protnutí hranic zorného pole obou kamer. Zvýšením odstupu obou kamer oddálíme hranici s maximální disparitou. Obr. 2.12: Situační nákres vzájemně natočených kamer a posunu jedné z kamer do strany V druhém případě, na Obr. 2.12, byl změněn vzájemný úhel kamer a osy objektivů se protínají. Rovněž i hranice zorných polí obou kamer se protínají na více místech a určují nám jak hranici maximální disparity, tak hranici nulové disparity. Protože známe polohy hranic disparity, můžeme přesně určit vzdálenost objektu od kamer, ale jen v intervalu těchto hranic. Zvýšením odstupu se tento interval zvýší. Nevýhodou je, že v okamžiku, kdy se vyskytne měřený objekt dále za hranicí nulové disparity, bude chybně interpretován jako objekt nacházející se před hranicí nulové disparity. Tato nevýhoda může být eliminována umístěním stěny v hranici nulové disparity a zasahující přes zorná pole obou kamer. 2.5 Určení vzdálenosti Při prohledávání dostupných informací jsem dlouho nemohl najít relevantní informace o přijatelně přesném určení vzdálenosti za pomocí disparitní mapy, nakonec byla nalezena jedna diplomová práce studenta ČVUT, Bc. Pavla Staňka, na podobné téma z roku 2007, který tuto problematiku má vyřešenou. Uvedu zde jeho obecné řešení. Rovněž zde uvádím i své vlastní řešení nosné části diplomové práce. 24

2.5.1 Cizí řešení Řešení studenta Bc. Pavla Staňka vychází ze stejného předpokladu, se kterým budeme počítat i my, tedy, že máme obě kamery paralelně směřující svou osou do nekonečna. Díky tomu je zjednodušena kalibrace kamer a ve výsledku i jednodušší výpočet vzdálenosti. Student Bc. Staněk využívá podobnosti trojúhelníků a jeho řešení spočívá v jednoduché rovnici: Kde: d f = p l d je hodnota disparity v pixelech p je vzdálenost mezi kamerami v reálných jednotkách l je vzdálenost objektu od kamer ve stejných jednotkách jako p (2.4) f je ohnisková vzdálenost, kterou dostane z kalibrace. Není v reálných jednotkách, ale pojí reálné souřadnice zadané funkci k velikosti pixelů. Právě určení ohniskové vzdálenosti v citované práci se spoléhá na proces kalibrace podle obrazce, kde je známa velikost čtverců šachovnice. Tuto ohniskovou vzdálenost určil pokusem.[19] Přesto, že jeho postup je určitě funkční, osobně jsem zvolil jiné řešení. 2.5.2 Vlastní řešení Mé řešení je zcela jednoduché, avšak přidává do celého systému měření vzdálenosti ještě jednu kalibraci navíc. Vychází z toho, že disparitní mapa nám podává informaci vzdálenosti v relativní míře. Zbývá nám tedy nasnímat scénu, kde se nachází objekty ve známých vzdálenostech. Z výsledné disparitní mapy se odečtou hodnoty disparity pro jednotlivé vzdálenosti a implementují se do formy převodní rovnice. Pokud by se měřením zjistilo, že disparita není lineární se vzdáleností, museli bychom použít více měřících bodů. Z těchto bodů pak lze určit rovnici pro lineární lomenou křivku, která by lépe kopírovala nelinearity disparity. 25

3 REALIZACE K vývoji softwaru byl využit běžný notebook, který neoplývá současnými moderními akceleračními technologiemi (CUDA, OpenCL). Tyto technologie ani nebyly v žádné míře implementovány a využity v softwaru. Jednak by jej použitý počítač nebyl schopen použít a jednak je tímto krokem zajištěna možnost software spustit na hardwarově méně vybavených a nevýkonných, zjednodušeně slabších, počítačích. Zároveň není software vázaný na jakoukoli technologii, která se rychle objevila a může stejně tak rychle zaniknout nebo být nahrazena jinou. Má to sice tu nevýhodu, že veškeré výpočty provádí procesor a od něj se odvíjí rychlost výpočtů. 3.1 Kamery Rozhodl jsem se jít nejdostupnější a levnou cestou a pořídil jsem dvě kamery Sweex Webcam WC035V2, jejichž technické specifikace můžeme najít na [20]. Jedná se o obyčejné, tzv. generické webové kamery, které lze pořídit pod různými značkami od různých prodejců, zároveň splňují minimální standardy, s nimiž je umožněno k těmto kamerám přistupovat jedním generickým ovladačem. Zároveň bych chtěl dodat, že generická kamera neznamená nutně zařízení vyrobené podle jednoho vzoru a s identickými parametry, ale o způsob zpracování obrazu a komunikace tak, aby byl generický ovladač schopen tyto požadavky splnit. V praxi to znamená, že trh je zaplaven relativně levnými zařízeními, která mají víceméně stejné parametry, ale jejich zásadní výhodou je, že jsou doslova Plug and play. Uživatel tak nemusí řešit možné komplikace s instalací ovladačů a podružného softwaru a zároveň to usnadňuje vývoj softwaru. Obr. 3.1: Použitá kamera Sweex webcam WC035V2[20] 26

3.2 Software Software byl vyvíjen ve vývojovém prostředí Microsoft Visual Studio 2010 a doplněný o otevřené knihovny pro počítačové vidění OpenCV [17]. Při vývoji bylo využito vzorových příkladů z [17] a [2], které byly upraveny a doplněny pro potřeby této práce. Zdrojový kód aplikace je věcně okomentovaný a zde uvedu stručný popis použité funkce z OpenCV k základním krokům měření vzdálenosti. Ve stručném popisu nebude korektní zápis kódu, zvolený způsob zápisu by měl usnadnit pochopení použití jednotlivých funkcí. Přesný popis funkcí najdeme v dokumentaci OpenCV[17] nebo v knize Learning OpenCV [2]. 3.2.1 Snímání obrazu z kamery Abych mohl nasnímat jakýkoliv obraz z kamer, musím nejprve inicializovat objekt VideoCapture, pokud mám kamer více, proměnnou ktera si zvolím, kterou potřebuji. VideoCapture Kamera(int ktera); Snímek získám a uložím do proměnné snimek. Kamera.read(Mat snimek); 3.2.2 Kalibrace Ke kalibraci je zapotřebí mít vektory bodů kalibračního obrazce a jednotlivé projekce kalibračního obrazce z obou kamer. Výstupem jsou kromě jiného rotační, transpoziční a fundamentalní matice. Získám tak intrinsitní parametry kamer. stereocalibrate(... ); 3.2.3 Rektifikace Následující funkcí získám matice rotace, projekční matice pro obě kamery a reprojekční matici. Získám tak extrinsitní parametry kalibrace. stereorectify(... ); 3.2.4 Disparita Zde knihovna OpenCV nabízí několik metod tvorby disparity. Jsou to Block matching, Semiglobal Block matching, Variational matching. Opět zde musím inicializovat objekty 27

StereoBM bm; StereoSGBM sgbm; StereoVar var; a následně, po nastavení parametrů disparity, volám funkci, kde vstupem jsou LevyObr a PravyObr a výstupem je disparitní mapa Disparita. bm(mat LevyObr, Mat PravyObr, Mat Disparita); sgbm(mat LevyObr, Mat PravyObr, Mat Disparita); var(mat LevyObr, Mat PravyObr, Mat Disparita); Po vyzkoušení výše jmenovaných metod tvorby disparitní mapy při různých nastaveních parametrů jsem dospěl k názoru, že nejlepší výsledky podává metoda Semiglobal Block matching. Jelikož výstupem disparit je dvourozměrné pole s jaso- Obr. 3.2: Ukázka disparity BM, SGBM a VAR vými hodnotami od 0 do 255, tedy obraz v šedotónu, převedl jsem jej do barevné mapy JET pomocí funkce applycolormap(mat VstupObr, Mat VystupObr, int typ_mapy); 3.2.5 Měření vzdálenosti Zde je situace složitější, žádné funkce pro výpočet vzdáleností nejsou v knihovně OpenCV implementovány. Musel jsem si tyto funkce doprogramovat. Obecně funkce provádí přepočet z hodnoty disparity do reálných vzdálenosti nasledovně: Kde: l = d je hodnota disparity v pixelech f p k d p je vzdálenost mezi kamerami v reálných jednotkách l je vzdálenost objektu od kamer ve stejných jednotkách p f je ohnisková vzdálenost, kterou dostanu z kalibrace. Není v reálných jednotkách, ale pojí reálné souřadnice zadané funkci k velikosti pixelů. (3.1) 28

k je konstanta s kterou dostanu vzdálenost l v reálných jednotkách Rovnice 3.1 vychází z kapitoly 2.5.1 a pro její uplatnění musím určit ohniskovou vzdálenost f. Tu získám z reprojekční matice Q[2]. 1 0 0 c x 0 1 0 c y Q = (3.2) 0 0 0 f 0 0 1 (c x c x ) T x T x Jelikož knihovna OpenCV nabízí získat ohniskovou vzdálenost i jinou cestou, pomocí funkce calibrationmatrixvalues(... ); kde vstupem pro tuto funkci je matice kamery, rozlišení kamery a fyzická velikost snímače, výstupem je kromě jiného ohnisková vzdálenost kamery. Poněvadž hodnota této ohniskové vzdálenosti se liší od ohniskové vzdálenosti získané z reprojekční matice Q, musel jsem rovnici 3.1 upravit Kde: l = f h p k 4, 5 d (3.3) f je ohnisková vzdálenost, kterou dostanu z uvedené funkce. Je v reálných jednotkách, ale nepojí reálné souřadnice zadané funkci k velikosti pixelů. h je délka hrany čtverce kalibračního obrazce. p/4,5 je poměr vzdálenosti mezi kamerami vztažený k nejmenší možné vzdálenosti mezi kamerami. Ostatní proměnné se shodují s rovnicí 3.1. A nyní přichází na řadu funkce vycházející z kapitoly 2.5.2, tedy z mého řešení určení vzdálenosti. Funkce je založena na rovnici: Kde: l = (v 2 v 1 ) l je vzdálenost v reálných jednotkách. v 1 je vzdálenost blízkého kalibračního objektu. v 2 je vzdálenost vzdáleného kalibračního objektu. (255 d) (d 2 d 1 ) + v 1 (3.4) d je aktuální hodnota disparity měřeného objektu v pixelech. d 1 je hodnota disparity blízkého kalibračního objektu. d 2 je hodnota disparity vzdáleného kalibračního objektu. 29

3.3 Měření V této části budu předchozí uvedené metody dále nazývat cizí, cizí upravená a má či moje metoda. Měření jsem rozdělil do čtyř částí. Mění se poloha kamer a vzájemné natočení, stějně jak je to uvedeno na Obr. 2.11 a Obr. 2.12. Poloha se mění z 4,5 cm (nadoraz u sebe) na 10 cm (vzdálenost očí). Vzájemné natočení se mění z rovnoběžného na vzájemně stočený o 12 k sobě, každá kamera je stočena o 6. 3.3.1 Metodika měření Abych zajistil konzistentní výsledky všech metod měření, určil jsem si pracovní postup a prostor pro měření. Než jsem dospěl k vhodnému pracovnímu postupu a vhodnému prostoru pro měření, zjistil jsem, jaké faktory do měření vstupují. Jejich vlivům se věnuji ve zvláštní kapitole. Pracovní postup 1. Umístění kamer. Popsáno výše. 2. Kalibrace kamer. Při kalibraci jsem kalibrační obrazec vždy umisťoval tak, aby nechyběla žádná jeho část v levém ani pravém snímku. Nejprve jsem jej umísťil co nejblíže k vykrytí co největší snímané plochy, posléze jsem obrazec vzdálil na jeden metr od kamer a přesouval jej postupně přes všechny rohy a střed levého snímku. Obr. 3.3: Ukázka postupu kalibrace 30

3. Kalibrace mé metody měření V této fázi aplikace zobrazuje disparitní mapu. Toho využívám k určení nejbližší detekovatelné vzdálenosti, kterou si zaznamenám do metody jako blízký kalibrační bod. Následně měřený objekt vzdálím o půl metru a z disparitní mapy zaznamenám do metody vzdálený kalibrační bod. Na Obr. 3.4 vidíme, Obr. 3.4: Výřez disparitní mapy - blízký kalibrační bod že určení blízkého kalibračního bodu je snadné. Přibližujeme se, dokud se měřený objekt nezačne na disparitní mapě rozpadat do artefaktů (viz žlutě ohraničená oblast). Celistvá červená plocha(viz modře ohraničená oblast) je korektně detekovaný měřený objekt. 4. Vlastní měření Měření jsem rozvrhl v celých půlmetrových délkách, přičemž první a poslední měřená hodnota je odlišná. První hodnota se odvíjí od nejmenší měřitelné vzdálenosti a poslední měřená hodnota se odvíjí od fyzických limitů místnosti, tedy stěny místnosti, kde jsem prováděl měření. Měření probíhalo tak, že po umístění měřeného objektu jsem vyčkal alespoň 10 sekund, po ustálení disparitní mapy jsem odečetl měřené vzdálenosti podle všech metod popsaných výše. Takto jsem postupoval přes všechny měřené vzdálenosti. Prostor pro měření Jako nejvhodnější místnost pro měření jsem určil místnost rovnoměrně osvětlenou zářivkovými světly nebo osvětlenou nepřímo slunečním světlem. Takto zajištěné osvětlení nevytváří ostré stíny, přeexponované a podexponované snímky. Jsou-li snímky správně exponované, neztrácejí kresbu a plasticitu snímané scény. Na Obr. 3.5 na levém snímku můžeme vidět příklad špatně exponovaného snímku foceného při ostrém slunečním světle. Snímek je současně přeexponovaný a podexponovaný. V místě vysokého jasu by měla být vidět polička a v místě nízkého jasu by měl být 31

Obr. 3.5: Ukázka špatně a dobře exponovaného snímku vidět rukáv trička s pruhovaným vzorem, jak je to na pravém snímku, který je exponován lépe. Dále si můžeme všimnout, že ostré světlo vrhá znatelné stíny, patrné na obličeji. Pravý snímek je focen ve chvíli, kdy se zatáhlo a zlepšily se světelné podmínky pro focení. 3.3.2 Naměřené hodnoty V této kapitole jsou uvedeny tabulky a grafy naměřených hodnot. Neviditelná me- Tab. 3.1: Měření vzdálenosti, kamery rovnoběžně, rozteč 4,5 cm Metoda Skutečná vzdálenost [cm] 57 100 150 200 250 300 350 392 Naměřená vzdálenost [cm] Moje 60 107 125 135 140 144 147 149 Cizí upravená 51 92 135 179 216 262 306 339 Cizí 54 99 144 189 232 280 328 364 zera kvůli fixaci tabulek a obrazků Neviditelná mezera kvůli fixaci tabulek a obrazků Neviditelná mezera kvůli fixaci tabulek a obrazků 32

Tab. 3.2: Měření vzdálenosti, kamery rovnoběžně, rozteč 10 cm Metoda Skutečná vzdálenost [cm] 122 150 200 250 300 350 392 Naměřená vzdálenost [cm] Moje 124 158 193 214 227 238 245 Cizí upravená 106 131 175 215 254 296 333 Cizí 113 140 189 229 271 316 355 Tab. 3.3: Měření vzdálenosti, kamery k sobě, rozteč 10 cm Metoda Skutečná vzdálenost [cm] 132 150 200 250 300 350 392 Naměřená vzdálenost [cm] Moje 143 173 213 238 255 267 275 Cizí upravená 127 150 197 244 291 340 373 Cizí 135 159 210 260 310 361 397 Tab. 3.4: Měření vzdálenosti, kamery k sobě, rozteč 4,5 cm Metoda Skutečná vzdálenost [cm] 53 100 150 200 250 300 350 392 Naměřená vzdálenost [cm] Moje 55 107 123 133 139 141 144 146 Cizí upravená 53 104 150 200 254 294 348 378 Cizí 57 111 160 214 271 313 371 403 33

Obr. 3.6: Graf měření vzdálenosti, kamery rovnoběžně, rozteč 4,5 cm Obr. 3.7: Graf měření vzdálenosti, kamery rovnoběžně, rozteč 10 cm 34

Obr. 3.8: Graf měření vzdálenosti, kamery natočené k sobě, rozteč 10 cm Obr. 3.9: Graf měření vzdálenosti, kamery natočené k sobě, rozteč 4,5 cm 35

3.3.3 Zhodnocení měření Z tabulek naměřených hodnot a grafů hned na první pohled vidíme, že moje metoda, založená na lineární extrapolaci, uspokojivě určuje vzdálenost nanejvýše pro první tři měřící body ve všech případech poloh kamery. Dále z grafů této metody vidíme, že její charakteristika je nelineární a s rostoucí měřenou vzdáleností rovněž nelineárně roste odchylka od skutečné vzdálenosti. Je to dáno tím, že závislost disparity na vzdálenost je taktéž nelineární. Metody cizí a cizí upravená jsou podstatně přesnější, mají jen menší relativní odchylku, kterou lze odstranit úpravou konstanty k v rovnicích 3.1 a 3.3, ale de facto kopírují ideální charakteristiku. 3.3.4 Faktory ovlivňující měření Zde uvádím stručný přehled vlastních postřehů získaných během různých pokusů o měření vzdálenosti. Většina postřehů je převážně spojená s kvalitou, resp. nekvalitou, pořizovaných snímků z používaných kamer. Optika kamer 1. Neostrost v rozích 2. Zkreslení obrazu 3. Nemožnost stejného zaostření obrazu na obou kamerách Kromě neostrosti v rozích si proces kalibrace na obrazec s ostatními vadami poradí. Neostrosti v rozích naštěstí nevadí, protože lze kamery nebo měřený objekt nasměrovat do záběru tak, aby nebyl neostrostmi zasažen. Automatika kamer Zde je největším problémem nezávislost řízení snímačů kamer, které se starají o optimální expozici, vyvážení bílé barvy, případně odstraňují blikání v případě zářivkového či jiného blikajícího osvětlení. Mnohokrát se mi při měření stalo, že automatika jedné z kamer v nevhodnou chvíli vyhodnotila současné světelné podmínky za nevyhovující a změnila expozici. Výsledkem byla skoková změna hodnot celé disparitní mapy a samozřejmě měřených vzdáleností, které neodpovídaly skutečnosti. Bohužel se mi nepodařilo nezávislost automatik kamer potlačit a proto jsem přikročil k opatřením, které ve výsledku nenutí automatiky kamer ke změnám (viz kapitola 3.3.1, Prostor pro měření). Osvětlení O problémech s osvětlením snímané scény jsem již psal v kapitole 3.3.1 v části Prostor pro měření, nicméně není na škodu to zopakovat. 36

Ostré přímé sluneční nebo umělé bodové světlo způsobuje přeexponování nebo podexponování snímků. Způsobují tak ztrátu kresby a plasticitu snímané scény. Často bývají podexponované také oblasti se stíny. Tyto nežádoucí jevy lze odstranit nebo alespoň zmírnit rozptýlením ostrého světla použitím matného skla, pořizovat snímky v místnosti na neslunečné straně budovy či vyčkat na vhodné počasí, což může být časově náročné. Nebo použít zářivkové světlo v místnosti s omezeným nebo žádným přístupem vnějšího světla. 3.4 Aplikace Aplikace byla vytvořena s využitím výše popsaných metod, funkcí a poznatků. Jedná se o jednoduchou konzolovou aplikaci bez grafické nadstavby a pro svůj chod vyžaduje dynamické knihovny zkompilované ze zdrojového kódu otevřené knihovny OpenCV[17]. Cílem aplikace je pouze demonstrovat fungující měření vzdálenosti. V aplikaci nejsou ošetřeny výjimky, při obsluze aplikace jinak než podle návodu může dojít k neočekávané chybě, to vede k následujícím stavům 1. Zacyklování 2. Zamrznutí 3. Pád aplikace 4. Pád operačního systému, tzv. Modrá smrt Tyto stavy nejsou pro počítač nebezpečné, nicméně narušují nerušené používání aplikace. Následující diagram ukazuje jednoduchou strukturu aplikace. 37

Obr. 3.10: Diagram struktury aplikace 3.4.1 Návod k použití aplikace Umístěte vhodně obě kamery a připojte je do počítače. Po spuštění aplikace se objeví konzolové okno s výpisem aktuálních parametrů pro kalibraci a menu s očíslovanými operacemi. V tuto chvíli aplikace neví, které kamery má použít. Zvolíte proto operaci Určení kamer a stisknete nulu a potvrdíte klávesou Enter. Objeví se okno s obrazovým vstupem některé z kamer. Postupným zakrýváním kamer zjistíte, o kterou kameru se jedná. Stisknete klávesu ESC a v konzoli se objeví žádost o zadání L, P nebo nulu. L nebo P zadávate tehdy, jedná-li se o levou nebo pravou kameru z Obr. 3.11: Aplikace - Konzolové okno 38

Obr. 3.12: Aplikace - Určení kamer pohledu kamer. Nulu zadáte pouze tehdy, když máte připojených kamer více (např. integrovaná kamera v notebooku) a nehodí se do měření a potvrdíte Enterem. Nyní se můžete pustit do kalibrace zvolením Snimani a kalibrace, stisknete 1 a Enter. Nyní se objeví dvě okna, každé pro jednu kameru a jsou stranově označeny. V této chvíli můžete ručně doostřit kamery. Posléze před kamery předkládáme kalibrační obrazec tak, aby byl v záběru obou kamer a pokaždé stiskneme klávesu Mezerník. Je třeba nasnímat alespoň 2 polohy kalibračního obrazce pro úspěšnou kalibraci. V praxi je lepší nasnímat alespoň 5 poloh kalibračního obrazce pro vyšší přesnost. Snímání ukončíme stisknutím klávesy ESC. Proběhne validace nasnímaných obrazců, vyřadí se nevyhovující a vyhovující postoupí do kalibrace, která může zabrat delší čas. Na konci kalibrace se objeví okno s opravenými a rektifikovanými obrazy z kamer. Slouží předevší jako kontrola, zda se kalibrace povedla. Dále můžete pokračovat volbou Snímaní pro měření. Objeví se několik oken, dvě zobrazují vstupy kamer, další okno zobrazuje disparitní mapu. Přemístěním kurzoru myši získáte naměřené hodnoty vzdálenosti, které se vypíší do konzolového okna. U vypsané položky Moje metoda si můžete všimnout hodnoty -1 cm, znamená to, že není zkalibrovaná. To se provede umístěním kurzoru myši na známý blízký objekt, klinutím levého tlačítka myši a zadáním skutečné vzdálenosti v centimetrech do konzolového okna. Stejný postup je pro známý vzdálený objekt s tím rozdílem, že namísto levého tlačítka myši použijete pravé tlačítko myši. Nyní když posunete kurzor myši na disparitní mapu, měli byste u položky Moje metoda vidět smysluplnější hodnotu. Jistě jste si všimli v menu položky Změna parametrů, kde můžete změnit vstupní parametry kalibrace, jejichž hodnoty můžete vidět v hlavičce menu. Pokud tyto hodnoty změníte, proveďte znovu celou kalibraci. 39

Obr. 3.13: Aplikace - Snímání a kalibrace Obr. 3.14: Aplikace - Snímání pro měření 40