VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
|
|
- Ondřej Dvořák
- před 6 lety
- Počet zobrazení:
Transkript
1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA TVORBA MODELU (JESKYNÍ) POMOCÍ STEREOKAMERY DIPLOMOVÁ PRÁCE MASTER'S THESIS AUTOR PRÁCE AUTHOR BRNO 2009 Bc. Jiří Haša
2 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA TVORBA MODELU (JESKYNÍ) POMOCÍ STEREOKAMERY ( CAVE) MODELLING USING STEREOCAMERA DIPLOMOVÁ PRÁCE MASTER'S THESIS AUTOR PRÁCE Bc. Jiří Haša AUTHOR VEDOUCÍ PRÁCE SUPERVISOR BRNO 2009 Ing. Jaroslav Rozman
3 Abstrakt Tato zpráva pojednává o problematice stereoskopického vidění, strojového vidění a rekonstrukce trojrozměrné scény ze stereo snímků. Text se nejprve zaobírá vytvořením matematického základu, ze kterého odvozuje postupy a řešení problémů vznikajících při tvorbě aplikací pro rekonstrukci scény. Abstract This document focuses on stereoscopic vision, machine vision and 3D scene reconstruction using stereo pair images. First we create basic mathematic framework which is later used to determine solutions for problems appearing during creation of scene reconstruciton application. Klíčová slova stereo, vidění, kamera, geometrie, triangulace, rekonstrukce, scéna Keywords stereo, vision, camera, geometry, triangulation, reconstruction, scene Citace Jiří Haša: Tvorba modelu (jeskyní) pomocí stereokamery, diplomová práce, Brno, FIT VUT v Brně, 2009
4 Tvorba modelu (jeskyní) pomocí stereokamery Prohlášení Prohlašuji, že jsem tuto diplomovou práci vypracoval samostatně pod vedením Ing. Jaroslava Rozmana Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal. Jiří Haša Poděkování V této sekci bych rád poděkoval Ing. Jaroslavu Rozmanovi za cenné rady, připomínky a trpělivost při tvorbě této práce. Dále bych rád poděkoval Ing. Janu Hašovi za pomoc při odstraňování pravopisných chyb v tomto dokumentu Jiří Haša, 2009 Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů.
5 Obsah Obsah Úvod Inspirace přírodou Složené oči Jednoduché oko Technický ekvivalent vidění Kamera Matematický model kamery Stereoskopické snímání Matematický základ stereoskopického snímání Triangulace Aplikace triangulace při stereoskopickém vidění Projekce bodů na obrazovou rovinu Epipolární geometrie Matematický model epipolární geometrie Skutečná stereokamera Charakteristika stereokamery Snímání stereokamerou Kalibrace kamery Odstranění deformace obrazu Rektifikace obrazu Shrnutí Výpočet disparity Pixel to pixel Stereo Block matching Graph Cuts Využití SURF pro zjišťování disparity Popis implementace programu Požadavky na program a diskuze nad problémy Využívané prostředky a knihovny Wxwidgets OpenCV OpenGL Implemetace
6 4.3.1 Získání stereo snímku Zpracování stereo snímku Závěr a shrnutí výsledků...39 Literatura...41 Seznam příloh...42 Seznam ilustrací složené oko včely...5 jednoduché oko...6 princip kamery...7 sférická vada...8 Správné, poduškovité a soudkové zobrazení...8 dírková komora...9 model kamery s projekční rovinou...9 zorná pole kamer...11 geometrie trojúhelníku...12 triangulace stereokamerou...12 graf závislosti vzdálenosti na disparitě...13 epipolární rovina...14 stereokamera VidereDesign...17 připojení kamery PC 6 pinovými kabely...18 připojení kamery k notebooku...18 kalibrační obrazec...19 správně detekovaná šachovnice...19 deformovaný obrázek...21 obrázek po přemapování...21 ukázka různě kvalitních map disparity...24 neupravený stereo snímek...25 stereo snímek po kalibraci a odstranění deformace...25 rektifikovaný stereo snímek (horizontální linky přidány dodatečně)...25 pixel to pixel stereo...27 disparita metodou block matching (zvýrazněná přidáno dodatečně)...28 disparita metodou graph cuts...29 využití SURF při sledování pohybu kamery...30 logo wxwidgets
7 logo OpenCV...33 logo OpenGL...33 probíhající kalibrace s pomocí obrázků ze souboru D trojúhelníková síť...37 ukázka modelu...38 ukázka modelu, pohled s odstupem
8 1 Úvod Účelem této práce je vysvětlit problematiku stereoskopického vidění a uvést postup, jakým se lze řídit při vytváření aplikace pro rekonstrukci scény z třírozměrného obrazu. Celý dokument je rozdělen do tří hlavních částí: Na úvod se uvedeme do problematiky stereoskopického vidění, tak, abychom věděli, že člověk není jediný, kdo řeší tuhle problematiku. Budeme hledat inspiraci v řešeních, která vynalezla příroda postupným vývojem a vysvětlíme si, na jakém principu fungují různé typy očí a jejich technický ekvivalent kamera. Kapitola Stereoskopické snímání nás zasvětí do matematických principů, které lze využít pro výpočty týkající se rekonstrukce scény. Zavedeme si matematický model kamery, na kterém postavíme celou teorii týkající se rekonstrukce scény. V kapitole Výpočet disparity se budeme zabývat různými algoritmy, které dokáží nalézt odpovídající si body v levém a pravém obrazu a vytvořit mapu jejich disparity, která je nezbytná pro rekonstrukci scény. V této kapitole budeme využívat znalosti získaných v předchozí kapitole Kapitola Implementace se nám pokusí dát návod, jakým postupovat při vytváření aplikace na rekonstrukci scény ze stereo snímků. Zabývá se konkrétními problémy, na které může programátor při psaní podobné aplikace narazit a snaží se poskytnou snadná a elegantní řešení, pomáhající k vytvoření aplikace s možná největším využitím už vymyšlených a implementovaných funkcí tak, aby se programátor nemusel zabývat vymýšlením něčeho, co už bylo dříve vymyšleno a zdokumentováno. Na závěr zhodnotíme úspěšnost vytvořené aplikace a možný přínos této práce pro všechny, kdo se zabývají podobnou problematikou. Vzhledem k tomu, že technika může neustále hledat inspiraci v technických řešeních, které vznikly v přírodě přirozeným vývojem druhů, podíváme se v této kapitole na to, jakým způsobem se u jednotlivých organizmů vyvinuly světlocitlivé orgány s funkcí oka. U jednotlivých typů oka se také zmíníme o možnosti vytvoření umělé varianty a jejího potenciálního využití. Tato práce se mimo jiné zabývá snímáním skutečného světa kamerou, proto se podíváme zběžně na konstrukci kamery s důrazem na možné vady její optické soustavy (čočky), které budeme v pozdějších částech textu kompenzovat. 4
9 1.1 Inspirace přírodou Během vývoje různých živočišných druhů příroda vyzkoušela různé možnosti vnímání světa. Nejen na blízku, ale i na dálku, což umožňovalo různým živočichům poznávat a reagovat na své okolí. Z počátku pouze na blízko, když reagovaly na dotek nějakého cizího předmětu, nebo na změnu prostředí, ve kterém se pohybovaly. Později se však rozvinuly orgány umožňující vnímání světa i prostřednictvím vlnění. Tyto změny umožnily takto vybaveným živočichům se mnohem lépe přizpůsobovat svému okolí a v důsledku toho měli i mnohem větší šanci na přežití. V případě jednoho na světlo citlivého orgánu byli takové organizmy schopné zjišťovat přítomnost zdrojů světla, ale nebyly schopné zjistit z jednoho pohledu přesnou polohu takového zdroje. Proto se orientovaly pouze podle toho, jak intenzivně danou veličinu vnímaly. Často se pohybovaly různými směry a porovnávaly intenzitu vjemu. K dalšímu významnému zlomu došlo, když se začaly objevovat druhy vybavené několika takto citlivými orgány, a nutno říci, že nesrovnatelně dokonalejšími orgány, než jejich předchůdci. V přírodě prosadily převážně druhy se dvěma složenýma očima a dvěma či osmi jednoduchýma Složené oči Složenými na světlo citlivými orgány jsou vybaveny některé druhy hmyzu. Jde o párový orgán, kdy jednotlivé oči jsou složené ze světlocitlivých šestiúhelníkových dílků, kdy každý dílek je schopen plného vnímání obrazu. Důsledkem takového uspořádání je mozaikovitý obraz a neschopnost zaostření. Tato nevýhoda se ukazuje hlavně v případě malých předmětů, které například vosy vůbec nevidí. Nespornou výhodou takového zraku je velké zorné pole umožňující takto vybavenému druhu i případné vidění směrem dozadu, aniž by musel pootočit hlavou. Vnímání pohybu i barev je značně odlišné od toho, jak vnímá svět člověk. Složené oko vnímá pohyb kvůli přesunu obrazu mezi jednotlivými buňkami, což umožňuje vnímat mnohem více impulzů a tedy reagovat na pohyb rychleji. Počet impulzů za sekundu u hmyzu se může blížit až k 200 (nejběžněji se ). Ilustrace 1: složené oko včely Složené oko je vybaveno jinými světlocitlivými pigmenty, což má za následek schopnost vnímat světlo na jiných vlnových délkách, jako jsou například ultrafialové složky atp. Využití tohoto typu oka pro robotiku nebo jiné průmyslové využití se nejeví jako snadný úkol, už jenom vzhledem k složitosti takového senzoru a také potřebnému výpočetnímu výkonu nutnému pro zpracování senzorem získaných informací. 5
10 1.1.2 Jednoduché oko Přestože v názvu tohoto oka je jasně řečeno, že je jednoduché, je potřeba si uvědomit, že jednoduché zde znamená nikoli složené a že i jednoduché oko má většinou velice složitou stavbu. Podle definice jde o oko s jedinou čočkou, která ale může být schopná měnit svoji geometrii a tedy zaostřovat oko na určitou vzdálenost. Protože pravděpodobně nejúspěšnějším živočišným druhem z hlediska přírodního výběru je člověk (a také proto, že tento pohled na věc je nám nejbližší), se budeme zabývat podrobněji právě lidským okem. Pro člověka je oko orgánem, kterým získává až 80% informací o svém okolí. Světlocitlivost zajišťují tyčinky (vnímající intenzitu světla) a čípky (vnímající barvy), tyto specializované buňky umožňují člověku vnímat světelné vlny v rozsahu nm. K dokonalosti zrakového vnímání jsou nezbytné části oka tvořící celý jeho optický systém (rohovka, komorová voda, čočka, sklivec), který soustřeďuje světlo do oblasti s foto receptory. Je třeba podotknout, že čípky jsou na Ilustrace 2: jednoduché světlo méně citlivé a tak za zhoršených světelných podmínek oko dochází k tomu, že se z vnímaného obrazu vytrácejí barvy. Z našeho pohledu činí jednoduché oko zajímavým především to, že se dá poměrně snadno vyrobit jeho senzorový ekvivalent (kamera), který může mít stejné, nebo dokonce ještě lepší vlastnosti. Dalším důvodem je, že takový senzor je snadný na pochopení a je tedy pro člověka mnohem přirozenější se orientovat v datech získaných takovým senzorem. 1.2 Technický ekvivalent vidění Kamera Kamera je nástroj na snímání obrazových informací, ať už v podobě nehybných obrázků (fotografií) nebo v podobě filmu. Termín kamera pochází z latinského camera obscura (temná komora). Kamera funguje na podobném principu jako jednoduché oko. Obsahuje světlocitlivý senzor, objektiv nahrazující čočku s měnitelnou ohniskovou vzdáleností a také clonu, která souží pro regulaci množství světla dopadajícího na senzor. Podívejme se teď na jednotlivé části kamery podrobněji: 6
11 Snímač obrazu Snímač obrazu je matice polovodičových buněk citlivých na světlo, v nichž se po dobu expozice akumuluje elektrický náboj úměrný osvětlení buňky. Typ a vlastnosti snímače obrazu jsou dány jednak technologií jeho výroby, jednak způsobem sběru náboje z buněk. Pro použití systémů strojového vidění v praxi většinou stačí znát základní vlastnosti dvou nejpoužívanějších snímačů obrazu, pro které se vžily zkratky CCD (Charged Coupled Device) a CMOS (Complementary Metal Oxide Semiconductor). Snímače obrazu CCD vysouvá náboj akumulovaný ve světlocitlivých buňkách pomocí soustavy analogových posuvných registrů. Výstupem je tedy analogový signál, který řídicí obvody kamery doplní potřebnou informací pro synchronizaci. Podle Ilustrace 3: princip kamery způsobu snímání řádků se kamery CCD dělí na kamery podle normy pro televizní vysílání s prokládaným řádkováním (interlaced) a kamery pracující metodou progressive scan. Kamera s prokládaným řádkováním poskytuje dva půlsnímky a ve strojovém vidění se téměř nepoužívá. Při snímání objektu v pohybu totiž mohou být svislé linie roztřepené, protože se stejný systém registrů používá pro sudé i liché řádky, a ty se tedy musí snímat v různých okamžicích. Kamera pracující metodou progressive scan vysouvá náboj akumulovaný v buňkách všech obrazových řádků v jednom okamžiku Optická soustava Optická soustava, kterou ve většině případů představuje kamerový objektiv spolu s vhodným osvětlením, má za úkol vytvořit na snímači obrazu takový dvojrozměrný obraz předmětů rozmístěných v prostoru před kamerou. Jejím účelem je upravení svazku světelných paprsků tak, aby pokud možno s co nejmenším zkreslením dopadal na světlocitlivý senzor. Vzhledem k tomu, že celá optická soustava se dá teoreticky nahradit jednou čočkou, budeme dále v textu o optické soustavě hovořit jako o čočce. 7
12 Je potřeba si uvědomit, že optická soustava není nikdy zcela dokonalá a tak je obraz, který předává na senzor různým způsobem zkreslený. Nejčastějšími vadami čočky jsou sférická vada, astigmatizmus a zkreslení obrazu Sférická vada Jde o typickou vlastnost čoček se sférickými nebo rovinnými povrchy. Projevuje se tím, že díky nesprávnému zakřivení čočky neprocházejí paprsky ohniskem. Konkrétně paprsky procházející blízko optické osy se protnou dále, než paprsky procházející čočkou dále od optické osy. Měřítkem velikosti této vady je maximální vzdálenost ohnisek paprsků procházejících čočkou v různé vzdálenosti od optické Ilustrace 4: sférická vada osy. Velikost projevu této vady lze upravit zacloněním paprsků dále od optické osy, čímž se i zmenší vzdálenost ohnisek od teoretického ohniska čočky. Na obrazu je tato vada rozpoznatelná vzrůstajícím rozmazáním obrazu směrem k okraji (nebo ke středu, záleží na tom, kde přesně je umístěn snímač) Astigmatizmus Projevuje se při zobrazování bodů ležících mimo optickou osu a to i při zobrazování velmi úzkým paprskem. Při zvětšování vzdálenosti zobrazovaného bodu od optické osy se posouvá i bod, do kterého se tento svazek paprsků sbíhá. Tento svazek paprsků má ještě navíc oválný průřez, takže zobrazovaný bod se nejen jeví rozmazaný, ale i zdeformovaný Zkreslení obrazu Jedná se o vadu, která se může projevit i v případě, že jsou splněny podmínky bodového zobrazení. Ke zkreslení obrazu dochází kvůli rozdílnému příčnému zvětšení. Když si Ilustrace 5: Správné, poduškovité a soudkové představíme, že kamera snímá pravoúhlou zobrazení mřížku kolmou k optické ose, zobrazí se tato mřížka s poduškovitým (v případě vzrůstu příčného zvětšení směrem od optické osy) nebo soudkovitým zkreslením (pokud příčné zvětšení klesá). 8
13 1.2.2 Matematický model kamery Představme si nejjednodušší model kamery nazývaný dírková komora (pinhole camera model). V tomhle modelu světlo dopadající na projekční desku prochází malým otvorem. V takovém případě na jeden bod projekční desku dopadá pouze jeden paprsek. Taková kamera je vždy zaostřena a velikost získaného obrazu je závislá jenom na ohniskové vzdálenosti f. V Ilustrace 6: dírková komora ideálním případě je vzdálenost projekční desky rovna ohniskové vzdálenosti. Takový případ je ukázán na ilustraci 6, kde f je ohnisková vzdálenost, Z je vzdálenost objektu od kamery, X je velikost objektu a x je velikost obrazu objektu. Všimněme si podobnosti trojúhelníků vzniklých na obou stranách stínítka. Pokud vyjdeme z podobnosti trojúhelníků dostaneme se k rovnici x X = f Z (1.1),poté snadno vyjádříme vztah pro velikost obrazu, uvědomme si, že záporné znaménko zde neznamená zápornou vzdálenost, ale opačnou orientaci vzhledem k optické ose. x= f X Z (1.2) Nyní můžeme přeskládat model dírkové kamery do formy, ekvivalentní, ale s která je jednodušším matematickým modelem. Bod, ve kterém se nacházela dírka se nyní bude nazývat střed projekce. V tomto modelu každý paprsek směřující do středu projekce prochází projekční deskou. Bod průniku paprsku s projekční deskou budeme Ilustrace 7: model kamery s projekční rovinou nazývat hlavní bod. Tímto způsobem se vyhneme převrácenému obrazu při zachování jednoduchosti rovnice a z podobnosti trojúhelníků opět dostaneme vztah: 9
14 x X = f Z (1.3) Protože ale musíme počítat s tím, že žádný opticky čip v kameře není přesně na optické ose, je potřeba ještě zavést další parametry cx a cy pro vyjádření možného posunutí senzoru. Parametry vyjadřují rozdíl polohy středu souřadného systému optického senzoru a středu souřadného systému projekční roviny. Ve výsledku dostáváme relativně jednoduchý model, v němž je bod v trojrozměrném prostoru Q[X, Y, Z] promítán na projekční rovinu (a tedy i obrazovku) na pixel o souřadnicích [x,y] podle rovnic: x= f x X c x, y = f Z y Y c y Z (1.4) To, že se zde uvádí dvě ohniskové vzdálenosti je důsledkem faktu, že jednotlivé pixely na levných snímacích čipech nemají čtvercový, ale obdélníkový tvar. Například ohnisková vzdálenost fx je součinem fyzické ohniskové vzdálenosti čočky a rozměrem x obrazového snímače. Při rozměrové kontrole zjistíme, že fx se udává v pixelech: f x [ px ]=s x [ px ] F [ mm] mm (1.5) Uvědomme si, že sx ani F nejsme schopni změřit bez toho, abychom fyzicky rozebrali kameru na součástky a tedy se musíme spolehnout na naměřené hodnoty fx a fy získané při kalibraci. 2 Stereoskopické snímání V této kapitole se zaměříme na snímání obrazu více kamerami. Podrobně se budeme věnovat problematice matematického modelu epipolární geometrie a zavedeme pojmy esenciální matice a fundamentální matice. Jak jsme si vysvětlili v předchozích kapitolách, kamera je zařízení, které vytváří trojrozměrný obraz skutečného světa. Vezměme si hypotetický příklad, že se snažíme postavit robota, který by byl schopen se samostatně pohybovat v budově. Jistě bychom v takovém případě hledali nějaký vhodný senzor, který by robotovi, stejně tak jako příroda kdysi živočichům, umožnil vnímat prostředí, ve kterém se nachází a zároveň v tomto prostředí rozpoznávat jednotlivé objekty nebo překážky. Existují mnohé typy senzorů, které umožňují velice přesnou orientaci robota. Ty jsou ale buďto aktivní (to znamená, že robot vysílá nějaký signál a vnímá jeho odraz zpět), což může způsobovat to, že díky těmto senzorům by robot působil rušivě (ultrazvuk plaší psy, laser může poškodit zrak při náhodném odrazu...), nebo vyžadují úpravu prostředí, ve kterém by se měl robot pohybovat (majáky, speciální 10
15 podlaha...). Naskýtá se nám tedy otázka, zda by nešlo naučit robota vidět tak jako vidíme my? Kamery jsou v dnešní době dobře dostupné, a není tedy problém jich na robota několik namontovat. Umožňují vidění ve spektru, na které jsme zvyklí a o kterém víme, že poskytuje dostatek informací aktuálním prostředí a o objektech v něm. Narážíme zde ale na zásadní problém a to, jak bude robot vnímat prostor, když uvidí jenom dvojrozměrně? 2.1 Matematický základ stereoskopického snímání Stereoskopické snímání je takové snímání, při kterém je trojrozměrná scéna synchronizovanými snímaná kamerami, které současně dohromady dvěma tvoří soustavu nazývanou dále stereokamera. Pokud nemáme k dispozici stereokameru, máme možnost nahradit ji jednou kamerou, kterou budeme postupně snímat scénu ze dvou bodů, tak jako bychom použili stereokameru. V takovém případě ale mějme na paměti, že jsme omezeni na snímání statických scén, protože mezi zachycením jednotlivých snímků se nesmí scéna Ilustrace 8: zorná pole kamer změnit. Snímky, které byly zaznamenány stereokamerou (nebo její jednokamerovou variantou) se nazývají stereosnímky a na rozdíl od standardních fotografií (nebo videa) jsme z nich schopni vypočítat třetí, prostorovou, souřadnici pro všechny body, které jsou vidět na obou snímcích. Mějme na paměti, že taková oblast je určena vzdáleností jedné kamery od druhé, rozdílem jejich orientace a také zorným polem. Na ilustraci je znázorněno, jakým způsobem se zorná pole kamer překrývají a zárověň je zde i ukázáno, u jakých částí objektu bude možné vypočítat vzdálenost bodu. Pro přehlednost je zde ukázáno i rozložení takových bodů v obrazové rovině. Červeně jsou znázorněny body snímané levou kamerou, zatímco modře jsou zobrazeny body snímané pravou kamerou. Fialově jsou zobrazeny body, u kterých bude možné měřit vzdálenost. Na první pohled je vidět, že měřitelná oblast je značně menší než celková snímaná oblast. Za zmínku stojí i skutečnost, že jakákoli překážka, která vystupuje z pozadí se sice projeví - ale stačí, aby některé objekty za ní byly zakryté a už nebude možné měřit jejich vzdálenost. 11
16 2.1.1 Triangulace Víme, že pro zaměření bodu v prostoru lze využít techniku zvanou triangulace. Je to technika založená na geometrických vlastnostech trojúhelníku, umožňující spočítat polohu jednoho vrcholu, pokud známe úhly a polohy v ostatních dvou vrcholech nebo vzdálenosti všech bodů. Pro nás to znamená, že budeme potřebovat 2 senzory se známou polohou, kterými budeme zaměřovat třetí bod nacházející se v prostoru. Pro zaměření bodu musíme znát úhly, Ilustrace 9: geometrie které naše senzory svírají s tímto bodem. Představme si, že naše senzory jsou umístěny v bodech trojúhelníku A[xa,ya] a B[xb,yb] a pokoušíme se zjistit přesnou polohu bodu C[xc,yc]. Při znalosti velikosti úhlů α a β nalezneme rovnice polopřímek tvořených rameny úhlů α a β. Vyřešením soustavy těchto rovnic dostaneme souřadnice jejich průsečíku a tedy i bodu C Aplikace triangulace při stereoskopickém vidění Nejvhodnější metodou pro zjišťování souřadnic skutečného bodu je bezesporu triangulace. Pokud jí chceme využít, musíme si ale nejprve zjistit všechna potřebná data pro výpočet, což znamená převést souřadné systémy kamer do jednoho společného souřadného systému, ve kterém bude prováděn výpočet. K tomu potřebujeme vědět ohniskové vzdálenosti obou kamer (v ideálním případě jsou stejné), vzdálenost kamer a souřadnice hledaného bodu na obou obrazech. Vysvětleme si nyní postup výpočtu na příkladu uvedeném v ilustraci 9 Ilustrace. Body A,B jsou body projekce, Ilustrace 10: triangulace stereokamerou obrazová rovina je ve vzdálenosti f. Souřadnice x a a xb jsou souřadnice projekcí bodu C na obrazových rovinách jednotlivých kamer. Body Af a Bf jsou hlavními body paprsku, tedy průsečíky paprsků s obrazovými rovinami. Všimněme si, že místo toho, abychom hledali rovnice pro jednotlivé přímky nám opět stačí využít podobnosti trojúhelníků ABC a AfBfC. Délka úsečky AB (strana c trojúhelníka) je rovna vzdálenosti kamer. Délka úsečky AfBf se dá vyjádřit jako c-(xa-xb). Když z těchto údajů sestavíme rovnici, vyjde nám: c x a x b c = Z f Z (2.1) a tedy: 12
17 Z= cf x a xb (2.2) Tady zavedeme nový pojem disparita d=xa-xb, která je rozdílem mezi souřadnicemi x projekcí bodu v jednotlivých obrazech. Při pohledu na výše uvedenou rovnici je zřejmé, že vzdálenost Z bodu C je nepřímo úměrná disparitě, takže mezi těmito veličinami bude nelineární vztah. Vyplývá nám, že čím větší bude disparita, tím menší budou rozdíly ve vzdálenosti a naopak. Proto také disparita neposkytuje rovnoměrné měřítko a běžně tedy není použitelná jako hloubková mapa. Za pomoci dosazování do tohoto vzorce jsme schopni vytvořit graf rozlišitelných vzdáleností c= px 20px 40px 60px 80px Disparita 10px 30px 50px 70px 100px Ilustrace 11: graf závislosti vzdálenosti na disparitě Je vidět, že přesnost měření vzdálenosti objektu stereokamerou s klesající disparitou klesá a pro každý krok je rozdíl přesnosti čím dál větší. Teoreticky jsme schopni tuto přesnost upravit nastavením změny vzdálenosti mezi kamerami, měli bychom ale brát v potaz to, že mezi dvojicí kamer vzniká slepá oblast, kam ani jedna kamera nevidí (platí pro rovnoběžné uspořádání kamer) Projekce bodů na obrazovou rovinu Pro každý snímek, ve kterém je šachovnice detekovaná můžeme popsat souřadný systém snímaného objektu v souřadném systému obrázku, na kterém se zobrazuje s pomocí translačního vektoru a rotační matice. Natočení jakéhokoli objektu v prostoru lze popsat jeho rotací podle jednotlivých os x,y,z o odpovídající úhly ψ,φ,θ. tedy s pomocí tří rotací v dvourozměrném prostoru. Pokud budeme otáčet objekt postupně kolem jednotlivých os, bude jeho výsledné otočení dáno součinem tří matic Rx(ψ),Ry(φ),Rz(θ), kde: 13
18 [ [ [ ] ] ] R x = 0 cos sin 0 sin cos (2.3) R y = 0 cos sin 0 sin cos (2.4) R y = 0 cos sin 0 sin cos (2.5) A tedy rotační matice R= Rx(ψ)Ry(φ)Rz(θ). Tato matice má tu vlastnost, že matice k ní inverzní je současně její transpozicí, takže RTR=RRT=I, kde I je jednotková matice. Posunutí objektu v prostoru popisujeme translačním vektorem, který vznikne jako rozdíl souřadnic dvou bodů, tedy pro translační vektor z bodu A[Ax, Ay, Az] do bodu B[Bx, By, Bz] platí, že T=AB=[Ax-Bx, Ay-By, Az-Bz]. Pokud se nám podaří nalézt takové R a T, které vytvářejí relaci mezi každým zaměřeným bodem na šachovnici PO a každým pozorovaným bodem v obraze PC, můžeme zapsat tuto relaci jako P C = R PO T (2.6) Pokud zkombinujeme tuto rovnici s maticí pro vnitřní parametry matice, získáme základní model mapování bodů reálného objektu do souřadného systému obrázku na displeji. Matice vnitřních parametrů kamery má 4 hodnoty (fx, fy, cx, cy). Z počtu proměnných, které je nutné vypočítat vyplývá, že pro kalibraci jedné kamery nám budou stačit dva snímky (vzhledem k tomu, že R a T se mění s každým snímkem a matice pro vnitřní parametry kamery zůstává konstantní) Epipolární geometrie Epipolární geometrie je vnitřní projektivní geometrie mezi dvěma pohledy. Je nezávislá na struktuře scény, závisí pouze na vnitřních parametrech kamer a na jejich relativní pozici. V podstatě je to geometrie protínání obrazových rovin s rovinami, jejichž průsečíkem je báze (přímka spojující středy kamer) Každá kamera má svůj vlastní střed projekce O a vlastní zobrazovací rovinu. Skutečný bod P se promítá do projekčních rovin jednotlivých kamer jako bod pl a Ilustrace 12: epipolární rovina pr. Dalšími body ležícími na této rovině jsou epipóly el a er, které jsou na jednotlivých zobrazovacích 14
19 rovinách obrazy center projekce opačné kamery. Jak je vidět na ilustraci, el je projekcí bodu Or a naopak. Abychom porozuměli využití epipólů, měli bychom si nejprve uvědomit, že na levé nebo pravé obrazové rovině vidíme pouze projekci skutečného bodu P, a nevíme, jaká je jeho vzdálenost, tedy pokud se díváme na obrazovou rovinu pravé kamery, vidíme pouze bod p r, což znamená, že skutečný bod P se může nacházet na libovolném místě polopřímky určené body p r a P. Stejně tak, když se díváme na obrazovou rovinu levé kamery, vidíme pouze bod pl, a opět skutečný bod P se může nacházet na na libovolném bodě polopřímky určené body pl a P. Pokud se ale podíváme na projekcí oné polopřímky na druhé projekční rovině, vidíme, že její projekce je shodná s polopřímkou určené body er a pr Matematický model epipolární geometrie Epipolární geometrie je algebraicky reprezentovaná esenciální maticí E a z ní vycházející fundamentální maticí F. Obě matice v sobě zahrnují informace o vzájemné poloze a otočení kamer s tím, že Fundamentální matice v sobě zahrnuje i vnitřní vlastnosti obou kamer Esenciální matice Pokud máme bod P, máme za úkol odvodit vztah, který je relací mezi jeho projekcemi pl a pr Vybereme si tedy souřadný systém jedné z kamer, ve kterém budeme výpočet provádět.. Vybereme si souřadnicový systém levé kamery se středem v Ol. V tomhle systému je lokace obrazu bodu P v zobrazovací rovině určena vektorem Pl a projekční bod druhé kamery je určen vektorem T. Bod Pr, jak jej vidí druhá kamera je určen vektorem Pr. Platí, že Pr=R(Pl-T). V následujícím kroku zavedeme epipolární rovinu. Z definice roviny určené bodem a normálovým vektorem víme, že pro každý bod X ležící na této rovině platí vztah (X-A).n=0. Protože rozdíl souřadnic bodů ležících na dané rovině bude vždy vytvářet vektor kolmý na normálový vektor n a tedy jejich součin bude vždy roven nule. Za body X a A můžeme dosadit Pl a T. Pokud bychom měli vektor kolmý na Pl a T (jako třeba jejich vektorový součin), mohli bychom jej dosadit jako normálový vektor n epipolární roviny, čímž bychom dostali rovnici: T P l T T P l =0 (2.7) Abychom vytvořili relaci mezi body ql a ql, což jsou body nacházející se na obrazech jednotlivých kamer, tím že nejdříve vytvoříme spojitost mezi obrazy Pl a Pr. Pr jsme zakreslili do roviny skrze rovnici Pr=R(Pl-T), kterou můžeme upravit na tvar Pl-T=PrR-1. Poté zavedeme substituci RT=R-1 a dosadíme do rovnice epipolární roviny, čímž dáme do přímé souvislosti oba obrazy bodu P na jednotlivých zobrazovacích rovinách. 15
20 T T (2.8) P r R T Pl Vektorový součin můžeme rozepsat jako násobení matic, nadefinujeme tedy matici S jako [ 0 T z T y T Pl =SP l SPl S = T z 0 T x T y T x 0 ] (2.9) Pokud substituujeme matici S do rovnice epipolární roviny, dostaneme (Pr)TRSPl=0. Esenciální matice E je definována jako součin RS, čímž vzniká rovnice (Pr)TEPl=0. Tato rovnice ale stále nevytváří relaci mezi body na obrazových rovinách jednotlivých kamer. Aby tohle platilo, zavedeme substituci pl=flpl/zl a odpovídající substituci pr=frpr/zr, což nás vede k rovnici T f r Pr Zr E f l Pl =0 Zl (2.10),kterou můžeme vynásobit ZrZl/flfl, abychom se dostali ke konečnému vztahu definující vztah mezi jednotlivými obrazy bodu P: T p r Epl = (2.11) Fundamentální matice Matice E obsahuje veškeré informace o geometrii jedné kamery ve vztahu k druhé, ale neobsahuje žádné informace o kamerách samotných. Ve skutečnosti se ale zajímáme o výpočty v souřadném systému pixelů na obrázku, a odpovídající epipolární linii na druhém obrázku. Abychom mohli uvést tyto souřadné systémy do relace, potřebujeme znát vnitřní parametry obou kamer. Dosadíme tedy vztah q=mp, kde q je bod na obrázku kamery, p je obraz bodu na zobrazovací rovině kamery a M je matice obsahující vnitřní parametry kamery (posunutí snímače...) do rovnice esenciální matice a dostaneme: T qr Mr E ql =0 Ml (2.12) Rovnici uspořádáme zavedením fundamentální matice: F= E M Tr M l (2.13) 16
21 Po substituci rovnice s esenciální maticí za rovnici s fundamentální maticí dostaneme výsledně: T q r F ql =0 (2.14) V praxi to znamená, že fundamentální rovnice v sobě zapouzdřuje převod obrazového bodu z pixelového souřadného systému do souřadného systému skutečného bodu, následně aplikuje výpočet s pomocí esenciální matice, což je vlastně nalezení obrazu bodu na zobrazovací rovině druhé kamery a poté jej převede do souřadného systému obrazu vytvářeného druhou kamerou. 2.2 Skutečná stereokamera Když jsme si položili teoretický základ pro epipolární geometrii, máme přibližnou představu o tom, jakým způsobem bychom měli stereokameru připravit a jakým způsobem budeme převádět obrazy jednotlivých bodů, na souřadnice v třírozměrném souřadném systému. Předtím, než se pokusíme kameru zapojit, musíme se nejdříve podrobně podívat na to, s jakým zařízením budeme pracovat. Přestože lze jako stereokameru použít takřka libovolnou kombinaci i těch nejlevnějších USB kamerek, budeme se v této části zabývat Ilustrace 13: stereokamera stereokamerou, která je na úkoly z oblasti počítačového vidění a VidereDesign rekonstrukce obrazu přímo stavěná. Jedná se o kameru od společnosti VidereDesign STH-DCSG-VAR Charakteristika stereokamery Stereo hlava VidereDesign je kompaktní nízkonapěťová stereokamera s rozhraním IEEE 1394 ( Jinak také FireWire, rychlé komunikační rozhraní používané pro práci s videotechnikou a pevnými disky). Skládá se ze dvou samostatných kamer upevněných na společném hliníkovém rámu. O snímání obrazu se stará CMOS modul s fyzickým rozlišením bodů 640x480 umožňující expozici všech bodů snímače v přesně stejnou dobu. Tato vlastnost činí kameru vhodnou do prostředí s rychle se pohybujícími objekty. CMOS snímače jsou MT9V022 senzory od firmy Micron Semiconductor, které se dodávají v barevné nebo monochromatické verzi. My máme k dispozici barevnou verzi snímače. Objektiv použitý na této kameře využívá standard C/CS a je tedy možné jej vyměnit. Kamera neposkytuje žádné jiné možnosti nastavení přímo na hardwaru. 17
22 Zapojení kamery Kamera vyžaduje, aby na hostitelském počítači byly 2 volné šestipinové konektory(f). Maximální délka kabelu je 4,5 metru. Pokud je nutné připojit kameru na delší vzdálenost, výrobce dodává i 10 metrový speciální kabel. Tato vzdálenost může být ještě navýšena přidáním 1394 opakovače. Při maximálním vytížení tato kamera zabere zhruba 60% šířky 400MBps pásma. 6-pinový kabel je nutný zejména proto, že kamera nemá žádný externí zdroj napájení, takže musí být napájena skrze 1394 rozhraní. Pokud je na počítači k dispozici pouze 4 pinový konektor, je nutné dokoupit 1394 hub, s externím napájením, aby stereokamera mohla fungovat. Tato situace se týká zejména notebooků. Ilustrace 15: připojení kamery k notebooku Ilustrace 14: připojení kamery PC 6 pinovými kabely Optická soustava kamery Ke kameře lze použít objektivy standardu C nebo CS. Objektivy standardu CS se připevňují 12,5mm od snímače, objektivy typu C se připevňují 17,5 mm od snímače, proto budou potřebovat prodlužovací prvek, který umožní je upevnit do této vzdálenosti. Optická propustnost F je měřítkem schopnosti objektivu propouštět světlo. Čím je F menší, tím více světla objektiv propouští a tím pádem je kamera schopna pracovat v tmavějším prostředí. Pro snímání v interiéru jsou vhodné hodnoty menší než 1,8. Ohnisková vzdálenost použité čočky přímo ovlivňuje všechny další charakteristiky optické soustavy kamery jako je zorný úhel a rozlišitelnost vzdálenosti objektů. Mějme na paměti, že čím větší je zorný úhel, tím horši je schopnost stereo systému rozlišovat vzdálenost snímaných objektů. 18
23 2.3 Snímání stereokamerou Přestože čistě teoreticky bychom mohli začít snímat okamžitě po zapojení kamery, brzy bychom došli ke zjištění, že poskytované snímky nejsou přesně srovnané a že máme problémy s určováním disparity jednotlivých pixelů. Když jsme si uváděli matematický model a vlastnosti kamery, počítali jsme s ideálním uspořádáním, kterého se nám ale čistě hardwarovým nastavením podaří dosáhnout pouze velice zřídka. Někteří odborníci dokonce radí, že poté co si člověk kameru nastaví tak aby byly jejich optické osy naprosto rovnoběžné, měl by kameru nějakým způsobem zafixovat a dále s ní nemanipulovat. Opravdu přesné nastavení kamer může zabrat i více než hodinu čistého času. I tak se ale nikdo nevyhne poslední přípravě před snímáním složené z kalibrace a rektifikace Kalibrace kamery V této kapitole se podrobně podíváme na postup, jakým lze kameru připravit pro snímání obrázků, které jsou co nejméně poznamenané vadami optické soustavy kamery a posunutím snímače. Poznamenejme, že kalibrace kamery už je funkce čistě softwarová a je pouze na tvůrci programu, jakým způsobem ji provede. Některé kamery mají kalibrační funkce uloženy přímo ve své paměti a jsou schopny ji provádět zcela automaticky. Přesto musíme počítat s tím, že ne všechny kamery jsou toho schopny a tedy Ilustrace 16: kalibrační obrazec musíme provést kalibraci sami. Vzhledem k tomu, že jsme využili knihovny OpenCV, budeme se zabývat tím, jakým způsobem se provádí kalibrace právě v rámci této knihovny. Metoda, kterou budeme používat spočívá ve snímání známého a dobře rozpoznatelného objektu kamerou. Na tomto místě nám dobře poslouží šachovnice o téměř libovolném počtu políček, kterou budeme s kamerou snímat. Co se týče velikosti šachovnice a počtu políček, bylo by dobré brát v potaz fakt, že pokud Ilustrace 17: správně detekovaná šachovnice 19
24 chceme provést měření co možná nejpřesněji, měli bychom zajistit, aby šachovnice zabírala nezanedbatelnou část obrazu a počet detekovaných bodů (rohů mezi políčky) byl dostatečný počet pro provedení výpočtu. Pokud provedeme dostatečný počet snímání, jsme schopni vypočítat vnitřní parametry kamery. Kalibrace stereokamery závisí na nalezení rotační matice R a translačního vektoru T mezi dvěma kamerami. Kalibrační funkce dokáže díky rozdílům v projekcích kalibračního obrazce (v našem případě šachovnice) matici R a vektor T nalézt. Platí, že pro každý bod v trojrozměrném prostoru můžeme odděleně použít kalibraci jedné kamery a bod P položit na souřadnice Pl=RlP+Tl a opačně Pr=RrP+Tr. Už víme, že v epipolární geometrii platí, že Pl=RT(Pr-T). Z těchto rovnic můžeme vyjádřit rovnice R=Rr(Rl)T a T= Tr-RTl. Funkce, kterou budeme používat pro kalibraci stereokamery v OpenCV je cvstereocalibrate, která nejprve provede kalibraci každé kamery zvlášť a poté vypočítané hodnoty dosadí do výše uvedených rovnic, čímž nalezne i rotační matici a translační vektor mezi obrazovými rovinami jednotlivých kamer. Vzpomeňme, že v teoretické části dokumentu jsme zjistili, že pro kalibraci jedné kamery jsou potřeba minimálně dva snímky, pro který bude tato funkce vracet přesně vypočítané hodnoty zatížené šumem v obrazu nebo zaokrouhlováním. Pokud bude vstupních obrazů více, funkce vrátí hodnoty, které přibližně a nejvhodněji odpovídají naměřeným skutečnostem. Pro použité této funkce musíme znát několik faktů, které nám dají dohromady spojení mezi reálným souřadným systémem. Jsou jimi souřadnice jednotlivých bodů objektu v reálném souřadnicovém systému, souřadnice těchto bodů v nasnímaných obrazech a matice určující počet nalezených bodů v jednotlivých obrazech. Jednotkou reálného souřadného systému může být jakákoli jednotka vzdálenosti, jako třeba centimetry nebo milimetry. Tím pádem budou všechny vypočítané hodnoty vztaženy k tomuto systému a veškerá projekce zpět do trojrozměrného souřadného systému provedená na základě těchto hodnot bude mapovat body z obrazu do systému s jednotkou použitou při kalibraci. Z hodnot, které vrací kalibrační funkce můžeme zjistit matici s parametry obou kamery deformační parametry optické soustavy každé kamery rotační matici R translační vektor T esenciální matici E fundamentální matici F všechny tyto hodnoty dohromady kompletně popisují optický systém naší stereokamery a jsou nutné pro další výpočty prováděné s těmito kamerami získanými stereo snímky. 20
25 2.3.2 Poté, Odstranění deformace obrazu co se nám podařilo získat parametry stereokamery, můžeme se pustit do odstranění deformace obrazu způsobené nepřesným uložením snímacího čipu a vadami čočky. K tomu nám dobře poslouží funkce undistort, které předáme vstupní obrázek, vnitřní parametry kamery a deformační parametry optické soustavy. Funkce spočítá takovou mapu deformačních koeficientů, že její účinek vyruší deformaci obrazu způsobenou chybami optické Ilustrace 18: deformovaný obrázek soustavy. Je potřeba si uvědomit, že kdybychom například při zpracovávání sekvence snímků, nebo videa volali stále dokola tuhle funkci, počítali bychom stále dokola jak výpočet koeficientů, tak jejich účinek na obrázek. Vzhledem k tomu, že koeficienty jsou vzhledem ke snímku neměnné (počítají se z parametrů kamery), je možné vypočítat si mapu deformačních koeficientů před zpracováváním obrazu a potom ji v každém snímku pouze aplikovat. K tomuto účelu Ilustrace 19: obrázek po přemapování slouží funkce cvinitundistortmap a cvremap. Pokud chceme použít snímky, které získáme stereokamerou k rekonstrukci obrazu, pravděpodobně se budeme dříve nebo později zabývat zjišťováním disparity pro jednotlivé pixely obrazu. Všechny algoritmy pro počítání disparity poskytují různé výsledky v závislosti na tom, jakým způsobem jsou uspořádány snímky, které má funkce porovnat. Ilustrace demonstrují, jak vypadá snímek, který nebyl ještě upraven a jak vypadá už upravený snímek po přemapování deformačními koeficienty. Všimněme si, že změna obrazu může být dost značná. Na ilustraci je vidět, že bylo zcela kompenzováno zakřivení šachovnice. Odstranění deformace nám poskytne výhodu při dalším zpracování těchto obrazů, zejména proto, že projekce snímaných objektů nebudou měnit svůj tvar v závislosti na tom, jakou částí čočky prochází jejich paprsky a podle toho, na kterou část optického senzoru tyto paprsky dopadají. 21
26 2.3.3 Rektifikace obrazu Rektifikace obrazu je proces, při kterém se obrazy jednotlivých kamer srovnají tak, aby jednotlivé sobě odpovídající body měly stejnou y[px] souřadnici, což mimo jiné způsobí to, že se vykompenzuje rozdíl v Y souřadnicích projekčních rovin jednotlivých kamer. OpenV implementuje Hartleyho a Bougetovu metody rektifikace. Hartleyho metoda se používá v případě, že snímky byly získány nezkalibrovanými kamerami, což ale není náš případ, takže tuto metodu vynecháme a budeme se podrobněji věnovat Bougetově metodě Bougetova metoda Bougetův algoritmus se snaží minimalizovat množství změn v jednotlivých obrazech (a tedy i i nepřesností pří zpětné projekci) při zachování co největší možné měřitelné oblasti. Aby dosáhl co nejmenšího počtu změn, nepracuje pouze s jedním obrazem, ale přizpůsobuje oba obrazy jejich teoretickému průměru. V praxi to vypadá tak, že algoritmus rozdělí rotační matici R na matice R1 a R2. Každá kamera má tedy poloviční rotaci, takže jejich optické osy směřují rovnoběžně s vektorovým součtem jejich původních optických os. Abychom spočítali Rrect, takovou, aby přenesla epipól levé kamery do nekonečna a a srovnala horizontálně epipolární linie, vytvoříme rotační matici tím, že začneme se směrem epipólu e1. Vezmeme souřadnice optické osy v obraze (cx,cy) jako počátek obrazu. Směr vektoru epipólu e1 je tedy rovnoběžný s translačním vektorem mezi středy projekce jednotlivých kamer.. (2.15) T e 1= T Další vektor e2 musí být svírat s e1 pravý úhel. Je vhodné zvolit e2 tak, aby svíral pravý úhel i s optickou osou. Toho dosáhneme vektorovým součinem e1 s vektorem optické osy a následnou normalizací výsledku. e 2= [ T y T x 0]T T 2 x T (2.16) 2 y Třetí vektor e3 je svírá pravý úhel s e1 a e2, takže jej snadno vypočítáme jejich vektorovým součinem: e 3=e 1 e2 (2.17) Matice, která nasměruje epipóĺ do nekonečna je tedy [ ] e 1 T R Rect = e 2 T e 3 T (2.18) 22
27 Horizontálního zarovnání obrazů kamer je potom dosaženo vynásobením maticemi Rl a Rr, kde Rl=RRectrl a Rr=RRectrr.. Spočítáme také rektifikované matice Mrect_l a Mrect_r, ale vrátíme je vynásobené s projekčními maticemi Pl a Pr, [ [ ][ ][ f xr P r =M Rectr P r ' = 0 0 r f yr 0 f xl P l =M Rectl Pl ' = 0 0 l c xl T x f yl c yl ] ] c xr T x c yr (2.19) Projekční P převede 3D bod v homogenních souřadnicích na 2D bod v homogenních souřadnicích způsobem: [ ][] X x Y P = y Z w 1 (2.20) Kde souřadnice na obrazu můžeme vypočítat jako x/w a y/w. Body v dvojrozměrném prostoru je možné zpět promítnout do 3D na základě jejich souřadnic v obrázku a vnitřních parametrů kamery. Tuto matici nazveme reprojekční matice Q a budeme ji využívat pro rekonstrukci třírozměrného obrazu. [ Q= T x c x c y f c x c x ' Tx ] (2.21) Pokud máme k dispozici homogenní bod a jeho přiřazenou disparitu, jsme schopni promítnout bod zpět do trojrozměrného prostoru dosazením do rovnice: [][ ] x X y Y Q = d Z 1 W (2.22) Souřadnice bodu ve 3D potom budou [X/W,Y/W,Z/W] Tuto metodu popisuje funkce cvstereorectify, která má jako vstupní parametry kamerové matice, deformační koeficienty, translační vektor T a rotační matici R. Funkce vraci 23
28 projekční rovnice Pr a Pl rektifikační rotační matice Rr a Rl reprojekční matici Q Po zavolání této funkce máme k dispozici všechna potřebná data k tomu, abychom přepočítali jednotlivé obrazy do jejich rektifikovaných podob. K tomu použijeme postupu velmi podobného jako u kalibrace, kdy jsme kompenzovali deformaci obrazu způsobenou optickou soustavou kamery. Tato zmínka o podobnosti postupu není náhodná, protože funkce cvremap přepočítává obraz podle parametrů uložených v deformačním vektoru pro x a y souřadnice zvlášť. Budeme tedy po prostudování této kapitoly přepočítávat všechny deformace obrazu najednou, tak, abychom se nakonec při jednom zavolání funkce cvremap získali rektifikovaný obraz bez artefaktů způsobených optickou soustavou kamery. Využijme tedy funkce cvinitundistortrectifymap, která při výpočtech zohledňuje jednak deformační parametry kamery a zároveň i úpravy nutné k tomu, aby obrazy byly rektifikované. Výsledné mapy stejně jako v kapitole o kalibraci předáme funkci cvremap Shrnutí Kalibrace a rektifikace jsou činnosti, které by se měly provést před každým snímáním, pokud je pravděpodobné, že se s kamerami mezi jednotlivými snímky pohnulo. Výstupní matice těchto funkcí v zásadní míře ovlivňují kvalitu výsledných snímků a tedy i vstupní data pro další kroky, jako je hledání disparity nebo nebo rekonstrukce třírozměrné scény. Vzhledem k tomu je vhodné při libovolných výpočtech pracovat s rektifikovanými a upravenými snímky Následující ilustrace ukazují, jaký vliv mají rektifikace a kalibrace vliv na výslednou podobu snímků a jako příklad jsou uvedeny i snímky ukazující mapu disparity pro různě ošetřené snímky. Ilustrace 20: ukázka různě kvalitních map disparity 24
29 Na ilustraci 20 je vidět, že nijak neupravené snímky jsou naprosto nepoužitelné (vlevo), uprostřed je disparita vypočítaná ze snímků, u kterých byla odstraněna deformace čočkou. Takový snímek je naprosto nepoužitelný. Až rektifikované snímky zkalibrovaných kamer se dají použít (vpravo). Ilustrace 21: neupravený stereo snímek Ilustrace 22: stereo snímek po kalibraci a odstranění deformace Ilustrace 23: rektifikovaný stereo snímek (horizontální linky přidány dodatečně) 25
30 3 Výpočet disparity V této kapitole se podrobně podíváme na možné způsoby výpočtů disparity mezi jednotlivými body v obraze. Pro hledání disparity můžeme použít nejen algoritmy na to specializované, které vyžadují rektifikované a upravené snímky, ale také metody pro hledání a sledování významných bodů v obraze. Podrobně se podíváme na to, jak jednotlivé algoritmy fungují a na jakém principu rozhodují vzájemnou náležitost jednotlivých pixelů obrazu. Než se podíváme na samotné algoritmy, připomeňme si nejdříve, co to vlastně disparita je a jaký význam má pro rekonstrukci trojrozměrné scény ze stereo snímku. Z kapitoly o triangulaci si pamatujeme, že obrazy bodu, které vidíme jsou pouze průnikem paprsků směřujícího z pozorovaného bodu do středu projekce jednotlivých kamer a obrazových rovin odpovídajících kamer. Trojúhelník tvořený středy projekcí a pozorovaným bodem je podobný trojúhelníku tvořeném průsečíky na obrazových rovinách. Základna tohoto trojúhelníku je rovna rozdílu disparity a vzdálenosti středů projekce kamer. Disparita je zároveň elegantním způsobem, jak pro každý bod v obraze určit jeho odpovídající protějšek v obraze druhé kamery, zároveň mapa disparity vzhledem ke své dvourozměrnosti může být snadno normalizována a zobrazena pro kontrolu. Jednotlivé algoritmy si rozdělíme do skupin podle jejich použitelnosti na jednotlivé body nebo celý obrázek. Do skupiny použitelné pro jednotlivé body patří jakékoli algoritmy schopné vyhledávat v obraze odpovídající si body. V tomhle textu se budeme zabývat algoritmem SURF. Do skupiny algoritmů použitelných na celé obrázky jsou Block matching (Kurt Konolige), Graph Cuts (Kolmogorov a Zabin) Pixel to pixel (Birchfield a Tomasi). Podívejme se nyní postupně na jednotlivé algoritmy. 3.1 Pixel to pixel Stereo Původní algoritmus pixel to pixel stereo byl určen především pro použití v při detekci hran objektů. Proto pro tento algoritmus bylo důležité hlavně zachování detailů na obou obrázcích, aby mohly být hranice mezi objekty detekovány, musí být co nejvýraznější a tedy ostré. Algoritmus neaplikuje na vstupní obrázky žádnou filtraci. Pouze sekvenčně porovnává vždy dva pixely. Mapa disparity vytvořená tímto algoritmem tedy není příliš vhodný pro účely rekonstrukce trojrozměrné scény, ale rozhodně stojí za to jej vyzkoušet. Algoritmus vnímá problém stereo korespondence bodů jako problém odpovídajících si pixelů v horizontální linii. Proto je nezbytně nutné, aby byly obrazy rektifkované a snímané kalibrovanými 26
31 kamerami. Vzhledem k účelu algoritmu je pixelové rozlišení dostatečné pro výpočet mapy disparity. Korespondence je zakódovaná jako sekvence uspořádaných dvojic (xl, xr) značící, že intenzity pixelů na xl a xr jsou obrazy jednoho bodu. Nespárované pixely jsou označeny jako překryté. Disparita je pak vypočítána jako xl-xr. Každé sekvenci je potom přiřazena hodnota γ(m), která ukazuje, jak je nepravděpodobné, že sekvence ukazuje obsahuje správně spárované pixely. Pro γ(m) vyhodnocení se používá jednoduchá hodnotící funkce přiřazující každému překrytí postih a odměnu za každý správně přiřazený pixel: Nm M =N occ occ N m r d x li, x ri (3.1) i=1 κocc je velikost postihu za překryv, Nocc je počet překryvů, Nm je počet odpovídajících si pixelů v sekvenci a κr. Tato funkce způsobuje, že se může stát, že celému objektu je přiřazena jedna disparita, je to proto, že každá změna disparity znamená mimo jiné i překryv, takže pokud se hodnoty pixelů začínají lišit, je pravděpodobné, že bude započata nová sekvence. Ilustrace 24: pixel to pixel stereo Tato funkce je v opencv implementována jako cvfindstereocorrespondence s třetím parametrem CV_DISPARITY_BIRCHFIELD. Ostatní jsou 2 zdrojové obrázky, jeden výstupní. Číselné parametry jsou podle pořadí: postih za překryv, odměna za souhlas, definice sady s velkou spolehlivostí, definice sady se střední spolehlivostí, definice sady s malou spolehlivostí. 27
32 3.2 Block matching V OpenCV je implementována metoda porovnávání bloků od Kurta Konoligeho. Funguje na principu oken součtu absolutního rozdílu. Tento algoritmus vykazuje rozdílné vysledky pro různě texturované scény. Čím je scéna složitější, tím je algoritmus lepší a tím více bodů na scéně bude mít správně vypočítanou disparitu. Příkladem takové scény může být třeba objekt položený před knihovnout, kde jsou jednotlivé knížky rozpoznatelné, nebo scéna obsahující přírodní objekdy, které mají obvykle bohatě texturovaný povrch. Míně vhodný je tento algoritmus do umělých prostředí, kde se vyskytují velké plochy bez výrazných textur, klasický jde o hladké zdi v pokoji a tak podobně. Funkce algoritmu se skládá ze tří fází: 1. filtrování vstupních snímků, vyvážení jasu a zlepšení ostrosti textur 2. hledání odpovídajícího okna na horizontální epipolární linii 3. filtrování pro odstranění chybných výsledků V první fázi jsou obrazy normalizovány, aby se redukovaly rozdíly v osvětlení. V druhé fázi probíhá samotná detekce s pomocí posouvajícího se okna. Podotkněme, že tento algoritmus vyžaduje, aby vstupní obrázky byly rektifikované, jinak není možné se pohybem po x souřadnici obrazu pohybovat zároveň i po epipolární linii vztažené k aktuálnímu bodu na levém snímku. Pro rovnoběžně umístěné kamery odpovídá nulová disparita nekonečnu, protože Ilustrace 25: disparita metodou block procházející paprsky jsou rovnoběžné a tedy se matching (zvýrazněná přidáno dodatečně) protnou v nekonečnu. Nastavením minimální disparity a počtu disparit se vytvoří oblast, která má být prohledávána. Tímto je možné algoritmus nastavit pro snímání objektů pouze v určité vzdálenosti. Pokud nebude disparita daného bodu intervalu <minimální disparita; minimální disparita + počet disparit>, bude bod označen jako ležící v nekonečnu. Podle vzorce, který jsme si uvedli už dříve Z= cf d (3.2) si snadno můžeme vypočítat vzdálenosti, pro jaké bude algoritmus vytvářet mapu. Kromě toho algoritmus sleduje, v jakém pořadí se shody nacházejí. Překrytí může sice způsobit, že některé pixely 28
33 nebudou mít žádný odpovídající protějšek, ale nemůže způsobit změnu pořadí shod. To znamená, že algoritmus si ověřováním pořadí shod hlídá, jestli někde nedošlo k chybě. Na ilustraci je mapa disparit vypočítaná metodou block matching. Všimněme si prosím červeně zvýrazněných oblastí, které ukazují místa, kde se na povrchu prakticky bez textury nachází vertikálně umístěné lišty, které algoritmus správně detekuje. Černé čtvercové oblasti na šachovnici jsou způsobeny tím, že dané pixely mají příliš velkou disparitu a jsou tedy vynechány. Algoritmus Block matching implementovaný v opencv je dobře nastavitelný rychlý algoritmus, který vypočítá disparitu pro obrázky v rozlišení 640x480 v řádu desetin, maximálně jednotek vteřin. Je proto vhodný pro tvorbu map disparity v aplikacích, kde je vyžadována především rychlost, a dobře se může uplatnit i jako algoritmus pro zjišťování překážek u mobilních robotů.. Dokladem budiž, že firma VidereDesign implementuje tento algoritmus do některých stereo hlav. Mezi nevýhody tohoto algoritmu patří bezesporu nízká přesnost a i to, že je obtížné algoritmus vhodně nastavit. Při nevhodném nastavení rychle klesá kvalita výsledné mapy. 3.3 Graph Cuts Algoritmus staví problém hledání disparity jako minimailizaci energií použitím MRF (Markov Random Fields). Využívá toho, že disparita se ve stereo snímcích mění pouze v daném rozsahu, a sousední pixely mají rozdíl svých disparit malý vyjma pixelů na hranách objektů. K výpočtům používá Pottův energetický model Tento algoritmus vytváři velmi přesné a přehledné mapy disparity pro rektifikované snímky. Bohužel výpočet trvá velmi dlouho a pohybuje se v řádu desítek vteřin pro obrazy v rozlišení 640x480. Ilustrace 26: disparita metodou graph cuts 29
34 3.4 Využití SURF pro zjišťování disparity Všechny metody, které jsme si doposud popsali vyžadují rektifikované snímky a pracují na celých obrázcích. Podívejme se teď na trochu odlišný postup, který nevyžaduje ani rektifikované snímky ani žádné filtrování. Zkusme využít pro výpočet disparity algoritmus, který se používá pro detekci objeku v obraze. Vzhledem ke svým charakteristikám se hodí algoritmus SURF. SURF znamená Speeded Up Robust Features a jak název napovídá jde o algoritmus na detekci významných bodů v obraze. To, že jsou tyto body robustní znamená, že je velká pravděpodobnost jejich Ilustrace 27: využití SURF při sledování pohybu opětovné detekce v jiném obraze. kamery Vzhledem k tomu, že algoritmus zjišťování a porovnávání bodů je velmi rychlý, je tato metoda vhodná i pro porovnávání pozice kamery snímající to samou scénu. Ilutrace 27 ukazuje, jaké body jsou algoritmem detekovány. Zeleně jsou zvýrazněny body, které nemají v předchozím snímku žádný odpovídající bod, červené linky spojují spárované body. Toho lze využít při zjišťování disparity daných bodů. Pokud máme k dispozici 2 snímky, můžeme body v nich detekovaná vzájemně porovnat. Jejich disparita pak bude tvořena velikostí vektoru rozdílu souřadnic těchto bodů. Jediným problémem, který by při této metodě mohl nastat je špatně detekovaný pár. Proto by bylo potřeba zjistit, jestli vektor vycházející z daného bodu odpovídá směrově vektorům, vycházejícím z bodů v určitém okolí. 30
35 4 Popis implementace programu 4.1 Požadavky na program a diskuze nad problémy Cílem této práce je vytvořit program, který bude schopen s pomocí stereokamery vytvářet 3D model prostředí. Přitom máme vycházet z význačných bodů detekovaných v obraze a reprezentovat nepřesnosti v učení polohy bodu. Celý problém se dá rozdělit na 3 podproblémy a ty dále na několik dílčích problémů: Získání stereo snímku Zpřístupnění kamery Získání snímku z video streamu Kalibrace kamery Odstranění deformace a rektifikace snímků Sledování pohybu kamery Zpracování stereo snímku Detekce významných bodů v obou snímcích Nalezení párů významných bodů Filtrování chybných párů Nalezení mapy disparity Korekce významných bodů Přepočet souřadnic 2D bodů na 3D souřadnice modelu Vytvoření a zobrazení modelu. Vytvoření polygonové sítě modelu Potažení modelu texturou Zobrazení modelu podle nastavené polohy kamery Z tohoto rozdělení se naskýtá rozdělení programu na tři vzájemně propojené celky, které by mohly být reprezentovány třídami. Každá ze tříd bude zapouzdřovat funkce nutné k řešení jednotlivých podproblémů. Aplikace by měla běžet na OS windows, a měla by být uživatelsky přívětivá, takže aplikace by měla být formulářového typu s možnostmi zobrazování aktuálních snímků na kamerách a renderování třírozměrné scény. Vzhledem k tomu, že všechny tyto operace jsou výkonově náročné a je pravděpodobné, že aplikace bude zpracovávat větší množství dat, bude lepší ji implementovat v kompilovaném jazyce, jako je C nebo C++... Bylo by vhodné využít už existujících knihoven, protože jinak bychom zabředli do psaní přístupu k webkamerám, directx apod. 31
36 Vzhledem k tomu, že existuje knihovna přímo určená k psaní takových aplikací týkajících se zpracovaní videa a počítačového vidění, bude při tvorbě tohoto programu využita. Její název je OpenCV. Vzhledem k tomu, že po mých špatných zkušenostech jsem nechtěl kombinovat Visual studio a OpenCV, bylo potřeba najít jiné prostředí, ve kterém by mohla být aplikace vytvořena. Volba padla na wxdev C++, které je vývojovým nástupcem už osvědčeného Dev C++. Zobrazování bude vzhledem bezproblémovosti tvorby aplikací pro OpenGL prováděno právě touto knihovnou. Přibližme si nyní zmiňované knihovny wxwidgets, OpenGL a OpenCV. 4.2 Využívané prostředky a knihovny Wxwidgets Knihovna wxwidgets je multiplatformní knihovna pro tvorbu formulářových aplikací. Je přenositelná, ale přesto aplikace v ní vytvořené vypadají nativně. Je použitelná pro C++, Python, Perl, Ruby a Javu. Tuto knihovnu používá spousta multiplatformních aplikací, z nihž můžeme uvést jako příklad VLC media player, BitTorrent a podobně. Multiplatformní možnosti této knihovny sice nebudou v našem případě pravděpodobně využity, přesto ale je Ilustrace 28: logo wxwidgets knihovna vhodná zejména pro jednoduchost práce s ní. Mezi další výhody této knihovny patří to, že je volně šiřitelná a dobře dostupná ke stažení. Vývoj wxwidgets začal v roce 1992 na University of Edinburgh. Původně začala jako projekt pro vytváření přenosttelných aplikací mezi *nixovymi systémy a Windows OpenCV OpenCV je zkratka pro Open Computer Vision library. Jde o knihovnu specializovanou na počítačové vidění a zpracování obrazu. Knihovna je multiplatformní a dá se stáhnout ve verízh pro Linux, Windows, OS X, přičemž se vyvíjí verze pro Python, Ruby, Matlab a jiné. Vývoj OpenCV začal původně jako výzkumný záměr firmy Intel pokročit ve vývoji takových výpočetně náročných operací, jako jsou ray-tracing v reálném čase a 3D zobrazovací panely. Mezi hlavní přispěvatele projektu patřil mimo jiné tým vyvíjející Intel Performance Library a veliký počet ruských optimalizačních expertů. V počátečních fázích byly cíle projektu definovány jako: 32
37 Pokrok ve výzkumu počítačového vidění poskytnutím nejen otevřeného, ale také optimalizovaného kódu, pro základní úkony počítačového vidění tak, aby už nebylo nutné dokola vyvíjet to, co už bylo vymyšleno. Rozšíření znalostí o počítačovém vidění poskytnutím základní infrastruktury, na které by mohli vývojáři dále vyvíjet své aplikace Umožnit pokrok komerčních aplikací týkajících se Ilustrace 29: logo OpenCV počítačového vidění První alfa verze OpenCV byla vydána v roce 2000 na IEEE Conference on Computer Vision and Pattern recognition. Dále následovalo několik beta verzí v letech Verze 1.0 byla vydána v roce 2006 a její vývoj byl oficiálně ukončen. V roce 2008 se dostalo OpenCV podpory od Willow Garage, která od té doby pokračuje ve vývoji. Pre release verze byla vydána říjnu OpenGL OpenGL je zkratkou pro Open Graphics Library, byla navržena firmou Silicon Graphics inc. Jako rozhraní k akcelerovaným grafickým kartám, nebo grafickým subsystémům. Byla navržena s důrazem na to, aby byla použitelná na různých typech grafických akcelerátorů a aby bylo možné ji použít i v případě, že grafický akcelerátor není dostupný. Knihovna OpenGL je Ilustrace 30: logo OpenGL použitelná na Linuxu, OS/2 a Windows. Z programátorského hlediska je knihovna navržena tak, aby byla použitelná takřka v libovolném programovacím jazyce, primárně jsou však k dispozici hlavičkový soubor pro C/C++. OpenGL se chová jako stavový automat. To znamená, že knihovna si uchovává vnitřní nastavení, dokud není změněno. To umožňuje změnu nastavení vykreslování během vykreslování. Další výhodou je, že funkce OpenGL mají menší počet parametrů. Vykreslování samotné se provádí procedurálně. Postupným voláním funkcí se vykreslí výsledný rastr, který je uložen ve framebufferu. 33
38 Přes svoji přenositelnost ovšem OpenGL nezaručuje, že při použití identického programu na různých platformách dosáhneme stejného výsledku, protože na různých platformách jsou čísla reprezentována odlišnými způsoby. Vykreslování v OpenGL se provádí s pomocí primitiv, což jsou základní tělesa, ze kterých se skládají složitější objekty a tedy i scény. Na výsledné objekty (ale i primitiva) lze aplikovat transformace, jako je rotace, translace či změna měřítka. Z hlediska datové reprezentace poskytuje OpenGL samotné pouze základní rozhraní. Existují však různé rozšiřující knihovny. Mezi nejznámější rozšiřující knihovnu patří GLU, kterou budeme v tomto při tvorbě programu využívat. 4.3 Implementace V této části textu se budeme zabývat samotnou implementací programu. Bude rozdělena na tři hlavní části týkající se implementace jednotlivých tříd. Na úvod zopakujme, že aplikace bude vytvořena v jazyce C++ s využitím knihoven wxwidgets, OpenCV a OpenGL. Půjde o aplikaci formulářového typu Získání stereo snímku Získaní stereo snímku je základním problémem, který je nutné vyřešit. Jako zdroj dat můžeme považovat buďto živý vstup z kamery nebo nebo soubory z disku. Co se vstupu z kamery týče, musíme počítat jak s kamerami připojenými přes USB, tak s kamerami připojenými přes FireWire (v našem případě kamera Videre Design). Třída, kterou se budeme zabývat musí být schopna získávat data ze všech vyjmenovaných vstupů a navíc tato data upravovat a zobrazovat. Zkrátka musí zapouzdřovat všechna data a operace týkající se práce s kamerou. Protože stereokamera, přestože umístěna na jeden rám, je vlastně dvojice samostatných kamer, budeme ke každé kameře přistupovat zvlášť a tedy bude tato třída napsána pouze pro práci s jednou kamerou. Proto bude pro každou kameru zvlášť vytvořena nová instance této třídy Získání snímku Pro získání snímku vytvoříme funkci, která bude zapouzdřovat práci se soubory, USB a FireWire. Funkce bude při svém spuštění pouze kontrolovat, v jakém režimu se nachází a podle toho bude odebírat data a ukládat je do vnitřního bufferu objektu. Pro čtení z USB kamery bude použita funkce opencv cvqueryframe. OpenCV obsahuje i funkci pro práci se soubory, takže pro načtení obrázku ze souboru bude použita funkce cvloadimage. Problém nastává při čtení dat z FireWire, z kterého OpenCV nedokáže nativně číst. Pro vyřešení tohoto problému využijeme volně dostupného 34
39 ovladače pro FireWire kamery CMU 1394, s pomocí kterého dokážeme přistupovat ke kameře. Naštěstí formát dat získaný tímto ovladačem je kompatibilní s formátem dat používaným OpenCV, takže pro získaní snímku nám stačí pouze inicializovat hlavičku IplImage ukazatelem na získaná data a dále jsme schopni s těmito daty zacházet jako s obyčejným obrázkem. Mějme však na paměti, že ukazatel ukazuje na buffer snímku v paměti, to znamená, že data v něm se mění. Musíme tedy stejně jako při práci s USB kamerou data zkopírovat do jiné oblasti paměti a tam je poté zpracovávat. Krom toho, že tato funkce obstarává získání obrázku, musí být také schopna tento obrázek upravovat, hlavně upravovat podle map pro rektifikaci a odstranění deformace obrazu. Zaveďme tedy další kontrolní proměnnou, která bude sloužit jako přepínač postprocessingu. Další věc, na kterou si musíme dát pozor jsou rozměry načítaných dat. Uživatel aplikace má možnost si zvolit, v jakém rozlišení chce data snímat a dále zpracovávat. Proto budou všechny nasnímané obrázky smrštěny (nebo roztaženy) tak, aby bylo splněno nastavení od uživatel. Samozřejmě pokud si uživatel zvolí nějaké rozlišení snímání dat, pokusí se aplikace změnit nastavení kamery na zvolené rozlišení Vykreslování videa Poté co jsme schopni načíst data do paměti, bylo by dobré, kdybychom byli schopni je periodicky vykreslovat na obrazovku. Vzhledem k tomu, že periodické vykreslování znamená fungování v uzavřeném cyklu, musíme umožnit běh této třídy jako samostatného vlákna. Knihovna OpenCV umožňuje vykreslování obrázku svými funkcemi, ovšem pouze do okna vytvořeného OpenCV, což se nám nehodí. Potřebujeme, aby se video vykreslovalo v určité části aplikace a to v okně, kde se budou nacházet i jiné prvky než samotný obrázek. Proto musíme najít způsob, jakým provést vykreslovaný obrázek do podoby, které rozumí wxwidgets. Tímto formátem dat není nic jiného, než pole hodnot RGB. Proto nejprve z obrázku extrahujeme RGB data a nad těmito daty inicializujeme strukturu obrázku wxwidgets. Poté co jsou data převedena už není problém použít je jako pozadí pro blokový prvek uživatelského prostředí a tak vytvořit okénko se zobrazovaným videem. Další věc, kterou by funkce měla umět je přidání informací do obrázku, čehož snadno dosáhneme tím, že do obrázku přidáme text, opět díky funkci OpenCV. Musíme si přitom ale dávat pozor, abychom tímto přidáním informací neznehodnotili obrázek, se kterým se možná ještě bude pracovat, proto vnitřní obrázek při zavolání této funkce nejprve zkopírujeme a potom teprve budeme provádět jednotlivé úpravy Sledování pohybu kamery Kamera by měla být schopna sledovat vlastní pohyb. Proto bude mít implementovánu funkčnost možnost využít detektoru SURF pro zjištění a sledování jednotlivých bodů v obraze. Kamera bude mít 2 buffery pro uložení deskriptorů a souřadnic detekovaných bodů. Jeden pro 35
40 aktuální snímek a jeden pro předchozí. Vzhledem k tomu, že by bylo neefektivní přesouvat data mezi těmito buffery při každém snímku, bude si kamera držet záznam o tom, jestli se provádí sudé nebo liché snímání a podle toho bude přistupovat k bufferu 0 nebo 1. Přehození bufferu se provádět jednoduchým odečtením aktuálního stavu od jedničky, takže bude zajištěno střídání po snímku. Jako malý dodatek bude kamera schopna vykreslovat sledované body a jejich spojení s odpovídajícími body v předchozím snímku. Tato funkce je časově a výpočetně náročná, proto bude implicitně vypnuta a uživateli bude ponechána možnost ji zapnout Kalibrace Vzhledem k tomu, že třída zapouzdřující práci s kamerou dokáže pracovat pouze s jednou kamerou, je nutné pro kalibraci vytvořit jinou třídu, která bude schopna ovládat obě kamery a pracovat s jejich daty. Tato třída bude provádět jenom jednu jedinou věc a tou je kalibrace stereokamery. Tudíž musí nejprve zastavit zobrazování videa, přepnout režim získávání dat a poté provést samotnou kalibraci. Ke kalibraci je použita funkce cvstereocalibrate. Poté co proběhne kalibrace ještě funkce inicializuje mapy pro korekci snímků jednotlivých kamer a společně s maticemi výstupními maticemi je předá zpět do tříd zodpovědných za získávání videa a nastaví, že mají získané snímky automaticky upravovat. Po implementaci těchto dvou tříd máme k dispozici dostačující zdroj dat umožňující kdykoli dodat potřebné snímky bez toho, abychom se museli starat o to, jakým způsobem jsou snímky obstarány. V případě, že aplikace zrovna neprovádí žádné výpočty, je zobrazováno aktuální video. Ilustrace 31: probíhající kalibrace s pomocí obrázků ze souboru 36
41 4.3.2 Zpracování stereo snímku V této kapitole se budeme věnovat různým způsobům zpracování stereo snímků. Půjde především o zjišťování map disparit a hledání odpovídajících si bodů. Funkce této třídy má smysl až v případě, že máme k dispozici rektifikované snímky. Podotkněme, že tento objekt bude schopen převzít kontrolu nad oběma kamerami, zastavit jejich automatické překreslování, provést výpočty a poté je zase spustit Detekce významných bodů Pro detekci významných bodů v obou obrazech je použit, stejně jako u detekce pohybu kamer algoritmus SURF. Tato třída je schopna použít už vypočítané hodnoty v bufferech jednotlivých objektů kamery nebo vypočítat nové Sestavení mapy disparity Pokud bude uživatel chtít, může pro zpřesnění vykreslované mapy využít vytváření podle mapy disparity. Vzhledem k tomu, že jednotlivé algoritmy poskytují značně se lišící výsledky, musí být implementovány všechny. Nastavení těchto algoritmů je je opět na uživateli Projekce do 3D Poté, co jsou k dispozici vybrané významné body a mapa disparit, provedeme zavoláním cvreprojectimageto3d mapy disparity do funkce projekci třírozměrných souřadnic. Tím dostaneme k dispozici mapu bodů třírozměrném nacházejících souřadném se v systému. Shrňme si nyní situaci. Máme k dispozici vybrané body a mapu disparit. Pro naše účely tohle ale nestačí, potřebujeme jednotlivé body propojit do polygonů a tak ještě Ilustrace 32: 2D trojúhelníková síť provedeme Delaunayovu triangulaci. OpenCV dokáže provádět Delaunayovu triangulaci pouze v dvourozměrném systému, proto bude triangulace provedena nad množinou detekovaných 37
42 významných bodů, čímž nám vznikne množina hran mezi těmito body. Abychom zjistili, jaké body odpovídají jaké hraně, musíme body dohledávat tím způsobem, že pro každou jednotlivou hranu se podíváme, jaké jsou souřadnice bodů, které spojuje ve 2D a souřadnice 3D bodů, které odpovídají těmto bodům, můžeme zjistit tak, že se podáváme na hodnoty 3D souřadnic v mapě na souřadnicích 2D bodu hrany. Postupným procházením jednotlivých trojúhelníků jsme pak schopni vytvořit matici trojúhelníků, kterými bude tvořen povrch modelu. Kromě toho musí být v matici těchto bodů ještě souřadnice pro texturování. Jakmile máme sestavenou i tuto strukturu, můžeme ji spolu s nastavením kamery a aktuálním snímkem z levé kamery předat objektu zajišťujícím vykreslení modelu. Na přiložené ilustraci je dobře vidět, jakým způsobem bude polygonální síť rozdělena Vykreslování modelu Vykreslování modelu je prováděno s pomocí OpenGL. K dispozici dostaneme matici polygonů objektu, takže jediné, co zbývá je zapouzdření těchto dat do jednoho objektu. Tyto objekty, můžeme je nazývat fragmenty modelu, budou poté sekvenčně vykreslovány tím způsobem, že se vždy nejdříve vykreslování podle nastaví nastavení kamery, obsahujícího translační vektor a rotační matici. Poté je Ilustrace 33: ukázka modelu provedeno vykreslení fragmentu modelu v cyklu po jednotlivých polygonech. Na ilustraci je vidět už hotový model vzniklý ze stereo snímku s šachovnicí. Z tohoto úhlu je zřetelně vidět vyčnívající obdélníkový objekt v popředí. Pokud bychom změnili úhel pohledu, naskytl by se nám pohled, jako je na ilustraci 34. Tam je zcela zřetelně vidět, že objekt před kamerou je obdélníkový objekt a že blízko za ním se nachází další objekt. Z tohoto pohledu dokonce můžeme říci, že přibližně 60 cm před kamerou je šachovnice a další objekt se nachází 30cm za ní. Kamera se nachází ve středu souřadného systému. 38
43 5 Závěr a shrnutí výsledků Závěrem lze říci, že s pomocí stereokamery lze dobře vytvářet modely prostředí, kde jednotlivé objekty vystupují z pozadí, a zároveň lze i sledovat povrchové vlastnosti těchto objektů, což činí ze stereokamery nástroj vhodný pro navigaci autonomních robotů. Pokud jsme ochotni věnovat výpočtu více času (nebo máme k dispozici rychlejší procesor), můžeme vytvořit i poměrně přesné modely okolního prostředí. Z hlediska snímání přesnosti je stereokamerou nejvíce zatíženo odchylkami při výpočtu map disparity a kvalitou kalibrace. Bohužel ale i při sebelepším Ilustrace 34: ukázka modelu, pohled s odstupem nastaveném aplikace i kamery vznikne hodně šumových dat, které sice částečně odfiltrovat (například body se zápornou vzdáleností), ale přesto obsahují výsledná hodně šumu. Další věc, se kterou se musíme umět vyrovnat je klesající přesnost stereoskopického systému s klesající disparitou. V našem programu provádíme znázornění této nepřesnosti nejjednodušším způsobem a to tak, že pro každý bod se vypočítají souřadnice bodů, které mají vždy o 1 menší a větší disparitu. Protože možná odchylka se udává jako hodnota nejmenšího dílku, je nalezen střed vzdálenosti těchto bodů a toho je poté vykreslena odchylka. Knihovna OpenCV se ukázala jako nenahraditelný a neocenitelný nástroj při práci se stereo kamerou a zpracování stereo snímků jednak pro rychlost s jakou je schopna zpracovávat získaná data a také proto, že je volně dostupná, což z ní při její kvalitě činí perfektní nástroj nejen pro výzkumné týmy, ale i domácí nadšence a kutily zabývající se robotikou a počítačovým viděním. Zjistili jsme také, že přesnost výsledného modelu je značně ovlivněna každou činností, která je s modelem prováděna. Pokud ale dokážeme stereo snímek správně zpracovat, jsme schopni dosáhnout přesnosti v řádu centimetrů pro blízké objekty. 39
GEOMETRICKÁ OPTIKA. Znáš pojmy A. 1. Znázorni chod význačných paprsků pro spojku. Čočku popiš a uveď pro ni znaménkovou konvenci.
Znáš pojmy A. Znázorni chod význačných paprsků pro spojku. Čočku popiš a uveď pro ni znaménkovou konvenci. Tenká spojka při zobrazování stačí k popisu zavést pouze ohniskovou vzdálenost a její střed. Znaménková
Fyzikální sekce přírodovědecké fakulty Masarykovy univerzity v Brně FYZIKÁLNÍ PRAKTIKUM. Fyzikální praktikum 2
Fyzikální sekce přírodovědecké fakulty Masarykovy univerzity v Brně FYZIKÁLNÍ PRAKTIKUM Fyzikální praktikum 2 Zpracoval: Markéta Kurfürstová Naměřeno: 16. října 2012 Obor: B-FIN Ročník: II Semestr: III
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
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 MĚŘICKÝ SNÍMEK Základem měření je fotografický snímek, který je v ideálním případě
ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ
ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ Parametrické vyjádření přímky v rovině Máme přímku p v rovině určenou body A, B. Sestrojíme vektor u = B A. Pro bod B tím pádem platí: B = A + u. Je zřejmé,
Stereofotogrammetrie
Stereootogrammetrie Princip stereoskopického vidění a tzv. yziologické paralaxy Paralaxa je relativní změna v poloze stacionárních objektů způsobená změnou v geometrii pohledu. horizontální yziologická
5.2.3 Duté zrcadlo I. Předpoklady: 5201, 5202
5.2.3 Duté zrcadlo I Předpoklady: 5201, 5202 Dva druhy dutých zrcadel: kulové = odrazivá plocha zrcadla je částí kulové plochy snazší výroba, ale horší zobrazení (aby se zobrazovalo přesně, musíme použít
Základní pojmy Zobrazení zrcadlem, Zobrazení čočkou Lidské oko, Optické přístroje
Optické zobrazování Základní pojmy Zobrazení zrcadlem, Zobrazení čočkou Lidské oko, Optické přístroje Základní pojmy Optické zobrazování - pomocí paprskové (geometrické) optiky - využívá model světelného
Kapitola 2. o a paprsek sil lze ztotožnit s osou x (obr.2.1). sil a velikost rovnou algebraickému součtu sil podle vztahu R = F i, (2.
Kapitola 2 Přímková a rovinná soustava sil 2.1 Přímková soustava sil Soustava sil ležící ve společném paprsku se nazývá přímková soustava sil [2]. Působiště všech sil m i lze posunout do společného bodu
5.2.3 Duté zrcadlo I. Předpoklady: 5201, 5202
5.2.3 Duté zrcadlo I Předpoklady: 520, 5202 Dva druhy dutých zrcadel: Kulové zrcadlo = odrazivá plocha zrcadla je částí kulové plochy snazší výroba, ale horší zobrazení (pro přesné zobrazení musíme použít
M I K R O S K O P I E
Inovace předmětu KBB/MIK SVĚTELNÁ A ELEKTRONOVÁ M I K R O S K O P I E Rozvoj a internacionalizace chemických a biologických studijních programů na Univerzitě Palackého v Olomouci CZ.1.07/2.2.00/28.0066
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
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 Ú k o l : P o t ř e b : Změřit ohniskové vzdálenosti spojných čoček různými metodami. Viz seznam v deskách u úloh na pracovním stole. Obecná
Geometrická optika. předmětu. Obrazový prostor prostor za optickou soustavou (většinou vpravo), v němž může ležet obraz - - - 1 -
Geometrická optika Optika je část fyziky, která zkoumá podstatu světla a zákonitosti světelných jevů, které vznikají při šíření světla a při vzájemném působení světla a látky. Světlo je elektromagnetické
Kalibrační proces ve 3D
Kalibrační proces ve 3D FCC průmyslové systémy společnost byla založena v roce 1995 jako součást holdingu FCC dodávky komponent pro průmyslovou automatizaci integrace systémů kontroly výroby, strojového
11 Zobrazování objektů 3D grafiky
11 Zobrazování objektů 3D grafiky Studijní cíl Tento blok je věnován základním algoritmům zobrazení 3D grafiky. Postupně budou probrány základní metody projekce kolmé promítání, rovnoběžné promítání a
Optika pro mikroskopii materiálů I
Optika pro mikroskopii materiálů I Jan.Machacek@vscht.cz Ústav skla a keramiky VŠCHT Praha +42-0- 22044-4151 Osnova přednášky Základní pojmy optiky Odraz a lom světla Interference, ohyb a rozlišení optických
Lingebraické kapitolky - Analytická geometrie
Lingebraické kapitolky - Analytická geometrie Jaroslav Horáček KAM MFF UK 2013 Co je to vektor? Šipička na tabuli? Ehm? Množina orientovaných úseček majících stejný směr. Prvek vektorového prostoru. V
3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY
3. ÚVOD DO ANALYTICKÉ GEOMETRIE 3.1. ANALYTICKÁ GEOMETRIE PŘÍMKY V této kapitole se dozvíte: jak popsat bod v rovině a v prostoru; vzorec na výpočet vzdálenosti dvou bodů; základní tvary rovnice přímky
4. Statika základní pojmy a základy rovnováhy sil
4. Statika základní pojmy a základy rovnováhy sil Síla je veličina vektorová. Je určena působištěm, směrem, smyslem a velikostí. Působiště síly je bod, ve kterém se přenáší účinek síly na těleso. Směr
5.2.8 Zobrazení spojkou II
5.2.8 Zobrazení spojkou II Předpoklady: 5207 Př. 1: Najdi pomocí význačných paprsků obraz svíčky, jejíž vzdálenost od spojky je menší než její ohnisková vzdálenost. Postupujeme stejně jako v předchozích
Fotografický aparát. Fotografický aparát. Fotografický aparát. Fotografický aparát. Fotografický aparát. Fotografický aparát
Michal Veselý, 00 Základní části fotografického aparátu tedy jsou: tělo přístroje objektiv Pochopení funkce běžných objektivů usnadní zjednodušená představa, že objektiv jako celek se chová stejně jako
SBÍRKA ŘEŠENÝCH FYZIKÁLNÍCH ÚLOH
SBÍRKA ŘEŠENÝCH FYZIKÁLNÍCH ÚLOH MECHANIKA MOLEKULOVÁ FYZIKA A TERMIKA ELEKTŘINA A MAGNETISMUS KMITÁNÍ A VLNĚNÍ OPTIKA FYZIKA MIKROSVĚTA ODRAZ A LOM SVĚTLA 1) Index lomu vody je 1,33. Jakou rychlost má
2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2
Výpočet transformačních koeficinetů vybraných 2D transformací Jan Ježek červen 2008 Obsah Odvození transformačního klíče vybraných 2D transformací 2 Meto vyrovnání 2 2 Obecné vyjádření lineárních 2D transformací
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
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 Ing. Jakub Ulmann Zobrazování optickými soustavami 1. Optické
Michal Zamboj. December 23, 2016
Meziřádky mezi kuželosečkami - doplňkový materiál k přednášce Geometrie Michal Zamboj December 3, 06 Pozn. Najdete-li chybu, neváhejte mi napsat, může to ušetřit tápání Vašich kolegů. Pozn. v dokumentu
Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17
Mgr. Tomáš Kotler I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17 VÝCHOZÍ TEXT A OBRÁZEK K ÚLOZE 1 Je dán rovinný obrazec, v obrázku vyznačený barevnou výplní, který představuje
PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII
PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII V úvodu analytické geometrie jsme vysvětlili, že její hlavní snahou je popsat geometrické útvary (body, vektory, přímky, kružnice,...) pomocí čísel nebo proměnných.
Centrovaná optická soustava
Centrovaná optická soustava Dvě lámavé kulové ploch: Pojem centrovaná optická soustava znamená, že splývají optické os dvou či více optických prvků. Základním příkladem takové optické soustav jsou dvě
Michal Zamboj. January 4, 2018
Meziřádky mezi kuželosečkami - doplňkový materiál k přednášce Geometrie Michal Zamboj January 4, 018 Pozn. Najdete-li chybu, neváhejte mi napsat, může to ušetřit tápání Vašich kolegů. Pozn. v dokumentu
Úhly a jejich vlastnosti
Úhly a jejich vlastnosti Pojem úhlu patří k nejzákladnějším pojmům geometrie. Zajímavé je, že úhel můžeme definovat několika různými způsoby, z nichž má každý své opodstatnění. Definice: Úhel je část roviny
Praktická geometrická optika
Praktická geometrická optika Václav Hlaváč České vysoké učení technické v Praze Centrum strojového vnímání (přemosťuje skupiny z) Český institut informatiky, robotiky a kybernetiky Fakulta elektrotechnická,
Grafika na počítači. Bc. Veronika Tomsová
Grafika na počítači Bc. Veronika Tomsová Proces zpracování obrazu Proces zpracování obrazu 1. Snímání obrazu 2. Digitalizace obrazu převod spojitého signálu na matici čísel reprezentující obraz 3. Předzpracování
Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA
Rovinné přetvoření Rovinné přetvoření, neboli, jak se také často nazývá, geometrická transformace je vlastně lineární zobrazení v prostoru s nějakou soustavou souřadnic. Jde v něm o přepočet souřadnic
M - Příprava na 3. čtvrtletní písemnou práci
M - Příprava na 3. čtvrtletní písemnou práci Určeno pro třídu ODK VARIACE 1 Tento dokument byl kompletně vytvořen, sestaven a vytištěn v programu dosystem - EduBase. Více informací o programu naleznete
VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A
VEKTORY Vektorem se rozumí množina všech orientovaných úseček, které mají stejnou velikost, směr a orientaci, což vidíme na obr. 1. Jedna konkrétní orientovaná úsečka se nazývá umístění vektoru na obr.
Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy
Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy Lukáš Havrlant Univerzita Palackého 10. ledna 2014 Primární zdroj Jiří Adámek: Foundations of Coding. Strany 137 160. Na webu ke stažení, heslo:
CVIČNÝ TEST 36. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17
CVIČNÝ TEST 36 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 I. CVIČNÝ TEST 1 Určete iracionální číslo, které je vyjádřeno číselným výrazem (6 2 π 4
0.1 Úvod do lineární algebry
Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Lineární rovnice o 2 neznámých Definice 011 Lineární rovnice o dvou neznámých x, y je rovnice, která může být vyjádřena ve tvaru ax + by = c, kde
5.2.12 Dalekohledy. y τ τ F 1 F 2. f 2. f 1. Předpoklady: 5211
5.2.12 Dalekohledy Předpoklady: 5211 Pedagogická poznámka: Pokud necháte studenty oba čočkové dalekohledy sestavit v lavicích nepodaří se Vám hodinu stihnout za 45 minut. Dalekohledy: už z názvu poznáme,
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
b) Početní řešení Na rozdíl od grafického řešení určíme při početním řešení bod, kterým nositelka výslednice bude procházet. Mějme soustavu sil, která obsahuje n - sil a i - silových dvojic obr.36. Obr.36.
Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic
Přednáška třetí (a pravděpodobně i čtvrtá) aneb Úvod do lineární algebry Matice a soustavy rovnic Lineární rovnice o 2 neznámých Lineární rovnice o 2 neznámých Lineární rovnice o dvou neznámých x, y je
0.1 Úvod do lineární algebry
Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání
3.2. ANALYTICKÁ GEOMETRIE ROVINY
3.2. ANALYTICKÁ GEOMETRIE ROVINY V této kapitole se dozvíte: jak popsat rovinu v třídimenzionálním prostoru; jak analyzovat vzájemnou polohu bodu a roviny včetně jejich vzdálenosti; jak analyzovat vzájemnou
1 Řešení soustav lineárních rovnic
1 Řešení soustav lineárních rovnic 1.1 Lineární rovnice Lineární rovnicí o n neznámých x 1,x 2,..., x n s reálnými koeficienty rozumíme rovnici ve tvaru a 1 x 1 + a 2 x 2 +... + a n x n = b, (1) kde koeficienty
Odvození středové rovnice kružnice se středem S [m; n] a o poloměru r. Bod X ležící na kružnici má souřadnice [x; y].
Konzultace č. 6: Rovnice kružnice, poloha přímky a kružnice Literatura: Matematika pro gymnázia: Analytická geometrie, kap. 5.1 a 5. Sbírka úloh z matematiky pro SOŠ a studijní obory SOU. část, kap. 6.1
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ě
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 II Ing. Jakub Ulmann Zobrazování optickými soustavami 1. Optické
Digitální fotografie. Mgr. Milana Soukupová Gymnázium Česká Třebová
Digitální fotografie Mgr. Milana Soukupová Gymnázium Česká Třebová Téma sady didaktických materiálů Digitální fotografie I. Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu
2.5 Rovnováha rovinné soustavy sil
Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 2.5 Rovnováha rovinné soustavy sil Rovnováha sil je stav, kdy na těleso působí více sil, ale jejich výslednice
7 Transformace 2D. 7.1 Transformace objektů obecně. Studijní cíl. Doba nutná k nastudování. Průvodce studiem
7 Transformace 2D Studijní cíl Tento blok je věnován základním principům transformací v rovinné grafice. V následujícím textu bude vysvětlen rozdíl v přístupu k transformacím u vektorového a rastrového
X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)
.6. Analtická geometrie lineárních a kvadratických útvarů v rovině. 6.1. V této kapitole budeme studovat geometrické úloh v rovině analtick, tj. lineární a kvadratické geometrické útvar vjádříme pomocí
CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17
CVIČNÝ TEST 15 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 I. CVIČNÝ TEST VÝCHOZÍ TEXT K ÚLOZE 1 Je dána čtvercová mřížka, v níž každý čtverec má délku
A[a 1 ; a 2 ; a 3 ] souřadnice bodu A v kartézské soustavě souřadnic O xyz
1/15 ANALYTICKÁ GEOMETRIE Základní pojmy: Soustava souřadnic v rovině a prostoru Vzdálenost bodů, střed úsečky Vektory, operace s vektory, velikost vektoru, skalární součin Rovnice přímky Geometrie v rovině
Vzdálenosti ve sluneční soustavě: paralaxy a Keplerovy zákony
Vzdálenosti ve sluneční soustavě: paralaxy a Keplerovy zákony Astronomové při sledování oblohy zaznamenávají především úhly a pozorují něco, co se nazývá nebeská sféra. Nicméně, hvězdy nejsou od Země vždy
19 Eukleidovský bodový prostor
19 Eukleidovský bodový prostor Eukleidovským bodovým prostorem rozumíme afinní bodový prostor, na jehož zaměření je definován skalární součin. Víme, že pomocí skalárního součinu jsou definovány pojmy norma
Úvod do mobilní robotiky AIL028
md at robotika.cz http://robotika.cz/guide/umor07/cs 20. prosince 2007 1 2 3D model světa ProMIS Cvičení hledání domečku Model štěrbinové kamery Idealizovaný jednoduchý model kamery Paprsek světla vychází
Rozdělení přístroje zobrazovací
Optické přístroje úvod Rozdělení přístroje zobrazovací obraz zdánlivý subjektivní přístroje lupa mikroskop dalekohled obraz skutečný objektivní přístroje fotoaparát projekční přístroje přístroje laboratorní
Obecný Hookeův zákon a rovinná napjatost
Obecný Hookeův zákon a rovinná napjatost Základní rovnice popisující napěťově-deformační chování materiálu při jednoosém namáhání jsou Hookeův zákon a Poissonův zákon. σ = E ε odtud lze vyjádřit také poměrnou
1 Linearní prostory nad komplexními čísly
1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)
Měření průtoku kapaliny s využitím digitální kamery
Měření průtoku kapaliny s využitím digitální kamery Mareš, J., Vacek, M. Koudela, D. Vysoká škola chemicko-technologická Praha, Ústav počítačové a řídicí techniky, Technická 5, 166 28, Praha 6 e-mail:
Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17
Mgr. Tomáš Kotler I. Cvičný test 2 II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17 1 bod 1 Určete průsečík P[x, y] grafů funkcí f: y = x + 2 a g: y = x 1 2, které jsou definovány na množině reálných
Střední škola automobilní Ústí nad Orlicí
Síla Základní pojmy Střední škola automobilní Ústí nad Orlicí vzájemné působení těles, které mění jejich pohybový stav nebo tvar zobrazuje se graficky jako úsečka se šipkou ve zvoleném měřítku m f je vektor,
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ě
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 3 Ing. Jakub Ulmann Digitální fotoaparát Jak digitální fotoaparáty
Poznámka. V některých literaturách se pro označení vektoru také používá symbolu u.
Vektory, operace s vektory Ž3 Orientovaná úsečka Mějme dvojici bodů, (na přímce, v rovině nebo prostoru), které spojíme a vznikne tak úsečka. Pokud budeme rozlišovat, zda je spojíme od k nebo od k, říkáme,
Bodový zdroj světla A vytvoří svazek rozbíhajících se paprsků, které necháme projít optickou soustavou.
Optické zobrazení Optické zobrazení je proces, kterým optické soustavy vytvářejí obrazy reálných předmětů. Tyto soustavy mění chod světelných paprsků. Obsahují zrcadla, čočky, odrazné hranoly aj. Princip
Vektorové prostory R ( n 1,2,3)
n Vektorové prostory R ( n 1,2,) (Velikonoční doplněk ke cvičení LAG) Prvky kartézské mocniny R RR R jsou uspořádané trojice reálných čísel, které spolu s operacemi ( a1, a2, a) ( b1, b2, b) ( a1b1, a2
- shodnost trojúhelníků. Věta SSS: Věta SUS: Věta USU:
1/12 PLANIMETRIE Základní pojmy: Shodnost, podobnost trojúhelníků Středová souměrnost, osová souměrnost, posunutí, otočení shodná zobrazení Středový a obvodový úhel Obsahy a obvody rovinných obrazců 1.
3.4.2 Rovnováha Rovnováha u centrální rovinné silové soustavy nastává v případě, že výsledná síla nahrazující soustavu je rovna nule. Tedy. Obr.17.
Obr.17. F F 1x = F.cos α1,..., Fnx = F. cos 1y = F.sin α1,..., Fny = F. sin α α n n. Původní soustava je nyní nahrazena děma soustavami sil ve směru osy x a ve směru osy y. Tutu soustavu nahradíme dvěma
6 Samodružné body a směry afinity
6 Samodružné body a směry afinity Samodružnými body a směry zobrazení rozumíme body a směry, které se v zobrazují samy na sebe. Například otočení R(S má jediný samodružný bod, střed S, anemá žádný samodružný
2. Určete jádro KerL zobrazení L, tj. nalezněte alespoň jednu jeho bázi a určete jeho dimenzi.
Řešené příklady z lineární algebry - část 3 Typové příklady s řešením Příklad 3.1: Zobrazení L: P 3 R 23 je zobrazení z prostoru P 3 všech polynomů do stupně 3 (včetně nulového polynomu) do prostoru R
Fyzikální praktikum FJFI ČVUT v Praze
Fyzikální praktikum FJFI ČVUT v Praze Úloha 6: Geometrická optika Datum měření: 8. 4. 2016 Doba vypracovávání: 10 hodin Skupina: 1, pátek 7:30 Vypracoval: Tadeáš Kmenta Klasifikace: 1 Zadání 1. DÚ: V přípravě
Shodná zobrazení. bodu B ležet na na zobrazené množině b. Proto otočíme kružnici b kolem
Shodná zobrazení Otočení Příklad 1. Jsou dány tři různé soustředné kružnice a, b a c. Sestrojte rovnostranný trojúhelník ABC tak, aby A ležel na a, B ležel na b a C ležel na c. Řešení. Zvolíme vrchol A
7.5.3 Hledání kružnic II
753 Hledání kružnic II Předpoklady: 750 Pedagogická poznámka: Tato hodina patří mezi vůbec nejtěžší Není reálné předpokládat, že by většina studentů dokázala samostatně přijít na řešení, po čase na rozmyšlenou
Monotonie a lokální extrémy. Konvexnost, konkávnost a inflexní body. 266 I. Diferenciální počet funkcí jedné proměnné
66 I. Diferenciální počet funkcí jedné proměnné I. 5. Vyšetřování průběhu funkce Monotonie a lokální etrémy Důsledek. Nechť má funkce f) konečnou derivaci na intervalu I. Je-li f ) > 0 pro každé I, pak
37. PARABOLA V ANALYTICKÉ GEOMETRII
37.. Napiš rovnici paraboly, která má osu rovnoběžnou s osou y a prochází body A 0; 60, B 4; 8, C 8;36. 0m p60n 4m p8n 8m p36n m p pn 0 6 8 6 mm p pn 64 6 7 3 mm p pn 6 8m64 p 3 64 6m9 p Je-li osa rovnoběžná
Kreslení elipsy Andrej Podzimek 22. prosince 2005
Kreslení elipsy Andrej Podzimek 22. prosince 2005 Kreslení elipsy v obecné poloze O co půjde Ukázat přesný matematický model elipsy Odvodit vzorce pro výpočet souřadnic důležitých bodů Nalézt algoritmus
CVIČNÝ TEST 37. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 5 III. Klíč 13 IV. Záznamový list 15
CVIČNÝ TEST 37 Mgr. Tomáš Kotler OBSAH I. Cvičný test 2 II. Autorské řešení 5 III. Klíč 13 IV. Záznamový list 15 I. CVIČNÝ TEST VÝCHOZÍ TEXT A OBRÁZEK K ÚLOZE 1 Na staré hliněné desce je namalován čtverec
2. Kinematika bodu a tělesa
2. Kinematika bodu a tělesa Kinematika bodu popisuje těleso nebo také bod, který se pohybuje po nějaké trajektorii, křivce nebo jinak definované dráze v závislosti na poloze bodu na dráze, rychlosti a
Elementární křivky a plochy
Příloha A Elementární křivky a plochy A.1 Analytický popis geometrických objektů Geometrické vlastnosti, které jsme dosud studovali, se týkaly především základních geometrických objektů bodů, přímek, rovin
Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm.
1. Podstata světla Světlo je elektromagnetické vlnění, které má ve vakuu vlnové délky od 390 nm do 770 nm. Vznik elektromagnetických vln (záření): 1. při pohybu elektricky nabitých částic s nenulovým zrychlením
Rovnice přímky vypsané příklady. Parametrické vyjádření přímky
Rovnice přímky vypsané příklady Zdroj: Vše kromě příkladu 3.4: http://kdm.karlin.mff.cuni.cz/diplomky/jan_koncel/rovina.php?kapitola=parametrickevyjadre ni Příklady 3.5 a 3.7-1 a 3: http://kdm.karlin.mff.cuni.cz/diplomky/jan_koncel/rovina.php?kapitola=obecnarovnice
kamerou. Dle optických parametrů objektivu mohou v získaném obraze nastat geometrická
Odstranění geometrických zkreslení obrazu Vstupní obraz pro naše úlohy získáváme pomocí optické soustavy tvořené objektivem a kamerou. Dle optických parametrů objektivu mohou v získaném obraze nastat geometrická
( ) ( ) ( ) ( ) Skalární součin II. Předpoklady: 7207
78 Skalární součin II Předpoklady: 707 Pedagogická poznámka: Hodina má tři části, považuji tu prostřední za nejméně důležitou a proto v případě potřeby omezuji hlavně ji Na začátku hodiny je důležité nechat
2.1.6 Jak vidíme. Předpoklady: Pomůcky: sady čoček, další čočky, zdroje rovnoběžných paprsků, svíčka
2.1.6 Jak vidíme Předpoklady: 020105 Pomůcky: sady čoček, další čočky, zdroje rovnoběžných paprsků, svíčka Pedagogická poznámka: V ideálním případě by se látka probírala dvě vyučovací hodiny v první by
Funkce, funkční závislosti Lineární funkce
Funkce, funkční závislosti Lineární funkce Obsah: Definice funkce Grafické znázornění funkce Konstantní funkce Lineární funkce Vlastnosti lineárních funkcí Lineární funkce - příklady Zdroje Z Návrat na
Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace
Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi
Otázky z optiky. Fyzika 4. ročník. Základní vlastnosti, lom, odraz, index lomu
Otázky z optiky Základní vlastnosti, lom, odraz, index lomu ) o je světlo z fyzikálního hlediska? Jaké vlnové délky přísluší viditelnému záření? - elektromagnetické záření (viditelné záření) o vlnové délce
Nerovnice v součinovém tvaru, kvadratické nerovnice
Nerovnice v součinovém tvaru, kvadratické nerovnice Příklad: Pro která x R je součin x x 5 kladný? Řešení: Víme, že součin je kladný, mají-li oba činitelé stejné znaménko. Tedy aby platilo x x 5 0, musí
Skládání různoběžných kmitů. Skládání kolmých kmitů. 1) harmonické kmity stejné frekvence :
Skládání různoběžných kmitů Uvědomme si principiální bod tohoto problému : na jediný hmotný bod působí dvě nezávislé pružné síl ve dvou různých směrech. Jednotlivé mechanické pohb, které se budou skládat,
VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C)
VZOROVÝ TEST PRO 3. ROČNÍK (3. A, 5. C) max. 3 body 1 Zjistěte, zda vektor u je lineární kombinací vektorů a, b, je-li u = ( 8; 4; 3), a = ( 1; 2; 3), b = (2; 0; 1). Pokud ano, zapište tuto lineární kombinaci.
Funkce jedné reálné proměnné. lineární kvadratická racionální exponenciální logaritmická s absolutní hodnotou
Funkce jedné reálné proměnné lineární kvadratická racionální exponenciální logaritmická s absolutní hodnotou lineární y = ax + b Průsečíky s osami: Px [-b/a; 0] Py [0; b] grafem je přímka (získá se pomocí
9 Kolmost vektorových podprostorů
9 Kolmost vektorových podprostorů Od kolmosti dvou vektorů nyní přejdeme ke kolmosti dvou vektorových podprostorů. Budeme se zabývat otázkou, kdy jsou dva vektorové podprostory na sebe kolmé a jak to poznáme.
Matematika 1 MA1. 1 Analytická geometrie v prostoru - základní pojmy. 4 Vzdálenosti. 12. přednáška ( ) Matematika 1 1 / 32
Matematika 1 12. přednáška MA1 1 Analytická geometrie v prostoru - základní pojmy 2 Skalární, vektorový a smíšený součin, projekce vektoru 3 Přímky a roviny 4 Vzdálenosti 5 Příčky mimoběžek 6 Zkouška;
ANALYTICKÁ GEOMETRIE V ROVINĚ
ANALYTICKÁ GEOMETRIE V ROVINĚ Analytická geometrie vyšetřuje geometrické objekty (body, přímky, kuželosečky apod.) analytickými metodami. Podle prostoru, ve kterém pracujeme, můžeme analytickou geometrii
1 Projekce a projektory
Cvičení 3 - zadání a řešení úloh Základy numerické matematiky - NMNM20 Verze z 5. října 208 Projekce a projektory Opakování ortogonální projekce Definice (Ortogonální projekce). Uvažujme V vektorový prostor
14. přednáška. Přímka
14 přednáška Přímka Začneme vyjádřením přímky v prostoru Přímku v prostoru můžeme vyjádřit jen parametricky protože obecná rovnice přímky v prostoru neexistuje Přímka v prostoru je určena bodem A= [ a1
Funkce pro studijní obory
Variace 1 Funkce pro studijní obory Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz. 1. Funkce Funkce je přiřazení,
IB112 Základy matematiky
IB112 Základy matematiky Řešení soustavy lineárních rovnic, matice, vektory Jan Strejček IB112 Základy matematiky: Řešení soustavy lineárních rovnic, matice, vektory 2/53 Obsah Soustava lineárních rovnic
(Cramerovo pravidlo, determinanty, inverzní matice)
KMA/MAT1 Přednáška a cvičení, Lineární algebra 2 Řešení soustav lineárních rovnic se čtvercovou maticí soustavy (Cramerovo pravidlo, determinanty, inverzní matice) 16 a 21 října 2014 V dnešní přednášce
MATURITNÍ TÉMATA Z MATEMATIKY
MATURITNÍ TÉMATA Z MATEMATIKY 1. Základní poznatky z logiky a teorie množin Pojem konstanty a proměnné. Obor proměnné. Pojem výroku a jeho pravdivostní hodnota. Operace s výroky, složené výroky, logické
Nejdřív spočítáme jeden příklad na variaci konstant pro lineární diferenciální rovnici 2. řádu s kostantními koeficienty. y + y = 4 sin t.
1 Variace konstanty Nejdřív spočítáme jeden příklad na variaci konstant pro lineární diferenciální rovnici 2. řádu s kostantními koeficienty. Příklad 1 Najděte obecné řešení rovnice: y + y = 4 sin t. Co
Zobrazování těles. problematika geometrického modelování. základní typy modelů. datové reprezentace modelů základní metody geometrického modelování
problematika geometrického modelování manifold, Eulerova rovnost základní typy modelů hranový model stěnový model objemový model datové reprezentace modelů základní metody geometrického modelování těleso