Univerzita Karlova v Praze Matematicko-fyzikální fakulta
BAKALÁŘSKÁ PRÁCE
Jan Musílek Pohled vzhůru jako senzor pro mobilní robotiku Katedra teoretické informatiky a matematické logiky
Vedoucí bakalářské práce: Mgr. Jiří Iša Studijní program: Informatika Studijní obor: Obecná informatika
Praha 2012
Děkuji svému vedoucímu, Mgr. Jiřímu Išovi, za rady a čas, který mi věnoval. RNDr. Martinu Dlouhému, Ph.D. děkuji za zapůjčení robotické platformy Eduro a konzultace ohledně jejího provozu. Děkuji také PhDr. Michalu Musílkovi, Ph.D. za konzultace které mi poskytl, především ohledně zpracování fyzikálních měření. V neposlední řadě děkuji svým rodičům a svojí přítelkyni Míše, za jejich pochopení a podporu, které se mi od nich dostávalo po celou dobu mého dosavadního studia.
Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně a výhradně s použitím citovaných pramenů, literatury a dalších odborných zdrojů. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona v platném znění, zejména skutečnost, že Univerzita Karlova v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle §60 odst. 1 autorského zákona. V ................ dne ....................
Podpis autora
Název práce: Pohled vzhůru jako senzor pro mobilní robotiku Autor: Jan Musílek Katedra: Katedra teoretické informatiky a matematické logiky Vedoucí bakalářské práce: Mgr. Jiří Iša, Katedra teoretické informatiky a matematické logiky Abstrakt: K mobilní robotice neodmyslitelně patří široké spektrum senzorů. Práce zkoumá netradiční využití kamery namířené svisle vzhůru jako senzoru využitelného k orientaci robota v prostoru. Popisuje různé objekty, které lze detekovat v obrazu, soustřeďuje se na tzv. body zájmu a jejich párování mezi dvěma snímky. To umožňuje následným výpočtem, založeným na aproximačním řešení soustavy lineárních rovnic, zjistit údaje o relativní i absolutní pozici robota. V praktické části práce provádíme analýzu dvojic snímků, mezi nimiž se robot pouze otáčel na místě o různě velké úhly. Naším cílem bylo prokázat možnost nahrazení elektronického kompasu pohledem vzhůru v místech, kde je silné elektromagnetické rušení. Data naměřená kompasem a analýzou pohledu vzhůru vzájemně porovnáváme a přesnost navržené metody posuzujeme jako u klasického fyzikálního měření. Výsledky našeho experimentu potvrzují, že pohled vzhůru může v případě potřeby nahradit elektronický kompas. Navrhujeme též různé úpravy pořízených snímků a posuzujeme vliv těchto úprav na přesnost navrhované metody. V závěru práce věnujeme pozornost robotické platformě, na které probíhaly praktické experimenty a interpretujeme výsledky provedených měření. Klíčová slova: robotika, autonomní, počítačové vidění, pohled vzhůru, lokalizace
Title: Upward view as a sensor in mobile robotics Author: Jan Musílek Department: Department of Theoretical Computer Science and Mathematical Logic Supervisor: Mgr. Jiří Iša, Department of Theoretical Computer Science and Mathematical Logic Abstract: The use of a wide spectrum of sensors is an inherent aspect of mobile robotics. This work examines nontraditional use of the camera, directed vertically upwards, as a sensor for orienting in space. It describes various objects that can be detected in the camera image, focusing on so-called points of interest, and their pairing between two images. Based on the approximate solution of a system of linear equations, we provide information on the relative and absolute position of the robot. The work provides analysis of pairs of images, differing only the robot’s rotation in place over various angles. The goal was to demonstrate the possibility of substitution of the electronic compass in cases of strong electromagnetic interference. Data from the image analysis was compared with that from the compass, allowing determination of the accuracy of the proposed method. The result is that upward view can be indeed used as a replacement for the electronic compass. Additionally, several modifications to the images are proposed. We examine impact of these modification on the accuracy of the suggested method. Finally, attention is given to the robotic platform on which the experiments were carried out, and the results of the measurements are interpreted. Keywords: robotics, autonomous, computer vision, upward view, localization
Obsah Úvod Práce věnované příbuzným tématům . . . . . . . . . . . . . . . . . . . Proč pohled vzhůru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Struktura práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Typy příznaků v obrazu 1.1 Harrisův operátor . . . . . . . . . . . . . . . . . 1.2 Speeded-Up Robust Features (SURF) . . . . . . 1.3 Scale-invariant Feature Transform (SIFT) . . . 1.4 Features from Accelerated Segment Test (FAST)
8 8 8 9
. . . .
11 11 13 14 14
2 Párování bodů zájmu 2.1 Výběr nejpodobnějšího deskriptoru . . . . . . . . . . . . . . . . . 2.2 Volba párovací konstanty . . . . . . . . . . . . . . . . . . . . . . .
16 16 16
3 Výpočet transformace obrazu 3.1 Výpočet transformace . . . . . . . . . . . . . . . . . . . . . . . .
17 17
4 Úpravy obrazu 4.1 RGB normalizace . . . 4.2 Statická změna jasu . . 4.3 Dynamická změna jasu 4.4 Zvyšování kontrastu .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
19 19 20 20 21
metody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
22 22 23 24 26 26 26 27
. . . . . .
28 28 29 29 29 29 30
Závěr Dosažené výsledky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slabiny navržené metody . . . . . . . . . . . . . . . . . . . . . . . . . . Otevřené problémy . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31 31 32 32
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
5 Měření, zpracování výsledků a určení 5.1 Sběr dat . . . . . . . . . . . . . . . . 5.2 Vyčíslení chyby . . . . . . . . . . . . 5.3 Zpracování dat . . . . . . . . . . . . 5.4 Vliv úprav obrazu . . . . . . . . . . . 5.4.1 RGB normalizace . . . . . . . 5.4.2 Změna jasu . . . . . . . . . . 5.4.3 Zvyšování kontrastu . . . . . 6 Mobilní platforma Eduro 6.1 Mechanika . . . . . . . 6.2 Motory . . . . . . . . . 6.3 Výpočetní jednotka . . 6.4 Senzory . . . . . . . . 6.4.1 Kompas . . . . 6.4.2 Sonar . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
6
. . . . . .
. . . . . .
. . . . . .
. . . .
. . . .
. . . .
. . . .
chyby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
Seznam použité literatury
33
Seznam obrázků
35
Seznam tabulek
36
Seznam použitých zkratek
37
A Obsah přiloženého CD
38
7
Úvod K autonomní mobilní robotice neodmyslitelně patří široké spektrum senzorů. Jako příklad můžeme jmenovat laserové radary, ultrazvukové senzory, GPS navigaci, 2D a 3D kompasy, dotykové senzory a další. Je-li k navigaci použita kamera, zaměřuje se většinou na prostor před sebou, což sice umožňuje robotovi reagovat na dynamické změny v blízkém okolí, ale příliš nepomáhá orientaci v širším měřítku. Navíc, v městské zástavbě, v blízkosti vedení elektrického proudu a větších železných konstrukcí často selhává magnetický kompas[1, 2]. Podobně Global Positioning System (GPS) nemá sám o sobě pro navigaci ve městě, kde robot často musí zůstat na úzké cestě, dostatečnou přesnost. Cílem práce je prozkoumat možné přínosy pohledu kamery vzhůru, především jako doplňku ke stávajícím navigačním systémům. Pro testovací účely této práce jsme hodnotili pouze informace o pozici získané pohledem vzhůru, aby bylo jasně prokazatelné co z chování robota je způsobeno tímto navigačním systémem. Pro použití v praxi je ovšem vhodné kombinovat pohled vzhůru s dalšími vhodnými senzory (např. odometrií či laserovými a ultrazvukovými radary).
Práce věnované příbuzným tématům O navigaci pomocí kamery a detekování příznaků v obraze se můžeme dočíst např. v článku Simple yet stable bearing-only navigation[3] nebo A Visual Navigation System for Robotour Competition[4]. Autoři podobných článků však zkoumají především možnosti pohledu vpřed, který přináší různé komplikace, z nichž nejvýraznější je přítomnost cizích objektů (automobilů, lidí, psů, . . . ) v záběru. Článek Vision for mobile robot navigation: a survey[5] shrnuje různé pokroky v počítačovém vidění v několika posledních desetiletích, používané jak roboty pohybujícími se uvnitř budov, tak i ve venkovním prostředí. Ani v tomto článku ale nenajdeme žádnou zmínku o pohledu vzhůru. Všechny metody počítačového vidění v něm popsané počítají s kamerou namířenou směrem dopředu, popřípadě mírně sklopenou směrem k zemi. V článku Visual Navigation using Omnidirectional View Sequence[6] se objevuje možnost navigovat robota pomocí série snímků, které během jedné cesty pořídí a poté ji s porovnáváním pořízených snímků a aktuálního výhledu dokáže zopakovat. Tento způsob navigace článek dále vylepšuje „všesměrovým pohledem“ , při kterém pořízuje panoramatické snímky celého robotova okolí. I zde se však tyto snímky zaměřují pouze na prostor v okolí robota a nikoliv do prostoru nad ním.
Proč pohled vzhůru Ve výše citovaných článcích [3, 4, 5, 6] je popsána navigace pomocí kamery namířené směrem dopředu. Toto zařízení má však několik nevýhod, z nichž nejvý8
raznější je přítomnost cizích, pohybujících se objektů v obrazu. Takové objekty často obsahují větší množství rozpoznatelných bodů zájmu, což přispívá k dalšímu zmatení porovnávacího algoritmu. Typicky se jedná o lidi, zvířata či automobily, kteří se posouvají záběrem a znesnadňují tak porovnávání snímků. Kamera namířená směrem vzhůru trpí tímto neduhem pouze v menší míře. Ideální by bylo mít objektiv kamery alespoň dva metry nad zemí – tímto způsobem bychom ze záběru vyloučili naprostou většinu pohybujících se objektů. Lze si například představit umístění na střeše robotického automobilu. Mobilní platforma Eduro, na které jsme prováděli praktické testy, takovou výšku nemá, avšak i umístění objektivu kamery do výšky 0,7 m výrazně zmenší počet rušivých objektů. Konkrétně, při pozorovacím úhlu kamery 90◦ a výšce cizího objektu 1,7 m, musí být cizí objekt blíže než 1 m, aby se vůbec objevil v obrazu. Při kameře namířené směrem vpřed je tato vzdálenost výrazně vyšší (tedy zabere i cizí objekty ve větší vzdálenosti od robota).
Obrázek 1: Člověk v záběru kamery umístěné na vrcholu robota. Pozorování stěn a okrajů střech domů má i tu výhodu, že se tyto objekty v průběhu času málo mění. Naopak, nevýhodou je nemožnost navigovat tímto způsobem v místech, kde nejsou žádné vyšší objekty, např. v parku bez stromů, a případně i velká soběpodobnost některých budov, např. panelových domů.
Struktura práce V kapitole 1 představujeme různé druhy zajímavých objektů detekovatelných v obrazu1 . Uvádíme zde mj., které z těchto objektů jsme zkoušeli detekovat a které a proč jsme se nakonec rozhodli implementovat. Zvláštní důraz je přitom kladen na robustnost proti rotaci obrazu a na rychlost zpracování. 1
Dále též „body zájmu“ .
9
Kapitola 2 se věnuje párování bodů zájmu, detekovaných dle postupů popsaných v kapitole 1. Párováním rozumíme poznat, které části dvou různých snímků zabírají ty samé objekty. Na ni navazuje kapitola 3, představující způsob, jak ze spárovaných bodů zájmu vypočítat lineární transformaci obrazu. Tedy jakým způsobem jsou dva snímky, zabírající stejné objekty, vůči sobě posunuté. Určení přesnosti námi navržené metody se věnuje kapitola 5. V ní měříme kvalitu navrženého postupu a posuzujeme vliv různých úrovní jasu na tuto kvalitu. V kapitole 4 pak podáváme přehled metod úprav obrazu, kterými jsme se pokusili chybu naměřenou v kapitole 5 minimalizovat. Kapitola 6 popisuje mobilní platformu Eduro, na níž proběhly praktické testy námi navržené metody. Pozornost je věnována především těm částem robota, které se týkaly našeho testování.
10
1. Typy příznaků v obrazu Ať už se rozhodneme pro porovnávaní snímků mezi jednotlivými průjezdy a připravíme si tak předem jakousi „snímkovou mapu cesty“ , nebo porovnáváme snímky během jedné jízdy a zjišťujeme z nich rotaci a posun robota, chceme vždy porovnávat dva snímky vůči sobě. Existuje více způsobů, jakými to můžeme udělat. Např. lze jeden ze snímků po malých krocích rotovat a posouvat a určovat korelaci s druhým snímkem. My se ovšem rozhodli pro hledání význačných bodů, kterým budeme říkat body zájmu. V angličtině se nejčastěji používají termíny interest point a feature. Český termín není ustálen, zvolil jsem proto překlad, který přesněji a výstižněji vystihuje podstatu objektu. Na rozdíl od výše zmíněné rotace poznáme, když se ve snímku nenachází nic zajímavého – nebudou zde žádné body zájmu (nebo jich bude jen velmi málo). To nastane např. ve chvíli, kdy bychom se snažili najít body zájmu na čistě modré obloze. Algoritmus, který určuje v obraze body zájmu nazveme detektor. Matematickému popisu bodu zájmu (např. číslem, vektorem, maticí, . . . ) budeme říkat deskriptor. Bodem zájmu mohou být například hrany, tedy místa, kde se v jednom směru prudce liší průměr hodnot pixelů v relativně malé oblasti. Jejich deskriptorem může být např. hodnota pixelů v blízkém okolí řečených hran. Dalším příkladem jsou rohy, často definované jako průsečíky dvou hran. Existují však i další body zájmu, kde slovo bod nesmíme chápat doslovně – může se jednat o libovolné oblasti v obrázku. Příkladem takových objektů jsou tzv. bloby, které detekuje mj. algoritmus MSER (Maximally Stable Extremal Regions) [7]. Od deskriptoru budeme mj. požadovat odlišitelnost a odolnost vůči šumu. Různé body zájmu musí mít dostatečně různé deskriptory, aby mezi nimi šlo spolehlivě rozlišit. Na druhou stranu ale musí mít ten samý bod zájmu při různých světelných podmínkách, šumu a lokální deformaci obrazu dostatečně podobný deskriptor, aby šlo určit, že se jedná o tentýž bod zájmu. Při programování robota jsme se rozhodli použít volně dostupnou knihovnu OpenCV [8]. Tato knihovna již byla na naší testovací platformě Eduro (viz kapitolu 6) s úspěchem použita. Proto jsme se zabývali pouze body zájmu, které tato knihovna umí rozpoznávat. Níže popisujeme ty, které jsme vyzkoušeli, nebo o nich při vývoji alespoň uvažovali.
1.1
Harrisův operátor
První metodou detekce příznaků, kterou jsme vyzkoušeli byl tzv. Harrisův operátor. Tato metoda se řadí do kategorie corner detection, neboli detekce rohů. Jedná se o vylepšení metody Moravcovy detekce rohů, která definuje roh jako oblast s malou soběpodobností [9]. Moravcova detekce rohů probíhá následujícím způsobem: 1. Pokud je obrázek barevný, převedeme ho do odstínů šedi. Metoda totiž pracuje pouze s intenzitou pixelu, nikoliv s jeho barevným odstínem. 11
2. Pro každý pixel P spočítáme jeho intenzitu vůči okolí V : (a) Vytvoříme malé čtvercové okno (typicky 3x3, 5x5, nebo 7x7 pixelů), v jehož středu se nachází P a jeho políčka si označíme po řadě 1, 2, . . . n. (b) Posuneme toto okno o 1 pixel v každém z osmi možných směrů (2 vertikální, 2 horizontální a 4 diagonální).
Obrázek 1.1: Okna v Moravcově algoritmu detekce rohů. Šedé políčko znázorňuje pixel P . (c) Spočteme Vs pro daný posun s jako součet druhých mocnin rozdílů intenzit odpovídajících pixelů ve dvou oknech (v okně A, které má ve středu pixel P a v okně B, které je vůči němu posunuto transformací s). Tedy: Vs =
n X i=1
(Ai − Bi )2
(d) Spočteme V pro pixel P jako minimum z Vs , tedy: V = min Vs s 3. Zvolíme si prahovou konstantu T a provedeme odprahování1 (tedy nastavíme všechny hodnoty V menší než T na nulu). 4. Potlačíme všechny body kromě maxima. To uděláme tak, že vezmeme malé okno (např. velikosti 3x3, stejně jako při hledání bodů zájmu), najdeme v něm maximální V a všechny pixely, jejichž V je nižší nastavíme na nulu. 5. Všechny pixely s nenulovou hodnotou V prohlásíme za rohy. 1
Často se setkáváme s pojmem threshold.
12
Harrisův operátor [10] využívá místo posuvných záplat gradient intenzity jasu daného místa obrazu (pracujeme opět s obrazem v odstínech šedi). Gradient je vektorový diferenciální operátor, jehož složkami jsou parciální derivace podle jednotlivých souřadnic. Výsledný vektor tedy udává směr změny intenzity jasu v daném místě obrazu. Tento způsob detekce rohů se však v našem případě neukázal jako příliš spolehlivý. Na budovách se často vyskytují ostré rohy, které mají všechny zhruba stejný úhel a jednotlivé příznaky detekované Harrisovým operátorem poté měly podobné deskriptory. Ten je v tomto případě spočten jako determinant matice kovariance bodu (x, y) s jeho okolím. Podobné deskriptory pak byly na překážku párování těchto bodů navzájem. Párování bodů je podrobněji rozebráno v kapitole 2.
Obrázek 1.2: Body zájmu nalezené Harrisovým operátorem.
1.2
Speeded-Up Robust Features (SURF)
Dalším používaným detektorem bodů zájmu jsou Speeded-Up Robust Features (dále také jen „SURF“ ). Jedná se o relativně novou metodu, prvně publikovanou v roce 2006. Popis jejího fungování je podrobně rozepsán v článku SURF: Speeded Up Robust Features [11]. Revidované vydání lze nalézt v Speeded-Up Robust Features (SURF) [12].
Obrázek 1.3: Body zájmu nalezené detektorem SURF.
13
Závěr článku ohledně výkonu SURF volně překládáme z angličtiny: „Deskriptor SURF překonal výkonem ostatní deskriptory systematicky a značně, v některých případech s více než 10% zlepšením se zachováním stejné přesnosti. Zároveň se dá rychle spočítat. Nový detektor a deskriptor jsme také testovali v praxi, zaměřené na rozpoznávání uměleckých objektů v muzeu. Obrázky v testu byly pořízeny za různých podmínek, včetně extrémní změny osvětlení, umístění objektů v odrazivých skleněných skříních, různých úhlů pohledu, přiblížení i různé kvality kamery. Navíc byly pořízené snímky malé (320 × 240) a tedy náročnější pro rozpoznání bodů zájmu, neboť se při tomto rozlišení mnoho detailů ztratí. Průměrné výsledky rozpoznávání odráží výsledky našeho výkonostního testu. Vítězem je SURF-128 (varianta SURF s vysokou přesností, ale menší rychlostí), která rozpoznala 85.7% deskriptorů, následovaná U-SURF (scale-invariant varianta deskriptorů SURF, 83.8%) a SURF (82.6%). Další deskriptory dosáhly 78.3% (GLOH – Gradient Location and Oriantation Histogram), 78.1% (SIFT – Scale-invariant feature transform) a 72.3% (PCA-SIFT – varianta SIFT, s mírně pozměněným způsobem počítání deskriptorů).“
1.3
Scale-invariant Feature Transform (SIFT)
Metodu SIFT publikoval v roce 1999 David Lowe, profesor na University of British Columbia. Hlavním cílem SIFT je získat takový deskriptor bodu zájmu, který se příliš nemění se vzdáleností kamery od tohoto bodu (proto scale-invariant). Oproti SURF je nejenom starší, ale také pomalejší a méně robustní (viz výše citovaný článek [11]). Proto jsme se rozhodli SIFT neaplikovat a posunout se od Harrisových rohů rovnou k SURF.
Obrázek 1.4: Body zájmu nalezené detektorem SIFT. 2
1.4
Features from Accelerated Segment Test (FAST)
FAST je algoritmus původně navržený Rostenem a Drummondem [13]. Definuje bod zájmu jako pixel s dobře definovanou pozicí, který může být dostatečně 14
robustně popsán. Byl navržen s ohledem na použití v reálném čase, především pro potřeby mobilní robotiky, kde jsou používány počítače s omezeným výkonem.
Obrázek 1.5: Body zájmu nalezené detektorem FAST. Jeho největší výhodou oproti SURF je tedy rychlost zpracování obrazu. Měření na našem robotovi však ukázalo, že pro rychlost zpracování obrazů je více limitující snímací rychlost kamery (2-3 snímky za sekundu), než rychlost algoritmu pro detekci a porovnávání příznaků. Proto jsme nakonec zůstali u pomalejšího, ale kvalitnějšího SURF a detektor FAST jsme nepoužili.
15
2. Párování bodů zájmu Chceme-li spočítat transformaci mezi dvěma snímky a máme-li v těchto snímcích detekované body zájmu, potřebujeme je spárovat. To znamená najít k co nejvíce bodům z prvního snímku odpovídající body z druhého snímku. V kapitole 1 jsme řekli, že jednotlivým bodům jsou v rámci detekce přiřazeny tzv. deskriptory – objekty popisující dané body zájmu. V případě deskriptorů SURF, které v našem projektu používáme, se jedná o vektory desetinných čísel.
2.1
Výběr nejpodobnějšího deskriptoru
Body zájmu budeme nadále označovat velkými písmeny anglické abecedy. Deskriptor bodu X označíme d(X). Pro každý bod zájmu A z prvního snímku provedeme následující [8]: 1. Porovnáme jeho deskriptor s deskriptorem každého bodu zájmu z druhého snímku a spočítáme kvadratickou odchylku mezi těmito deskriptory. 2. Vybereme deskriptor s nejmenší (označme ho B) a druhou nejmenší (označme ho C) kvadratickou odchylkou od deskriptoru z prvního snímku. 3. Je-li d(A − B)2 < Kpar .d(A − C)2 , prohlásíme body A a B za spárované. Jinak řekneme, že k bodu A neexistuje dostatečně jedinečný bod pro spárování. Číslu Kpar ∈ (0, 1) budeme říkat párovací konstanta. Její optimální hodnota (z hlediska získání dostatečného množství dostatečně spolehlivě spárovaných bodů) může být různá v závislosti na kameře, typu algoritmu, který body zájmu detekuje a algoritmu, který s nimi po přefiltrování dále pracuje. Pro naše účely jsme nakonec experimentálně určili jako nejvhodnější konstantu 0,3.
2.2
Volba párovací konstanty
Kpar má smysl pouze pro hodnoty z intervalu (0, 1). Pro Kpar ≤ 0 spolu nespárujeme žádné body. Pro Kpar ≥ 1 naopak spárujeme všechny dvojice bodů a smysl filtrování párovací konstantou zaniká. Zvolíme-li konstantu v rámci intervalu (0, 1) vyšší, dostaneme větší počet spárovaných dvojic bodů, z nichž ale bude potenciálně větší procento falešných (tj. neodpovídajících skutečnosti). Naopak, zvolíme-li konstantu Kpar nižší, dostaneme menší počet spárovaných dvojic bodů zájmu, ale s větší jistotou, že jsou spárovány ty body ve snímcích, které si odpovídají i ve skutečnosti. Hledání vhodné konstanty je tedy kompromisem mezi množstvím spárovaných bodů a spolehlivostí.
16
3. Výpočet transformace obrazu 3.1
Výpočet transformace
Ve chvíli, kdy máme spárované dvojice bodů v původním a novém snímku, můžeme zjistit jejich vzájemnou pozici. Pokud bychom měli kameru namířenou před sebe, museli bychom se potýkat se změnou velikosti objektů a s tím, že se na každý objekt můžeme dívat ze všech úhlů. Protože se ale díváme vzhůru, na stěny okolo stojících domů, je změna velikosti zanedbatelná1 a úhel, pod kterým sledujeme jednotlivé příznaky je poměrně omezený (je roven vrcholovému úhlu záběru kamery). Proto budeme k transformaci přistupovat pouze jako k složení translace a rotace okolo středu snímku. Pro každou spárovanou dvojici bodů X = (Xx , Xy ) a Y = (Yx , Yy ) vytvoříme následující rovnici: Y = R · (X − S) + S + T
(3.1)
Zde značíme S střed rotace (tedy střed snímku), R matici rotace (neznámá) a T vektor translace (též neznámý). Podrobnějším rozepsáním získáme z této rovnice dvě lineární rovnice, jednu pro každou souřadnici: cos ϕ · (Xx − Sx ) − sin ϕ · (Xy − Sy ) + Tx = Yx − Sx
(3.2)
cos ϕ · (Xy − Sy ) + sin ϕ · (Xx − Sx ) + Ty = Yy − Sy
(3.3)
Celkem tak dostaneme 2n rovnic v tomto tvaru, kde n značí počet spárovaných bodů. Neznámými jsou v tomto případě sin ϕ, cos ϕ, Tx a Ty . Zapíšeme je do matice a spočítáme co nejlepší řešení pomocí metody nejmenších čtverců2 . To, jak dobře naše transformace funguje vyjádříme součtem druhých mocnin vzdáleností (po provedení transformace) každých dvou spárovaných bodů. LSM se snaží tento součet minimalizovat. Metoda nejmenších čtverců je v knihovně OpenCV implementována pod jménem cvSolve. Nyní je třeba si povšimnout jednoho zásadního problému. Řešíme soustavu lineárních rovnic, kde považujeme jednotlivé neznámé za nezávislé, ale cos ϕ a sin ϕ, což jsou dvě z neznámých, jejichž řešení chceme, rozhodně nezávislé nejsou. Jak se s tímto problémem vyrovnat? Uvědomme si, co znamená, že cos2 ϕ + sin2 ϕ 6= 1
(3.4)
Matice R potom neobsahuje pouze informaci o rotaci, ale také o zvětšení / zmenšení (dále také scale). Zároveň ovšem platí, že čím je větší scale, tím větší je i translace. Při pohledu dopředu musíme scale zohledňovat, protože se 1 2
viz níže LSM – Least Squares Method
17
objekty zmenšují a zvětšují, podle toho jak se k nim přibližujeme nebo se od nich oddalujeme. Při pohledu vzhůru však tento problém nenastává. Navíc, při lokalizaci hledáme původní snímek, který má oproti novému snímku co nejmenší translaci, a tak bude i scale v tomto případě nevýznamný a můžeme jej zanedbat. To znamená, že budeme uvažovat pouze posun a rotaci, která nám vyšla z řešení soustavy rovnic. Rotaci spočítáme pomocí funkce atan2(sin ϕ, cos ϕ), která explicitně nevysin ϕ . Dva argumenty požaduje žaduje, aby cos2 ϕ + sin2 ϕ = 1. Počítá pouze podíl cos ϕ sin ϕ proto, aby mohla výsledek umístit do správného kvadrantu. Když nám vyjde cos ϕ kladný, mohly být buď oba argumenty kladné, nebo oba záporné. Funkce atan2 zohledňuje znaménka obou argumentů a vrací výsledek v intervalu (−π, πi. Díky podílu se navíc scale obou členů vyruší.
18
4. Úpravy obrazu Při zpracování výsledků experimentu popsaného v kapitole 5 jsme narazili na následující problém. Porovnáváme-li snímky pořízené v různé dny, za různých světelných podmínek, je chyba výrazně vyšší, než při porovnávání dat z téhož dne. Proto jsme se snažili nalézt způsob, jak velikost této chyby snížit. Vyzkoušeli jsme tyto způsoby transformace obrazu1 : • RGB normalizace • převod do barevného prostoru HSV2 a změna hodnoty jasu (value) na konstantní hodnotu • převod do barevného prostoru HSV a změna hodnoty jasu (value) na dynamickou hodnotu • zvýšení kontrastu a jasu obrazu
Obrázek 4.1: Rozdílné jasové podmínky v různé dny
4.1
RGB normalizace
Při RGB normalizaci pro každý pixel P = (R, G, B), kde R, G a B jsou popořadě červená, zelená a modrá složka nabývající hodnot od 0 do 255, provedeme následující: 1. Spočte se S = R + G + B 2. Nastavíme nové hodnoty R′ , G′ a B ′ R′ = (R/S) · 255 G′ = (G/S) · 255
B ′ = (B/S) · 255 Skripty, které realizují níže popsané transformace se nachází na přiloženém CD, viz přílohu A. 2 Hue-Saturation-Value 1
19
Obrázek 4.2: Snímky s normalizací RGB
4.2
Statická změna jasu
Další úpravou obrazu, kterou jsme vyzkoušeli bylo převedení do barevného prostoru HSV a změna hodnoty jasu. Barevný prostor HSV je stejně jako RGB třísložkový: 1. Hue – barevný odstín. Udává základní (převládající) barvu. 2. Saturation – sytost. Udává množství šedé barvy v poměru k odstínu. 3. Value – jas. Udává množství bílého světla. Kdykoliv se v dalším textu budeme odkazovat na jas, budeme tím myslet množství bílého světla, neboli hodnotu kanálu value v barevném prostoru HSV. Nejdříve jsme zkusili u všech pixelů nastavit jas na konstantní hodnotu (viz Obrázek 4.3).
Obrázek 4.3: Snímky s konstantním jasem – vlevo 192, vpravo 255
4.3
Dynamická změna jasu
Dalším krokem bylo vyzkoušení změny jasu, které by nebylo konstantní. Pro každý obrázek jsme si spočetli průměrnou hodnotu jasu α a každý pixel P = (H, S, V ) ). jsme přepsali na pixel P ′ = (H, S, V +α 2 20
Obrázek 4.4: Snímky s dynamicky pozměněným jasem
4.4
Zvyšování kontrastu
Zvyšování kontrastu (a případně i jasu) probíhá následujícím způsobem. Pro každý pixel obrázku P = (R, G, B) provedeme toto [8]: R′ = min{R · α + β, 255} G′ = min{G · α + β, 255} B ′ = min{B · α + β, 255} P ′ = (R′ , G′, B ′ ) Konstantě α budeme říkat gain a konstantě β bias. Také říkáme, že proměnná α ovlivňuje kontrast obrázku, zatímco proměnná β ovlivňuje jas.
Obrázek 4.5: Snímky se zvýšeným kontrastem (α = 2.2, β = 0) S hodnotami těchto konstant můžeme volně experimentovat. Vzhledem k tomu, že zvyšování jasu nám v případě předchozích dvou metod výsledky nezlepšilo (viz kapitolu 5), zkusili jsme měnit pouze konstantu α, určující změnu kontrastu. Vyzkoušeli jsme různé hodnoty α od 1.0 (žádná změna kontrastu) po 2.6 (velmi velká změna kontrastu, vedoucí k deformaci původního obrázku). Nejlepších výsledků jsme dosáhli s konstantou α = 2.2. Všimněme si, že jedním z efektů zvýšení kontrastu je skoro úplné odstranění mraků z oblohy. Ve snímku tak zůstávají pouze objekty, které jsou potenciálně zajímavé pro detekci bodů zájmu. 21
5. Měření, zpracování výsledků a určení chyby metody Zajímalo nás, jestli je pohled vzhůru skutečně způsobilý pro použití v praxi a jak přesný senzor pro nás představuje. Proto jsme navrhli níže popsaný experiment.
5.1
Sběr dat
Ke sběru dat jsme použili následující metodu. V místě testování jsme označili na zemi čtyři místa. V každém z těchto míst jsme se s robotem po malých krocích (cca. 10◦ - 15◦ ) otočili o 360◦ , přičemž jsme po každém pootočení zařadili krátkou pauzu, aby se mohl ustálit kompas. Toto měření jsme provedli v různé dny v různou denní dobu.
Obrázek 5.1: Místo A ve dnech 11. 10. (vlevo) a 18. 10. (vpravo)
Obrázek 5.2: Místo B ve dnech 11. 10. (vlevo) a 18. 10. (vpravo) Konkrétně jsme sbírali data ve dnech 11. 10. od 11:00 a 18. 10. 2011 od 13:00. Místa A, B, C a D se nacházela mezi budovou Komerční banky (Štefánikova 22, Praha 5) a naproti stojícím bytovým domem (Štefánikova 24, Praha 5). Z nasbíraných dat jsme vyfiltrovali dvojice obrázek – kompas, přičemž kompas určoval absolutní natočení robota vůči severu. Důvody, proč v tomto případě můžeme použít kompas a spolehnout se na něj, jako na absolutní ukazatel natočení jsou tyto: 22
Obrázek 5.3: Místo C ve dnech 11. 10. (vlevo) a 18. 10. (vpravo)
Obrázek 5.4: Místo D v den 18. 10. Na snímku vpravo je vidět procházející osoba. 1. V blízkosti nebyla žádná velká kovová konstrukce, ani zdroj vysokého napětí. Kompas je na Eduru (viz kapitolu 6) umístěn vysoko nad motory a dalším elektrickým vedením. 2. Kompas, který je na Eduru použit, je tilt-compensated, tedy odolný proti naklonění (více viz kapitolu 6). 3. Po každém pootočení jsme zastavili a chvíli s robotem setrvali na místě. To umožnilo kompasu ustálit se v okolí jedné hodnoty pro natočení. Odolnost proti naklonění zmíněná v předchozím bodě totiž využívá ke kompenzaci náklonu akcelerometr, což při jízdě po nerovném povrchu vnáší do měření značný šum. Proto je důležité s robotem na daném místě chvíli setrvat a počkat, až se kompas ustálí.
5.2
Vyčíslení chyby
Přesnost metody určíme tak, že pro každou porovnávanou dvojici snímků (i, j) provedeme: 1. Jejich natočení vůči sobě získané porovnáním dat z kompasu nazveme Cij . Natočení získané porovnáním dat z kamery nazveme Kij . Počet porovnávaných dvojic označíme N. 2. Spočteme Xij = Cij − Kij 1 . 1
Xij budeme nadále říkat chyba.
23
3. Spočteme výběrovou střední hodnotu chyby X X=
1 X Xij N (i,j)
(5.1)
4. Určíme výběrovou směrodatnou odchylku σX σX =
v uP u u (i,j) Xij t
−X
2
N(N − 1)
(5.2)
Ta se často zapisuje v tzv. výpočtovém tvaru, který umožňuje spočítat hodnotu směrodatné odchylky bez předchozího předpočítání střední hodnoty. 1 σX = √ N −1
v u u u · t
1 X 2 2 Xij − X N (i,j)
(5.3)
V zbytku kapitoly pak vždy zapisujeme chybu ve tvaru X ± σX , kde X značí střední hodnotu chyby (která by v ideálním případě by měla být 0) a σX výběrovou směrodatnou odchylku (čím menší, tím lepší).
5.3
Zpracování dat
Jak jsme již uvedli výše, z nasbíraných dat můžeme určit odchylku mezi měřením kompasu a natočením, které dává pro dva zadané snímky náš program. Naším cílem je tuto odchylku minimalizovat. Místo A B C
Počet porovnávaných dvojic 42 61 104
Průměrná chyba (ve ◦ ) −0.642 ± 1.812 −2.256 ± 2.099 0.106 ± 0.884
Tabulka 5.1: Porovnání dat z kompasu a kamery z 11. 10. 2011 Místo A B C D
Počet porovnávaných dvojic 551 521 452 1017
Průměrná chyba (ve ◦ ) −1.342 ± 0.322 −0.140 ± 0.256 1.901 ± 0.247 0.801 ± 0.435
Tabulka 5.2: Porovnání dat z kompasu a kamery z 18. 10. 2011 Tabulky 5.1 a 5.2 porovnávají každá data z jednoho dne, tedy za zhruba stejných světelných podmínek. Velikost směrodatné odchylky je samozřejmě ovlivněna i volbou místa měření. To bylo záměrně zvoleno tak, aby byla v záběru velká část oblohy, kvůli větší variaci světelných podmínek. To se pochopitelně neblaze projeví i na výsledcích algoritmu jako takového, který počítá s větším množstvím stěn okolních domů v záběru. 24
Použitá kamera je širokoúhlá, zvládá tedy zabírat stěny domů na obou stranách i relativně široké ulice. Směrodatnou odchylku je třeba také porovnat s chybou měřícího zařízení, v našem případě kompasu. Výrobce udává v [14] směrodatnou odchylku samotného kompasu2 0.3◦ , což znamená, že např. náš odhad natočení mezi snímky z 18. 10. 2011 je velice přesný – odchylka při odhadu rotace takřka nepřevyšuje chybu měřícího zařízení. Naměřená výběrová směrodatná odchylka tedy může být přičtena na vrub jak naší kamerové metodě, tak samotnému kompasu. Místo A B C
Počet porovnávaných dvojic 32 30 51
Průměrná chyba (ve ◦ ) 9.756 ± 9.214 24.792 ± 15.337 −16.239 ± 9.813
Tabulka 5.3: Porovnání dat z kompasu a kamery z 11. 10. a 18. 10. 2011 navzájem Tabulka 5.3 porovnává snímky z 11. 10. a 18. 10. 2011 navzájem. Tedy každý snímek z každého místa pořízený 11. 10. porovnáváme s každým snímkem z toho samého místa pořízeným 18. 10. Výsledky tohoto porovnání ukazují, že snímky z různých dní (a tedy i za různých světelných podmínek) nelze dosavadní základní verzí algoritmu, bez vypořádání se s rozdíly v jasu, dostatečně spolehlivě porovnávat. Dále jsme se zabývali otázkou, zda velikost chyby závisí na úhlu otočení. Rozdělili jsme si dvojice snímků podle jejich vzájemného natočení, zjištěného z kompasu a stejnou metodou jako výše jsme určili velikost chyby. Úhel 0◦ – 30◦ 30◦ – 60◦ 60◦ – 90◦ 90◦ – 120◦ 120◦ – 150◦ 150◦ – 180◦
11. 10. 18. 10. 11. a 18. 10. 1.470 ± 0.885 0.544 ± 0.402 3.011 ± 10.421 0.834 ± 1.087 0.295 ± 0.730 12.926 ± 18.563 −2.552 ± 1.701 0.392 ± 0.307 7.081 ± 15.970 1.732 ± 0.952 0.979 ± 0.521 −17.773 ± 14.431 −3.421 ± 4.676 −0.097 ± 0.523 7.626 ± 24.147 −2.933 ± 1.980 −0.029 ± 0.438 3.135 ± 18.593
Tabulka 5.4: Závislost velikosti chyby na úhlu otočení V tabulce 5.4 jsou zaznamenány průměrné chyby a směrodatné odchylky pro jednotlivé rozsahy úhlů. Chyby měření z různých míst jsme tentokrát sloučili dohromady, číslo tedy udává průměrnou chybu celého dne měření. Z těchto vypočtených hodnot můžeme usoudit, že, velikost chyby a velikosti úhlu nemají mezi sebou lineární závislost. Abychom měli pro tyto hodnoty nějaké základní srovnání, v tabulce 5.5 jsou uvedeny výsledky tzv. nulového testu. V něm nahrazujeme náš detekční algoritmus, který určuje otočení, programem, který pro libovolné dva obrázky vrátí jako jejich natočení hodnotu 0◦ . Vidíme, že směrodatné odchylky v tomto případě shodně převyšují 100◦ , což, budeme-li považovat chybu za náhodnou veličinu, můžeme interpretovat tak, že 2
Více se o použitém kompasu lze dočíst v kapitole 6.
25
Místo A B C
11. 10. 18. 10. 11. a 18. 10. −13.476 ± 106.286 −12.201 ± 104.087 1.676 ± 102.835 −28.192 ± 103.863 −14.571 ± 103.525 3.253 ± 103.781 −27.518 ± 102.511 −9.676 ± 104.649 −0.581 ± 103.513 Tabulka 5.5: Průměrná chyba při „nulovém testu“
více než polovina odchylek spadne do intervalu (−100◦ , 100◦). Vzhledem k tomu, že kruh má 360◦ a 200◦ je tedy více než polovina, odpovídají tyto hodnoty rovnoměrnému rozložení pravděpodobnosti. Zajímavé jsou v tomto případě hodnoty výběrové střední hodnoty. Pokud by byly snímky pořízeny v rovnoměrných rozestupech (např. pootočení mezi každými dvěma následujícími snímky by bylo přesně 10◦ ), měla by výběrová střední hodnota vycházet 0◦ . Odlišné hodnoty výběrových středních hodnot svědčí o tom, že takové pravidelnosti při měření dosaženo nebylo.
5.4
Vliv úprav obrazu
Ukázalo se, že pohled vzhůru je ve svojí základní implementaci při změně jasu náchylný k chybám. Ke změně jasu může dojít v důsledku různé denní doby a světelných podmínek. Pro praktické využití by bylo dobré tento nedostatek odstranit. Metody, na které se v následujícím textu odkazujeme jsou podrobně popsány v kapitole 4.
5.4.1
RGB normalizace
Bohužel, RGB normalizace zdeformovala původní obrázky natolik, že se mezi nimi nepodařilo najít skoro žádnou shodu. Také počet detekovaných bodů zájmu byl zanedbatelný.
5.4.2
Změna jasu
V případě statické změny jasu docházelo k nevratné deformaci obrázku a výraznému snížení počtu detekovaných bodů zájmu. Dynamická změna jasu přinesla o něco lepší výsledky, než statická změna jasu či RGB normalizace, avšak průměrná chyba je stále výrazně horší, než v případě neupravených obrázků (porovnejme tabulky 5.3 a 5.6). Místo A B C
11. 10. 18. 10. 11. a 18. 10. −34.487 ± 15.743 −3.759 ± 2.813 7.555 ± 17.709 0.001 ± 2.952 3.577 ± 1.842 39.177 ± 21.238 4.755 ± 6.490 5.091 ± 2.512 −6.118 ± 17.132
Tabulka 5.6: Porovnání dat při pozměněném jasu
26
5.4.3
Zvyšování kontrastu
Metodou popsanou v podkapitole 4.4 jsme dosáhli nejlepších výsledků. Průměrné chyby pro obrázky upravené metodou zvyšování kontrastu jsou zaznamenány v tabulce 5.7. Porovnáním tabulek 5.3 a 5.7 seznáme, že zvýšení kontrastu snímků přispělo k znatelnému snížení průměrné chyby. Ještě výraznější snížení můžeme pozorovat u směrodatné odchylky (až čtyřnásobné oproti neupraveným snímkům). Přitom průměrná chyba a směrodatná odchylka u dat z jednoho dne se prakticky nijak nezhoršila. Místo A B C
11. 10. 18. 10. 11. a 18. 10. 2.479 ± 1.216 −0.283 ± 0.235 −10.274 ± 9.095 −0.677 ± 0.545 −0.468 ± 0.254 13.034 ± 3.873 0.181 ± 0.931 0.351 ± 0.625 −4.219 ± 5.449
Tabulka 5.7: Porovnání dat z kompasu a kamery z 11. 10. a 18. 10. 2011 při zvýšeném kontrastu snímků (α = 2.2, β = 0)
27
6. Mobilní platforma Eduro Pro praktické testování pohledu vzhůru jsme použili mobilní platformu Eduro, konkrétně její outdoorovou variantu, Eduro Maxi[15].
Obrázek 6.1: Eduro na soutěži Field Robot 2010.
6.1
Mechanika
Eduro Maxi je tříkolové vozítko s párem diferenciálně řízených kol1 a jedním volným, stabilizačním kolem vzadu. Výhodou tohoto modelu je, že se robot může otáčet na místě, na rozdíl od modelů čtyřkolových, využívajících tzv. Ackermanovo řízení2 .
Obrázek 6.2: Diferenciálně řízený model robota Diferenciálním řízením je rozuměno, že je každé kolo ovládáno nezávisle. S tímto typem řízení se setkáme nejčastěji u robotických automobilů, předurčených svými vlastnostmi pro práci v terénu. 1
2
28
6.2
Motory
Eduro Maxi je vybaven motory, které jsou napojeny na kola pomocí jednoduchého řemenového převodu a jejich rychlost je při použití 150mm kol regulovatelná v rozmezí od 1cm/s do 2m/s.
6.3
Výpočetní jednotka
Volně přeloženo z [15] z angličtiny: Mozkem robota je jedno-deskový počítač s operačním systémem Linux. Tento počítač je vybaven procesorem AMD Geode s frekvencí 500MHz, 256MB RAM, flash diskem, wi-fi, třemi Ethernetovými porty3 , sériovým portem4 a dvěma USB porty.
6.4
Senzory
Eduro Maxi je vybaveno řadou senzorů. Při pohledu vzhůru jsme však většinu z nich nevyužili, neboť by bylo těžké změřit efektivitu nového senzoru s vlivem ostatních. Uvádím tedy pouze senzory, které jsme během zpracování tématu používali.
6.4.1
Kompas
Na Eduru je nainstalován tříosý kompas HMC6343 od firmy Honeywell [14]. Ten vystřídal starší dvouosý kompas HMC6352 od téže firmy, který byl na Eduru osazen v době psaní [15]. Porovnávali jsme data z kompasu a kamery namířené vzhůru za účelem korekce jasu (viz kapitoly 4 a 5).
Obrázek 6.3: Kompas HMC6343 od firmy Honeywell. Použitý kompas je tilt-compensated, neboli odolný proti naklánění. Tím se jeho spolehlivost, oproti běžným 2D kompasům, které se s nakloněním vyrovnat 3 4
Pro koncovky typu RJ45. RS232
29
nedokáží, zvyšuje. Stále má ale problém v blízkosti velkých kovových konstrukcí a vedení vysokého napětí [1, 2]. Místo měření, kde jsme porovnávali výsledky z kamery a z kompasu jsme proto vybrali tak, aby tam tyto rušivé vlivy nepůsobily.
6.4.2
Sonar
Sonar SRF05 od firmy Devantech jsme používali k zastavení robota v případě, že se příliš přiblížil k překážce. To jednak chrání robota před zničením a jednak před vrážením do lidí. Část testování se totiž odehrávala v okolí budovy MFF UK na Malostranském náměstí v Praze, tedy v turisticky silně vytížené lokalitě. Výjimkou nebyli zvědavci zastavující se přímo nad robotem.
Obrázek 6.4: Sonar SRF05 od firmy Devantech. V případě, že robot detekoval sonarem překážku, zastavil motory a čekal až do doby, než odešla.
30
Závěr Práce se zabývá možnými přínosy pohledu vzhůru jako senzoru pro mobilní robotiku, především v městském prostředí. Zde se do záběru dostávají stěny domů po stranách ulice, které nabízí velké množství dobře detekovatelných bodů zájmu. Na rozdíl od pohledu vpřed se však do záběru nepletou lidé, psi, auta a další rušivé pohybující se objekty.
Dosažené výsledky Teoreticky jsme prozkoumali a popsali možné postupy detekce bodů zájmu (v kapitole 1). Navrhli jsme způsob, jak zjistit natočení dvou snímků vůči sobě a to spárováním nalezených bodů zájmu (kapitola 2) a aproximačním řešením námi sestavené soustavy lineárních rovnic. Odůvodnili a popsali jsme i tvar této rovnice a s jakými transformacemi musíme u pohledu vzhůru počítat. Navržený způsob jsme implementovali a navrhli experiment pro změření kvality výsledků naší metody. Provedli jsme praktická měření v terénu, na robotické platformě Eduro (viz kapitolu 6). Výsledky těchto měření jsme zpracovali (kapitola 5) a zjistili, že ačkoliv během stejného dne, za podobných světelných podmínek dává naše metoda velmi dobré výsledky (výběrová směrodatná odchylka měření byla srovnatelná se směrodatnou odchylkou kompasu, který jsme používali jako absolutní senzor), při porovnávání snímků z různých dnů, za různých světelných podmínek je přesnost výrazně horší. Z toho plyne, že navržená metoda je bez jakýchkoliv úprav obrazu bez problému použitelná jako relativní senzor, který zvládne zjistit o jaký úhel se robot pootočil mezi pořízením dvou snímků. Porovnávání snímků mezi různými dny jsme se snažili řešit pomocí několika různých úprav obrazu (viz kapitolu 4). Pro každou z těchto úprav jsme provedli další měření (na datech sesbíraných z prvního experimentu). Z těchto úprav nakonec podalo nejlepší výsledky zvyšování kontrastu (v některých případech až čtyřnásobné zmenšení výběrové směrodatné odchylky v oproti neupraveným snímkům). Tato metoda navíc vede k odstranění mraků z oblohy, takže se navzájem sblíží snímky, pořízené při odlišných světelných podmínkách, např. při jasné a zatažené obloze. Navržená metoda s úpravou obrazu zvyšováním kontrastu je tedy vhodná i jako absolutní senzor, který dokáže zjistit absolutní natočení robota porovnáním s předem pořízenou sbírkou snímků u kterých je poznamenáno jejich absolutní natočení vůči severu. Užitečná je samozřejmě i databáze snímků bez jejich absolutního natočení vůči severu. Můžeme si například namapovat cestu, kterou bude robot projíždět pravidelně a vcelku nás nezajímá, na kterou světovou stranu tato cesta vede. Navíc, jak vyplývá z [3], pro navigaci není nutné, aby robot přesně věděl kde je – informace o kolik se má otočit, aby jel správným směrem může být dostatečná k tomu, aby se nakonec dostal do cíle.
31
Výsledky našeho měření tedy ukázaly, že kamera namířená vzhůru je skutečně použitelná jako senzor pro mobilní robotiku, především jako doplněk stávajících senzorických systémů – např. jako jeden ze senzorů dodávajících data pro Monte Carlo lokalizaci [16].
Slabiny navržené metody Navržená metoda není vhodná pro použití ve volné krajině, kde se nevyskytují vysoké budovy. Také může mít problém u panelových domů, které mohou vypadat stejně i když robot stojí o jeden vchod dále. V tomto případě ale neztrácíme informaci o natočení (není-li panelový dům zahnut do oblouku). Obecně není metoda využitelná v místech, kde se nevyskytuje dostatečně velký počet vhodně umístěných bodů zájmu (tak aby byly v záběru kamery namířené vzhůru).
Otevřené problémy Práce otevírá prostor pro další zkoumání příbuzných problémů. Rozhodli jsme se pro detekci bodů zájmu, které skutečně reprezentují body (pixely) v obrazu. Podobným způsobem by však bylo možné detekovat a porovnávat hrany, nebo jiné objekty, stručně zmíněné v kapitole 1. Dalším neprozkoumaným aspektem je pohled vzhůru v outdoorovém prostředí, kde robot místo stěn budov vidí např. koruny stromů. I pro tento případ by šlo provést podobně měření, jako v kapitole 5. Obecně však lze v outdoorovém prostředí očekávat spíše špatné výsledky, kvůli malému počtu bodů zájmu, které se vyskytují směrem vzhůru. Jinou možností rozvoje myšlenky je zkoumat naopak pohled kolmo dolů – na dlažbu pod sebou. Tento přístup postrádá některé vlastnosti pohledu vzhůru – země se mění častěji než stěny domů a obsahuje buď hodně pravidelné vzory, které mohou robota mást, nebo naopak příliš malý počet bodů zájmu. Na druhou stranu, stejně jako pohled vzhůru nemá problém se přibližováním / vzdalováním objektů, protože země je stále stejně daleko a navíc je přítomna i v outdoorovém prostředí. Pohled dolů by mohl být velmi zajímavý pro orientaci létajících robotů, např. quadrokoptéry Ar.Drone. V tomto případě ale země není stále stejně daleko.
32
Seznam použité literatury [1] Suksakulchai, S., et al. Mobile Robot Localization using an Electronic Compass for Corridor Environment. IEEE International Conference on Systems, Man, and Cybernetics, 2000, Volume 5, Pages 3354 – 3359. ISSN 1062-922X. [2] Borenstein, J., et al. Mobile Robot Positioning – Sensors and Techniques. Journal of Robotic Systems, 1997, Volume 14, No. 4, Pages 231 – 249. ISSN 0741-2223. [3] Krajník, T., et al. Simple yet stable bearing-only navigation. Journal of Field Robotics, 2010, Volume 27, Issue 5, Pages 551 – 533. ISSN 1556-4967. [4] Krajník, T., et al. A Visual Navigation System for RoboTour Competition. In Proceedings of the 1st intrnational conference on Robotics in Education, RiE2010, Pages 95 – 100. FEI STU, Slovensko, 2010. [5] DeSouza, G. N. – Kak, A. C. Vision for mobile robot navigation: a survey. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002, Volume 24, No. 2, Pages 237 – 267. ISSN 0162-8828. [6] Matsumoto, Y., et al. Visual Navigation using Omnidirectional View Sequence. Proceedings of 1999 IEEE/RSJ International Conference on Intelligent Robots and Systems, 1999, Volume 1, Pages 317 – 322. ISBN 0-7803-5184-3. [7] Matas, J., et al. Robust wide-baseline stereo from maximally stable extremal regions. Image and Vision Computing, 2004, Volume 22, Issue 10, Pages 761 – 767. ISSN 0262-8856. [8] OpenCV 2.1 C++ Reference — opencv v2.1 documentation [online]. c2010, [cit. 2012-05-15].
. [9] Moravec, H. Obstacle Avoidance and Navigation in the Real World by a Seeing Robot Rover. Tech Report CMURITR8003. Carnegie Mellon University, Robotics Institute, doctoral dissertation. Stanford University, 1980. [10] Harris, C. – Stephens, M. A combined corner and edge detector. ceedings of the 4th Alvey Vision Conference, 1988, Pages 147 – 151.
Pro-
[11] Bay, H. – Tuytelaars ,T. – Van Gool, L. SURF: Speeded Up Robust Features. In Computer Vision – ECCV 2006. Volume 3951, 2006. Pages 404 – 417. ISBN 978-3-540-33832-1. [12] Bay, H., et al. Speeded-Up Robust Features (SURF). Computer Vision and Image Understanding, 2008, Volume 110, Issue 3, Pages 346 – 359. ISSN 1077-3142.
33
[13] Rosten, E. – Drummond, T. Machine Learning for High-Speed Corner Detection. In Computer Vision – ECCV 2006, Volume 3951, 2006. Pages 430 – 443. ISBN 978-3-540-33832-1. [14] 3-Axis Compass with Algorithms HMC6343 – Honeywell [online]. March 2010, [cit. 2012-05-15].
[15] Dlouhý, M. – Roubíček, J. – Roubíček, T. EDURO – Mobile Robotic Platform for Education. In Proceedings of the 1st international conference on Robotics in Education, RiE2010, Pages 107 – 111. FEI STU, Slovensko, 2010. [16] Thrun, S., et al. Robust Monte Carlo localization for mobile robots. In Artificial Intelligence, Volume 128, Issues 1–2, 2001. Pages 99 – 141. ISSN 0004-3702.
34
Seznam obrázků 1
Člověk v záběru kamery umístěné na vrcholu robota. . . . . . . .
9
1.1 Okna v Moravcově algoritmu detekce rohů. . . . . . . . . . . . . .
12
1.2 Body zájmu nalezené Harrisovým operátorem. . . . . . . . . . . .
13
1.3 Body zájmu nalezené detektorem SURF. . . . . . . . . . . . . . .
13
1.4 Body zájmu nalezené detektorem SIFT. . . . . . . . . . . . . . . .
14
1.5 Body zájmu nalezené detektorem FAST. . . . . . . . . . . . . . .
15
4.1 Rozdílné jasové podmínky . . . . . . . . . . . . . . . . . . . . . .
19
4.2 Snímky s normalizací RGB . . . . . . . . . . . . . . . . . . . . . .
20
4.3 Snímky s konstantním jasem . . . . . . . . . . . . . . . . . . . . .
20
4.4 Snímky s dynamicky pozměněným jasem . . . . . . . . . . . . . .
21
4.5 Snímky se zvýšeným kontrastem . . . . . . . . . . . . . . . . . . .
21
5.1 Místo A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
5.2 Místo B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
5.3 Místo C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
5.4 Místo D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
6.1 Eduro na soutěži Field Robot 2010. . . . . . . . . . . . . . . . . .
28
6.2 Diferenciálně řízený model robota . . . . . . . . . . . . . . . . . .
28
6.3 Kompas HMC6343 od firmy Honeywell. . . . . . . . . . . . . . . .
29
6.4 Sonar SRF05 od firmy Devantech. . . . . . . . . . . . . . . . . . .
30
35
Seznam tabulek 5.1 Porovnání dat z kompasu a kamery z 11. 10. 2011 . . . . . . . . .
24
5.2 Porovnání dat z kompasu a kamery z 18. 10. 2011 . . . . . . . . .
24
5.3 Porovnání dat z kompasu a kamery z 11. 10. a 18. 10. 2011 . . . .
25
5.4 Závislost velikosti chyby na úhlu otočení . . . . . . . . . . . . . .
25
5.5 Průměrná chyba při „nulovém testu“ . . . . . . . . . . . . . . . .
26
5.6 Porovnání dat při pozměněném jasu . . . . . . . . . . . . . . . . .
26
5.7 Porovnání dat při zvýšeném kontrastu . . . . . . . . . . . . . . .
27
36
Seznam použitých zkratek FAST Features from Accelerated Segment Test. HSV Hue-Saturation-Value. LSM Least Squares Method. MSER Maximally Stable Extremal Regions. OpenCV Open Source Computer Vision Library. RGB Red-Green-Blue. SIFT Scale-invariant Feature Transform. SURF Speeded-up Robust Features.
37
A. Obsah přiloženého CD CD-ROM Bakalářská práce Data 2011-10-11 2011-10-18 Zdrojové kódy prace.pdf Adresář bakalářská práce obsahuje zdrojové texty práce, překládané programem LATEX a obrázky ve formátu eps1 . Obsahuje též soubor Makefile, díky kterému jde celou práci zbudovat příkazem make. Výsledkem tohoto překladu je především soubor prace.pdf, který je též vložen do kořenového adresáře CD. Chceme-li se zbavit všech nepotřebných souborů vzniklých při překladu, použijeme příkaz make clean. Každý z podadresářů v adresáři Data obsahuje snímky, nasbírané při průjezdu, několik souborů s logy, které si ukládá robotická platforma Eduro a námi vyfiltrovaný soubor compass.log, obsahující na každém řádku údaj o natočení z kompasu a název aktuálního snímku. Adresář zdrojové kódy obsahuje kromě zdrojových kódů i soubor Makefile, díky němuž se po spuštění příkazu make (máme-li nainstalovanou knihovnu OpenCV), vytvoří následující spustitelné soubory: AdjustContrast Compare2 Detect_FAST Detect_Harris Detect_SIFT Detect_SURF NormalizeDynamic NormalizeRGB NormalizeStatic TopSight Soubory Detect_* detekují v obraze příslušné body zájmu a vykreslují je. Soubory Normalize* a AdjustContrast provádí úpravy obrazu popsané v kapitole 4. Skript Compare2 porovnává dva obrázky – detekuje v nich body zájmu, hledá mezi nimi párování a nakonec počítá lineární transformaci, tak jak je to popsáno v kapitolách 1, 2 a 3. Nakonec tuto transformaci vypíše na standartní výstup. Skript TopSight dělá nejkomplexnější práci – tento skript se volal přímo na robotovi a určoval kterým směrem se má robot natáčet, aby sledoval předem nafocenou trasu. 1
Encapsulated PostScript
38
Všechny výše jmenované skripty, jsou-li zavolány bez parametrů, vypíšou stručnou nápovědu k použití.
39