Semestrální práce KIV/MHS Mixed-reality displej 14. července 2012 Lukáš Jirkovský stativ@students.zcu.cz
1 Zadání Cílem práce je sestavit displej založený na projekci obrazu na průhlednou holografickou fólii. 2 Mixed-reality displej Pod pojmem mixed-reality displej lze nalézt mnoho různých zobrazovacích zařízení. Často lze taková zařízení nalézt i pod pojmem augmented-reality displej. Ve své práci se zaměřím na zobrazení pomocí projekce na holografickou obrazovku. Takovéto zařízení lze nalézt pod pojmy jako holographic screen[1], holographic diffuser screen[2] nebo holographic projection display[3, 4]. Většina dostupných holografických displayů je určena pro zpětnou projekci, tj. promítá se proti pozorovateli. 2.1 Princip Obrazovka funguje na principu holografického difuzéru. Na rozdíl od běžného difuzéru se holografický difuzér chová jako difuzér jen za určitých podmínek. Pokud není obrazovka osvícená, jeví se jako průhledná. Při osvícení (např. projektorem) display funguje jako difuzér a je na něm vidět promítaný obraz. Přesné chování závisí na typu obrazovky, zejména jak byl difuzér vyroben. Postup výroby např. ovlivňuje úhel, pro který dochází k maximálnímu rozptylu světla. Jednou z možností, jak vyrobit holografický difuzér je vytvořit transmisní hologram klasického difuzéru [2]. Ukázka možného nastavení je na obrázku 1. Jiným možným přístupem, popsaným v [6], je použití oscilujícího paprsku. Podle [6] by měl být při vytvoření H2 hologramu difuzér velmi účinný. Obrázek 1: Nastavení pro vytvoření holografického difuzéru. Převzato z [2] 2
3 Praktická část Pro sestavení mixed-reality displeje jsem použil fólii KITAPON Holo-G [5] o rozměrech 50cm 50cm. Tato fólie je určená pro zpětnou projekci. Její parametry jsou následující: Tloušťka Pozorovací úhel Transmitance Zakalení [haze] Maximální zisk Teploty 700 µm 140 88% 34% 2 0-50 Transmitance určuje, nakolik je je fólie průhledná. Zakalení [haze] určuje míru rozptylu světla ve fólii[7]. Maximální zisk určuje, kolikrát více světla fólie odrazí oproti povrchu, jehož barva je v Lambertově modelu difúzního osvětlení čistě bílá[8]. Samotná sestava se skládá ze dvou částí stojanu držícího fólii, na kterou se promítá a nastavitelného podstavce pro projektor. Model sestavy je vidět na obrázku 2. Pro vytvoření modelů jsem využil FreeCAD[9]. Modely jsou dodány spolu se zdrojovými kódy a dokumentací. Rozměry modelů odpovídají reálným rozměrům. Obrázek 2: Model sestavy mixed-reality displeje. 3
3.1 Vytvoření vlastního displeje V rámci práce jsem se pokusil vytvořit hologram, který by šel použít pro promítání obrazu. Hologram byl vyroben podle postupu popsaného v [2], nákres rozmístění je na obrázku 1. Jde tedy o transmisní hologram difuzéru. Pro vytvoření hologramu byl použit červený laser. Použité nastavení je schématicky znázorněno na obrázku 3. Laserový paprsek byl rozdělen pomocí hranolu na dva paprsky. Pro tvorbu hologramu bylo nutné oba paprsky zaostřit a vyčistit pomocí prostorového filtru. Jedním z paprsků se svítilo přímo na holografickou desku. Druhým paprskem se na holografickou desku svítilo skrze difuzér. laser hranol zrcátka holografická deska difuzér Obrázek 3: Nastavení pro vytvoření vlastního hologramu pro mixed-reality display. Získaný hologram je z neznámého důvodu mléčně zakalený. Možnou příčinou by mohl být vyvolávací roztok nevhodný pro použitý typ holografické desky. Hologram je možné dobře využít pro promítání, je ale problém rozlišit účinek hologramu difuzéru od rozptylu světla způsobeného zakalením. 4 Stojan na fólii Stojan slouží k uchycení fólie. Ta je uchycena mezi dvěma lištami v horní části a dvěma lištami ve spodní části. Lišty ve spodní části je možno při povolených šroubech mírně posunovat nahoru a dolu, čehož lze využít pro lepší napnutí fólie. Render modelu stojanu je na obrázku 4. 4.1 Konstrukce Použitý materiál: 2 čtyřhran 10 10 1000mm, 2 drážkovaná lišta 25 1000mm, 8 vrut 4 20, 4 šroub do plechu 3,9 16 se zápustnou hlavou, 2 šroub do plechu 3,9 13 s půlkulatou hlavou, 4 šroub M4 8, 6 podložka, 4 úhelník 70 70mm, dřevotřísková deska 20 270 625mm 4
(a) (b) Obrázek 4: Model stojanu na fólii. (a) Pohled zepředu. (b) Pohled zboku. Čtyřhrany slouží jako sloupky stojanu. Každý čtyřhran je pomocí dvou úhelníků přišroubován k dřevotřískové desce. Fólie je upnuta mezi dvojicí lišt nahoře a dvojicí lišt dole. Pro tento účel jsem rozřízl dvě metr dlouhé drážkované lišty. Tím jsem získal celkem čtyři půlmetrové lišty. Horní lišta je pevně upevněna ke sloupkům pomocí čtyř šroubů se zápustnou hlavou. K ní je pomocí šroubů M4 přišroubována druhá lišta. Do mezery mezi lištami je uchycena fólie. V případě spodní dvojice lišt jsou přišroubovány obě lišty přímo ke sloupkům pomocí dvou šroubů 3,9 13. Oproti konstrukci horních lišt jsou otvory pro šrouby ve spodních lištách podlouhlé. To umožňuje při povolených šroubech lišty mírně posunovat nahoru a dolu pro lepší vypnutí fólie. Spodní lišty jsou k sobě dále uchyceny jedním šroubem M4. 5 Podstavec projektoru Podstavec projektoru umožňuje v diskrétních krocích měnit úhel, pod kterým projektor svítí. Kromě projektoru je zde i možnost uchytit Kinect (popis jeho užití viz sekce 6). 5
5.1 Konstrukce Použitý materiál: dřevotřísková deska 20 290 370mm, dřevotřísková deska 20 290 95mm, dřevotřísková deska 20 290 275mm, dřevěná laťka 8 34 190mm, 2 závěs 20 80mm, závěs 50 30mm, 4 vrut 4 40, 4 vrut 4 20, 8 vrut 3,5 25, 2 vrut 4 16, 2 vrut 3 12, 4 vrut 4 20 se zápustnou hlavou, 2 podložka, 4 vrut bez hlavy, 4 šroub M4 16, 4 matice M4, ocelový drát Pevná část podstavce se skládá z dřevotřískové desky o rozměrech 20 290 370mm a desky o rozměrech 20 290 95mm. Ty jsou spojeny pomocí čtyř vrutů 4 40. V pevné části podstavce jsou dále čtyři vruty bez hlavy sloužící jako zarážky. K pevné části je pomocí závěsů 20 80mm a osmi vrutů 3,5 25 upevněna pohyblivá dřevotřísková deska, na které bude položen projektor. K této desce jsou v zadní části přišroubovány konzoly, které zajišťují projektor proti sklouznutí při velkém náklonu desky. Aby bylo možno desku polohovat, je k ní pomocí zbylého závěsu připojena laťka. Zachycením laťky o vruty ve spodní části podstavce je možné měnit náklon horní desky. K horní pohyblivé desce je dále pomocí čtyř vrutů 4 20 a dvou podložek přidělán drát pro uchycení Kinectu. Tato část není v přiloženém modelu pro FreeCAD zahrnuta. Aby bylo možné Kinect vložit, případně vyndat, je nutné drát nejdříve vyndat z jeho předního závěsu. Rendery modelu podstavce z FreeCAD jsou na obrázku 5. Složený podstavec, včetně připojeného Kinectu a projektoru je na obrázku 6. 6 Uživatelské rozhraní s Kinect Pro demonstraci mixed-reality displeje jsem navrhl uspořádání, ve kterém je použit mixedreality displej, jehož sestavení bylo popsáno v sekci 3, pro zobrazovaní uživatelského rozhraní a Kinect pro ovládání uživatelského rozhraní. Uživatelské rozhraní by se mělo ovládat podobným způsobem, jako při použití dotykové obrazovky. 6.1 Princip ovládání Ovládání kurzoru myši využívá hloubkové mapy získané pomocí Kinect. Protože implementace obsahuje větší množství různých filtrů, které jsou nutné pro lepší funkcionalitu, ale které neovlivňují princip, jakým ovládací software funguje, v následujících odstavcích shrnu pro přehlednost základní princip. Detailní popis implementace lze nalézt v sekci 6.2. Algoritmus ovládání lze rozdělit do několika kroků. V prvním kroku, ještě před spuštěním ovládání, uživatel vybere část obrazu z Kinectu, která bude sloužit pro ovládání rozhraní. V našem případě jde o výběr rámu, ve kterém je uchycena holografická fólie. Zároveň se musí software zkalibrovat určením hloubky, ve které fólie leží. Ve druhém kroku je nalezena homografie pro přemapování vybrané části hloubkové mapy do obrazu o rozměrech 640px 480px. Pomocí zkalibrované hloubky se transformují 6
(a) (b) (c) (d) Obrázek 5: Model podstavce pro projektor. (a) Pohled zepředu. (b) Pohled zboku. (c) Pohled zezadu. (d) Pohled shora. Obrázek 6: Složený podstavec projektoru s Kinectem a projektorem. 7
hloubky z hloubkové mapy. Ve posledním kroku se detekují objekty ležící v zadaném rozmezí hloubek. Pohyb objektu v určité vzdálenosti od zkalibrované hloubky ovládá kurzor. Pokud je objekt dostatečně blízko fólii, registruje se zároveň držení tlačítka myši. 6.2 Implementace Současná implementace vyžaduje použití X serveru a je testována pouze s operačním systémem GNU/Linux. Pro některé algoritmy zpracování obrazu jsem využil knihovnu OpenCV[10]. Pro implementaci uživatelského rozhraní jsem použil framework Qt[11]. Pro ovládání kurzoru myši je využito XLib a rozšíření XTest. V dalších odstavcích detailněji popíši fungování ovládacího software. Pokud je zapnuto mediánové filtrování (Median preprocess), je hloubková mapa před veškerým dalším zpracováním filtrována pomocí mediánového filtru z knihovny OpenCV pro okolí 5 5 pixelů. Protože fólie zabírá jen část obrazu snímaného Kinectem, který je navíc perspektivně zdeformovaný, je nutné najít mapování pro promítnutí vybrané části obrazu na celý obraz. Pomocí knihovny OpenCV se vypočítá homografie pro získání mapování z vybrané části obrazu na čtverec o jednotkové délce strany. Poté, opět pomocí knihovny OpenCV, je vybraná část obrazu přemapována na obraz o rozlišení 640 480px. Všechny následující operace pracují již jen s transformovaným obrazem. Transformovaný obraz je výrazně zašuměný. Proto jsem implementoval několik filtrů, které redukují vliv šumu na výsledky. Jedním z nich je již zmiňovaný mediánový filtr, použitý v předzpracování. Další filtry jsou aplikované na transformovaný obraz. Jsou jimi eroze a otevření (opening), poskytované knihovnou OpenCV, a vlastní jednoduchý binární filtr. Eroze a otevření používají čtvercové jádro o velikosti 3 3px vyplněné jedničkami. V případě binárního filtru se pro každý pixel vypočte binární AND mezi dvěma předchozími pixely, zpracovávaným pixelem a dvěma následujícími pixely (celkem je tedy zpracováno pět pixelů). Pokud je hodnota AND nenulová, ponechá se původní hodnota pixelu, jinak se hodnota pixelu nastaví na nula. Tento algoritmus je aplikován nejprve v horizontálním směru a následně ve vertikálním (jedná se vlastně o separabilní filtr s 2D jádrem). Protože homografie, kterou jsme získali, neříká nic o hloubce transformovaného obrazu, je nutné získat jeho hloubku jinak. Hloubku lze nastavit ručně, preferovaný způsob je ale její získání z hloubkové mapy. Při kliknutí na tlačítko Calibrate Depth se získá 20 vzorků v každém rohu vyznačeného čtyřúhelníka. Ze vzorků se spočte průměr. Protože šum výrazně mění průměr, vypustí se hodnoty menší než 100 a větší než průměr + 100 (získáno experimentálně) a spočítá se nový průměr. Tento průměr se použije jako hodnota hloubky. Pomocí bilineární interpolace se následně spočítají hloubky pro celý transformovaný obraz. Interpolované hloubky definují plochu, vůči které se bude v transformovaném obraze detekovat pozice objektu (např. ruky) pro ovládání kurzoru. V uživatelském rozhraní je možno pro detekci definovat několik prahů vzdálenosti. Pokud je rozdíl hloubek menší než nastavení Noise nebo je větší než nastavení Movement, má být daný pixel ignorován a nastaví se na nula. Pro ostatní hloubky se nastaví pixel na konstantu odpovídající buď 8
detekci kliknutí nebo detekci pohybu. Zpracovaný obraz se zobrazuje v pravé části obrazovky, kde světlejší šedá značí pixely detekované ve vzdálenosti pro kliknutí a tmavší šedá pro zbytek detekovaného objektu (pouze pohyb myši). Následuje poslední krok, a tím je nalezení odpovídající pozice kurzoru a zjištění stisku tlačítka. Obraz je procházen po řádcích, dokud není nalezen první pixel s nenulovou hodnotou. Z něj je spuštěn algoritmus pro nalezení hranice oblasti. Po nalezení hranice oblasti je spočteno její těžiště. To se použije jako pozice kurzoru (zobrazuje se jako čtvereček). Protože se kvůli šumu pozice kurzoru často výrazně mění mezi snímky, je možné zapnout průměrování pozice z posledních osmi snímků. Dále je zde volba Extremes Removed, kdy se po vypočtení průměru zahodí snímky, ve kterých se kurzor posunul o vzdálenost větší, než je směrodatná odchylka a spočítá se nový průměr. Nakonec je zde volba Limit Acceleration, která omezuje akceleraci kurzoru. Pro detekci kliku se získá hodnota pravého dolního souseda prvního nalezeného pixelu v posledních osmi snímcích. Pokud alespoň ve dvou z nich hodnota odpovídala hloubce pro kliknutí, detekuje se stisknutí tlačítka myši. 6.3 Použití Obrázek 7: Uživatelské rozhraní ovladače myši. Přesná nastavení závisí na aktuální konfiguraci. V následujícím textu shrnu tedy jen několik tipů, jak nastavit ovládání pomocí Kinect. Po spuštění poskytovaného programu Kinect Mouse je prezentováno uživatelské rozhraní (obrázek 7). S jeho pomocí umístíme stojan s fólií a podstavec. Při umisťování fólie je nutné zejména dbát na to, aby byla fólie pro Kinect co nejprůhlednější. Podle náhledu hloubkové mapy nastavíme stojan s fólií a podstavec projektoru tak, aby bylo v náhledu co 9
nejlépe vidět scénu za fólií. Tmavé odstíny (viditelné převážně ve spodní části fólie) značí neprůhlednou, či špatně průhlednou část fólie, je nutné co nejvíce eliminovat. I přesto vždy nějaké v obrazu zůstanou. V dalším kroku je nutné nastavit, ve které části obrazu se budou detekovat objekty pro ovládání kurzoru myši. To nastavíme tažením rohů čtyřúhelníku zobrazeného v náhledu hloubky. Modrá strana čtyřúhelníku určuje horní hranu obrazu. V pravé části obrazu se pak zobrazuje filtrovaný náhled této části obrazu přemapované na obdélník. Dalším důležitým krokem je nastavení hloubky plochy, která bude sloužit jako referenční plocha pro detekci přítomnosti objektů. Hloubka je zadána v rohových bodech čtyřúhelníku. Velmi doporučuji její automatické nastavení, které se dělá pomocí tlačítka Calibrate Depth. Pro tento účel je dobré dočasně nastavit rohy čtyřúhelníku nastavit tak, aby ležely na viditelné části rámu fólie. Po nastavení hloubky je vhodné nastavit čtyřúhelník dále od okrajů rámu, protože šum je u nich výraznější. Hloubku lze také zadat ručně pomocí čtyř kolonek ve skupině Depth Calibration. Pozice kolonky odpovídá příslušnému rohu ve výchozím nastavení čtyřúhelníku. Tyto kolonky zároveň zobrazují hloubku při použití automatické detekce hloubky. Po nastavení referenční hloubky je nutno nastavit hloubky pro detekci (Sensitivity Settings) a odstranit šum (nastavení Filtering). Nyní už se budeme při nastavování zajímat jen již o náhled v pravé části obrazu. Ten zobrazuje přemapovaný obraz a detekovanou pozici kurzoru (čtvereček). Pokud je čtvereček bílý, bylo detekováno stisknutí tlačítka myši. Pokud se šum vyskytuje rovnoměrně v rámci celého obrazu, je možné ho redukovat nastavením zvýšením hodnoty Noise. Pokud chceme změnit hloubky, ve kterých se detekuje kliknutí a pohyb myši, přenastavíme hodnoty u Movement a Click. Pro zlepšení detekce je vhodné ve Filtering nastavit Median Preprocess. Další nastavení závisí na situaci. Obvykle se osvědčilo nastavení 3 4 pro Binary Filter a 1 2 pro Opening. V tuto chvíli by měl být program připraven k použití. Zachytávání myši se spustí tlačítkem Start Capture a zastaví se tímtéž. Dále je možné experimentovat i s nastaveními Cursor Processing. Ty ovlivňují, jestli se pozice kurzoru nějakým způsobem průměruje, případně nastavují limit pro pohyb. Přednastavené hodnoty způsobují zpoždění kurzoru, ale snižují výskyt náhodného pohybu kurzoru způsobeného šumem. 7 Výsledky 7.1 Displej Na sestavený mixed-reality displej lze promítat a za vhodných světelných podmínek je obraz většinou dobře rozeznatelný. Fotografie zkonstruovaného displeje je na obrázku 8. Během experimentů s displejem jsem zjistil několik zajímavých vlastností. Viditelnost promítaného obrazu se výrazně zhoršuje, pokud je zdroj světla na stejné straně fólie jako projektor. Naopak osvětlení z opačné strany problémy nezpůsobuje. 10
Pokud je displej pozorován z malé vzdálenosti, světelnost (a tedy i viditelnost) promítaného obrazu je výrazně nerovnoměrná. To je dáno rozdílem pozorovacích úhlů pro jednotlivé části displeje. Když se díváme kolmo na střed displeje, okraje vidíme pod velkým úhlem. Při sledování z větší vzdálenosti, kdy jsou pozorovací úhly menší, tento problém postupně mizí. Dalším pozorovaným problémem, který je znatelný hlavně při pozorování z menší vzdálenosti, je nepříjemný rozptyl světla při promítání světlých barev (zejména bílé barvy). Ten se projevuje i u větších pozorovacích úhlů. Obrázek 8: Mixed-reality displej. 11
7.2 Ovládání pomocí Kinect Kvalita ovládání pomocí Kinect je ovlivněna zejména přítomností šumu a částečnou neprůhledností fólie. Fólie je u současné sestavy pro Kinect špatně průhledná zejména ve své spodní části. Fólie také způsobuje znekvalitnění hran objektů. Kvůli zmíněným problémům je ovládání pomocí Kinectu značně nepřesné. Dodatečné zpracování, nutné pro snížení jejich vlivu, zanáší do ovládání viditelné zpoždění (detaily viz sekce 6.2). 8 Závěr V rámci práce jsem sestavil mixed-reality displej s využitím fólie Kitapon Holo-G. Dále jsem vyzkoušel vytvořit hologram, který by šlo využít jako mixed-reality displej. Na vzniklý hologram je možno dobře promítat. Hologram je ale mléčně zabarvený. Práci jsem se pokusil rozšířit o ovládání uživatelského rozhraní, promítaného na displej, pomocí Kinect. Protože je fólie v některých místech pro Kinect neprůhledná a zvyšuje šum v již výrazně zašuměném obraze, je ovládání velmi nepřesné. 12
Reference [1] Holographic screen. In: Wikipedia: the free encyclopedia [online]. [cit. 2012-06-30]. http://en.wikipedia.org/wiki/holographic_screen [2] Ackermann, G. K., Eichler J. Holography: A Practical Approach. Weinheim: Wiley- VCH, 2007, 318 s. ISBN 35-274-0663-8. [3] activ8-3d [online]. [cit. 2012-06-30]. http://www.activ8-3d.co.uk/ [4] In-Ventech [online]. [cit. 2012-06-30]. http://www.in-ventech.com/ [5] ADWINDOW adhesive projection screens [online]. [cit. 2012-06-30]. http://www. adwindow.net/ [6] Polaroid Corporation. Transmission holographic diffuser made and used to effect lateral color constancy in rear screen projection display systems. Vynálezce: Michael M. Wenyon. IPC: G02B 532; G02B 502; G03B 2156. United States. Patent 5796499. 1997. [7] Transmission Screen. Vynálezce: Masahiro Harada, Hideki Etori, Hirohide Nakata. United States. Patent 20090002817. 2005. [8] Understand optical projection screen gain [online]. [cit. 2012-7-11]. http://www. dnp-screens.com/dnp08/technology/basic-visual/screens/screen-gain.aspx [9] FreeCAD: A parametric 3D CAD modeler [online]. [cit. 2012-07-11]. http:// sourceforge.net/apps/mediawiki/free-cad/index.php?title=main_page [10] OpenCV [online]. [cit. 2012-07-14]. http://opencv.willowgarage.com/wiki/ [11] Qt - Cross-platform application and UI framework [online]. [cit. 2012-07-11]. http: //qt.nokia.com/ 13