Mendelova univerzita v Brně Provozně ekonomická fakulta
Optimalizace markerů pro aplikace rozšířené reality Bakalářská práce
Vedoucí práce: Ing. David Procházka, Ph.D.
Petr Kabelka
Brno 2014
Děkuji vedoucímu mé práce, panu Ing. Davidu Procházkovi, Ph.D., za vedení, ochotný přístup, trpělivost a odbornou pomoc během psaní této práce. Dále bych chtěl poděkovat přítelkyni Evě a rodičům za jejich podporu.
Čestné prohlášení Prohlašuji, že jsem tuto práci: Optimalizace markerů pro aplikace rozšířené reality vypracoval samostatně a veškeré použité prameny a informace jsou uvedeny v seznamu použité literatury. Souhlasím, aby moje práce byla zveřejněna v souladu s § 47b zákona č. 111/1998 Sb., o vysokých školách ve znění pozdějších předpisů, a v souladu s platnou Směrnicí o zveřejňování vysokoškolských závěrečných prací. Jsem si vědom, že se na moji práci vztahuje zákon č. 121/2000 Sb., autorský zákon, a že Mendelova univerzita v Brně má právo na uzavření licenční smlouvy a užití této práce jako školního díla podle § 60 odst. 1 Autorského zákona. Dále se zavazuji, že před sepsáním licenční smlouvy o využití díla jinou osobou (subjektem) si vyžádám písemné stanovisko univerzity o tom, že předmětná licenční smlouva není v rozporu s oprávněnými zájmy univerzity, a zavazuji se uhradit případný příspěvek na úhradu nákladů spojených se vznikem díla, a to až do jejich skutečné výše.
V Brně dne 30. prosince 2013
....................................................
4
Abstract Kabelka, Petr. Optimizing markers for the augmented reality applications. Bachelor thesis. Brno, 2014. This thesis is focused on the libraries and frameworks for augmented reality. Part of this work is empirical testing for evaluation and comparison of the libraries with each other. The rest of the work is optimization of the markers for detection. The results are compared with previous values.
Abstrakt Kabelka, Petr Optimalizace markerů pro aplikace rozšířené reality. Bakalářská práce. Brno, 2014. Práce se zaměřuje na knihovny a frameworky pro rozšířenou realitou. Část práce se zaobírá porovnáním těchto knihoven a srovnáním mezi sebou, testování probíhá empirickým měřením. Zbytek práce je zaměřen na optimalizaci markerů pro detekci (s ohledem na způsob jejich použití) a následném srovnání s původními hodnotami.
5
OBSAH
Obsah 1 Úvod a cíl práce 1.1 Úvod práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 7 7
2 Markery 2.1 Požadavky na marker . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Typy markerů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 8 9
3 Morphology-based metody 3.1 Match template frameworky . . . 3.1.1 ARToolKit . . . . . . . . . 3.1.2 ATOMIC Authoring Tool 3.2 Binary code frameworky . . . . . 3.2.1 Metaio SDK . . . . . . . . 3.2.2 ArUco . . . . . . . . . . . 3.2.3 GRATF . . . . . . . . . . 3.2.4 ALVAR . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
10 10 10 12 12 12 12 13 13
4 Feature-based metody 15 4.1 Scale-Invariant Feature Transform . . . . . . . . . . . . . . . . . . . . 15 4.2 Speeded-Up Robust Features . . . . . . . . . . . . . . . . . . . . . . . 17 5 Metodika testování 5.1 Testovací scénáře 5.2 Postup . . . . . . 5.3 Optimalizace . . 5.4 Testovací sestava
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
19 19 19 20 20
6 Měření 6.1 ARToolKit . . . . . . . . . 6.1.1 Instalace . . . . . . 6.1.2 Výsledky . . . . . . 6.2 Metaio SDK . . . . . . . . 6.2.1 Instalace . . . . . . 6.2.2 Výsledky . . . . . . 6.3 GRATF . . . . . . . . . . 6.3.1 Instalace . . . . . . 6.3.2 Výsledky . . . . . . 6.4 ATOMIC Authoring Tool 6.4.1 Instalace . . . . . . 6.4.2 Výsledky . . . . . . 6.5 ArUco . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
21 21 21 21 23 23 24 24 24 25 26 26 26 27
. . . .
. . . .
. . . .
. . . .
6
OBSAH
. . . . . .
27 27 28 28 28 29
7 Vlastní návrh markeru 7.1 Match template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.3 Shrnutí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31 31 34 35
8 Závěr
37
9 Literatura
38
6.6
6.7
6.5.1 Instalace . . 6.5.2 Výsledky . . ALVAR . . . . . . 6.6.1 Instalace . . 6.6.2 Výsledky . . Celkové zhodnocení
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
1
ÚVOD A CíL PRÁCE
1 1.1
7
Úvod a cíl práce Úvod práce
Na první pohled by se mohlo zdát, že rozšířená realita se rozmohla až v posledních letech, ale podle článku („The Master Keyÿ: L. Frank Baum envisions augmented reality glasses in 1901) první zmínka nebo nápad padl už v roce 1901 v knize The Master Key, an Elektrical Fairy Tale Founded Upon the Mysteries of Electricity od amerického spisovatele L. Franka Bauma. Román pojednává o chlapci jménem Rob Joslyn, který experimentuje s elektřinou a náhodou vyvolá démona, který mu dá několik darů a právě jeden z nich je „character markerÿ. Jsou to brýle, které při nasazení určují charakter lidí v podobě písmene umístěného na čele člověka. Dnes sice nemáme brýle, které určují charakter člověka, ale rozšířená realita se běžně používá a díky mobilním telefonům a tabletům se rychle rozšiřuje. To má za následek kladení vyšších nároků na tyto aplikace. Abychom mohli umístit nějaké objekty na požadované místo v obraze, potřebujeme značky, tzv. markery, které na pohled silně připomínají známé QR kódy (můžeme detekovat i přirozené objekty, ale v této práci se budeme soustředit na oblast markerů). Na detekci a samotný marker jsou kladeny vyšší nároky, je třeba z něho vyčíst více údajů než pouze informaci. Potřebujeme zjistit velikost objektu (ta je přímo úměrná velikosti markeru), umístění v prostoru a ještě výsledné natočení. Celý tento proces je náročný a je třeba optimalizace k dosažení co nejlepších výsledků. Existuje celá řada algoritmů, s tím i spojené typy markerů a je problém určit jejich klady, případně zápory a právě na tuto problematiku je zaměřená tato práce.
1.2
Cíl práce
Cílem práce je porovnat často využívané metody detekce markerů. Porovnávacími kritérii budou zejména: maximální vzdálenost markeru, jeho možnosti natočení a také robustnost na překrytí. Po výběru vhodné metody bude tuto třeba ještě optimalizovat a navrhnout vhodnou strukturu markeru tak, aby vykazovaly co nejlepší výsledky. Porovnávání metod bude probíhat experimentálním měřením s různým nastavením a odlišnou strukturou markeru. Nakonec se vyhodnotí dosažené výsledky s existujícím řešením.
2
MARKERY
2
8
Markery
Rozšířená realita (Augmented Reality), dále jen AR, je spojení reálného a virtuálního světa. Jedná se o doplnění různých virtuálních objektů do reálného světa v reálném čase. Může to být i statický obraz či video. AR lze rozdělit na 2 typy (Types of AR): • marker-based (základem je marker) • markerless (bez použití markeru) Marker-based využívá kamery a markeru. Kamera snímá určité místo, vyhledává markery a na jejich místo vykresluje virtuální objekty. Markerless žádné markery nepoužívá, ale dále tato práce se zabývá zejména marker-based AR. QR kód není marker. Například v příspěvku (QR Codes and AR markers) lze najít srovnání QR kódu a markeru rozšířené reality a to díky jejich vzájemné podobě. Jejich využití je zcela jiné a moc společných věcí nemají. Quick Response (QR) kód se používá k ukládání řetězců, zejména URL adres, ale může být v něm uložen i obyčejný text či telefonní číslo. I při čtení je zde veliký rozdíl, u QR kódu se používá pouze 2D analýza obrazu, u markeru je potřeba i 3. rozměr. Ve výsledku mohou vypadat úplně stejně, ale QR kód není vhodný pro aplikace rozšířené reality. Markery jsou obvykle větší a obsahují méně bílých a černých čtverců, jejich hodnoty jsou předem známé a nemusíme je vůbec dekódovat. Stačí je rozpoznat a následně sledovat jejich pohyb.
Obr. 1: Příklad QR kódu s uloženou URL adresou http://www.pef.mendelu.cz/
2.1
Požadavky na marker
Marker bývá obvykle takový, aby byl co nejlépe čitelný a rozpoznatelný, to lze ovlivnit jeho návrhem a zpracováním. Vhodné bývá udělat jednoduchý design s kontrastními barvami, čím méně detailů tím lépe. V neposlední řadě by neměl být marker vytištěn na lesklém papíru, odrazy světla by ztížily nebo znemožnily jeho detekci.
2.2
2.2
Typy markerů
9
Typy markerů
Každý framework používá vlastní typ markeru, některé jsou složeny ze čtverců a jiné obsahují obrázky. Obecně ale platí, že jsou navrženy tak, aby šla rozpoznat jejich orientace. Příklad markerů je vidět na obrázku 2.
Obr. 2: Příklad některých typů markerů
Template marker je jeden z nejčastěji používaných markerů, využívá se zde metody match template. Konkrétně tento marker patří knihovně ARToolKit. ID encoded marker nebo také binární je další z častých typů, je vhodný při větším počtu různých markerů. Tento marker patří frameworku Metaio. Data matrix marker je podporován například knihovnou Studierstube a může obsahovat velké množství binárních dat (například jednoduché 3D objekty). Frame marker je stejně jako Data matrix podporována knihovnou Studierstube, data jsou kódována přímo v okraji markeru a vnitřek může být vyplněn obrázkem (Studierstube). Metody, které řeší detekci lze rozdělit na 2 typy, Morphology-based (morfologické) a feature-based. Markery pro morfologické metody mají černé rámečky a jsou vidět na obrázku 2. Feature-based hledájí klíčové body.
3
10
MORPHOLOGY-BASED METODY
3
Morphology-based metody
Tyto metody mají 2 různé možnosti vzoru: • Match template – Tato metoda hledá oblasti v obrázku (ve vnitřku markeru), které jsou podobné vzoru. • Binary code – Čísla jsou přímo zakódovaná v obrazu markeru a výhodou je absence učení markeru. Detekce většího počtu těchto markerů je rychlejší než v případě template.
3.1 3.1.1
Match template frameworky ARToolKit
Původně tato knihovna byla vyvinuta studentem Hirokazu Kato v roce 1993 (ARToolKit). V současnosti je dostupná jako opensource projekt (verze 2.x) a komerční verze od ARToolWorks (verze 4.x), porovnání obou verzích lze vidět v tabulce 1 (ARToolKit Features). K dispozici je pro Microsoft Windows, Mac OS X, Linuxové systémy a SGI Irix, dále knihovna byla portována pro Symbian, Android, Windows Phone a iOS. Tab. 1: Výčet některých vlastností
Podpora x86 64 Podpora vykreslování OpenGL OpenVRML OpenSceneGraph Podpora jazyků C C++ Objective-C Java C#
ARToolKit v2.x
ARToolKit v4.x
ano
ano
ano ano ano1
ano ano ano
ano ne ne ano ne
ano ano ano ano2 ano3
Tato knihovna se stala základem pro další projekty, rozšířenou verzí byl ARToolKitPlus, ale jeho vývoj byl ukončen v roce 2006. Jeho nástupce se stal Studierstube Tracker (Studierstube). Jde o knihovnu, která měla velmi podobný koncept, ale byla napsána od začátku a její kód je zcela odlišný, nicméně se jedná o projekt s uzavřenými zdrojovými kódy a není dostupný ke stažení. 1
osgART NyARToolKit 3 NyARToolKit 2
3.1
Match template frameworky
11
Marker pro tuto knihovnu má několik podmínek, které by měly být splněny. Musí se jednat o čtverec a jeho okraj musí být spojitý. Obrázek může být černobílý a nebo i barevný. A jak již bylo zmíněno výše, musí jít rozeznat orientace, takže by neměl být symetrický.
Obr. 3: Marker pro ARToolKit
Standardní soubor s uloženým markerem (například patt.hiro) obsahuje marker otočený ve 4 směrech za třech různých světelných podmínek. To znamená, že identifikace markeru vyžaduje 12 porovnání. Při použití více markerů je pak potřeba porovnání 12*N (Research of quickly identifying markers on Augmented Reality). Vyhledávání markeru funguje na principu, který lze popsat v několika krocích. Nejprve je video převedeno na černobílý obraz a ten je prohledán na všechny čtverce (obrázek 4). Následně je každý vzor ve čtverci zachycen a porovnán s naučenými markery. Pokud nalezne shodu, byl sledovaný marker nalezen a určí se poloha kamery vzhledem k markeru na základě orientace a velikosti. Poté se vykreslí objekt na správné místo.
Obr. 4: Thresholded
3.2
Binary code frameworky
3.1.2
12
ATOMIC Authoring Tool
Podle stránek (ATOMIC Authoring Tool) bylo cílem projektu bylo vytvořit aplikaci rozšířené reality, která by byla určena pro lidi bez znalostí programování. Jedná se v podstatě o grafické rozhraní pro ARToolKit. Je multiplatformní a je pod licencí GNU GPL. Poslední verze, která byla vydána je beta 0.7 a byla uvolněna ke stažení v červnu roku 2009. Dá se očekávat, že další aktualizace nebudou a projekt skončil.
3.2 3.2.1
Binary code frameworky Metaio SDK
Metaio je firma, která se zabývá tvorbou řešení pro rozšířenou realitu (Metaio). Byla založena v roce 2003 v Mnichově, kde je její hlavní sídlo. Nyní jsou jejími zákazníky například firmy jako Audi, BMW, Honda, Nokia a mnoho dalších. Metaio SDK je vývojová sada nástrojů k tvorbě aplikací pro Microsoft Windows, Android, iOS a je zde podpora i pro Unity. Vytváření aplikací s vodoznakem je zdarma, pro jeho odstranění je k dispozici placená licence. Tento framework využívá přes 65000 vývojářů po celém světě a je využíván ve více než 1000 aplikacích. Podporuje markerless i vyhledávání různých obrázků.
Obr. 5: Marker pro Metaio
Počet markerů, které metaio podporuje je 512 a všechny jsou ke stažení na adrese http://dev.metaio.com/fileadmin/user_upload/documents/ sdk/IDMarkers80mm.pdf. Pro tyto markery jsou 2 možnosti vyhledávání (TrackingQuality), mód Fast a Robust. První mód používá pevnou hodnotu ThresholdOffset a měla by se používat pouze při neměnících se světelných podmínkách. Druhý mód je vhodný použít při měnících se světelných podmínkách. 3.2.2
ArUco
Minimální knihovna napsaná v jazyce C++ a je dostupná pod licencí BSD. Podle oficiálního webu (ArUco) jde o vzdělávací projekt, který má ukázat studentům jak detekovat markery. Vyžaduje pouze knihovnu OpenCV (verze 2.1 nebo vyšší) a díky tomu je multiplatformní. Klíčovými vlastnostmi jsou:
3.2
Binary code frameworky
13
• detekce markerů jedním řádkem v jazyce C++ • detekce AR boardů (markery tvořené několika markery) • použití až 1024 různých markerů • jednoduchá integrace s OpenGL a OGRE
Obr. 6: Marker pro ArUco
Marker je rozdělen na mřížku 6×6 s tím, že 5×5 políček obsahuje ID hodnotu, zbylé políčka tvoří černý okraj. Kódování je tvořeno lehce upraveným Hammingovým kódem. Hlavní rozdíl oproti tomuto kódu spočívá v invertování prvního bitu, to znamená že ID 0 je reprezentováno hodnotou 10000, je to z důvodu zamezení vzniku celého černého markeru. Ve výsledku může existovat 1024 různých ID. 3.2.3
GRATF
Je zkratkou pro Glyph Recognition and Tracking Framework. Tato knihovna lze použít například v aplikacích pro roboty, kde jednotlivé glyphy by udávaly příkazy robotům, ale dá se využít i v aplikacích rozšířené reality (GRATF).
Obr. 7: Ukázka glyphu
3.2.4
ALVAR
Poslední testovaná knihovna je ALVAR, byla vyvinuta ve VTT Technical Research Centre of Finland. Je k dispozici pod licencí LGPL a je dostupná pro Windows
3.2
Binary code frameworky
14
a Linux. Podle stránek (ALVAR) požaduje pouze OpenCV a je nezávislá na grafických knihovnách. Umí vyhledávat klasické markery i různé předefinované obrázky a objekty. Ukázkové programy používají glut.
Obr. 8: Marker pro knihovnu ALVAR
4
FEATURE-BASED METODY
4
15
Feature-based metody
Dalším typem metod jsou feature-based. Tyto metody jsou založeny na vyhledávání klíčových bodů, to jsou různé oblasti zájmu. Mohou to být například (Hybrid SURFgolay marker detection method for augmented reality applications, 2012): • Hrany • Rohy • Bloby Detekce těchto bodů podporuje například knihovna OpenCV, kterou využívají i některé knihovny z kapitoly 3. OpenCV (Open Source Computer Vision Library) je knihovna programovacích funkcí, která je zaměřena na zpracování obrazu v reálném čase. Je multiplatformní, je napsaná v jazyce C++ a její základní rozhraní je pro jazyk C++, dále má rozhraní pro jazyky Python, Java a Matlab. Obsahuje více než 2500 optimalizovaných algoritmů (OpenCV DevZone). Metody na vyhledávání klíčových bodů, které tato knihovna podporuje, jsou: • Harris Corner Detection • Shi-Tomasi Corner Detector • FAST Algorithm for Corner Detection • BRIEF • ORB • SIFT • SURF Pro účely této práce byly vybrány algoritmy SIFT a SURF na základě článku (Hybrid SURF-golay marker detection method for augmented reality applications, 2012), který řeší detekci markeru feature-based metodou.
4.1
Scale-Invariant Feature Transform
Tato metoda (zkráceně SIFT ) extrahuje klíčové body a vypočítává jejich deskriptory. (Feature Detection and Description). V následující ukázce je vidět použití této metody v jazyce Python. Vstupem je obrázek 9 a výsledek je vidět v obrázku 10. 1
import cv2
2 3
image = cv2 . imread ( ’ p e f . png ’ , 0 )
4 5 6
s i f t = cv2 . SIFT ( ) k e y p o i n t s = s i f t . d e t e c t ( image , None )
4.1
7 8 9
Scale-Invariant Feature Transform
16
image = cv2 . drawKeypoints ( image , k e y p o i n t s , f l a g s=cv2 .DRAW MATCHES FLAGS DRAW RICH KEYPOINTS) cv2 . i m w r i t e ( ’ k e y p o i n t s s i f t . j p g ’ , image )
Příkaz na řádku 3 načte obrázek a převede ho do odstínů šedé, o to se se stará parametr 0. Je to to samé jako použití CV LOAD IMAGE GRAYSCALE. 1
image = cv2 . imread ( ’ p e f . png ’ , f l a g s=cv2 .CV LOAD IMAGE GRAYSCALE)
Funkce drawKeypoints() vykreslí do obrázku malé kruhy na místa klíčových bodů, použití flagu jak je uvedeno v ukázce zajistí vykreslení kruhu velikosti klíčových bodů a ukáže jejich orientaci.
Obr. 9: Původní obrázek
Obr. 10: Klíčové body (SIFT)
4.2
4.2
Speeded-Up Robust Features
17
Speeded-Up Robust Features
Metoda (zkráceně SURF ) byla publikována v roce 2006 a důvod jejího vzniku je pomalost algoritmu SIFT (Feature Detection and Description). Takže se jedná o novější a rychlejší verzi SIFTu. Použití je velice podobné jako v předchozím případě: 1
import cv2
2 3
image = cv2 . imread ( ’ p e f . png ’ , 0 )
4 5 6
s u r f = cv2 . SURF( 5 0 0 0 ) k e y p o i n t s , d e s c r i p t o r s = s u r f . detectAndCompute ( image , None )
7 8 9
image = cv2 . drawKeypoints ( image , k e y p o i n t s , None , ( 2 5 5 , 0 , 0 ) , 4 ) cv2 . i m w r i t e ( ’ k e y p o i n t s s u r f . j p g ’ , image )
Parametr na řádku 5 je tzv. Hessian Threshold, který ovlivní počet klíčových bodů (větší hodnota sníží počet bodů). Optimální hodnoty jsou mezi 300 a 500, ale pro ukázku bylo vhodnější číslo zvětšit, aby byl obrázek přehlednější.
Obr. 11: Klíčové body (SURF)
Díky klíčovým bodům můžeme porovnat 2 obrázky a najít v nich společné body (Feature Matching). 1 2
image1 = cv2 . imread ( ’ image1 . png ’ , 0 ) image2 = cv2 . imread ( ’ image2 . png ’ , 0 )
Vyhledání klíčových bodů pro oba obrázky: 1 2
k e y p o i n t s 1 , d e s c r i p t o r s 2 = s u r f . detectAndCompute ( image1 , None ) k e y p o i n t s 1 , d e s c r i p t o r s 2 = s u r f . detectAndCompute ( image2 , None )
4.2
Speeded-Up Robust Features
18
Nyní když jsou vyhledány všechny body, je dalším krokem je porovnat, lze využít například Brute-force Matcher a nebo FLANN based Matcher. V následujícím kódu je příklad použití první varianty: 1 2
matcher = cv2 . BFMatcher ( ) matches = matcher . knnMatch ( d e s c r i p t o r s 1 , d e s c r i p t o r s 2 , k=2)
Poté stačí vykreslit, výsledek je vidět na obrázku 12.
Obr. 12: Feature matching (Hessian Threshold 6000)
5
METODIKA TESTOVÁNí
5
19
Metodika testování
Při řešení optimalizace markeru je třeba vyřešit několik věcí: 1. Sestavit testovací scénáře 2. Definovat postup měření 3. Na základě měření provést optimalizace
5.1
Testovací scénáře
Aby mohly být frameworky co nejpřesněji porovnány mezi sebou, je třeba zajistit stejné podmínky pro jednotlivá měření. Nejdůležitější bude zajistit identické světelné podmínky, které by velice mohly ovlivnit jednotlivé výsledky. Dále je třeba zajistit, aby jednotlivé markery pro různé frameworky měly stejnou velikost, ta byla zvolena na 80 mm. Markery budou přilepeny na lepence, aby nedošlo k vlnění a deformaci markeru, to by mohlo znepřesnit měření. Každá knihovna bude testována za použití vlastních markerů, aby nedošlo ke zvýhodňování některých aplikací. Parametry, které budou porovnávány: • maximální vzdálenost rozpoznání markeru • úhel natočení markeru • odezva • chování při různém pozadí markeru • chování při jiné intenzitě světla • chování při více markerech • robustnost • rozdíl při VGA a HD rozlišení
5.2
Postup
Maximální vzdálenost a úhel natočení bude porovnána v jedné tabulce, můžeme předpokládat, že marker při větším natočení bude více rozpoznatelný na menší vzdálenosti a s rostoucí vzdáleností bude čitelnost markeru nižší. Toto měření ovlivní i nastavené rozlišení kamery, při vyšším rozlišení bude maximální vzdálenost větší, proto měření proběhne dvakrát, jednou při rozlišení VGA (480p) a podruhé při HD (720p). Marker se bude nacházet kolmo ke kameře a bude se vzdalovat. Měřené úhly budou v rozmezí od 0◦ do 80◦ . Při dalším měřením se změří odezva a vyzkouší se při jiné intenzitě světla. Očekávaný výsledek bude lepší odezva při větším světle. Opět srovnání proběhne při
5.3
20
Optimalizace
více vzdálenostech. Chování při překrytí části markeru bude probíhat při vzdálenosti 1 metru. Jako dalším důležitým parametrem je detekce markeru při složitém pozadí, zde může nastat situace, kdy testovaný toolkit najde obrazce podobné markeru a špatně je vyhodnotí. Proto za marker budou umístěny různé objekty (například knihy). Poslední parametr je chování při použití více markerů, zde bude otestováno jak si daný framework poradí v takové situaci.
5.3
Optimalizace
Na základě výsledků lze provést optimalizace markerů. Budou stanoveny modelové scénáře (jeden, pár a více markerů) a na jejich základě bude provedena optimalizace. Výsledky nových návrhů se porovnávají s původními výsledky a vyhodnotí se nové řešení. Podstatné je, aby výsledný návrh splňoval všechny důležité požadavky.
5.4
Testovací sestava
Pro největší přesnost budou všechny testy probíhat za stejných podmínek a proto vše bude měřeno na jednom počítači (tabulka 2). Tab. 2: Konfigurace počítače Procesor Paměť RAM Grafická karta Operační systém Kamera
Intel Core i5-2500K @ 3.3 GHz 12 GB @ 1333 MHz Nvidia GeForce GTX 550 Ti Windows 7 x64 Microsoft LifeCam
6
MĚŘENí
6 6.1 6.1.1
21
Měření ARToolKit Instalace
Jelikož jsou k dispozici zdrojové kódy, jsou tedy 2 možnosti jak nainstalovat tuto knihovnu. Celý projekt může být zkompilován a nebo lze využít binární verze. Obojí je ke stažení na stránkách: http://sourceforge.net/projects/artoolkit/files/ artoolkit/2.72.1/. Pro naše účely postačí předkompilovaná verze, protože lze nastavit rozlišení při spuštění aplikace. Archiv stačí stáhnout a rozbalit. Jsou v něm k dispozici ukázkové aplikace v adresáři examples/ a těch bude využito pro měření. V adresáři ARToolKit/examples/ je ukázkový program simple, který se velice hodí pro následující testování. Markery se nachází v ARToolKit/patterns/ a pro tuto aplikaci je použit pattHiro.pdf. Než proběhne vlastní měření je vhodné zkalibrovat kameru. Parametry kamery jsou uloženy v souboru camera para.dat a jsou načtena při každém spuštění aplikace. Je nutné vytisknout kalibrační papír, který se nachází v souboru doc/patterns/Calibration pattern.pdf. Po vytištění je nutné papír připevnit na pevný podklad. Program na kalibraci se jmenuje calib camera a po spuštění je nutné postupně vyznačit všechny tečky. Program měří vzdálenosti mezi nimi a vypočítává zkreslení čočky. Pokud bychom chtěli využít vlastního markeru, program na vytváření nových vzorů se jmenuje mk patt a nachází se ve složce ARToolKit/util/. Po spuštění se dotáže na soubor camera para.dat a poté se otevře okno s obrazem. Stačí namířit kameru na marker a počkat dokud se neobjeví vlevo nahoře červené rámování a zelené vpravo dole. Pak stačí pouze kliknout a napsat jméno souboru. Na změnu je třeba upravit řádek v souboru simpleTest.c (pro kompilaci programu je vyžadována knihovna glut). 6.1.2 1
Výsledky
c h a r ∗ patt name = ”Data / p a t t . h i r o ” ;
Po spuštění simple se aplikace dotázala na rozlišení. U VGA bylo nastaveno 30 snímků za vteřinu a při HD pouze 10 snímků (maximální hodnota, která šla nastavit). V prvním testu byly vyzkoušeny různé vzdálenosti a nejmenší vzdálenost pro detekci je 15 cm a maximální okolo 270 cm při VGA rozlišení. U HD se minimální vzdálenost posunula na 19 cm, maximální opět kolem 270 cm. Tato hranice byla opravdu maximální a nebyla spolehlivá, objekt nad markerem problikával, mizel a nebo se převracel. Všechny hodnoty jsou vidět v tabulce 3.
6.1
22
ARToolKit
Tab. 3: Detekce markeru při různém naklonění 25
50
Vzdálenost [cm] 75 100 150
VGA (480p)
0 20 40 60 80
T T T T T
T T T T T
T T T T T
T T T T T
HD (720p)
0 20 40 60 80
T T T T T
T T T T T
T T T T T
T T T T T
Rozlišení
Úhel [◦ ]
200
250
T T T T T
T T T -
T T T -
T T T T T
T T T T T
T T T T T
Jedním z dalších parametrů, který byl třeba zjistit je odezva v závislosti na vzdálenosti a světle (tabulka 4). Jak se dalo očekávat, velmi dobré výsledky se projevily při přirozeném světle. Při 1/2 umělém světle se snížená plynulost, maximální vzdálenost klesla na cca 120 cm v případě VGA i HD. U maximálního umělého světla byla největší vzdálenost u VGA 210 cm a u HD 240 cm. Tab. 4: Měření odezvy (hodnoty ve vteřinách) 25
50
Vzdálenost [cm] 75 100 150
VGA plné umělé světlo VGA 1/2 umělé světlo VGA přirozené světlo
<1 <1 <1
<1 <1 <1
<1 <1 <1
<1 <1 <1
<1 <1
1 <1
<1
HD plné umělé světlo HD 1/2 umělé světlo HD přirozené světlo
<1 <1 <1
<1 <1 <1
<1 <1 <1
<1 <1 <1
1 <1
1 <1
<1
Varianta
200
250
Jedním z posledních parametrů, který se porovnával, byla detekce několika markerů zároveň, pro toto měření posloužil jiný ukázkový program a to loadMultiple. Jak je vidět v tabulce 5, tato knihovna si poradila se všemi markery a nějaké problémy při složitějším pozadí nebyly zaznamenány. Tab. 5: Počet markerů Použito Nalezeno
2
3
4
2
3
4
Počet markerů 5 6 7 5
6
7
8
9
10
8
9
10
Testování možností překrytí markeru dopadlo tak, že ARToolKit si neporadí s žádným překrytím markeru, jakýkoliv zásah do černého čtverce znemožní detekci.
6.2
Metaio SDK
23
Na závěr ještě systémové prostředky, které si bežící aplikace vzala. Vytížení procesoru kolem 10 % a paměť 72 MB.
6.2 6.2.1
Metaio SDK Instalace
Pro stáhnutí tohoto frameworku je třeba se nejdříve zaregistrovat na stránkách http://www.metaio.com/. Po přihlášení je k dispozici stáhnutí aktuální verze, při stažení a nainstalování se vytvoří složka metaio v Dokumentech. Ke měření tohoto frameworku je využit Example, je zde možnost detekování markeru, obrázkového markeru a nebo je možnost markerless. Výchozí hodnota pro velikost markeru je 60 mm, je tedy nutné marker zvětšit a upravit hodnotu v souboru metaio/metaio SDK 5.0/tutorialContent crossplatform/Tutorial3/Assets3/TrackingData Marker.xml ze 60 na 80. 1 2
3 4
5 6
<MarkerParameters> < !−− S i z e o f t h e marker which has t o be p r o v i d e d t o c o r r e c t l y r e l a t e t h e marker p i x e l s i z e t o world c o o r d i n a t e s . The s i z e i s s p e c i f i e d i n m i l i m e t e r s . −−> <S i z e>80 < !−− Matrix ID t o i d e n t i f y t h e marker . The ID i s a s s o c i a t e d with t h e p a t t e r n on t h e marker and i s used t o i d e n t i f y t h e marker i n t h e camera image . −−> <MatrixID>1
Jako další je třeba upravit soubor MainWindow.cpp, přepsat cestu ke konfiguraci markeru a nastavit rozlišení kamery. 1 2
// s e t t h e c a l l b a c k t o t h i s c l a s s m pMetaioSDK−>r e g i s t e r C a l l b a c k ( t h i s ) ;
3 4 5
// a c t i v a t e 1 s t camera m pMetaioSDK−>startCamera ( 0 , 6 4 0 , 480 ) ;
6 7 8
9
// l o a d your f a v o r i t e c o n f i g u r a t i o n i f ( ! m pMetaioSDK−>s e t T r a c k i n g C o n f i g u r a t i o n ( ” . . / . . / . . / t u t o r i a l C o n t e n t c r o s s p l a t f o r m / T u t o r i a l 3 / A s s e t s 3 / TrackingData Marker . xml” ) ) f p r i n t f ( s t d e r r , ” F a i l e d t o l o a d t r a c k i n g c o n f i g u r a t i o n \n” ) ;
Aby seděla velikost okna s rozlišením je vhodné ještě upravit velikost okna a to je možné na řádku: 1
i n t wndWidth=640 , wndHeight =480;
6.3
24
GRATF
6.2.2
Výsledky
Opět nejdříve byla vyzkoušena maximální vzdálenost rozpoznání markeru. Zde byl marker detekován i na vzdálenost 3 metrů při VGA i HD rozlišení. Další výsledky jsou v tabulce 6. V tabulce 7 je vidět chování při různé intenzitě světla. Tab. 6: Detekce markeru při různém naklonění 25
50
Vzdálenost [cm] 75 100 150
VGA (480p)
0 20 40 60 80
T T T T T
T T T T T
T T T T -
T T T T -
HD (720p)
0 20 40 60 80
T T T T T
T T T T T
T T T T -
T T T T -
Rozlišení
Úhel [◦ ]
200
250
T T T T -
T T T -
T T T -
T T T T -
T T T T -
T T T -
200
250
Tab. 7: Měření odezvy (hodnoty ve vteřinách) 25
50
Vzdálenost [cm] 75 100 150
VGA plné umělé světlo VGA 1/2 umělé světlo VGA přirozené světlo
<1 <1 <1
<1 <1 <1
<1 <1 <1
<1 <1 <1
<1 1 <1
<1 <1
1 <1
HD plné umělé světlo HD 1/2 umělé světlo HD přirozené světlo
<1 <1 <1
<1 <1 <1
<1 <1 <1
<1 <1 <1
<1 1 <1
<1 <1
<1 <1
Varianta
Stejně jako u ARToolKitu si tento framework neporadil s překrytím při použití marker-based varianty, opět narušení černého čtverce znemožní detekci. Vytížení procesoru kolem 40 % a paměť, kterou si aplikace vzala byla mezi 80 a 115 MB v závislosti na použitém rozlišení kamery.
6.3 6.3.1
GRATF Instalace
Tento projekt je ke stažení na adrese https://code.google.com/p/gratf/ downloads/list a jsou k dispozici jak zdrojové kódy tak i binární verze. Stačí stáhnout binární verzi a rozbalit. K měření poslouží aplikace Glyph Recognition
6.3
25
GRATF
Studio, v této aplikaci se přímo vytváří jednotlivé glyphy, které jsou pak hledány. Je možné vyhledávat ve statickém obrazu, videu případně v obraze z kamery. U glyphů lze nastavit počet čtverců na straně (od 5×5 do 8×8) a je několik požadavků, musí obsahovat černý okraj, v každém sloupci i řádku musí být černý čtverec a opět musí být rozpoznatelná orientace. Při nedodržení těchto požadavků, glyph nelze vytvořit. Při vytváření lze nastavit co se má zobrazit při jeho nalezení, může se jednat o 2D obrázek, 3D objekt (zde je třeba XNA) a nebo barevné orámování. 6.3.2
Výsledky
Naměřené hodnoty jsou vidět v tabulkách 8, 9 a 10. Výsledky jsou oproti předchozím knihovnám slabší, ale hlavně tato knihovna měla problémy s hledáním glyphů při různém podkladu. Maximální možný počet glyphů, které aplikace najde, je pouze 3, při větším počtu se vždy označí pouze 3 ve stejnou dobu. Možnosti překrytí jsou opět žádné. Tab. 8: Detekce markeru při různém naklonění 25
50
Vzdálenost [cm] 75 100 150
VGA (480p)
0 20 40 60 80
T T T T -
T T T T -
T T T T -
T T T T -
HD (720p)
0 20 40 60 80
T T T T -
T T T T -
T T T T -
T T T T -
Rozlišení
Úhel [◦ ]
200
250
T T T -
T T T -
-
T T T -
T T T -
-
200
250
Tab. 9: Měření odezvy (hodnoty ve vteřinách) 25
50
Vzdálenost [cm] 75 100 150
VGA plné umělé světlo VGA 1/2 umělé světlo VGA přirozené světlo
<1 <1 <1
<1 1 <1
<1 1 <1
1 1 <1
1 1
1 1
-
HD plné umělé světlo HD 1/2 umělé světlo HD přirozené světlo
<1 <1 <1
<1 1 <1
<1 1 <1
1 1 <1
1 <1
1 1
-
Varianta
6.4
26
ATOMIC Authoring Tool
Tab. 10: Počet markerů Použito Nalezeno
6.4 6.4.1
2
3
4
2
3
3
Počet markerů 5 6 7 3
3
3
8
9
10
3
3
3
ATOMIC Authoring Tool Instalace
Tento projekt je ke stažení na stránkách http://sourceforge.net/projects/ atomic-project/files/. 6.4.2
Výsledky
V tabulkách 11 a 12 jsou vidět výsledky a i přesto, že projekt využívá ARToolKit, tak výsledky jsou mnohem horší, odezva je větší a vzdálenost na kterou je aplikace schopna detekovat marker je výrazně nižší. Na druhou stranu má příjemné uživatelské rozhraní. Tab. 11: Detekce markeru při různém naklonění 25
50
Vzdálenost [cm] 75 100 150
VGA (480p)
0 20 40 60 80
T T T T -
T T T T -
T T T T -
T T -
HD (720p)
0 20 40 60 80
T T T T -
T T T T -
T T T -
T T -
Rozlišení
Úhel [◦ ]
200
250
-
-
-
-
-
-
200
250
Tab. 12: Měření odezvy (hodnoty ve vteřinách) 25
50
Vzdálenost [cm] 75 100 150
VGA plné umělé světlo VGA 1/2 umělé světlo VGA přirozené světlo
<1 1 <1
1 1 <1
1 2 <1
2 2 1
-
-
-
HD plné umělé světlo HD 1/2 umělé světlo HD přirozené světlo
<1 1 <1
1 1 <1
1 2 1
2 3 1
-
-
-
Varianta
6.5
27
ArUco
6.5 6.5.1
ArUco Instalace
Zdrojové kódy této knihovny jsou ke stažení na adrese http://sourceforge.net/ projects/aruco/files/1.2.4/. Po stažení je třeba archiv rozbalit a zkompilovat. Projektový soubor vygeneruje Cmake a například přes Visual Studio se překompilují zdrojové kódy. Ve složce s binárními soubory lze najít ukázkové soubory a opět jich bude využito. Nejprve je potřeba vygenerovat marker, k tomu poslouží program aruco create marker.exe. Pro spuštění vyžaduje 3 parametry, ID markeru, jméno souboru a velikost obrázku v pixelech. 1
a r u c o c r e a t e m a r k e r . exe 1 marker1 . j p g 320
Vstupem pro program aruco simple.exe je pouze obrázek a nebo video. Sice nebude k dispozici obraz v reálném čase, ale postačí si pro tyto účely předpřipravit materiály a poté je otestovat. 6.5.2
Výsledky
Tab. 13: Detekce markeru při různém naklonění 25
50
Vzdálenost [cm] 75 100 150
VGA (480p)
0 20 40 60 80
T T T T -
T T T T -
T T T T -
T T T T -
HD (720p)
0 20 40 60 80
T T T T -
T T T T -
T T T T -
T T T T -
Rozlišení
Úhel [◦ ]
200
250
T T T -
-
-
T T T -
-
-
6.6
28
ALVAR
Tab. 14: Měření při různé intenzitě světla 25
50
Vzdálenost [cm] 75 100 150
VGA plné umělé světlo VGA 1/2 umělé světlo VGA přirozené světlo
T T T
T T T
T T T
T T T
HD plné umělé světlo HD 1/2 umělé světlo HD přirozené světlo
T T T
T T T
T T T
T T T
Varianta
200
250
T T
-
-
T T
-
-
Tab. 15: Počet markerů Použito Nalezeno
2
3
4
2
3
4
Počet markerů 5 6 7 5
6
7
8
9
10
8
9
10
U této knihovny je vidět, že je „menšíÿ, není tak vyspělá jako ARToolKit nebo Metaio SDK. Detekování bylo slabší na větší vzdálenosti nebo při větším náklonu, přesto, že marker byl dobře čitelný a viditelný na obraze.
6.6 6.6.1
ALVAR Instalace
Pro instalaci je třeba se zaregistrovat na stránkách http://virtual.vtt.fi/ virtual/proj2/multimedia/alvar/registration.html a poté přijde e-mail s odkazy ke stažení. Tyto odkazy jsou k dispozici pouze omezenou dobu (cca 3 hodiny). Pro otestování knihovny byl použit program SampleMarkerDetektor.exe. V přiloženém souboru ALVAR.pdf lze nalézt ukázkové markery a nebo jsou zde nástroje na tvorbu nových. 6.6.2
Výsledky
Naměřené hodnoty (tabulka 16 a 17) nejsou tak dobré jak v některých předchozím případech. Navíc marker se ztrácel při pohybu i na malou vzdálenost, sice jeho opětovné nalezení trvalo řádově 100 ms, ale výsledný pohyb nebyl plynulý.
6.7
29
Celkové zhodnocení
Tab. 16: Detekce markeru při různém naklonění Rozlišení
Úhel [◦ ] 0 20 40 60 80
VGA (480p)
25
50
Vzdálenost [cm] 75 100 150
T T T T -
T T T T -
T T T T -
T T -
200
250
-
-
200
250
-
-
-
Tab. 17: Měření odezvy (hodnoty ve vteřinách) Varianta VGA plné umělé světlo VGA 1/2 umělé světlo VGA přirozené světlo
25
50
Vzdálenost [cm] 75 100 150
<1 <1 <1
<1 <1 <1
1 2 <1
2 1
-
Tab. 18: Počet markerů Použito Nalezeno
6.7
2
3
4
2
3
4
Počet markerů 5 6 7 5
6
7
8
9
10
8
9
10
Celkové zhodnocení
Všechny naměřené hodnoty jsou měřeny za nejlepších podmínek, přirozené světlo, marker se nachází přímo kolmo ke kameře. To znamená, že v případě použití v reálné aplikaci nemusí výsledky odpovídat naměřeným hodnotám, hlavně pří sníženém světle. Jak bylo zjištěno při měření, rozdíl mezi umělým a přirozeným světlem je markantní. Tab. 19: Celkové srovnání Maximální vzdálenost ARToolKit Metaio SDK GRATF ATOMIC AT ArUco ALVAR 4 5
270 300 200 100 150 100
cm cm cm cm cm cm
Max. počet markerů4
Možnosti překrytí5
10+ nezjištěno 3 1 10+ 10+
žádné žádné žádné žádné žádné žádné
Při použití ve stejný čas Při použití klasického markeru s černým rámečkem
6.7
Celkové zhodnocení
30
Ze všech měřených projektů nejlépe dopadly ARToolKit a Metaio SDK. Oba dobře rozpoznávají i na vyšší vzdálenosti, nedělá jim problém složitější podklad. Nalezení markeru v obou případech je rychlé a jeho následné sledování plynulé.
7
VLASTNí NÁVRH MARKERU
7
31
Vlastní návrh markeru
Tato kapitola bude zaměřena na vlastní návrh markeru. Tyto návrhy budou dva, jeden pro metodu match template a druhý pro SURF. Návrh binárního markeru nemá moc smysl, každá knihovna si to řeší jinak.
7.1
Match template
Při návrhu budou dodrženy všechny body, které byly zmíněny dříve a výsledný návrh bude mít opět rozměry 80 mm. Během vytváření markeru bude otestována různá šířka černého čtverce a případně vliv mezery mezi čtvercem a vzorem (tabulka 20). Vzor, který bude mít rozměry 3×3 nám zajistí dostatečně velké množství markerů, ale mohou vzniknout symetrické varianty. Zamezení této situace by šlo vyřešit vložením unikátního znaku, obrazce, který by určoval orientaci. Pokud by byl vložen jiný obrazec na místo prvního čtverce vlevo nahoře, problém by byl vyřešen. Na identifikaci markeru by pak zbývalo 8 bitů. Ve výsledku by bylo možné vytvořit 256 různých markerů a i tento počet je dostatečný.
Obr. 13: Marker s hodnotou 142
Měření a výsledky z tabulky 20 ukazují, že tento návrh markeru má mnohem lepší výsledky oproti výchozím markerům. Různá šířka rámce a mezery se ve výsledcích nijak neprojevila. Bohužel toto řešení není tak ideální jak se může zdát, metoda match template hledá podobnosti a i když se zamění čtverce za kruhy, tak stále to vyhodnotí jako marker nalezen. To samé platí i pro malou změnu hodnoty markeru, pokud budou podobné, to znamená, že by se lišily jen o čtverec, tak opět bude vyhodnocení kladné. Proto tohle řešení není vhodné pro více markerů, kde by mohla vzniknout záměna. Je nutné, aby v jednotlivých markerech byl větší rozdíl.
7.1
32
Match template
Tab. 20: Testování markeru v ARToolKit (Zaokrouhleno na desítky cm) Rámec [%] 15 VGA (480p)
20 25 15
HD (720p)
20 25
Mezera [%]
Maximální vzdálenost [cm]
Úhel 80◦ při 1 m
Úhel 80◦ při 2 m
Odezva [s]
0 5 0 5 0 5
320 320 320 320 320 320
T T T T T T
-
<1 <1 <1 <1 <1 <1
0 5 0 5 0 5
320 320 320 320 320 320
T T T T T T
-
<1 <1 <1 <1 <1 <1
Knihovna ARToolKit podporuje i barevné vzory a podle dokumentace, by měly mít lepší výsledky než v případě černobílé varianty. Bohužel to co platí v černobílé variantě, platí i zde. Navíc barvy musí být hodně odlišné, aby se nezaměnily. V testu se ukázalo, že například žlutá barva se lehce zamění se zelenou, zelená s azurovou (cyan) a podobně. To je způsobeno desaturací a poté mají stejný odstín. Jak bylo uvedeno v kapitole 3.1.1, soubor s uloženým vzorem obsahuje 4 natočení za 3 různých světelných podmínek. Soubor je možné otevřít v textovém editoru a data jsou reprezentována maticí s čísly v rozsahu od 0 do 255 s tím, že 0 znamená černá barva a 255 bílá. Jedna varianta vzoru je velká 16×16. To znamená, že vzor je rozdělen pouze na 16×16 segmentů a takové množství neumožní uložit větší detaily.
Obr. 14: Vzor při standardním naučením
Na internetu je k dispozici nástroj, který slouží ke generování markerů. Lze ho najít na adrese http://flash.tarotaro.org/blog/2008/12/14/ artoolkit-marker-generator-online-released/ a ten umožňuje uložit až 64×64 segmentů, tím by mohlo dojít k zlepšení detailů a větší přesnosti při hledání
7.1
Match template
33
markeru (obrázek 15). Toto řešení by nebylo ideální, protože by vzrostly nároky na výpočetní výkon.
Obr. 15: Vzor při vyšší segmentaci (64×64)
Mnohem lepší bude použití vzoru na způsob šachovnice, druhý marker by pak měl invertované barvy a ve výsledku by mezi nimi byl velký rozdíl, tím by odpadlo riziko záměny. Šachovnice je rotačně symetrická a je tedy potřeba vyřešit rozpoznatelnost orientace markeru. V rohu markeru můžeme změnit barvu čtverce, ale předchozí test ukázal, že změna pouze jednoho čtverce nestačí a je třeba jich změnit více. Příklad tohoto návrhu lze vidět v obrázku 15.
Obr. 16: Návrh markeru na základě šachovnice
Podstatné je, kolik markerů je potřeba. Při větším počtu je lepší zvážit možnost binárních markerů. Pokud jich je maximálně 10, dá se dobře použít tato metoda. Dobré je udělat vzor velikosti 2×2, dále pak invertovaný vzor a poté přidat sloupec. Přidávání sloupců má smysl do velikosti 4×4 nebo 5×5. Na obrázku 17 je vidět jak vypadá tento typ markeru uložený v souboru. Je mnohem čitelnější a rozpoznatelnější než původní.
7.2
SURF
34
Obr. 17: Naučený marker
7.2
SURF
Všechny testované knihovny měly společnou vlastnost, ani jedna si neporadila se zakrytím okraje markeru. U každé stačil lehce narušit černý čtverec a marker už nebyl detekován. Podle článku (Hybrid SURF-golay marker detection method for augmented reality applications, 2012) tento problém lze vyřešit metodou feature-based, v tomto případě konkrétně metoda SURF. Je zde popisován hybridní marker, který má rámeček tvořen z různých objektů, tvarů a barevných přechodů a je detekován metodou SURF. Identifikace je řešena golay kódem. Nevýhodou tohoto kódu jsou nízké možnosti zakrytí. Při vytvoření vzoru, který by byl detekován také metodou SURF, by se možnosti překrytí zvětšily. Pro vytváření vzoru je důležité, aby měl vzor co nejvíce klíčových bodů. Při překrytí části těchto bodů budou k dispozici jiné a tím by marker mohl být stále detekován. Při testování se ukázalo, že pozvolné přechody a plné barvy neobsahují moc klíčových bodů. Lepší jsou hrany a rohy, jak bylo uvedeno v kapitole 4.
Obr. 18: Klíčové body u SURF markeru
Na obrázku 18 je vidět, že nejvíce klíčových bodů je trojúhelníkových tvarů. Výsledný vzor by pak mohl vypadat jako na obrázku 19.
7.3
Shrnutí
35
Obr. 19: Vzor
Další vzor by mohl vypadat obdobně, na obrázku 20 je další možná varianta, jak by mohl vypadat. Oba navržené vzory mají přes 100 klíčových bodů (při použití Hessian threshold 300 ). Přitom společných bodů mají velmi málo.
Obr. 20: Vzor
7.3
Shrnutí
Pro každý scénář se hodí některý typ přístupu více a některý méně, to samé platí i o konkrétním modelu. Záleží na konkrétní situaci a požadavcích. • Jeden marker – Match template – V tomto případě je nejvhodnější použít navržený marker šachovnicového vzoru, který je vidět na obrázku 16. – Binary code – Oproti použití match template tato metoda nenabízí žádné větší výhody.
7.3
Shrnutí
36
– Feature-based – Pro tento případ je vhodné použít návrh, který je na obrázku 19. • Do 10 markerů – Match template – V této situaci se dá opět použít marker šachovnicového vzoru (obrázek 16). – Binary code – Použití binárního kódu v markeru se dá dobře použít a může usnadnit práci. – Feature-based – Opět se dá využít vzoru, který byl navržen. • 10 a více markerů – Match template – Při tomto množství není dobré používat tento přístup a to hned z několika důvodů. Nutnost učit všechny vzory po jednom, dále vyšší požadavky na výpočetní výkon a možné chyby při detekci (podobnost markerů). – Binary code – Použití binárního kódu při velkém množství různých markerů je nejlepší řešení. – Feature-based – Nejlepší je použít hybridní marker, který byl popsán v článku (Hybrid SURF-golay marker detection method for augmented reality applications, 2012).
8
8
ZÁVĚR
37
Závěr
Na internetu je velké množství AR řešení, některá jsou lepší, některá horší. Mají různé vlastnosti a podpory operačních systémů a tato práce by mohla pomoct lidem, kteří chtějí vyvíjet AR aplikace, ale neví, jakou knihovnu nebo framework použít. Srovnáním knihoven a frameworků bylo zjištěno, že nejlepší výsledky má knihovna ARToolKit a Metaio SDK. Obě mají k dispozici ukázky programů a je možné si je jednoduše vyzkoušet. ARToolKit je dobré řešení, má velmi dobré vyhledávací schopnosti markerů, je rychlý a dobře dokumentovaný. Metaio SDK je více komplexnější, opět má velmi dobré výsledky při vyhledávání a sledování markerů. Zaměřuje se jak na desktopové aplikace tak i na mobilní, nabízí sledování markerů i různých přirozených objektů. Jednou z nevýhod ARToolKitu je nízké rozlišení uloženého vzoru, proto je lepší, když je marker co nejjednodušší. Nejlepší výsledky se ukázaly při použití čtverců a šachovnicového vzoru. Jednotlivé vzory je důležité od sebe dostatečně odlišit a upravit je tak, aby nebyly rotačně symetrické. Navržený vzor je velmi jednoduché použít v této knihovně a má lepší výsledky než původní markery, ale při použití většího počtu markerů je lepší zvolit jinou metodu. Při vytváření vzoru pro SURF marker je nejlepší, když jsou objekty a tvary tvořeny ostrými hranami a trojúhelníky. Není problém vytvořit několik markerů, které by šly od sebe rozlišit. Do budoucna by bylo vhodné tento typ markeru vyzkoušet na reálné aplikaci a najít vhodnou hranici počtu klíčových bodů, které by určovaly o jaký marker se jedná.
9
9
LITERATURA
38
Literatura
Johnson, J. „The Master Keyÿ: L. Frank Baum envisions augmented reality glasses in 1901. Mote & Beam [online]. 2012 [cit. 2013-11-1]. Dostupné z: http://archive.is/4jTOk. 3D California QR Codes and AR markers. 3D California [online]. 2011 [cit. 201310-12]. Dostupné z: http://www.3dcalifornia.com/2011/02/qrcod/. Dartmouth College Library Augmented Reality. Dartmouth College Library Research Guides [online]. 2013 [cit. 2013-11-4]. Dostupné z: http://researchguides.dartmouth.edu/AR. Procházka, D., Popelka, O., Koubek, T., et al. Hybrid SURF-golay marker detection method for augmented reality applications. [online]. 2012 [cit. 2013-121]. Dostupné z: http://wscg.zcu.cz/WSCG2012/! 2012-Journal-Full-3.pdf. Kato, H., Billinghurst, M. Marker Tracking and HMD Calibration for a Video-based Augmented Reality Conferencing System. ARToolKit [online]. 1999 [cit. 2013-11-1]. Dostupné z: http://www.hitl.washington.edu/artoolkit/Papers/IWAR99.kato.pdf. Graz University of Technology Studierstube Tracker. Handheld Augmented Reality: Christian Doppler Laboratory [online]. 2011 [cit. 2013-11-18]. Dostupné z: http://handheldar.icg.tugraz.at/stbtracker.php. Metaio Metaio SDK. Metaio: Augmented Reality Products & Solutions [online]. 2013 [cit. 2013-11-2]. Dostupné z: http://www.metaio.com/products/sdk/. AForge.NET GRATF. AForge.NET: Computer Vision, telligence, Robotics [online]. 2012 [cit. 2013-11-2]. http://www.aforgenet.com/projects/gratf/.
Artificial InDostupné z:
Sologico Libre Foundation ATOMIC Authoring Tool. ATOMIC Authoring Tool [online]. 2009 [cit. 2013-11-3]. Dostupné z: http://atomicproject.sourceforge.net/. Aplicaciones de la Visión Artificial ArUco: a minimal library for Augmented Reality applications based on OpenCv. Aplicaciones de la Visión Artificial [online]. 2013 [cit. 2013-11-15]. Dostupné z: http://www.uco.es/investiga/grupos/ava/node/26. VTT Technical Research Centre of Finland ALVAR. ALVAR: Augmented Reality Research [online]. 2013 [cit. 2013-11-4]. Dostupné z: http://virtual.vtt.fi/virtual/proj2/multimedia/alvar/. Wu, H., Shao, F., Sun, R. Research of quickly identifying markers on Augmented Reality. 2010. ISBN 978-1-4244-6931-4.
9
LITERATURA
39
Hirzer, M. Marker Detection for Augmented Reality Applications. Learning, Recognition, and Surveillance [online]. 2008 [cit. 2013-11-2]. Dostupné z: http://lrs.icg.tugraz.at/pubs/hirzer tr 2008.pdf. ARToolworks ARToolKit feature comparison. ARToolworks [online] 2013 [cit. 2013-11-2]. Dostupné z: http://www.artoolworks.com/support/library/ARToolKit feature comparison. OpenCV Feature Detection and Description. OpenCV Documentation 2013 [cit. 2013-12-19]. Dostupné z: http://docs.opencv.org/trunk/doc/ py tutorials/py feature2d/py table of contents feature2d/py table of contents feature2d.html. OpenCV OpenCV Wiki. OpenCV DevZone [online]. 2013 [cit. 2013-12-19]. Dostupné z: http://code.opencv.org/projects/opencv/wiki. Feature Matching. OpenCV Python Tutorials [online]. 2013 [cit. 2013-12-19]. Dostupné z: https://opencv-pythontutroals.readthedocs.org/en/latest/py tutorials/py feature2d/py matcher/py matcher.html.