Mendelova univerzita v Brně Provozně ekonomická fakulta
Aplikace umožnující realizaci rozšířené reality Diplomová práce
Vedoucí práce: Ing. David Procházka Ph.D.
Tomáš Koubek
Brno 2010
[]
2
Děkuji všem, kteří přispěli větší či menší mírou k tomu, aby tato práce mohla vzniknout. Děkuji Ing. Davidu Procházkovi za rady, pomoc a podporu při vypracování. Děkuji Ing. Antonínu Míškovi za cenné rady při překladu VRUTu a následné práci na modulu. Děkuji rodině za podporu nejen při studiu. Děkuji přítelkyni Hance za to, že měla se mnou celou dobu trpělivost.
Prohlašuji, že jsem závěrečnou práci vypracoval samostatně jen s použitím uvedené literatury
Brno 26. 5. 2010
....................................................
Abstract Koubek, T. Aplication allowing implementation of augmented reality. Thesis. Brno 2010 This thesis deals with creation of augmented reality application. Contains an overview of current technologies and methods used in the application of augmented reality. Compares the frameworks that are useful for creating AR applications. Also describes the creation of plug-in for application VRUT.
Abstrakt Koubek, T. Aplikace umožňující realizaci rozšířené reality. Diplomová práce. Brno 2010 Tato diplomová práce se zabývá tvorbou aplikace rozšířené reality. Obsahuje přehled současných technologií a metod používaných při aplikaci rozšířené reality. Srovnává frameworky, využívané pro tvorbu AR aplikací. Dále popisuje tvorbu zásuvného modulu pro program VRUT.
5
Obsah 1 Úvod a cíl práce 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Rozšířená realita 2.1 Definice rozšířené reality . . . . . 2.1.1 Augmented reality . . . . 2.1.2 Spatial augmented reality 2.2 Využití rozšířené reality . . . . . 2.2.1 Design . . . . . . . . . . . 2.2.2 Podpora pro rozhodování . 2.2.3 Navigace . . . . . . . . . . 2.2.4 Armáda . . . . . . . . . . 2.2.5 Reklama a propagace . . . 2.2.6 Zábava . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
3 Technologie rozšířené reality 3.1 Zobrazování rozšířené reality . . . . . . . . 3.1.1 HMD . . . . . . . . . . . . . . . . . 3.1.2 Kapesní displeje . . . . . . . . . . . 3.1.3 Prostorové displeje . . . . . . . . . 3.2 Pozicování a polohování . . . . . . . . . . 3.2.1 Vlastnosti snímačů pohybu . . . . . 3.2.2 Elektromagnetické snímání pohybu 3.2.3 Mechanické snímání pohybu . . . . 3.2.4 Optické snímání pohybu . . . . . . 3.2.5 Akustické snímání pohybu . . . . . 3.2.6 Geolokační služby . . . . . . . . . . 3.2.7 Kombinované snímání pohybu . . . 4 Analýza a metodika 4.1 Funkcionalita modulu . . . . . . . . . . . 4.2 Metodika . . . . . . . . . . . . . . . . . 4.3 VRUT . . . . . . . . . . . . . . . . . . . 4.3.1 Modularita a nezávislost VRUTu 4.3.2 Zobrazení grafických dat . . . . . 4.4 Srovnání SW nástrojů rozšířené reality . 4.4.1 OpenCV . . . . . . . . . . . . . . 4.4.2 ARToolKit . . . . . . . . . . . . . 4.4.3 NyARToolKit a jeho varianty . . 4.4.4 Další knihovny . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 8 9
. . . . . . . . . .
10 10 10 11 12 12 12 13 13 14 14
. . . . . . . . . . . .
16 16 16 19 21 23 23 25 26 27 28 29 30
. . . . . . . . . .
32 32 32 33 33 34 35 35 36 37 37
6
5 Realizace aplikace 5.1 OpenCV a video . . . . . . . . . . . . 5.2 Vyhledávání šablony v obrazu . . . . . 5.3 Optimalizace vyhledávání porovnávání 5.4 Registrace obrazu . . . . . . . . . . . . 5.5 Doplnění obrazu . . . . . . . . . . . . . 5.6 Navázání OpenCV na VRUT . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
39 39 40 43 44 47 47
6 Závěr práce
51
7 Literatura
52
7
1 1.1
Úvod a cíl práce Úvod
Realita je něco, co nás obklopuje každou vteřinu našeho života. Vnímáme ji všemi smysly, přizpůsobujeme se jí, žijeme ji. Může to být jakýkoliv předmět, osoba, místo, může to být třeba i síť sociálních vztahů. Realita je součástí našeho vnímání a každý z nás ji vidí trochu jinak. Současné moderní technologie nám však umožňují spatřit dříve neviditelné pohledy na realitu a tak ji obohatit. Jedním z prostředků, které nám toto obohacení pomáhá zpřístupnit je doplněná, nebo také rozšířená, realita – Augmented Reality – technologie realizující prolnutí reálného a umělého světa. Pokud se na doplněnou realitu podíváme z čistě technického hlediska, lze ji chápat jednak jako metodu zobrazování informací na předměty reálného světa a také jako inovativní vstupní zařízení. Vědci a vývojáři zabývající se tvorbou uživatelských rozhraní neustále hledají nové metody, jak zjednodušit interakci člověka s počítačem. Vznikly grafické polohovací nástroje, snímače pohybu, aj. V posledních letech jsme si mohli zvyknout na využívání třeba satelitní navigace GPS jako speciálního vstupního zařízení: Uživatel hledající blízkou restauraci není nucen zadávat, kde se má restaurace nacházet, ale automaticky je zvolena jeho poloha. A právě doplněná realita realizovaná pomocí kamery snímající okolní prostředí, představuje obdobné netradiční vstupní zařízení. Kamera ve spolupráci se softwarem automaticky identifikuje objekty, které se nachází v okolí uživatele a usnadňuje tak interakci s počítačem. Průmyslovou aplikací využívající tento koncept je např. Google Goggles. Při spuštěné aplikaci namíříte kameru např. na čárový kód, pamětihodnost nebo knihu a aplikace Vám vyhledá informace o tomto objektu. Jako prostředek pro doplňování informací na předměty reálného světa je tato technologie známá již několik desítek let a je již dlouhou dobu využívána ve specializovaných zařízeních např. ve vojenské technice. Pilot stíhacího letounu má na poloprůhledném displeji v kokpitu různé informace o stavu letadla a jeho zařízení a přesto neztrácí přehled o tom, co se děje mimo letadlo. V posledních letech však proniká technologie rozšířené reality i do segmentu spotřební elektroniky, na zařízení pro běžné uživatele. Známou aplikací je promítání navigačních instrukcí na přední sklo automobilu. Navigace sama rozpozná, kterou odbočkou se má řidič vydat a označí ji přímo v místě, kde se skutečně nalézá. Aplikací rozšířené reality se ovšem objevuje čím dál tím více, ruku v ruce s tím, jak roste popularita této technologie. Ta také souvisí se zvyšující se dostupností rozšířené reality. Zásluhu na tom má především prodej mobilních telefonů se standardním OS, které poskytují dostatečný výpočetní výkon a HW komponenty pro rozšířenou realitu. Využívání této technologie se neustále zvyšuje, ať už z důvodu toho, že je v současné době populární, tak i proto, že doplnění reálného světa o další informace je velmi užitečné a přitom neinvazivní. Doplněná realita je v oblasti diskutovaných aplikací relativně nová a proto je zajímavé zabývat se jak hledáním možností vyu8
žití této technologie pro běžné ovládání zařízení, tak optimalizací technologického procesu její realizace.
1.2
Cíl práce
Hlavním cílem práce je popsat proces tvorby aplikace pro rozšířenou realitu. Aplikace bude vytvořena v podobě zásuvného modulu pro program VRUT. Pro splnění tohoto cíle je nezbytné splnit několik dílčích cílů: • Vytvořit přehled technologií a metod používaných pro realizaci rozšířené reality, včetně popisu hlavních problémů, které se v současných technologiích vyskytují. • Provést srovnání frameworků pro práci s rozšířenou realitou. • Zvolit kritéria pro posouzení a vyhodnotit optimální framework pro implementaci. • Seznámit se s použitým frameworkem, jeho metodami a principy. • Vytvořit multiplatformní základ AR aplikací. • Vytvořit vlastní aplikaci využívající popsané technologie. Pro realizaci hlavního cíle musí být splněny cíle dílčí.
9
2
Rozšířená realita
Kapitola se zabývá vysvětlováním teoretického základu rozšířené reality. Jsou zde vysvětleny pojmy AR, SAR, virtuální kontinuum aj. Další část se věnuje vysvětlení technologií používaných (nejen) AR a to jak hardwaru, tak softwaru. Poslední oddíl je věnovaný možnostem využití rozšířené reality v běžném životě.
2.1
Definice rozšířené reality
Realita, reálný svět, resp. jeho obraz, který je všude kolem nás, vnímáme prostřednictvím základních 5 smyslů – zraku, hmatu, čichu, sluchu a chuti. Virtuální realita, je obraz reálného světa, který je vytvořen a interpretován počítačem. Rozšířená realita1 , pak kombinuje oba dva přístupy a poskytuje obraz reálného světa, doplněný o obraz vytvářený počítačem. 2.1.1
Augmented reality
Rozšířená realita – Augmented Reality (AR) je varianta virtuálního prostředí – Virtual Environment (VE), nebo virtuální reality – Virtual Reality (VR), jak se častěji nazývá. VE technologie umožňuje kompletní obklopení uživatele umělým prostředím, v kterém uživatel nevidí skutečný svět okolo sebe. AR však umožňuje uživateli vidět skutečný svět, s vnořenými nebo rozvrstvenými virtuálními objekty. AR tedy realitu doplňuje, nikoliv zcela nahrazuje (Azuma, 1997). Pro zobrazení vztahu mezi reálným a virtuálním prostředím lze použít Milgramův diagram virtuálního kontinua. Koncept virtuálního kontinua se vztahuje k zobrazování kombinací objektů z reálného a virtuálního světa. Jeden konec kontinua tak představuje reálné prostředí (v kterém se vyskytují pouze reálné objekty) a druhý extrém pak virtuální prostředí (které se skládá jen z objektů virtuálních). Cokoliv mezi těmito dvěma extrémy lze považovat za kombinovanou realitu (mixed reality). Podle toho, jakému konci kontinua je kombinace blíže, nazývá se buď rozšířenou realitou (blíže k reálnému prostředí) nebo rozšířenou virtualitou (na straně virtuálního prostředí) (Milgram, 1994). Podle Bimbera znamená rozšířená realita integraci syntetických informací do reálného prostředí. Nicméně neznamená to, že by například rádio přehrávající hudbu bylo jejím prostředkem. Vkládané syntetické informace však musí mít se skutečným světem silnější propojení. Tato vazba se nazývá registrace a nejčastěji to je vztah týkající se prostoru (Bimber, 2005). V podstatě si registraci lze představit jako něco, co vyjadřuje, že konkrétní objekt na dané místo patří. Jedná se tedy o vztah objektu a prostoru. Příkladem může být váza na stole. Nesprávná registrace může vázu umístit až nad stůl, případně ji nechat prorůstat stolem. 1
Z anglického augmented reality, v češtině se používají také termíny doplněná nebo posílená realita. v tomto textu bude nadále používán výraz rozšířená realita
10
Obr. 1: Milgramův diagram
O registraci se zmiňuje i Azuma (Azuma, 1997), který do definice rozšířené reality přidává další podmínky a definuje tak AR, aby nebyla omezená jen na HMD2 , jak tomu bylo dříve. Předpoklady, které vymezují rozšířenou realitu podle Azumy jsou: • Kombinování reálných a virtuálních objektů • Interaktivita v reálném čase • Registrace v prostoru Existuje množství „realit�, které splňují jeden nebo dva předpoklady téměř dokonale, avšak nelze ještě hovořit o AR. Například film Jamese Camerona Avatar kombinuje jak realitu (herci, kulisy) tak virtualitu (domorodé obyvatelstvo). Objekty jsou v prostoru správně registrované, herci i domorodci chodí po zemi, ptáci létají ve vzduchu a nikde nic nekoliduje. Problém je však v interakci – ta v tomto případě neexistuje. Dalším příkladem může být počítačová hra. Lze ji ovládat v reálném čase a objekty jsou registrovány v prostoru, nekombinuje však realitu s virtualitou. Z výše uvedeného vyplývá, že podle této teorie musí platit všechny 3 vlastnosti současně, aby šlo ”realitu” prohlásit za rozšířenou. 2.1.2
Spatial augmented reality
Prostorová rozšířená realita – Spatial Augmented Reality (SAR) předpokládá využití jiných prezentačních technologií než u klasické augmented reality. Tam se starají o její prezentaci uživateli nejčastěji zařízení typu head–mounted display či poslední dobou stále rozšířenější mobilní telefony s operačním systémem. Tyto nástroje jsou, z hlediska počtu uživatelů, kteří s nimi mohou v jednom okamžiku pracovat, pouze pro jednoho uživatele. Pro prezentaci SAR se užívají tzv. spatial (prostorové) displeje, což jsou obecně zobrazovače, které se odpojují od uživatele a jsou integrovány přímo do prostředí, v němž je AR prezentována. Nové přístupy, které jsou o něco dále než příruční displeje nebo speciální brýle, přináší rozšířené realitě další oblasti použití. Nové zobrazovací metody využívají velkých, v prostoru nastavených optických prvků jako jsou zrcadla, průhledné obrazovky, hologramy nebo video projektory. Prostorová rozšířená realita představuje 2
Head-Mounted Display nebo také Helmet-Mounted Display – viz sekci o HW technologiích AR
11
právě tyto technologické změny. V mnoha situacích jsou SAR displeje schopny překonat technologické a ergonomické omezení konvenčních AR systémů. Vzhledem k snižování nákladů a dostupnosti projekční techniky, osobních počítačů a grafického hardware, je zájem o využívání SAR systémů na univerzitách, ve výzkumných laboratořích, muzeích, v průmyslu a umění. Stejně tak jako ve virtuální realitě byl patrný vývoj od projekčních brýlí a přileb k velkým projekčním zobrazovačům, i v rozšířené realitě postupně dojde k většímu rozšíření spatial displejů. Nicméně, SAR a AR nejsou konkurenty, spíše se navzájem doplňují (Bimber, 2005). Dnes jsou nejčastějším nástrojem pro zobrazování SAR především různé typy projektorů, mobilní i klasické.
2.2
Využití rozšířené reality
Aplikace rozšířené reality v současné době zasahují do mnoha oblastí lidského působení a jejich podíl bude pravděpodobně růst. 2.2.1
Design
Rozšířená realita je v oboru návrhu a zpracování již známá. Vytvoření návrhu a jeho prohlédnutí v reálném prostředí umožní ladit návrh ještě před fází prototypování, zkracuje výrobní cyklus, snižuje náklady. Příkladem může být projekt ARTHUR3 , který by měl sloužit jako vizualizace pro architekty při plánování. ARTHUR je založený na HMD. Užitečná může být AR také v návrhu složitých strojů a zařízení. Škoda Auto a.s. má sestaven CAVE4 s autosedačkou, na stěny CAVE je promítán interiér a okolí vozidla, přesto si zachovává jistou míru interakce. Spíše než o rozšířenou realitu se jedná o rozšířenou virtualitu, nicméně vývoj by se mohl ubírat tím směrem, že se vymění CAVE za skutečné auto, označené trackery a uživatel s HMD bude sedět uvnitř virtuálního auta, které bude obklopovat skutečný svět. 2.2.2
Podpora pro rozhodování
Také v jiných užitečných oblastech lidské činnosti se může AR uplatnit. Namapování snímku z tomografu na skutečné vnitřnosti pacienta v reálném čase nebo označení poškozené tkáně může pomoci chirurgovi pracovat přesně a rychle i v případě komplikací. Namapování kostí či svalů na figuranta by mohlo sloužit k výuce medikům. Vyznačení inženýrských sítí podle plánu umožní předcházet haváriím na stavbách. Při údržbách či opravách složitých zařízení se vyznačí riziková nebo porouchaná součástka. Management rozhoduje o interiéru nového automobilu a místo vytváření 3 prototypů jen jednotlivé barvy a kombinace vybavení přepínají pomocí tlačítka. 3 4
Augmented round table for architecture and urban planning Cave Automatic Virtual Environment
12
2.2.3
Navigace
V současné době proběhlo několik pokusů vytvořit automobilovou AR navigaci na mobilní telefony. Mezi tyto počiny patří programy Augsatnav nebo Wikitude drive, oba dva na platformě Google Android. První jmenovaná zobrazuje trasu v podobě vodící linky ukotvené v prostoru nad silnicí, druhá pak zobrazuje šipku, která nakláněním naznačuje směr k cíli. Obě navigace trpí problémy s registrací v prostoru – nepříjemným poskakováním směrové šipky. V oblasti navigací pro chodce se objevilo několik aplikací, které jsou spíše jednoúčelové - navádí do restaurací, na místa s wifi signálem, zpět k zaparkovanému autu nebo usnadní orientaci v newyorkském metru. Tyto navigace nezobrazují přímou cestu k cíli, spíše jen směr a vzdálenost od cíle. Zajímavým počinem je v tomto směru aplikace Layar (dostupná pro Android a iPhone), která jednotlivé body zájmu sdružuje do vrstev, které lze přidávat a odebírat, zobrazovat přes sebe či vytvořit svou vlastní. Lze si jí tedy upravit či rozšiřovat podle vlastních potřeb. Navíc začali své vrstvy vytvářet i některé komerční firmy, např. společnost Mediatel, která provozuje v ČR Zlaté stránky, má svou vlastní vrstvu pro Layer, v níž ukazuje polohu firem z jejich katalogu. Trend v tomto směru bude pravděpodobně směřovat k plnohodnotné mapové navigaci, která bude vyznačovat trasu přímo v prostředí v jakém se pohybujeme, např. na head-up displeji (HUD) v automobilu5 . 2.2.4
Armáda
Armáda je známa velkými investicemi do výzkumu a vývoje. AR používá armáda už desítky let, v podobě HUD displejů ve stíhacích letounech. S rozšířenou realitou se počítá také např. pro vývoj moderní pěchoty, v USA je tento projekt nazýván Land Warrior. Voják je vybaven HMD, jenž mu umožní vidět doplňkové informace, které usnadní jeho pozici v boji. Využít rozšířenou realitu ale mohou nejen vojáci v poli, vojenským štábům by umožnila zobrazit na operačním stole přesnou kopii bojiště, včetně terénu a umístění jednotlivých jednotek. AR může být použita také při výcviku. Vojáci pak prochází výcvikovým prostorem s HMD, který jim umožní stát se součástí složitých simulací. Umožní jim tak zkoušet nové strategie, rozmisťuje náhodně nepřátelské jednotky apod. Dalším představitelem využití rozšířené reality ve vojenství je projekt F–35 Joint Strike Fighter. Projekt amerického Ministerstva obrany kombinuje moderní technologie do podoby integrovaného vzdušného systému – bojového letounu. Rozšířená realita má v projektu podobu HMD, tedy AR helmy, která poskytuje široký FOV (viz kapitolu o AR hardware), noční vidění nebo přesné snímání pohybu hlavy6 . 5
Zde budou také menší problémy s registrací, jedoucí automobil má stále stejnou vzdálenost od silnice, náhle neudělá otočku o 180 ◦ , apod. 6 Bližší informace jsou na http://www.vsi-hmcs.com/pages hmcs/03a f35day.html
13
Obr. 2: HUDy využívané v armádě jsou typickými představiteli optických see-through displejů (Lab Spaces, 2010)
2.2.5
Reklama a propagace
Mezi laickou veřejnost rozšířená realita vstupuje pomalu ale jistě hlavně přes reklamu. Nejvíc práce v tomto směru odvádějí automobilky, které AR znají z vývoje. Velmi zajímavým počinem byla reklamní kampaň připravovaná firmou Metaio (WWW společnosti Metaio, 2010) pro automobilku MINI, která nechala natisknout na zadní stranu automobilového magazínu optický tracker a webovou adresu, na které byl k dispozici program pro prohlížení AR. Zákazník si tedy prohlížečku stáhl, nainstaloval a mohl si prohlédnout nové Mini na svém vlastním monitoru. Svoji AR show také předvedla automobilka Toyota při představování nového modelu Scion XD. S rozšířenou realitou v reklamě ale pracuje také Nissan nebo Volvo. Za zmínku stojí jistě i hračkářský AR kiosek pro stavebnice Lego, který je připraven od stejné firmy. Software v kiosku umí rozpoznat jaká stavebnice je v krabici a na povrchu obalu zobrazí její sestavený model. Svoji AR reklamní kampaň má například i Adidas. Budoucnost by v tomto směru mohla vypadat tak, že každé mobilní zařízení bude mít SW čtečku jakýchsi standardizovaných značek (obdoby QR kódů) a po jejich přečtení stáhne z internetu příslušný model a zobrazí ho. 2.2.6
Zábava
V téhle oblasti se rozšířená realita představila víceméně skrytě. Už několik let umí softwary digitálních fotoaparátů rozpoznávat obličeje a označit je v živém náhledu, ještě před zmáčknutím spouště. Začali také vznikat některé AR hry, například ARhrrrr! pocházející od Augmented Environments Lab z Georgia Institute of Tech14
Obr. 3: Mini Cooper na obálce časopisu pro automobilisty (Technabob, 2010)
nology7 nebo EyePet na herní konzoli Playstation 3. EyePet využívá kameru EyeToy, pomocí které snímá obraz před konzolí a promítá jej do televize, doplňuje do něj obraz digitálního zvířátka, které reaguje na pohyb před kamerkou a reaguje tak na pohyby uživatele. Navíc si uplatnění najde i jako rehabilitační nástroj (Rand, 2008). Herní budoucnost by se mohla vyvíjet směrem k většímu propojení a interakci s reálným světem. Half-life 4 už by se tedy mohl odehrávat v lese nebo skutečném skladišti, vlastnosti postavy (rychlost, výdrž) by potom byli přímo závislé na vlastnostech hráče.
7
Více na http://www.augmentedenvironments.org/lab/index.php?s=ARhrrrr!sbutt=Go
15
3
Technologie rozšířené reality
Současné implementace rozšířené reality využívají množství metod, postupů a hardwarových i softwarových prostředků. Některé jsou velmi úzce specializované, jiné naopak velmi rozšířené.
3.1
Zobrazování rozšířené reality
Zvolit správný způsob zobrazování je u rozšířené reality velmi důležité, protože je to koncový článek mezi AR a uživatelem. Prezentace tedy rozhoduje o jejím přínosu. Zařízení, které AR zobrazují, můžeme rozdělit do 3 kategorií: • HMD • Kapesní displeje • Prostorové displeje Každá kategorie má své výhody a nevýhody. 3.1.1
HMD
HMD je zkratkou pro head-mounted displays, tedy displeje přichycené na hlavě. Realizovány jsou nejčastěji jako brýle nebo helmy. Tyto druhy displejů můžeme dále dělit podle způsobu kombinování reality a virtuálních objektů. Oba typy HMD zároveň představují dva přístupy ke kombinování reality a virtuality. Optical see-through Tyto displeje pracují na principu umístění polopropustného zrcadla – slučovače obrazu přímo před uživatelovy oči. Tyto slučovače jsou z vnější strany průhledné, takže uživatel pozoruje okolní svět přímo skrz ně. Jsou ale také částečně světlo odrážející, takže uživatel může vidět virtuální objekty vyslané z displeje a odražené od slučovače. Tento přístup je využíván i v HUD displejích, běžně používaných ve vojenském letectvu. Zde však optický slučovač obrazu není umístěn na hlavu. Kvůli tomu jsou HDM také někdy nazývány jako „HUD on a head (Azuma, 1997)�. Princip fungování see-through displejů ukazuje obrázek Obr. 4. Video see-through Základem video see-through displejů je kamera, příp. dvě kamery a LCD displeje8 . Počítačem generovaný obraz se mísí s obrazem reálného světa z kamer v počítači (Rolland, 2000). Následně je potom tento obraz prezentován na LCD zobrazovačích. Vlastnosti HMD a problémy Optický slučovač obrazu obvykle snižuje množství světla, které se k uživateli dostane z reálného světa. Některé sofistikované slučovače umožňují měnit množství propuštěného světla na základě jeho vlnové délky. To je užitečné pro monochromatické LCD, kdy slučovač odrazí z LCD všechno světlo do očí uživateli a z reálného 8
V prvních video see-through displejích byli použiti CRT displeje
16
Obr. 4: Schéma optických see-through displejů
světa propustí téměř všechny vlnové délky (až na vlnovou délku monochromatického LCD) (Azuma, 1997). Další problémy HMD popisuje Rolland (Rolland, 2000): • Prodleva – Prodleva udává zpoždění mezi změnou provedenou v reálném světě a reakcí ve světě virtuálním. Přerušuje se tedy na nějakou dobu registrace a virtuální objekty „plavou�. Výhodou video see-through displejů je to, že snižují zpoždění mezi reálnými a virtuálními objekty, protože jedny i druhé jsou nejprve digitalizovány. To však zvyšuje jejich celkové zpoždění oproti reálnému světu. • Rozlišení a zkreslení reálné scény – Při použití optických see-through displejů je obraz reálného světa přiváděn k oku v reálném rozlišení, závisí tedy jen na oku, jak dokáže signál zpracovat. U video see-through displejů je obraz reálného světa nejprve nasnímán kamerou a teprve poté zobrazen. Závisí tedy jak na rozlišení kamery, tak na rozlišení zobrazovače, který obraz poskytuje. Zkreslení (distortion) nepředstavuje takový problém pro video see-through, protože obraz je již digitalizovaný a lze jej dále upravovat. • Zorné pole – Označuje se také jako FOV, nebo field of view. Z tohoto hlediska je hlavním úkolem HMD schopnost poskytnout uživateli potřebný úhel zorného pole, a to jak tzv. overlay – překryté virtuálními objekty, tak periferní, které je mimo overlay. Záleží na konkrétní aplikaci, jaké FOV vyžaduje. Optické seethrough poskytují 20–60 ◦ overlay FOV. Video pak 20–90 ◦ , nicméně poskytují menší úhel periferního zorného pole. Ten lze rozšířit pomocí užití několika vrstev neprůhledných zrcadel, ovšem za cenu snížení overlay zorného pole. • Shoda zorných úhlů – Na tento problém upozorňuje Azuma (Azuma a kol., 2001). Na většině video see-through displejích se projevuje chyba paralaxy, způsobená tím, že jsou kamery umístěny jinde, než jsou oči uživatele. Pokud uživatel vidí reálný svět prostřednictvím kamer umístěných nad úrovní očí, je obraz 17
Obr. 5: Schéma video see-through displejů
značně odlišný od toho, na co je zvyklý, nicméně Rolland dále poukazuje na lidskou přizpůsobivost. • Vnímání hloubky – Jeden z nejdůležitějších rozdílů mezi video a optickými see-through. V podstatě se jedná o rozpoznání umístění uživatele v prostředí ve vztahu k překrývání objektů. Ve skutečném světě některé objekty překrývají úplně nebo částečně jiné objekty. Problémy pak způsobuje, když má být virtuální objekt překryt objektem skutečným. K tomuto účelu je potřeba hloubková mapa, která určuje vzdálenost jednotlivých objektů od pozorovatele – uživatele. Tato mapa je k dispozici u virtuálních objektů, u reálných se musí dopočítat. U video see-through displejů se pak zakrytí virtuálního objektu reálným provádí tak, že se vykreslují jen ty prvky, které jsou nejblíže pozorovateli. Optické see-through displeje tento problém řeší jinak – překrytá část virtuálního objektu se nevykreslí. Opačné překrytí – reálného objektu virtuálním – je u video see-through bez problémů, optické mají potíže se zakrytím reálného objektu. • Uživatelská přívětivost a bezpečnost – Dřívější HMD dosahovali hmotnosti několika kilogramů a nelze hovořit ani o příjemném nošení. Vzhledem k možnému využití jako podpůrného prostředku např. v lékařství u dlouhotrvajících operací, musí být tyto displeje co nejméně zatěžující pro svého uživatele. U video see-through displejů je důležité vzít v úvahu, že uživatel vidí svoje okolí jen prostřednictvím kamery. Pokud dojde k výpadku kamer, může „oslepnout�.
18
• Hloubka ostrosti – Udává vzdálenost, v jaké jsou zaostřené objekty. Bližší či vzdálenější předměty jsou pak rozostřené – rozmazané. U video see-through displejů záleží na vlastnostech použité kamery, musí však poskytnout hloubku ostrosti ekvivalentní vzdálenosti k objektu, s nímž potřebuje uživatel pracovat. Pro optické see-through si pak hloubku ostrosti kontroluje samo oko. 3.1.2
Kapesní displeje
Některé AR systémy používají příruční ploché LCD displeje, které používají k připojení kamer a získávání video see-through rozšířené reality. Kapesní displeje tak slouží jako okno nebo lupa, která ukazuje skutečné objekty překryté těmi virtuálními (Azuma a kol., 2001). Typický představitel kapesních displejů, jako tablet, PDA nebo – nejčastěji – mobilní telefon, vytváří obraz při držení v rukou. Všechna výše jmenovaná zařízení obsahují procesor, paměť, vlastní displej a technologii interakce v jednom zařízení a jsou zaměřena na ovládání, které není omezováno drátovým propojením s jinými zařízeními. Pro tyto zařízení je typický video see-through přístup. Integrovaná kamera zachytává obraz okolního prostředí, který je, předtím než je zobrazen, doplněn o virtuální prvky (Bimber, 2005). Jak upozorňuje Wagner (Wagner, 2006), při práci s kapesními displeji je potřeba zohlednit to, že nemohou prozatím poskytnout plnou hardwarovou podporu např. pro OpenGL, ani takový výkon jako klasické počítače. Na adresu Wagnera je nutno dodat, že již v dnešní době disponuje s HW podporou OpenGL. Jedná se o verzi speciálně určenou pro mobilní zařízení – OpenGL ES. To je podporováno např. procesory PowerVR, které jsou součástí celé řady mobilních telefonů a tabletů9 . Tyto čipy jsou například integrovány na SoC10 Cortex A4 v Apple iPadu nebo v A8, který je použit v zařízení Motorola Droid. Nicméně implementace OpenGL není v plném rozsahu a při návrhu AR pro tyto zařízení je potřeba s podobnými omezeními počítat. Další problematikou v souvislosti s kapesními displeji je spotřeba celého zařízení. Současné kapesní displeje mají potíže s kapacitou baterií, např. využívání GPS modulu dokáže výdrž plně nabitého zařízení snížit na jednotky hodin. Proto je jedním z klíčových problémů mobilních zařízení právě technologie baterií. Krok správným směrem může být použití palivových článků11 nebo využití solární energie, samozřejmě je potřebný ještě další výzkum. Optické a obrazové senzory integrované do komerčních zařízení jsou zaměřena k jiným účelům a tím pádem mají jistá omezení pro zpracování obrazu (například soudkovité zkreslení). Většina z nich neumožňuje automatické ostření a kamery s pevným fokusem zase pracují jen v určitém rozsahu vzdáleností. Velikost obrazovky 9
Více na http://www.imgtec.com/powervr/powervr-technology.asp System on Chip 11 např. Toshiba – http://www.toshiba.com/taec/news/press releases/2009/dmfc 09 580.jsp 10
19
také limituje pokryté zorné pole. Nicméně lze najít i kapesní zařízení bez kamery, zajímavým projektem je například Magic Lenses(Brown, 2006).
Obr. 6: Využití může najít Magic Lenses např. v lékařství (Brown, 2010)
Mobilní telefony S příchodem operačního systému Android a hlavně telefonu G1, který je na této platformě založený, se více rozšířila AR také na mobilních telefonech. Potvrzení tohoto trendu pak přinesl telefon Apple iPhone 3GS, který byl rozšířen o digitální kompas a update iPhone SDK, který přidal do development kitu AR funkce. Samotná kombinovaná realita se však začala na mobilních telefonech objevovat už dříve. Základ pro ni vytvořil Philippe Kahn v roce 1997 tím, že spojil mobilní telefon s fotoaparátem (Kolektiv autorů., 2009). První sériově vyráběný mobil s fotoaparátem byl však Sharp J-SH04, který byl vybaven CMOS čipem a představen v roce 2000 (WWW společnosti Sharp, 2010). Ve stejném roce se začal prodávat mobilní telefon s přijímačem GPS signálu. O dva roky později Siemens vydává telefon SX1, na němž je dostupná aplikace Mosquitoes, v níž má hráč za úkol zabíjet komáry přelétávající na pozadí, které je obrazem z kamery (mobilní telefon byl vybaven fotoaparátem s VGA12 rozlišením). Podle Azumovi definice (viz sekce Definice AR) se sice nejedná o rozšířenou realitu, neboť chybí registrace objektů v prostoru, avšak z hlediska rozšíření využití kamery v mobilních telefonech v souvislosti s AR je to věc podstatná. Aplikace běžela na systému Symbian OS v6.1. V roce 2004 je představena první video see-through rozšířená realita na komerčním mobilním telefonu (Möhring a kol., 2004). V současnosti je mobilní platforma velkým hybatelem rozvoje AR, alespoň co se týče rozšíření mezi uživatele. Do technologií, které mohou být využity pro AR investují společnosti jako Apple, Google, se svým operačním systémem Android nebo 12
VGA je 640 × 480 pixelů
20
Obr. 7: Jedna z prvních AR aplikací pracovala s operačním systémem Symbian (TUG, 2010)
Nokia. Součástí HW vybavení telefonů s operačními systémy jsou dnes elektronické kompasy, GPS přijímače nebo akcelerometry. Hodně mobilních telefonů dnes také využívá procesory ARM, které poskytují dostatečný výkon pro provoz AR aplikací, což dokazuje např. i využívání PDA s OS Android, pro běh AR brýlí vojenskými techniky na letadlových lodích (Hsu, 2009). Je zřejmé, že tato kompaktní zařízení, jako tablety, PDA, ale zejména mobilní telefony, se stávají platformou, která má potenciál rozšířit AR pro masový trh. Záleží však zejména na aplikacích v oblasti zábavy, výuky, služeb aj. Navzdory všem problémům Bimber naznačuje, že kapesní displeje představují pro mobilní aplikace skutečnou alternativu k HMD. Velkou výhodou těchto zařízení je jejich dostupnost. Ceny se pohybují v řádu tisíců a jejich nabídka je velmi široká (Bimber, 2005). 3.1.3
Prostorové displeje
Z hlediska počtu osob, které mohou současně využívat displej, jsou HMD i kapesní displeje limitovány. HMD jsou striktně omezené na jednu osobu, kapesní displeje pak maximálně 2-3 osoby. Na rozdíl od těchto zobrazovačů mohou využívat prostorové – spatial displeje i větší množství lidí najednou. Vazba na uživatele se tak mění spíše na vazbu na prostředí. Bimber rozdělil prostorové displeje podle způsobu jakým kombinují reálný a virtuální svět na obrazovkové průhledové – screen-based video see-through, optické průhledové – optical see-through a projekční přímo-augmentující – projection-based direct augmentation (Bimber, 2005). Screen-based video see-through V podstatě představují totéž co video see-through HMD, jen zobrazovačem nejsou displeje uvnitř brýlí, ale obrazovka monitoru, případně konvenční projektory. Problémem je malé zorné pole, vzhledem k relativně malé velikosti monitoru. Nicméně 21
velikost obrazu je škálovatelná, pokud jsou použity projektory. Další nevýhodou je omezené rozlišení sloučených obrazů. To je obecná nevýhoda video see-through displejů. Tento přístup je však nejvíce nákladově efektivní, k jeho provozování je zapotřebí jen standardní hardware a obyčejná kamera, kterou lze připojit k PC (Bimber, 2005). Kromě běžných zobrazovačů začínají výrobci přicházet s kapesními verzemi projektorů. V roce 2009 byl představen fotoaparát Nikon Coolpix S100pj13 se zabudovaným projektorem, který je schopen promítat obraz až s 1 m úhlopříčkou. Z pohledu rozšířené reality je daleko zajímavější ohlášený mobilní telefon Samsung Beam, taktéž s integrovaným projektorem. Telefon obsahuje operační systém Android, tvorba aplikací využívajících projektor by tedy neměl být problém. Optical see-through Optické průhledové displeje se podobají HMD, nicméně doplněný obraz je promítán velkoplošně. Stínítko je buď pevné (průhledný plast) nebo nepevné (vodní páry). Oči si na tyto displeje snadněji přivyknou, dosahují také vysokého rozlišení. FOV je větší než u screen-based displejů, jsou také ergonomičtější. Nevýhodou je např. chybějící mobilita nebo omezený počet uživatelů, který je závislí na použité optice (Bimber, 2005). Typickým představitelem průhledových displejů jsou zařízení společnosti Laser Magic14 nebo Kingmaker15 . Tyto displeje fungují na principu zpětné projekce na průhlednou akrylovou desku. Podstatný je úhel, pod kterým paprsky z projektoru dopadají na stínítko. Při úhlu 30◦ –35◦ je obraz promítán na podkladovou desku. I z tohoto důvodu je nutné při instalaci displeje zvolit vhodné místo (z hlediska venkovního a vnitřního osvětlení). Podobné displeje našli využití i ve filmu Minority report od režiséra Stevena Spielberga. Zajímavou technologií je FogScreen16 , který využívá jako stínítko mlhu. Spotřeba vody je mezi 2–10 litry vody za hodinu, podle použitého projektoru. Rakkolainen popisuje možnost interaktivity FogScreenu prostřednictvím akustického trackování. Vzhledem k tomu, že displej je dvojrozměrný, stačí k plnému ovládání jen 2DOF (viz sekci o trackování). FogScreen může být náhradou klasické rozhraní obrazovka-myš. Nicméně vzhledem k podstatě stínítka, které je nehmatatelné, bude citelně chybět zpětná vazba (Rakkolainen, 2004). Projection-based direct augmentation Projector-based displeje využívají přední projekci. Obraz pak přenášejí přímo na povrch objektů, nikoliv na zobrazovací plochu někde v zorném poli diváka. Výhodou těchto displejů je lepší ergonomie, teoreticky neomezený FOV, měnitelné rozlišení a snadnější přizpůsobivost očí (Bimber, 2005). Pro promítání se používá jeden i více 13
http://www.nikondigital.com/Find-Your-Nikon/Product/Digital-Camera/26186/COOLPIXS1000pj.html 14 www.laser-magic.com 15 www.kingmaker.co.uk 16 www.fogscreen.com
22
projektorů. Aplikací může být mnoho – naznačení postupu operace přímo na tělo pacienta, různé projekce podtrhující minulý či budoucí stav objektu (např. prohlídka hotového a zařízeného domu v rozestavěné stavbě), promítání poškozených součástek na trup opravovaného letadla apod. Jak uvádí Raskar, má tento přístup i nevýhody. Především se jedná o omezení způsobené velikostí, tvarem a povrchem objektu, na který je obraz promítán (Raskar, 1999). Z tohoto důvodu je potřebná korekce geometrie a barev obrazu ještě před samotným promítáním. Nejprve se musí zjistit jakou texturu má povrch objektu, na který se bude obraz promítat. Pak se zajistí neutralizace textury, tedy vygeneruje se obraz, který bude vyrovnávat výkyvy ve struktuře a barvě textury. Nakonec se tento neutralizační obraz sloučí s původním obrazem a výsledek se promítne (Bimber, 2005).
3.2
Pozicování a polohování
Zajištění sledování pohybu a polohy je klíčovou součástí rozšířené reality. Jak již bylo řečeno, pro AR je klíčová funkce registrace. Pro správné určení registrace je nezbytně nutné průběžně určovat polohu sledovaného objektu (člověka nebo předmětu), případně celého prostředí – environment (tím může být místnost, prostranství) vůči pozorovateli, kterým je osoba s HDM nebo kamera. K tomu slouží tzv. trackery, tedy zařízení (HW a SW), které je schopné detekovat pozici nebo polohu objektu. Podle principu snímání je můžeme rozdělit do několika kategorií: • elektromagnetické • optické • akustické • mechanické • geolokační služby Mezi velmi používané trackery patří ty elektromagnetické, velký rozmach v současné době zažívají také trackery optické. 3.2.1
Vlastnosti snímačů pohybu
Každá trackovací technologie má různé vlastnosti a z nich vyplývající výhody a nevýhody. Ne všechny vlastnosti však mají stejnou váhu. Z pohledu správné funkčnosti AR lze vybrat několik důležitějších atributů trackování (DOF, přesnost, zpoždění, rozlišení), hlavně ve vztahu k registraci. Ta je pak na zvoleném trackování a jeho parametrech přímo závislá. Vztah snímačů a prostředí Podle Bimbera(Bimber, 2005) lze trackování dále rozdělit podle umístění snímačů a emitorů signálu pohybu: • outside-in – snímače pohybu jsou umístěny v prostředí, emitory signálu pohybu jsou připevněny na trackovaném objektu 23
• inside-out – emitory signálu jsou začleněny do prostředí a trackovaný objekt má snímače pohybu na sobě. Oba způsoby pak získají relativní pozici trackovaného objektu vzhledem k absolutní pozici prostředí. Bimber dále uvádí, že podobné členění se používá pro klasifikaci trackerů, založených na snímání obrazu. Nicméně lze toto členění použít i v dalších metodách detekce polohy. Rozsah snímání pohybu Pro vyjádření rozsahu sledovaného pohybu se využívají tzv. stupně volnosti – Degrees Of Freedom (DOF). Počet stupňů volnosti je minimální počet nezávislých souřadnic, potřebných k popisu polohy v každém okamžiku. Rotující nebo přímo pohybující se částice má jeden stupeň volnosti. Částice pohybující se v rovině nebo částice pohybující se na válcové nebo kulové ploše má dva stupně volnosti. Pohyb tělesa v trojrozměrném prostoru má šest stupňů volnosti (Science encyclopedia, 2010). 6DOF tedy znamená rotaci a zároveň posuny po 3 osách. Lidská ruka má cca 22DOF, lidské tělo pak cca 100DOF.
Obr. 8: Pohyb tělesa v prostoru vyjadřuje 6DOF
Pro práci s virtuálními prostředími, resp. objekty je tedy potřeba alespoň 3DOF tracker, optimální je 6DOF. Lze použít i kombinace více 3 nebo 2 DOF trackerů pro dosažení požadovaných stupňů volnosti, např. Wanda, viz dále. Přesnost Přesnost je velmi důležitým parametrem při výběru trackovací technologie. Podle Procházky přesnost udává rozdíl mezi naměřenou a skutečnou pozicí. Ten pak často roste se vzdáleností od počátku souřadnic. Dalšími parametry, které se vztahují 24
k přesnosti trackerů jsou také rozlišení, které udává minimální zachytitelnou změnu pohybu nebo rozkmit, vyjadřující změnu hodnot, pokud je objekt bez pohybu (Procházka, 2010). Požadavky na přesnost trackerů a senzorů jsou řízeny potřebnou přesností pro vizuální registraci. Přesnost registrace je přímo úměrná přesnosti trackeru. Proto AR potřebuje trackery s přesností na milimetr a zlomek stupně v celém pracovním rozsahu trackeru. (Azuma, 1997) Obnovovací frekvence Je udávána v Hz a vyjadřuje, kolikrát za sekundu je sejmuta poloha objektu. Např. při hodnotě 30 Hz uděláno 30 vzorků za vteřinu, tedy každou sekundu jsou třicetkrát zkontrolovány souřadnice trackeru. Zpoždění Zpoždění představuje potíže v registraci pouze při pohybu. Označuje se také někdy jako lag. Za předpokladu, že objekt a sledovaný bod jsou nepohyblivé, prodleva nezpůsobuje žádné chyby v registraci. Nezáleží na tom, jak je zpoždění velké, obrazy jsou generované správně, protože od doby kdy byla sejmuta poloha z trackeru se nic nezměnilo. Jiná situace je při snímání pohybu. Například když uživatel má see-through HMD a pohne hlavou. Tracker změří polohu hlavy v čase t. Obrázek odpovídající času t se ale zobrazí až v čase t2 , který odpovídá zpoždění trackeru. Během této prodlevy je však hlava uživatele stále v pohybu, takže při zobrazení obrázku z času t dojde k jeho vykreslení na jiném místě, než pro které byl vypočítán. Zpoždění tak způsobuje, že objekty „plavou� v prostoru a zůstávají tak „za� reálnými objekty (Azuma, 1997). Optimálně by zpoždění mělo být pod 10 ms. Dále pak Azuma uvádí, že snížit zpoždění lze například metodou synchronizace streamů, pro video see-through displeje. Také lze všeobecně využít metodu predikce, při které se odhaduje pohyb generovaného obrazu v reálném světě. 3.2.2
Elektromagnetické snímání pohybu
Elektromagnetické trackování je založeno na změnách polohy snímače uvnitř elektromagnetického pole. Zařízení funguje tak, že měří síly magnetického pole vytvořené zasláním proudu přes tři malé drátěné cívky, orientované kolmo k sobě. Tyto tři cívky jsou zakotveny v malé jednotce, která je připojena na jakýkoliv systém, který potřebuje trackování – typicky k uživateli. Proud má za následek, že každá cívka se změní na elektromagnet. Jednotlivé cívky se aktivují postupně a měřením magnetických polí generovaných jednotlivými elektromagnety je možné určit polohu a orientaci v prostoru (Baratoff, 2010). Výhodami tohoto způsobu sledování pohybu jsou nízká zpoždění – systém Fastrack 17 udává zpoždění 4 milisekundy a obnovovací frekvenci 120 Hz (WWW 17
Elektromechanický tracker vyvinutý http://www.polhemus.com/?page=Motion Fastrak
firmou
Polhemus,
viz
25
Obr. 9: Generátor elektromagnetického pole Flock of Birds a snímač Wanda
společnosti Polhemus, 2010). Systém poskytuje 6DOF. Nevýhodou elektromagnetického sledování je náchylnost k rušení elektromagnetickým zářením. Problémy může způsobovat elektronika, kovové předměty jako kancelářský nábytek, které narušují elektromagnetické pole. Procházka uvádí dělení elektromagnetických trackerů na AC a DC. AC poskytuje oproti DC verzi lepší parametry, je rychlejší, přesnější, netrpí zpožděním, není náchylná na zemské magnetické pole. Navíc je schopna využívat časový i frekvenční multiplexing při trackování s více snímači. Oproti tomu výhodou DC je velikost, nicméně ve všech ostatních kritériích zaostává (Procházka, 2010). Komerční řešení poskytuje kromě firmy Polhemus také Ascension Technology Corporation18 , jejím produktem je generátor DC magnetického pole Flock of Birds. Ten má obnovovací frekvenci až 144 Hz. 3.2.3
Mechanické snímání pohybu
Tato zařízení měří pozici a orientaci pomocí přímého mechanického spojení mezi referenčním bodem a cílem. Například mechanické rameno spojuje ovládání s čelenkou a snímače umístěné na klouby paží měří změnu polohy a orientace. Zpoždění pro mechanické trackování je velmi malé (méně než 5 milisekund), obnovovací frekvence je poměrně vysoká (300 aktualizací za sekundu) a jsou přesné. Jejich hlavní nevýhodou je, že uživatelův pohyb je omezen mechanickým ramenem, případně exoskeletonem. Příkladem takového mechanického trackování je zařízení od firmy Fakespace Labs19 . Mezi jejich produkty patří např. mechanicky trackovaný HMD (FS2 Display) nebo LCD (The Chameleon). Ty poskytují 6DOF. Dalším mechanickým trackovacím zařízením je Gypsy, od společnosti Metamotion20 . To slouží převážně pro motion-tracking. Jeho základem je exoskeleton snímající pohyby osoby, která jej má navlečený. 18
http://www.ascension-tech.com/ http://www.fakespacelabs.com/tools.html 20 http://www.metamotion.com 19
26
Gypsy exoskeleton převádí analogové napěťové změny získané z různých míst trackeru do digitální podoby. Tyto digitální hodnoty jsou přenášeny do počítače, kde řídící software interpretuje tyto informace (na základě kalibračního soubor osoby). Údaje poskytují reprezentaci uživatelovy kostry v reálném čase, na základě uživatelova pohybu. Software dokáže dopočítat např. kam došlápne noha, na základě toho, kde je v současné době umístěna druhá noha. (WWW společnosti MetaMotion, 2010) Tyto systémy pro snímání pohybů těla se nazývají MoCap – Motion Capturing a používají se právě pro snímání pohybu těla. Jejich využití je, spíše než k ovládání zařízení nebo prostředí, v oblasti tvorby animací postav, trikových sekvencí ve filmech apod. Trend optických trackerů dorazil i do této domény a proto jsou jimi mechanické MoCap trackery často nahrazovány. Důvodem je především volnost pohybu při užití optických snímačů. 3.2.4
Optické snímání pohybu
Optické trackování získává v poslední době oblibu hlavně kvůli nízkým nákladům a celkové dostupnosti. Také není pro některé druhy optického rozpoznání pohybu žádný specializovaný hardware, vystačí si s obyčejnou kamerou. V současné době existují 2 různé přístupy v optickém sledování: infračervené (infrared optical tracking) a značkové (visual–based optical tracking). Jak uvádí Neumann, princip optického trackování je ale pro obě technologie stejný: podle pozice tří nebo více známých prvků (jakýchsi „záchytných bodů�, které jsou sledovány) vymezují pozici pozorovatele relativně oproti sledovaným prvkům obrazu (Neumann, 1999). V případě visual-based trackování jsou známými prvky části markeru – značky nebo šablony, která určuje pozici objektu ve scéně. V technologii infrared trackingu jsou pozorované prvky kuličky (nejčastěji bílé) připevněné k sledovaným objektům (pera, helmy, případně celé obleky). Celá scéna je snímána kamerou a jsou hledány pozice záchytných bodů. Infrared U infračerveného trackování má smysl hovořit o inside-out a outside-in přístupu. Oproti visual-based systémům jsou pořizovací náklady na HW vyšší. Pro snímání jsou potřeba speciální emitory infračerveného světla, jež se odráží od speciálních reflexivních markerů (velmi často bílé nebo barevné kuličky) a odražené světlo jde do kamery. Snímaný obraz je pak analyzován, markery jsou vyhledány a je dopočítána pozice jednotlivých kuliček, čímž je určena registrace v prostoru (Jorge a kol., 2010). Visual-based Pro využití tohoto druhu trackování stačí pouze obyčejná kamera (webkamera) propojená s počítačem a speciální software, který umí zpracovat dané obrazy a rozpoznat případné značky (a jejich registraci). Mezi software pro toto trackování patří různé frameworky (jejich srovnání je v kapitole Analýza a metodika), které podporují práci s kamerami a markery. 27
Obr. 10: Infračervené světlo je odraženo od markeru do kamery (iotracker, 2010)
V poslední době se objevuje i tzv. marker-less trackování. To nevyužívá ke sledování pohybu předem definované značky, ale vyhledává si „záchytné body� přímo v obrazu z kamery. Představitelem této technologie je např. Project Natal od společnosti Microsoft, který hodlá využít optické trackování pro ovládání videoher. K herní konzoli Xbox 360 má být připojena stereokamera, která by měla snímat pohyby hráče a převádět je na obrazovku21 . Oproti ostatním technologiím je optické snímání o něco pomalejší. Lagy jsou u optického trackování mezi 20 až 80 milisekundami (Baratoff, 2010). Další nevýhodou je závislost na tzv. Line of Sight – přímé viditelnosti. Pokud není záchytný bod vidět, trackování nefunguje. Vylepšení v tomto případě přináší použití více kamer. Snižuje se tak možnost zakrytí markeru. Další výhodou použití více kamer je zlepšení registrace. Optické snímání poskytuje až 6DOF. Výhodou je, zvláště u visual-based trackování, cena a nenáročnost na speciální hardware. 3.2.5
Akustické snímání pohybu
Procházka uvádí princip akustického snímání pohybu: Generátor vysílá krátké ultrazvukové signály, které jsou zachycené snímacími mikrofony. Získání souřadnic trackovaného objektu je založeno na triangulaci – tři reproduktory v trojúhelníku postupně vyšlou signál zachycený třemi mikrofony v trojúhelníku (Procházka, 2010). Jorge rozděluje akustické snímání podle principu funkčnosti do dvou kategorií: timeto-flight a phase coherency (Jorge a kol., 2010). 21
http://www.xbox.com/en-us/live/projectnatal/
28
Time-to-flight funguje tak, že měří čas, za který dorazí ultrazvukový signál od emitoru umístěného na trackovaném objektu k přijímači, který je umístěn fixně. Množství času, který urazí signál od vysílače k přijímači pak určuje jejich vzdálenost. Při znalosti vzdálenosti od 3 a více snímačů pak lze dopočítat souřadnice v prostoru. Potíží time-to-flight metody je nízká obnovovací frekvence. Phase coherency, nebo také fázová soudržnost. Pracuje na principu porovnání fáze zvukového signálu získaného při vyslání od vysílače k přijímači a signálu vyslaného z referenčního bodu. Fáze zvuku představuje pozici zvukové vlny a je měřena ve stupních (Baratoff, 2010). Akustické trackování poskytuje 6DOF. Lagy jsou nízké, do 5 milisekund. Procházka dále zmiňuje dosah akustického trackeru. Ten je okolo 1,5 m. Problémem akustických trackerů může být rušení šumem nebo odraženými paprsky. 3.2.6
Geolokační služby
Všechny předchozí metody snímají pozici vzhledem k určitému zvolenému počátku souřadnic. Souřadnice jsou tedy z globálního pohledu relativní. Pro řadu aplikací je dnes ale nezbytné určit absolutní polohu a orientaci v rámci Země. Tyto služby jsou často označování Location Based Services (LBS). Mezi nejčastěji používané LBS patří především GPS a elektronický kompas. Tyto služby mají za úkol především zjištění geografické pozice, respektive orientace. GPS Světový pozicový systém – Global Positioning system (GPS) je celosvětový systém pro určení zeměpisné polohy na celé zeměkouli. Původně byl vyvíjen jako vojenský projekt, později uvolněn i pro veřejnost. Přehled technologie poskytuje KingleyHughesová. GPS se dá rozdělit do 3 spolupracujících segmentů: • kosmický • řídící • uživatelský Kosmický segment zahrnuje okolo 30 satelitů NAVSAT (z toho 24 slouží pro určení pozice, ostatní jsou záložní), které jsou majetkem Ministerstva obrany USA. Satelity jsou rozmístěny ve výšce 20200 km tak, aby mohli být rychle přesunuty v případě poruchy jiného satelitu. Počet satelitů je určen takovým způsobem, aby alespoň 4 satelity byli dostupné z jakéhokoliv místa na zemi. Satelity mají přesné údaje o své zeměpisné šířce, délce a výšce, rychlosti a poskytují přesný čas. Tyto informace umějí v reálném čase vysílat neomezenému počtu uživatelů. Řídící segment se skládá z celosvětové sítě monitorovacích stanic a pozemních antén. Tato síť sbírá informace z NAVSAT satelitů a předává je hlavnímu řídícímu centru. To vyhodnocuje získané informace a v případě potřeby vysílá satelitům řídící zprávy, aby byla dosažena co nejvyšší přesnost. I tento segment ovládá americké Ministerstvo obrany.
29
Uživatelský segment pak zahrnuje koncová zařízení, která přijímají signál ze satelitů. Některá tato zařízení jsou pak dostupná celé veřejnosti. Patří mezi ně autonavigace, kapesní navigace nebo profesionální systémy používané pro navigaci a průzkum (např. v letectví). Konečně také slouží k vojenským účelům. GPS pracuje tak, že přijímač získává signál z 3 a více satelitů a na základě těchto údajů dopočítává vzdálenost mezi satelity a vzdálenost současného místa od jednotlivých satelitů. Takto lze určit jak zeměpisnou šířku a délku, ale také výšku. Chyby GPS signálu mohou vznikat rušením některými atmosférickými vlivy (Kingsley-Hughes, 2005). Konkurenty GPS je např. evropský projekt GALILEO. Elektronický kompas Existuje několik druhů kompasů, mezi nejpoužívanější patří kompas magnetorezistivní. Ten pracuje na principu magnetizace feromagnetického prvku. Při magnetizaci má prvek předem známý odpor, který se mění v závislosti na magnetickém poli země. Jak uvádí Caruso, přesnost tohoto kompasu je 0,1 miligaussů a doba odezvy je méně než 1 mikrosekunda. Problémem při použití tohoto zařízení je náklon, protože kompas pak není v horizontální poloze rovnoběžné se zemskou plochou, která je pro přesné zaměření nezbytná. Náklon se pak kompenzuje pomocí senzoru náklonu (např. gyro nebo klinometr) (Caruso, 1997). Geolokační služby slouží spíše jako doplněk k ostatním trackovacím zařízením, neboť určují pozici v prostoru v řádech několika metrů, jsou tedy z hlediska jemné manipulace nepřesné. Ze své postaty GPS poskytuje 2DOF (zeměpisná šířka a délka) nebo 3DOF (zeměpisná šířka, délka a výška). Elektronický kompas pak poskytuje 1DOF (otáčení kolem svislé osy). Kombinace obou technologií současně však získává na oblibě, převážně v kapesních zařízeních. Svoje využití si nachází tato kombinace především v navigačních systémech a mapových aplikacích. Typicky v autonavigacích – při ztrátě signálu GPS např. v tunelu lze vypočítat souřadnice ze znalosti směru a rychlosti. Spojení GPS a elektronického kompasu využívají také aplikace jiného druhu, např. Google Goggles nebo WiKiTude. 3.2.7
Kombinované snímání pohybu
Kromě výše zmíněných technologií existují i kombinace předchozích přístupů. Příkladem může být např. ovladač Wanda22 , který kombinuje elektromagnetické trackování spolu s náklonovými čidly, čímž dosahuje 6DOF. Velmi populárním přístupem současných mobilních telefonů je pak integrace akcelerometru, čidel náklonu, elektronického kompasu a GPS. Počet telefonů, které v sobě integrují tyto čidla, bude pravděpodobně časem narůstat, neboť výrobci mobilních telefonů mají již technologii výroby zvládnutou. Nelze jednoznačně určit nejlepší způsob trackování, vždy záleží na konkrétních potřebách, případně vynaložených nákladech. Jako velmi perspektivní technologií se 22
http://www.ascension-tech.com/realtime/WANDA.php
30
jeví optické marker-less trackování, neboť nepotřebují žádný specializovaný hardware, vystačí si s obyčejnou kamerou, třeba ve fotoaparátu nebo mobilním telefonu. Náklady na jejich pořízení tedy nejsou vysoké a i přes některé horší parametry (zpoždění) se patrně jedná o nejlepší alternativu pro běžné uživatele.
31
4
Analýza a metodika
Projekt je vypracováván ve spolupráci s firmou Škoda Auto a. s. Realizace vlastní aplikace pro rozšířenou realitu bude provedena v podobě zásuvného modulu pro program VRUT a tím rozšíří jeho funkcionalitu. Škoda Auto a. s. využívá program pro prezentační a vývojové účely. Rozšíření o AR modul by pak mělo pomoci při prezentaci a vývoji novým modelů automobilů. Vzhledem k rozšířenosti, ale hlavně nízkým nákladům bylo rozhodnuto, že modul bude používat optické rozpoznávání pohybu s papírovou značkou a jednou kamerou. V této kapitole je tedy nejprve představen program VRUT, poté jsou představeny frameworky umožňující aplikaci rozšířené reality prostřednictvím optického (marker-based) trackování.
4.1
Funkcionalita modulu
Zásuvný modul by měl rozšířit stávající program o možnosti rozšířené reality. Především tedy musí umět načtení dat z kamery a následné prohledání získaného obrazu. Tento obraz musí být schopen porovnat s přednastavenou šablonou (markerem). V místě, kde se šablona shoduje s obrazem by poté měl být schopen doplnit data z kamery o další doplňující data. Pro provedení této funkcionality je potřeba splnit několik bodů: 1. Načtení dat z kamery 2. Analýza obrazu – rozpoznání značek 3. Správná registrace značky v prostoru 4. Doplnění obrazu do dodatečné informace 5. Zobrazení získaných informací v programu VRUT
4.2
Metodika
Pro vytvoření modulu rozšířené reality pro program VRUT bude nezbytné srovnat současné nástroje pro práci s rozšířenou realitou a zhodnotit možnost jejich využití při programování modulu. Framework musí splňovat několik základních kritérií. Kvůli VRUTu samotnému je nezbytné, aby byl framework multiplatformní. Aplikace je v současné době používána na operačních systémech Linux a Windows. Pro zachování multiplatformnosti musí být k dispozici na obou systémech i framework. Dalším kritériem je podpora 64b systémů. Vzhledem k velikosti zobrazovaných dat potřebuje VRUT velké množství HW prostředků. Proto je aplikace naprogramována pro chod na 64b systému a je tedy nezbytné, aby framework umožňoval totéž. Mezi další vlastnosti využívané knihovny by měla patřit stabilita a to jak z hlediska funkčnosti, tak z hlediska dalšího vývoje frameworku. Provozuschopnost modulu pro VRUT by měla být co nejméně ohrožována ukončením vývoje frameworku.
32
Doplňkovým kritériem při výběru frameworku je podpora ze strany vývojářů, především dobře zpracovaná dokumentace. Výhodou je i široká uživatelská základna, pro případné potřeby při samotné práci s frameworkem. Z hlediska funčnosti systému musí framework umět práci s kamerou, především načítat obraz z kamery a případně s ním dále pracovat. Dále musí framework umožnit zpracování markeru (tedy jeho porovnání s předlohou nebo správnou registraci). Kromě základní funkcionality by měl framework poskytnout možnosti pro případné rozšíření modulu, např. pro podporu více kamer nebo více markerů. Při práci na modulu bude nezbytné seznámit se s architekturou aplikace VRUT, neboť znalost vnitřních pochodů aplikace je pro tvorbu modulu nutností. Stejně tak je potřebné pochopit základní principy pro rozpoznání markerů a registraci v prostoru. V neposlední řadě je potřebné nastudovat framework, v kterém bude implementována AR část modulu.
4.3
VRUT
VRUT je zkratka pro Virtual Reality Universal Toolkit, a jak již název napovídá, program slouží jako pracovní nástroj pro virtuální realitu, pracuje tedy nad grafickými daty. VRUT je modulární aplikace, hlavním úkolem programu (jádra) je spravovat moduly a grafická data. Většina funkcionality pak přímo závisí na použitých modulech. Právě modularita a multiplatformnost, patří k výrazným přednostem aplikace. Program je prozatím schopen běžet v operačních systémech MS Windows a Linux. VRUT je vyvíjen v programovacím jazyce C++, vykreslení hlavní scény provedeno pomocí OpenGL. 4.3.1
Modularita a nezávislost VRUTu
Moduly jsou velkou devizou VRUTu, protože umožňují aplikaci rozšiřovat funkcionality nezávisle na jádře. Každý modul má svůj konkrétní účel a činností kterou vykonává, nenarušuje chod ostatních modulů nebo jádra aplikace. Tato činnost nicméně bývá pro aplikaci zásadní, např. načtení či vykreslení grafických dat, manipulace s objekty ve scéně apod. O práci s moduly se stará Správce modulů, který zjišťuje jejich dostupnost pro danou platformu a také jejich kompatibilitu s jádrem. Správce poskytuje zcela transparentní uvedení dostupného modulu do života a jeho korektní spojení s jádrem. Moduly jsou aktivovány pouze na žádost v případě potřeby, navíc je možné více aktivací téhož modulu, aniž by se navzájem nechtěně ovlivňovaly. V případě více modulů poskytujících stejnou funkci se správce rozhoduje podle priorit, pokud jsou definovány. Vzhledem k potřebě obsloužit velmi rozličné požadavky směrované ve výsledku na různé typy modulů obsahuje správce modulů dílčí části, správce jednotlivých typů. Nezávislost VRUTu je umožněna díky systému událostí, což je obdoba zasílání zpráv objektům, tedy principu využitého v objektově orientovaném programování. 33
Události umožňují komunikaci jednotlivých modulů s jádrem. Výhodou tohoto systému je to, že není potřeba znát programové rozhraní modulů a zjednodušuje se kooperace při jejich tvorbě. Také se usnadňuje práce s více vlákny, kdy je možné několik modulů spustit v samostatných vláknech nezávisle na sobě, ale přesto s možností komunikace mezi sebou. Komunikaci pomocí událostí obstarává Centrální správce událostí, jež je součástí jádra. Ten se stará o odeslání události všem objektům, které mají odběr události nahlášen. Zareaguje pak jen objekt, pro který je daná událost určena. Události je také možné posílat konkrétním objektům, mimo centrálního správce. Událostem lze přiřadit vyšší prioritu, aby byly zpracovány přednostně, jinak jsou zpracovány v pořadí v jakém přišly (Kyba, 2008).
Obr. 11: Program VRUT využívá firma Škoda Auto a.s. k prezentování a vývoji
4.3.2
Zobrazení grafických dat
Grafická data se nachází v grafu scény, který spravuje přímo jádro a není zastupitelný žádným modulem. Graf scény je složen z jednotlivých prvků scény, uzlů. Těch je několik typů: základní uzel, ze kterého vycházejí všechny ostatní uzly, kořenový uzel, což je ekvivalent základního uzlu ve scéně s jedním uzlem. Dále existuje uzel geometrie, který obsahuje informace o geometrii a materiálu, uzel se světlem a uzel reprezentující kameru. Z pohledu modulu pro AR je nejdůležitější právě uzel geometrie, kvůli informacím o materiálu. Při práci s materiály lze nadefinovat i několik 34
typů shaderů, které rozšiřují možnosti materiálů na úrovni výstupu z grafické karty (platí pro hardware, který podporuje programovatelné shadery). Komunikace s grafem scény probíhá prostřednictví systému událostí. Každá operace nad scénou má svoji událost a zároveň různé operace generují různé typy událostí. Lze je tedy od sebe rozlišit a reagovat jen na ty, které jsou z hlediska funkcionality zajímavé. Do scény tedy nelze přistupovat přímo, ale její změna probíhá prostřednictvím Centrálního správce událostí, který událost vyslanou scéně interpretuje do podoby příslušné operace. Podrobnější popis VRUTu je k dispozici v diplomové práci Václava Kyby, autora programového jádra. Jeho závěrečná práce je zároveň podrobnou dokumentací k aplikaci.
4.4
Srovnání SW nástrojů rozšířené reality
Často používaným frameworkem pro práci s rozšířenou realitou je ARToolKit. Oproti němu stojí sada knihoven OpenCV, které nepatří mezi nejpoužívanější nástroje, ale poskytuje robustní řešení. Hlavní dvojici pak doplňuje několik dalších projektů pro práci s AR. 4.4.1
OpenCV
OpenCV23 (Open Computer Vision) je open source sada knihoven pro práci s počítačovým viděním (computer vision) v reálném čase, v současnosti je ve verzi 2.1. S knihovnou lze vyvíjet aplikace pro rozpoznávání gest, tváří, objektů, HCI (HumanComputer Interaction) aj. S OpenCV je spojena firma Intel, která implementuje jeho podporu přímo do hardwaru - využívá technologii Intel IPP (Integrated Performance Primitives), která poskytuje vysoký výkon pro nízkoúrovňové rutiny pro zvuk, video, rozpoznávání řeči, kódování, dekódování, kryptografii aj. OpenCV je nejrobustnějším řešením mezi srovnávanými frameworky. Obsahuje nástroje pro kompletní analýzu obrazu (filtrování obrazu, detekce objektů, analýzu pohybu), transformace obrazu, práci s videem, jednoduchou práci s okny, kalibraci kamery, podporu sterea (zapojení více kamer) apod. Výhodou je multiplatformnost, framework existuje ve verzích pro Linux, Windows i Mac OS X a to i pro 64b systémy. Velkou devizou je existující vývoj, v dubnu 2010 byla vypuštěna verze 2.1, na knihovně se tedy neustále pracuje. Nevýhodou oproti ostatním srovnávaným nástrojům je to, že nejsou implementovány přímé metody pro rozpoznání a registraci značek v prostoru. Hlavním problémem při použití tohoto frameworku pro aplikaci AR je implementace registrace značky. Další výhodou je použití kamer, kdy není potřeba nastavovat parametry kamery nebo komunikovat s ovladači hardwaru. Framework komunikuje přímo s operačním systémem a využívá jeho prostředky. Pokud je tedy kamera v systému nainstalovaná, 23
Bližsí informace jsou dostupné na http://opencv.willowgarage.com/wiki
35
stačí ji inicializovat a lze ji využívat. Pro práci s videem používá framework vlastní knihovnu pro podporu ffmpeg. OpenCV podporuje jazyky C++, C a Python. Výhody: • Snadná práce s kamerami • Robustnost • Multiplatformnost • Pokračující vývoj a silná komunita vývojářů • Podpora 64b systémů Nevýhody: • Neexistence přímé podpory rozpoznání a registrace značek 4.4.2
ARToolKit
ARToolKit24 je softwarová knihovna přímo pro podporu tvorby aplikací AR. Je multiplatformní, lze jej využívat na Linuxu, Windows, Mac OS X a SGI (oficiálně jen v 32b verzích). V základu jsou implementovány funkce pro rozpoznání a registraci značek (6DOF), navíc umožňuje rozpoznat více značek, jejichž parametry jsou zapsány ve zvláštním souboru, do kterého se přidávají pomocí kalibrační utility, dodávané spolu s knihovnou. API knihovna je psáno pro jazyk C. Práce s kamerami je u tohoto nástroje komplikovanější než v případě OpenCV. Konfigurace kamer je uložena v souboru, z kterého je potřeba načíst potřebné údaje při inicializaci kamery. Podstatnějším problémem tohoto frameworku je zastavení vývoje, resp. přesun k placené verzi ARToolKit Professional. Poslední verze 2.72.1 vyšla v únoru roku 2007 a od té doby žádná další aktualizace nebyla uvolněna. Vývoj frameworku je zastaven a nelze předpokládat kompatibilitu s novými operačními systémy nebo další funkce (práce s více kamerami, C++). ARToolKit Professional je v placené verzi záležitostí velmi nákladnou, vývojářská verze stojí 4995$ ročně, licence pro použití frameworku v aplikacích 3. stran pak 995$ ročně. Výhody ARToolKitu: • Implementované funkce pro práci se značkami • Multiplatformnost • Silná komunita vývojářů Nevýhody: • Ukončený vývoj • Chybějící oficiální podpora 64b systémů • Práce s kamerou 24
http://www.hitl.washington.edu/artoolkit
36
4.4.3
NyARToolKit a jeho varianty
Po ukončení vývoje ARToolKitu byla z verze 2.72.1 odvozena nová knihovna NyARToolKit25 . Ta je v současné době vyvíjena japonským autorem. V podstatě se jedná o konverzi ARToolKitu pro různé platformy. K dispozici jsou prozatím verze pro Javu, Flash, Android, Silverlight (SLARToolKit), Actionscript (FLARToolKit), či C. Není prozatím dostupná verze pro C++, ta je stále v betaverzi, v které je možné pouze detekce značek, není dostupná podpora pro 3D nebo práci s kamerou. Projekt je stále aktivní, takže nedostatky mohou být odstraněny v některých dalších verzích. 4.4.4
Další knihovny
Mezi další frameworky pro práci s AR patří zejména Morgan, DART, Goblin XNA, Studierstube. Většinou se jedná o univerzitní projekty, které nejsou většinou příliš aktuální, případná podpora ze strany uživatelů je marginální. • Morgan – byl použit pro tvorbu aplikace ARTHUR, viz sekci Využití rozšířené reality • DART26 – neaktuální univerzitní projekt, podporuje jen systémy Win XP a Linux. • Studierstube – z univerzitních projektů nejlépe zpracovaná dokumentace. Vyvíjen Institutem pro počítačovou grafiku a vidění při Technické univerzitě v Grazu. Nejdříve používán pro kolaborativní AR, později se zaměřuje na mobilní aplikace. Využívá dalších frameworků pro trackování, video a registraci • Goblin XNA – projekt Kolumbijské univerzity, vychází z dřívějšího projektu Goblin a rozšiřuje jej o použití v Microsoft XNA. Pro 6DOF marked-based trackování využívá ARTag. Spojení s XNA napovídá možnosti využití na MS Windows a Xboxu. Je však k dispozici také pro Linux a Mac OS X. Zadaná kritéria pro výběr frameworku zcela nesplnil žádný z nich. Multiplatformní jsou všechny frameworky, nicméně pro DART existuje jen ve verzi pro Windows a Mac OS X. Mezi nejlépe zpracované po stránce dokumentace patří OpenCV (jak oficiální dokumentace tak i literatura), ARToolKit a Studierstube. Podporu 64b systému splňuje OpenCV, NyARToolKit, u ostatních není oficiální nebo úplně chybí. Stabilita vývoje je nejlepší u OpenCV a NyARToolKitu, neboť nové verze vycházejí často a vývoj obou frameworků pokračuje. U univerzitních projektů je pokračování ve vývoji nejisté, dokumentace většinou špatně zpracovaná nebo žádná. Světlou výjimkou je Studierstube, která má dobře zpracovanou dokumentaci, nicméně poslední verze frameworku vyšla před rokem. Uživatelská základna a podpora vývojářů je na dobré úrovni u projektů OpenCV a ARToolkit. Prozatím se jako nejlepší volba jeví OpenCV, které splnilo většinu kritérií. Problémem tohoto frameworku je ovšem chybějící rutiny pro práci s AR, které má 25 26
http://nyatla.jp/nyartoolkit/wiki/index.php?FrontPage.en http://www.cc.gatech.edu/dart/aboutdart.htm
37
většina ostatních frameworků. Ty umožňují přímo zavolat funkci pro rozpoznání markeru nebo jeho registraci a získání souřadnic v prostoru. OpenCV tyto metody nemá, nicméně poskytuje komplexní sadu nástrojů pro práci s obrazem a je možné si tyto metody dopsat. Mezi nejlepší frameworky se tedy řadí OpenCV, ARToolKit a NyARToolKit. Ovšem každý trpí nějakými potížemi. OpenCV chybí rutiny pro práci s AR, ARToolKitu naopak snižuje hodnocení především ukončený vývoj a absence 64b verze. NyARToolKitu pak chybí dokumentace, podpora od autorů je špatná, stránky projektu jsou částečně v japonštině, částečně anglicky, komunita vývojářů není tak silná. Pro práci s obrazem byl vybrán framework OpenCV. Kvůli chybějícím rutinám pro práci s rozšířenou realitou bude sice pracnější modul vytvořit, nicméně další vlastnosti OpenCV tyto nedostatky vynahradí. Výhodami jsou především neustálý vývoj, snadná práci s kamerami, komplexnost celého frameworku a podpora 64 bit systémů.
38
5
Realizace aplikace
Aplikace pro rozšířenou realitu je realizována prostřednictvím modulu do již existující aplikaci VRUT. Program využívá firma Škoda Auto a.s. pro vývoj a prezentaci nových modelů automobilů. Modul pro VRUT je vytvořen v programovacím jazyce C++, implementace rozšířené reality je provedena pomocí frameworku pro počítačové vidění OpenCV. Vývoj modulu probíhá na počítači Apple Macbook 13,3”, kde je nainstalovaný operační systém Windows 7 Professional. Vývojovým nástroje je MS Visual Studion 2008. Kapitola popisuje jednotlivé kroky popsané v analýze, z hlediska implementace do programového modulu.
5.1
OpenCV a video
OpenCV má rutiny pro práci s videem nadefinovány v knihovně HighGUI. Tato knihovna byla původně vytvořena jako zástupná knihovna pro práci s uživatelským rozhraním (místo GUI frameworků jako je např. Qt), později byla doplněna o funkce pracující s videem a obrázky. Prostřednictvím knihovny je možné vytvářet okna, spravovat události z myši nebo klávesnice, dále provádět diskové operace s obrázky a načítat video ze souboru nebo z kamery a případně zapisovat video do souboru. Potíží při použití videa na 64b systémech je knihovna ffmpeg, která se stará o kódování a dekódování a práci se streamy z disku nebo kamery. Knihovna je využívána na operačních systémech Windows, prozatím existuje jen verze pro platformu x86. Práce s kamerou je potom v 64b systémech dosti omezená (pouze 1 kamera, pouze RGB), nicméně kameru lze použít jako v 32b systému. Při instalaci OpenCV je na tuto chybu upozorněno, autoři o problému ví a lze očekávat řešení v některém z příštích verzí OpenCV (ať už přidáním 64b verze knihovny nebo přechodem na jinou knohovnu pro práci s kamerou). Ostatní operační systémy pracují s jinými knihovnami, proto se u nich daný problém neprojevuje. Práce s kamerou je v OpenCV jednoduchá, framework využívá kamery, které jsou nainstalované v operačním systému a prostřednictvím doplňkových knihoven pro zpracování obrazu (v případě Windows je to ffmpeg nebo DirectShow). Kód v C++ pro načítání videa a zobrazování v samostatném okně vypadá takto: Mat frame; VideoCapture cap(0); while (1){ cap >> frame; imshow("insight", frame); if ( (waitKey(1)) == 27 ) break; } cap.release(); Nejprve je deklarována matice, do které se načítá obraz. Ta je typu Mat, což je standardní typ OpenCV pro práci s obrazem. Jedná se o matici bodů, resp. jednotlivých barevných složek obrazu. Před samotným načtením obrazu je nejprve potřeba 39
vytvořit videostream a inicializovat kameru. OpenCV potom pracuje se streamem jako s jiným videem. To je provedeno příkazem VideoCapture cap(0). Typ cap je název streamu, číslo v závorce značí, jaká kamera se má inicializovat. V tomto případě se jedná o libovolnou kameru, kterou má operační systém k dispozici. Následuje programová smyčka, která trvá do zmáčknutí klávesového tlačítka Esc. Příkazem cap >> frame se nejprve načte z inicializovaného streamu aktuální obrázek a poté se zobrazí v okně s názvem „insight�. Poté se otestuje, zda byla stisknuta klávesa Esc. Po ukončení cyklu se zabrané systémové prostředky uvolní.
5.2
Vyhledávání šablony v obrazu
Předchozí sekce vysvětluje postup při načítání obrazu z kamery. Po získání obrazových dat je nutné udělat analýzu obrazu. Prvním krokem je tedy detekce šablony v obrazu. OpenCV má vlastní funkci pro ohodnocení shody 2 různých obrazů. Je to funkce matchTemplate, která je pro porovnání klíčková. Zdrojový kód vyhledání šablony marker.jpg ve videu by mohl vypadat následovně: VideoCapture cap(0); Mat frame, template, resolution; cvPoint minloc, maxloc; double minval, maxval; int img width, img height; int templ width, templ height; int res width, res height; img width = img->width; img height = img->height; templ width = template->width; templ height = template->height; res width = img width − templ width + 1; res height = img height − templ height + 1; resolution = create( res width, res height, CV 16SC3 ); template = imread("marker.jpg"); cap >> frame; matchTemplate( img, template, resolution, CV TM SQDIFF NORMED ); minMaxLoc( res, minval, maxval, minloc, maxloc, 0 ); Nejprve jsou nadeklarovány matice bodů s kterými se bude pracovat. Matice img je obraz načtený z kamery, template je šablona markeru načtená z disku a resolution je výsledná matice, do které zapisuje funkce matchTemplate() výsledky. Proměnné typu Point představují souřadnice bodu v obrazu. Dále se ukládájí do zvláštních proměnných šířky a výšky šablony a kamerového obrazu, kvůli výpočtu velikosti matice resolution. Ta musí mít velikost rozdílu obrazu z kamery a šablony, zvětšenou 40
o jeden bod. Ta je vytvořena pomocí metody create, která je volána s příslušnými parametry. Dále je načten z disku obrázek šablony a obrázek z kamery. Nutnost výpočtu velikosti výsledné matice resolution je dána způsobem porovnávání obrazů funkcí matchTemplate(). Jejími parametry jsou matice obrazu z kamery, matice šablony, výsledná matice, do které se zapisují výsledky a konečně porovnávací metoda. Funkce pak pracuje tím způsobem, že šablonu přeloží přes zdrojový obraz a posouvá ji po celé ploše. V bodě, kde nalezne největší shodu obrazu s předlohou, zapíše do výsledkové matice nejvyšší, respektive nejnižší hodnotu (záleží na použité porovnávací metodě).
Obr. 12: Srovnání jednotlivých metod funkce matchTemplate()
V OpenCV je k dispozici 6 metod porovnávání obrazu. Každá metoda používá pro výpočet ohodnocení bodu jiný způsob. v zásadě existují 3 metody a pro každou je i normovaná verze (Bradski, 2008). sqdiff – Nejlepší shody reprezentují 0 (na obrázku černá barva), velké rozdíly
41
v předloze značí velké číslo (bílá barva). Rsqdiff (x, y) =
�
x� ,y �
�
�
�
�
[T (x , y ) − I(x + x , y + y )]2
ccorr – Opak sqdiff, nejlepší shoda je veliké číslo, nejhorší shody jsou 0. �
Rccorr (x, y) =
x� ,y �
�
�
�
�
[T (x , y ) · I(x + x , y + y )]2
ccoeff – Výsledek shody je na intervalu od −1 do 1. Hodnota 0 znamená, že neexistuje žádná shoda. Rccoeff (x, y) =
�
x� ,y � �
�
�
�
�
�
�
[T (x , y ) · I (x + x , y + y )]2
�
pro x = 0 . . . sirka − 1 a y = 0 . . . vyska − 1, �
�
�
T = T (x , y ) − �
�
�
I = I(x + x , y + y ) −
1 (sirka · vyska) (sirka · vyska)
�
x�� ,y ��
T (x�� , y �� )
1
�
x�� ,y ��
I(x + x�� , y + y �� )
normed – Normování pomáhá redukovat světelné rozdíly mezi předlohou a obrazem. R normed (x, y) = ��
x� ,y �
R(x, y) �
T (x , y
�
)2
·
�
x� ,y �
I(x + x� , y + y � )2
Pro pokusný marker podávala konstantně nejlepší výsledky metoda sqdiff normed. Výsledky porovnávání jsou tímto zapsány do matice resolution. Nicméně aby bylo možné určit přesně polohu markeru v obrazu, je potřeba zavolat metodu minMaxLoc. Tato metoda zpracuje výsledkovou matici a vyhledá lokální minimum a lokální maximum v obraze. Do parametru potom zapíše hodnoty a umístění minima a maxima. Zda polohu určuje minimum nebo maximum, opět záleží na zvolené metodě u funkce matchTemplate. V proměnných minloc a maxloc, které jsou typu cvPoint, jsou uloženy polohy minima, resp. maxima v matici a v proměnných minval a maxval jsou jejich hodnoty. Je tedy známá poloha šablony v obraze a lze s ní dále pracovat.
42
5.3
Optimalizace vyhledávání porovnávání
Při porovnávání matice obrazu z kamery a šablony je rychlost srovnání přímo úměrná velikosti srovnávaných matic. Testovací kamera poskytuje obrazy velikosti 640×480 px. Uvnitř každého vyhledávacího cyklu je potřeba nejprve načíst obraz z kamery, přes něj porovnat s daty z načtené šablony a nakonec ve výsledkové matici najít maximum a minimum. Při spuštění vyhledávání je pak obraz subjektivně velmi pomalý, trhaný. V průběhu tvorby modulu byla napsána jednoduchá utilita pro testování rychlosti zpracovávání obrazu. Za každý průchod vyhledávacím cyklem se zvedlo počítadlo, program byl spuštěn 10 sekund. Ve výsledku byl celkový počet provedených cyklů 46. To odpovídá 46 obrázkům za 10 sekund, tedy 4,6 snímků za sekundu. Standardní televizní vysílání má okolo 24 snímků za sekundu, lidské oko vnímá plynulý obraz od 20 snímků za sekundu. Pro optimalizaci vyhledávání byla zvolena metoda downsamplingu, kdy jsou zdrojové obrazy převzorkovány na nižší rozlišení a ty následně porovnány. OpenCV poskytuje pro donwsampling metodu pyrDown, což je aplikace algoritmu Gaussovy pyramidy. Nejprve je s obrazem provedena konvoluce s jádrem:
1 16
1 4 6 4 1 4 16 24 16 4 6 24 36 24 6 4 16 24 16 4 1 4 6 4 1
Poté jsou vynechány sudé řádky a sloupce. Tím je obraz zmenšen o polovinu. Kód pro načtení obrazu z kamery a downsampling: VideoCapture cap(0); Mat img, pyr im; cap >> img; pyr im.create( img.rows/2, img.cols/2, CV 16SC3 ); Mat template, pyr templ; template = imread("marker.jpg"); pyr templ.create( template.rows/2, template.cols/2, CV 16SC3 ); pyrDown(template, pyr templ); while( 1 ) cap >> img; pyrDown(img, pyr im); matchTemplate( pyr im, pyr templ, res, CV TM SQDIFF NORMED ); if( (waitKey(1)) == 27 ) break; }
43
V první deklaraci je připraven video stream a jsou nadeklarovány proměnné matice pro uložení obrazu z kamery a optimalizovaného obrazu. Poté je načten obraz z kamery a z jeho výšky a šířky (zmenšené o polovinu) je pomocí metody create() vytvořena matice pro downsamplovaný obraz. Stejná operace musí být provedena s šablonou. Ještě před zavoláním hlavní smyčky je zavolána metoda pyrDown(), která downsampluje obraz. Jejími parametry jsou matice šablony a upravená matice šablony. V hlavní smyčce je potom metoda pyrDown() zavolána po každém načtení obrazu z kamery. Downsamplované matice jsou potom vstupem pro metodu matchTemplate(). Po provedení downsamplingu byl znovu proveden test rychlosti zpracování obrazu, tentokráte s lepšími výsledky. Po dalším desetivteřinovém testu bylo naměřeno 170 vyhledávacích cyklů, tedy rychlost překreslování je 17 snímků za sekundu. Vícenásobné použití pyrDown() nepřinese zlepšení. Obraz z kamery je subjektivně plynulejší, k běžné práci s markerem tato hodnota postačuje.
5.4
Registrace obrazu
Zjištění polohy a orientace značky je nejobtížnější částí visual-based rozšířené reality. v předchozích fázích je zajištěno načtení obrazu z kamery a detekce značky v tomto obrazu, včetně optimalizace. Vzhledem ke způsobu, jakým metoda matchTemplate() pracuje, lze v obraze vyhledávat pouze značky, které se přesně shodují s šablonou, tzn. ve stejném měřítku, stejně orientovaný atd. Vyhledat značku, která je, oproti předloze ze souboru, nějakým způsobem zdeformovaná, OpenCV přímo neumí. Velká většina problémů v registraci je způsobena vlastnostmi použitého hardwaru. Mezi příčiny problémů s registrací patří především špatné vlastnosti trackovacích zařízení – velké zpoždění, malá přesnost, u kamer zkreslení – distortion, způsobené vlivem čoček objektivu. Některá tato omezení jsou do jisté míry kompenzovatelná (zkreslení kamer), některá ne (přesnost). Při správné registraci, je potřeba znát souřadnice do obrazu vkládaného objektu. Samotné nalezení značky příliš nepomůže, je potřeba určit její orientaci, náklon a vzdálenost. Na obrázku č. 13 je uveden postup získání souřadnic markeru v prostoru. Tyto souřadnice však označují pouze pozici markeru na obrazovce, nikoliv souřadnice v prostoru. Ty je potřeba dopočítat. Postup získání souřadnic pro registraci uvádí Kato. Nejprve je obrázek převeden do stupňů šedi a poté je na něj aplikován tzv. thresholding, což je algoritmus který pro každý pixel určuje, zda je jeho hodnota pod nebo nad předem stanoveným prahem a podle toho nastaví barvu pixelu buď na černou, nebo bílou (případně jiné zvolené hodnoty). Thresholding se dělá proto, aby lépe vynikl marker (proto se markery dělají z kontrastních barev). Po vyprahování jsou vyhledány linie v okolí markeru. Poté přichází na řadu detekce rohů, tímto se určí pozice čtverce (nebo obdélníku),
44
Obr. 13: Získání souřadnic markeru (ARToolkit, 2010)
který je součástí markeru. Po detekci rohů známe přesné souřadnice markeru na obrazovce (ve 2D). Pro výpočet souřadnic markeru v prostoru je klíčový obrázek č. 14. Na něm je vidět poloha kamery (souřadnice Xc a Yc ), souřadnice markeru (Xm , Ym a Zm ), souřadnice získávaného obrazu (xd a yd ) a pak souřadnice nezkresleného (ideálního) obrazu (xc , yc a zc ), tj. obrazu, který je očištěn od optických vad kamery. Výpočet souřadnic markeru na nezkresleném obrazu je určen vzorec:
xc C11 C12 C13 R11 R12 R13 T1 h yc = 0 C22 C23 R21 R22 R23 T2 1 0 0 1 R31 R32 R33 T3 xc h yc = C·TC0 1
Xm Ym Zm 1
Xm Ym Zm 1
kde C je matice vnitřních parametrů kamery, jejími prvky jsou údaje o ohniskové vzdálenosti, meřítku (scale), optickém středu, poměru stran a tzv. skew faktoru 27 , které jsou založeny na modelu perspektivní projekce. Matice TCO pak představuje transformaci mezi souřadnicemi markeru a souřadnicemi kamery a skládá se z translace 28 a rotace 29 (Kato, 2003). 27
Skew – zkosení posun 29 otočení 28
45
Obr. 14: Souřadnice markeru lze dopočítat ze souřadnic obrazovky (ARToolkit, 2010)
Transformační matice se počítá ze souřadnic z nezkresleného obrazu. Z kamery ovšem získáváme obraz zkreslený. Pro dopočítání zkresleného obrazu z ideálního lze použít vztah: x = s(xc − xd0 ), y = s(yc − yd0 ) d2 = x2 + y 2 p = {1 - f d2 } xd = px + xd0 , yd = py + yd0 kde (xd0 , yd0 ) je střed zkreslení obrazu (distortion), s je parametr měřítka (scale) a f je faktor zkreslení. Pro získání ideálního obrazu ze zkresleného musíme použít inverzní funkci, protože tato transformace není lineární:
xd xc yd = F yc 1 1
xc xd −1 yc = F yd 1 1
Matice TC0 pak minimalizuje chybu err. err2 =
1 n
�n−1 i=0
{(xci − x˜ci )2 + (yci − y˜ci )2 }
xc xd −1 yc = F yd , 1 1
x˜c h y˜c = C ·TC0 1
Xmi Ymi Zmi 1
Ačkoliv OpenCV neposkytuje přímo metody pro získání souřadnic markeru, poskytuje funkce, které umožní implementovat předchozí postup. Pro prahování obrazu se používá metoda threshold(). Její parametry jsou vstupní a výstupní obrazová matice, práh a maximální hodnota bodu matice. Dále se ještě určuje
46
metoda prahování30 . Stejně tak obsahuje metody pro získání linií a detekci rohů v obraze – findContours() nebo HoughLines(), resp. cornerHarris() nebo perCornerDetect(). Ve VRUTu není prozatím postup pro úplnou registraci obrazu v 3D prostoru (6DOF) implementován, prozatím funguje pouze registrace v ploše (2DOF).
5.5
Doplnění obrazu
Doplnění obrazu je v modulu pro VRUT implementováno přes OpenCV. To poskytuje metody pro vykreslení základních geometrických objektů – obdélníku, kruhu, čáry. v modulu bude prozatím vykreslen čtverec okolo markeru. while( 1 ) cap >> img; pyrDown(img, pyr end); matchTemplate( pyr im, pyr templ, res, CV TM SQDIFF NORMED ); minMaxLoc( res, minval, maxval, minloc, maxloc, 0 ); rectangle( img, cvPoint( minloc.x*2, minloc.y*2 ), cvPoint( minloc.x*2 + tpl width, minloc.y*2 + tpl height ), cvScalar( 0, 0, 255, 0 ), 1, 0, 0 ); if( (waitKey(1)) == 27 ) break; } Kód ukazuje doplnění cyklu pro rozpoznání značky. Po downsamplingu a nalezení značky v obrazu jsou získány její souřadnice pomocí metody minMaxLoc(). Tyto souřadnice jsou uloženy v proměnné minloc (případně v maxloc, záleží na použité metodě v matchTemplate()) ta je typu cvPoint. Pro vykreslení čtverce se používá metoda rectangle(). Jejími parametry jsou obrázek, do kterého se čtverec vykresluje (img), dále souřadnice protilehlých rohů (obě typu cvPoint), skalár vyjadřující barvu, tloušťka vykrelené čáry a její typ31 a případný posun v souřadnicích počátečního bodu. Všechny předchozí postupy jsou využitelné pro jakoukoliv AR aplikaci využívající visual-based trackování. Vzniklo tak multiplatformní řešení, které je využitelné jako základ pro další programy pracující s rozšířenou realitou.
5.6
Navázání OpenCV na VRUT
Rozšířená realita bude ve VRUTu prozatím implementována tak, že po získání dat z kamery, vyhledání značky a doplnění o grafická data bude tento složený obraz zobrazen ve VRUTu. Toho bude docíleno tím, že na jednoduchou geometrii – plochu se 30 31
opencv.willowgarage.com/documentation/cpp/miscellaneous image transformations.html Více na http://opencv.willowgarage.com/documentation/cpp/drawing functions.html
47
nastaví materiál, jenž bude mít jako texturu nastavený právě složený obraz. VRUT pak umí aktualizovat texturu, což je pro plynulý chod videa ideální. Po každém načteném framu z kamery se provede detekce markeru, vyhledání jeho pozice, doplnění obrazu a namapování textury na plochu. Vytvoření nového modulu se dělá na základě výběru nejvhodnější přednastavené šablony, v závislosti na funkčnosti modulu, příp. potřebě navázanosti na jádro apod. VRUT poskytuje 5 základních šablon pro tvorbu modulů: • general – základní modul, ze kterého vycházejí všechny ostatní moduly. Implementuje hlavní smyčku modulu. • scene – odvozený od základního modulu. Ihned po spuštění modulu je mu přiděleno číslo scény, s kterou může pracovat. Není příliš provázaný s jádrem, spíše je na jádru nezávislý. • io – je odvozen od modulu scene. Slouží k importu nebo exportu scény, tedy převážně jednorázovým akcím. Většinu doby běhu aplikace nepracuje. • manip – tento typ modulu slouží k manipulaci se scénou. Umí zpracovávat události ze standardních vstupních zařízení. • render – další modul modifikující scénu, tentokráte více provázaný s jádrem. Kvůli přístupu ke GUI a OpenGL je hlavní smyčka modulu spuštěná ve vlákně jádra. Pro tvorbu AR modulu bude použita scene šablona, protože kvůli samotné funkcionalitě modulu je potřebné modifikovat scénu – měnit vlastnosti materiálu (texturu). Načtení modulu do paměti a jeho spuštění se provádí příkazem runmodule nazev modulu. Je však nežádoucí, aby modul ihned začal načítat data z kamery a vyhledávat značku. Proto je přetížena metoda processEvent a v konstruktoru je zaregistrován parametr, který je zobrazen v GUI. Tím se spouští metoda openCV(), jež se stará o načtení dat z kamery, vyhledání značky a doplnění obrazu a předání výsledného obrazu metodě drawing(), která se postará o předání obrazu jádru a jeho zobrazení. Kód konstruktoru se zaregistrovaným GUI parametrem: aurel(const MODULE ID id, const wxString name, EventHandler * msgSink) : SceneModule( id, name, 0, msgSink), varParamID( name, wxT("var"), id){ jed=false; REGISTER PARAM GUI CHECKBOX(Start, wxT("Start"), jed?wxT("1"):wxT("0"), wxT("Start")); } Proměnná jed je nejprve zneplatněna, aby nebyla spuštěna činnosti modulu po jeho načtení. Pak je zaregistrován parametr Start, který přepíná právě proměnnou jed (true – false). Parametr se pak projeví v GUI jako checkbox, který nabývá dvou
48
hodnot – zaškrtnuto nebo nezaškrtnuto. Pokud je nastaven na zaškrtnuto, spustí se metoda openCV(). To je vidět v následující přetížené metodě processEvent(): void aurel::processEvent(wxCommandEvent evt){ SceneModule::processEvent(evt); switch (evt.GetEventType()) { case Event::EVT PARAM SET: UPDATE PARAM FROM EVENT BOOL(Start, jed, evt); if (jed){ openCV(); } break; } }; Metoda openCV() pak obsahuje kód pro načtení obrazu z kamery, následně vyhledání značky a její pozice a vykreslení čtverce na její pozici (kód viz v předchozích sekcích). Navíc se stará o převod formátu Mat do wxImage a volá metodu drawing(). Jako parametr jí předává výsledný obraz (data z kamery + vykreslený čtverec v místě značky). Tato se pak stará o zaslání obrazu jádru. Klíčová část kódu metody openCV(): if (frame.channels() == 3){ memcpy(wximg->GetData(), frame.data, (frame.rows * frame.cols * frame.channels())); } else if (frame.channels() == 1) { int size = (frame.rows * frame.cols); unsigned char* data = wximg->GetData(); for (int i = 0; i < size; ++i) { data[i * 3] = frame.data[i]; data[i * 3 + 1] = frame.data[i]; data[i * 3 + 2] = frame.data[i]; } } drawing(wximg); Konverze výsledného obrazu z matice frame je uložena do globální proměnné wximg,, která je pak předána do metody drawing(). void aurel::drawing(wxImage* img){ const wxString fname = wxString::Format(wxT("opencv")); ImageCommon *image = new ImageCommon(img);
49
}
if(image->IsOk()){ wxCommandEvent ev1(GET EVT SCENE IMAGE ADD(fname, image)); PostToKernel(ev1); LOG(wxT("posilam texturu do jadra")); } else LOG(wxT("nemam image"));
Nejprve je vytvořeno unikátní jméno, které se předává jádru. Proměnná wxImage z parametru je poté předána jako parametr při tvorbě ImageCommon, což je obálka VRUTu pro obrazy. V případě že je obrázek připraven, vytvoří se událost typu wxCommandEvent, která je následně odeslána do jádra. Při spuštění VRUTu s modulem pro rozšířenou realitu je nutné pracovat s modulem MaterialEditor, který obstarává práci s materiály. Před samotným nahráním AR modulu je potřeba nejprve nastavit texturu materiálu na hodnotu nazev AR modulu. Při spuštění AR modulu je pak textura předávána jádru a správce scény automaticky aktualizuje texturu ve zvoleném materiálu.
50
6
Závěr práce
Hlavním cílem této diplomové práce bylo popsat proces tvorby aplikace rozšířené reality. Tato aplikace má podobu zásuvného modulu pro program VRUT (Virtual Reality Universal Toolkit). Vzniklý modul by pak měl automobilové společnosti ušetřit náklady na tvorbu prototypů karoserií. V souladu s dílčími cíli práce byly nejprve vysvětleny základní pojmy vztahující se k rozšířené realitě a byly popsány hlavní technologie používané při tvorbě AR. Finální podoba aplikace kombinuje screen-based video see-through zobrazování a visual-based optické trackování. Dále byly srovnány frameworky pro tvorbu rozšířené reality. Vzhledem k možnostem současných frameworků bylo rozhodnuto, že pro implementaci aplikace bude použit nějaký již existující. Na základě požadavků a podmínek stanovených VRUTem byla stanovena kritéria pro výběr použitého frameworku. Daná kritéria nejlépe splňoval framework OpenCV (Open Computer Vision), který je multiplatformní, podporuje 64b systémy, má širokou uživatelskou základnu a kvalitní podporu vývojářů. Jeho nevýhodou je absence přímých metod pro rozšířenou realitu. Mezi největší problémy při implementaci aplikace patřily hlavně potíže s registrací, která je jedním z klíčových problémů visual-based rozšířené reality. V současné verzi modulu je podporována registrace jen na úrovni pohybu značky ve dvou osách, podpora vzdálenosti od kamery (měřítka), rotace nebo náklon je potřeba doprogramovat. Metoda pro řešení této problematiky je popsána v sekci Registrace obrazu. Další komplikací implementace a použití OpenCV je neexistence 64b verze knihovny pro práci s videem ffmpeg. Lze očekávat, že tento problém bude řešit některá z dalších verzí OpenCV, buď změnou knihovny, případně dodáním 64b verze. Vývoj modulu, naprogramovaného pro diplomovou práci, bude dále pokračovat. Nyní modul dokáže načíst obraz z kamery, zjistit polohu značky v obraze, sledovat ji a vykreslit jednoduché tvary v místě značky. Mezi nejdůležitější cíle při další práci na modulu je přidání podpory 6DOF. Pro to bude nezbytné zjistit přesné souřadnice markeru v prostoru. Měla by být také přidána možnost manuální korekce souřadnic (buď pomocí nasměrování myší, nebo zadáním relativních hodnot do textových polí). Dalším potřebným rozšířením je spolupráce s ostatními moduly VRUTu. Možné rozšíření je také použití více kamer pro zpřesnění registrace v prostoru. Tím by se pomohlo snížit omezení přímé viditelnosti, která je u optického snímání klíčová. Základní principy, které používá AR modul VRUTu, jako načtení obrazu z kamery a vyhledání značky jsou plně využitelné i v jiných aplikacích a je tak možné základ aplikace přepsat do jiné podoby, na základě dalších požadavků a potřeb aplikace.
51
7
Literatura
Bimber, O., Raskar, R. Spatial Augmented Reality. Wellesley: A K Peters, 2005. 369 s. ISBN 1–56881–230–2. Milgram, O., Fumio, K. A taxonomy of mixed reality visual displays. 1994. Dostupné z: http://vered.rose.utoronto.ca/people/paul dir/IEICE94/ieice.html [cit. 20. 5. 2010]. Azuma, R. A survey of augmented reality. Presence: Teleoperators and Virtual Environments. May 1997, vol. 4, no. 6, s. 355-385. ISSN 1531–3263. Möhring, M., Lessig, C., Bimber, O. Video See-Through AR on Consumer Cell-Phones. In Proceeding of the Third IEEE and ACM International Symposium on Mixed and Augmented Reality. 2004, s. 252-253. Dostupné na: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1383062 [cit. 20. 5. 2010]. Členové Christian Doppler Laboratory History of Mobile Augmented Reality. 2009. Dostupné na: https://www.icg.tugraz.at/ daniel/HistoryOfMobileAR [cit. 20. 5. 2010]. Rolland, Y., Fuchs, H. Optical Versus Video See-Through Head-Mounted Displays in Medical Visualization. Presence: Teleoperators and Virtual Environments. June 2000, vol. 9, no. 3, s. 287-309. ISSN 1531–3263. Hainich, R. R. The end of hardware: a novel approach to augmented reality. BookSurge, 2006. 248 s. ISBN 1–4196–3036–9. Alexandrescu, A. Moderní programování v C++: návrhové vzory a generické programování v praxi. 1. vyd. Brno: Computer Press, 2004. 340 s. ISBN 80– 251–0370–6. Foley, J. D. Computer graphics: principles and practice. 2. vyd. Reading: AddisonWesley, 1995. 1175 s. Addison-Wesley systems programming series. ISBN 0–20– 184840–6. Burdea, G., Coiffet, P. Virtual Reality Technology (second edition). 2. vyd. Hoboken: John Wiley Sons, Inc., 2003. 444 s. ISBN 0–471–36089–9. Sharp Corporation Sharp History [online]. 2010. Dostupné na: http://sharpworld.com/corporate/info/his/h company/2000/ [cit. 20. 5. 2010]. Azuma, R., Baillot, Y., Behringer, R., Feiner, S., Julier, S., Macintyre, B. Recent Advances in Augmented Reality. IEEE Computer Graphics and Applications. November 2001, vol. 21, no. 6, s. 34-47. ISSN 0272–1716. Metaio GmbH References [online]. Dostupné na: http://www.metaio.com [cit. 20. 5. 2010]. Wagner, D., Schmalstieg, D. Handheld Augmented Reality Displays. In Proceedings of IEEE Virtual Reality Conference. 2006, s. 321-322. Dostupné na: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1667684 [cit. 20. 5. 2010]. Kyba, V. Modulární 3D prohlížeč. Praha: ČVUT, Fakulta elektrotechnická, 2008. 63 s., 15 s. příloh. Vedoucí diplomové práce Ing. Jiří Bittner, Ph. D. 52
Bradski, G., Kaehler, A. Learning OpenCV. Sebastopol: O’Reilly Media, 2008. 555 s. ISBN 978–0–596–51613–0. Science encyclopedia Degrees of freedom (in mechanics) [online]. 2010. Dostupné na: http://science.jrank.org/pages/50386/degrees-freedom-(inmechanics).html [cit. 20. 5. 2010]. Procházka, D. Virtuální realita 2: trackery. Mendelova univerzita v Brně, 2010. Doplňkové materiály k přednáškám kurzu Pokročilá uživatelská rozhraní. Kingsley-Hughes, K. Hacking GPS. Indianapolis: Wiley Publishing, Inc., 2005. 337 s. ISBN 0–7645–8424–3. Caruso, M. J. Applications of magnetoresistive sensors in navigation systems. 1997. Dostupné na: http://www.ssec.honeywell.com/positionsensors/datasheets/sae.pdf [cit. 20. 5. 2010]. Baratoff, G., Blanksteen, S. Tracking devices [online]. 2010. Dostupné na: http://www.hitl.washington.edu/scivw/EVE/I.D.1.b.TrackingDevices.html [cit. 20. 5. 2010]. Polhemus Inc. Fastrak [online]. 2010. Dostupné na: http://www.polhemus.com/page=Motion Fastrak [cit. 20. 5. 2010]. MetaMotion Inertial/Mechanical Mocap Technology [online]. 2010. Dostupné na: http://www.metamotion.com/gypsy/gypsy-motion-capture-systemmocap.htm [cit. 20. 5. 2010]. Kato, H., Tachibana, K., Billinghurst, M., Grafe, M. A registration method based on texture tracking using ARToolKit. In Proceedings of Augmented Reality Toolkit Workshop. 2003, s. 77-85. Dostupné na: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1320435 [cit. 20. 5. 2010]. Rand, D., Kizony, R., Wiess, P. L. The Sony PlayStation II EyeToy: low–cost virtual reality for use in rehabilitation. Journal of neurologic physical therapy. 2008, vol. 32, no. 4, s. 155-163. ISSN 1557–0584. Hsu, J. Augmented Reality Goggles Make Marine Mechanics More Efficient [online]. 2009. Dostupné na: http://www.popsci.com/technology/article/200910/augmented-reality-goggles-make-marine-mechanics-twice-efficient [cit. 20. 5. 2010]. Brown, L., Hua, H. Magic lenses for augmented virtual environments. IEEE Computer Graphics and Applications. 2006, vol. 26, no. 4, s. 64-73. ISSN 0272– 1716. Neumann, U., You, S. Natural Feature Tracking for Augmented Reality. IEEE Transactions on Multimedia. March 1999, vol. 1, no. 1, s. 53-64. Jorge, J., Soares, L., Dias, M., Araújo, B., Raposo, A. Designing multiprojector VR. Eurographics 2010 Norrköping. Tutoriál. Rakkolainen, I., Palovuori, K. Interactive digital FogScreen. Proceedings of the third Nordic conference on Human-computer interaction. 2004, s. 459-460. Dostupné na: http://portal.acm.org/citation.cfm?doid=1028014.1028096 [cit. 20. 5. 2010]. 53
Bimber, O., Emmerling, A., Klemmer, T. Embedded entertainment with smart projectors Computer. 2005, vol. 38, no. 1, s. 48-55. Dostupné z: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=1381255 [cit. 20. 5. 2010]. Raskar, R., Welch, G., Wei-chao C. Table-top spatiallyaugmented realty: bringing physical models to life with projected imagery. In Proceedings of the 2nd IEEE and ACM international workshop on augmented reality. 2004, s. 64-71. Dostupné na: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=803807 [cit. 20. 5. 2010]. Lab Spaces Toward „invisible electronics� and transparent displays [online]. 2010. Dostupné na: http://www.labspaces.net/95420/Toward invisible electronics and transparent displays [cit. 26. 5. 2010]. Brown, L. Leonard D. Brown [online]. 2010. Dostupné na: http://www.cs.arizona.edu/˜ldbrown/ [cit. 26. 5. 2010]. Technabob Mini augmented reality ads hit newstands [online]. 2010. Dostupné na: http://technabob.com/blog/2008/12/17/mini-augmented-realityads-hit-newstands/ [cit. 26. 5. 2010]. Iotracker Basic Principles of Optical Tracking [online]. 2010. Dostupné na: http://www.iotracker.com/index.php?q=optical tracking [cit. 26. 5. 2010]. ARToolKit documentation [online]. 2010. Dostupné na: http://www.hitl.washington.edu/artoolkit/documentation/index.html [cit. 26. 5. 2010]. History of Mobile Augmented Reality [online]. 2010. Dostupné na: http://www.icg.tugraz.at/ daniel/HistoryOfMobileAR/ [cit. 26. 5. 2010].
54