Použití laserového ukazovátka k



Podobné dokumenty
Počítačové zpracování obrazu Projekt Učíme se navzájem

Počítačové zpracování obrazu Projekt Učíme se navzájem

Počítačové zpracování obrazu Projekt Učíme se navzájem

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

Kalibrační proces ve 3D

Ondřej Baar ( BAA OO6 ) Prezentace ZPG 2008 Kalibrace Barev. Kalibrace Barev. Ondřej Baar 2008 ~ 1 ~

Matematika I, část I. Rovnici (1) nazýváme vektorovou rovnicí roviny ABC. Rovina ABC prochází bodem A a říkáme, že má zaměření u, v. X=A+r.u+s.

1 Linearní prostory nad komplexními čísly

Měření průtoku kapaliny s využitím digitální kamery

K OZA SE PASE NA POLOVINĚ ZAHRADY Zadání úlohy

Souřadnicové prostory

pracovní list studenta

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Návod k použití softwaru Solar Viewer 3D

Základy práce s programem pro interaktivní tabuli SMART notebook

Programátorská dokumentace

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Středoškolská technika SCI-Lab

Práce s texty, Transformace rastru, Připojení GPS

Počítačové zpracování obrazu Projekt Učíme se navzájem

AXONOMETRIE - 2. část

5.1.2 Volné rovnoběžné promítání

7. přednáška Systémová analýza a modelování. Přiřazovací problém

Meo S-H: software pro kompletní diagnostiku intenzity a vlnoplochy

Návod k ovládání aplikace

Lingebraické kapitolky - Analytická geometrie

Úterý 8. ledna. Cabri program na rýsování. Základní rozmístění sad nástrojů na panelu nástrojů

PŘÍMKA A JEJÍ VYJÁDŘENÍ V ANALYTICKÉ GEOMETRII

Grafické řešení rovnic a jejich soustav

Záznam dat Úvod Záznam dat zahrnuje tři základní funkce: Záznam dat v prostředí třídy Záznam dat s MINDSTORMS NXT

4EK213 LINEÁRNÍ MODELY

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

Klauzurní část školního kola kategorie A se koná

Projekt do předmětu ZPO

3.4.2 Rovnováha Rovnováha u centrální rovinné silové soustavy nastává v případě, že výsledná síla nahrazující soustavu je rovna nule. Tedy. Obr.17.

CORELDRAW SEZNÁMENÍ S PROGRAMEM. Lenka Bednaříková

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu

Experimentální realizace Buquoyovy úlohy

CVIČNÝ TEST 15. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

7.5.3 Hledání kružnic II

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

13 Barvy a úpravy rastrového

Kinematika rektifikace oblouku (Sobotkova a Kochaňského), prostá cykloida, prostá epicykloida, úpatnice paraboly.

Důkazy vybraných geometrických konstrukcí

Řešení geometrické úlohy spočívá v nalezení geometrického útvaru (útvarů) daných vlastností.

Fyzikální laboratoř. Kamil Mudruňka. Gymnázium, Pardubice, Dašická /8

VÝUKA PČ NA 2. STUPNI základy technického modelování. Kreslící a modelovací nástroje objekty, čáry

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

kamerou. Dle optických parametrů objektivu mohou v získaném obraze nastat geometrická

Centrovaná optická soustava

= cos sin = sin + cos = 1, = 6 = 9. 6 sin 9. = 1 cos 9. = 1 sin cos 9 = 1 0, ( 0, ) = 1 ( 0, ) + 6 0,

5.2.3 Duté zrcadlo I. Předpoklady: 5201, 5202

Parametrická rovnice přímky v rovině

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy

b) Po etní ešení Všechny síly soustavy tedy p eložíme do po átku a p ipojíme p íslušné dvojice sil Všechny síly soustavy nahradíme složkami ve sm

4EK201 Matematické modelování. 2. Lineární programování

Řešení 1b Máme najít body, v nichž má funkce (, ) vázané extrémy, případně vázané lokální extrémy s podmínkou (, )=0, je-li: (, )= +,

Algoritmus pro hledání nejkratší cesty orientovaným grafem

X = A + tu. Obr x = a 1 + tu 1 y = a 2 + tu 2, t R, y = kx + q, k, q R (6.1)

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 2

Interaktivní tabule SMART Notebook

Průběh funkce 1. Průběh funkce. Při vyšetření grafu funkce budeme postupovat podle následujícího algoritmu:

Konstruktivní geometrie PODKLADY PRO PŘEDNÁŠKU

StatSoft Jak vyzrát na datum

SOFTWARE NA ZPRACOVÁNÍ MRAČEN BODŮ Z LASEROVÉHO SKENOVÁNÍ. Martin Štroner, Bronislav Koska 1

Nejprve si uděláme malé opakování z kurzu Množiny obecně.

Rozvinutelné plochy. tvoří jednoparametrickou soustavu rovin a tedy obaluje rozvinutelnou plochu Φ. Necht jsou

Gymnázium, Praha 6, Arabská 16. předmět Programování, vyučující Tomáš Obdržálek Lodě Dokumentace ročníkového projektu Martin Karlík, 1E 17.5.

14. přednáška. Přímka

Grafické řešení soustav lineárních rovnic a nerovnic

Kreslení elipsy Andrej Podzimek 22. prosince 2005

JEVIŠTNÍ PERSPEKTIVA TABULKA 19

Rovnice přímek v rovině

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

(4x) 5 + 7y = 14, (2y) 5 (3x) 7 = 74,

Obecná úloha lineárního programování. Úloha LP a konvexní množiny Grafická metoda. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

Soukromá střední odborná škola Frýdek-Místek, s.r.o. 4 Forma denní, 5 Forma dálková

CVIČNÝ TEST 48. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 15 IV. Záznamový list 17

Téma: Vektorová grafika. Určete pravdivost následujícího tvrzení: "Grafická data jsou u 2D vektorové grafiky uložena ve voxelech."

Projekt ŠABLONY NA GVM Gymnázium Velké Meziříčí registrační číslo projektu: CZ.1.07/1.5.00/

VELIKOST VEKTORU, POČETNÍ OPERACE S VEKTORY

5. Statika poloha střediska sil

Fergusnova kubika, která je definována pomocí bodu P1, vektoru P1P2, bodu P3 a vektoru P3P4

pro začátečníky pro pokročilé na místě (dle požadavků zákazníka)

Rovinné přetvoření. Posunutí (translace) TEORIE K M2A+ULA

CVIČNÝ TEST 41. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

Pokyny pro žáky k testování písemné zkoušky na počítači

( ) ( ) ( ) ( ) Skalární součin II. Předpoklady: 7207

Mgr. Tomáš Kotler. I. Cvičný test 2 II. Autorské řešení 7 III. Klíč 15 IV. Záznamový list 17

ANALYTICKÁ GEOMETRIE LINEÁRNÍCH ÚTVARŮ V ROVINĚ

VOZIDLA. Uživatelská příručka SeeMe - Ecofleet. Provozovatel GPS služeb: pobočka ZNOJMO pobočka JIHLAVA pobočka DOMAŽLICE pobočka PRAHA Identifikace

Michal Zamboj. December 23, 2016

Úlohy krajského kola kategorie C

PROMOTIC a PLC Simatic raz-dva

Kótované promítání. Úvod. Zobrazení bodu

Téma: Práce se základními objekty, výplní a obrysem

MATEMATIKA. Problémy a úlohy, v nichž podrobujeme geometrický objekt nějaké transformaci

CVIČNÝ TEST 17. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 13 IV. Záznamový list 15

Transkript:

Gymnázium, Brno, tř. Kpt. Jaroše Použití laserového ukazovátka k ovládání počítače Závěrečná maturitní práce Vedoucí práce: Mgr. Marek Blaha Tomáš Pokorný Brno 2011

2

Na tomto místě bych chtěl poděkovat hlavně Tomáši Gavenčiakovi, který na M&M vymyslel konferu na zpracování obrazu a jehož rady byly velmi cenné hlavně v začátcích, Karlu Královi a Lukáši Langerovi za vymyšlení poměrové transformace, Lukáši Langerovi navíc i za vymyšlení dvoubodové transformace, Janu Olšinovi za pomoc při zprovozňování projektivní transformace, Mgr. Marku Blahovi za technické zázemí a podporu při pokračování projektu a všem dalším, kteří mne svými radami nasměrovali na správnou cestu.

4

Prohlašuji, že jsem tuto závěrečnou maturitní práci vyřešil samostatně s použitím literatury, kterou uvádím v seznamu. V Brně dne 8. února 2011....................................................

6

7 Abstract Tomáš, P. Using a laser pointer to control a computer. Final maturita thesis. Brno, 2011 The goal of this project is to allow user to interactively point on objects on screen using laser pointer. The screen is captured by webcam and the program is written for Mac OS X in Objective C. Application has following functions: calibration webcam, capturing an image, analysis and finding the lighted point, transformation the coordinates of found point nad final visualisation as simple drawing or game. Abstrakt Tomáš, P. Použití laserového ukazovátka k obvládání počítače. Závěrečná maturitní práce. Brno, 2011 Projekt Použití laserového ukazovátka k ovládání počítače si klade za cíl pomocí kamery a projektoru připojeného k počítači umožnit uživateli, aby mohl využívat laserového ukazovátka jako ukazatele na objekty zobrazené projektorem na plátně. Aplikace je napsána v Objective C. Funkce aplikace jsou tyto: kalibrace webkamery pro dané umístění, zachycení a načtení obrazu z webkamery, analýza a hledání nasvíceného bodu, transformace snímaného obrazu pomocí transformační funkce a kalibračních dat a finální vykreslení vizualizace výsledků pomocí jednoduchého kreslení či hry.

8

OBSAH 9 Obsah 1 Úvod a cíl práce 11 1.1 Historie projektu............................. 11 1.2 Úvod do problematiky.......................... 11 1.3 Cíl práce.................................. 11 2 Současný stav řešené problematiky 12 3 Materiál a metody 13 3.1 Hardware................................. 13 3.2 Popis softwaru............................... 13 3.2.1 Metody hledání nasvíceného bodu................ 13 3.2.2 Kalibrace............................. 14 3.2.3 Transformace........................... 15 3.2.4 Zobrazení............................. 17 4 Výsledky 18 4.1 Kreslení jednou barvou......................... 18 4.2 Kreslení třemi barvami......................... 18 4.3 Střílení balonků.............................. 18 5 Diskuse 19 5.1 Srovnání s podobnými aplikacemi.................... 19 5.2 Problémy v průběhu práce........................ 19 6 Využití v praxi 20 7 Závěr 21 7.1 Nápady do budoucna........................... 21

10 OBSAH

1 ÚVOD A CíL PRÁCE 11 1 Úvod a cíl práce 1.1 Historie projektu K myšlence použití laserového ukazovátka k ovládání počítače mne přivedla konfera na semináři M&M, ve které jsme se s pomocí webkamery snažili zachytávat polohu laserového ukazovátka a ukazovat ji na projektoru. Tato konfera mne velmi zaujala a rozhodl jsem se pokračovat v ní a dovést práci dále, než se nám za krátký čas na soustředění povedlo. 1 1.2 Úvod do problematiky Zpracování obrazu je velmi obsáhlá oblast, která zahrnuje mnoho různých oborů a problémů. Já jsem si vybral oblast hledání bodu o dané barvě v obrazu z kamery a další práce s ním. Toto v sobě zahrnuje několik kroků. Nejprve je třeba získat obraz z kamery, následně v něm najít bod... 2 1.3 Cíl práce Cílem práce bylo vytvořit program, který pomocí webkamery zachytává polohu laserového ukazovátka na plátně dataprojektoru a převádí ji na souřadnice, podle kterrých vykresluje na plátno počítač. Součástí práce také měly být ukázky možného využití. 1 Mám se tu trochu více rozepsat o tom, jak se projekt dále vyvíjel? 2 A tady právě nevím, co bych tam moc napsal, protože se tím zabývám dále v sekci Popis softwaru.

12 2 SOUČASNÝ STAV ŘEŠENÉ PROBLEMATIKY 2 Současný stav řešené problematiky Ohledně zpracování obrazu je na webu prací poměrně mnoho, avšak nenašel jsem mnoho prací, které by využívaly zpracovaný obraz k ovládání počítače (autonomní roboty pomiňme, jedná se o diametrálně odlišnou problematiku). Projektem nejbližším mé tematice je L.A.S.E.R. Tag od Graffiti Research Lab 3, který se zabývá podobným cílem, avšak nemá automatickou kalibraci a bohužel se mi tento program nepodařilo zkompilovat. Dalším podobným projektem je PySight SprayPaint 4, na který jsem ale přišel až když už byla aplikace hotová. Tento program využívá Pythonovskou knihovnu PySight a neprovádí žádnou transformaci souřadnic, tudíž je poměrně nepřesný. Posledním programem, který jsem našel a zabývá se podobnou tématikou byl program, kdy laserové ukazovátko bylo použito k ovládání hry, ale tuto hru se mi bohužel nepodařilo znovu najít. Všechny tyto programy mi sloužily jako inspirace, bohužel se mi nepodařilo v jejich zdrojovém kódu nalézt části, které by mi pomohly při řešení mých problémů. Z hlediska mé práce nejvýznamější je framework CocoaSequenceGrabber 5, který slouží pro zachytávání obrazu z integrované kamery isight. Tento framework je v mé práci použit právě za tímto účelem. 3 http://graffitiresearchlab.com/projects/laser-tag/ 4 http://killertux.org/projects/pysight-spraypaint 5 http://www.skyfell.org/cocoasequencegrabber.html

3 MATERIÁL A METODY 13 3 Materiál a metody 3.1 Hardware Abychom mohli používat laserové ukazovátko na ovládání počítače, potřebujeme následující hardware: Počítač Aplikace je napsána pro Mac OS X, tudíž potřebujeme Mac s dostatečným výkonem (alespoň 1.8 GHz), aplikace je testována v Mac OS X 10.6, ale nevyužívá žádné speciality této verze systému, tudíž by měla být spustitelná i pod 10.5 a 10.4. Dále je nutné mít na počítači nainstalovaný framework CocoaSequenceGrabber Webkamera Vzhledem k použití frameworku CocoaSequenceGrabber je použitá integrovaná kamera isight, avšak mělo by být možné i použití externí kamery. Projektor Na projektor nejsou kladeny žádné speciální nároky, rozlišení je potřeba nastavit na 800x600. Laserové ukazovátko Laserové ukazovátko může být jakékoli červené barvy, v případě jiné barvy je potřeba změnit barevnou složku, na kterou se bere ohled, ve zdrojovém kódu. 3.2 Popis softwaru Obraz je snímán pomocí frameworku CocoaSequenceGrabber v programu Hledani- Bodu. Program snímá obrázky tak, jak jsou poskytovány kamerou a hledá v nich nasvícený bod. Při zpracování je vždy obraz převeden na pole bytů, nad kterým se pak provádí jednotlivé metody hledání nasvíceného bodu. Nalezené souřadnice jsou poté poskytnuty jednotlivým metodám transformace a transformované souřadnice jsou poté vizualizovány na plátně pomocí některé ze zobrazovacích tříd. 3.2.1 Metody hledání nasvíceného bodu Čtvercová metoda V této metodě se vždy počítá součet plochy 5x5 pixelů okolo zkoumaného bodu po jednotlivých barevných složkách. Před tímto výpočtem mohou být nastaveny omezující podmínky, kdy je zbytečné výpočet provádět, protože jsou body příliš tmavé, než aby na ně bylo svíceno. Z jednotlivých blokových součtů je zjištěno maximum hodnoty součtu hledané barevné složky a definitivně je vybrán ten bod, který má tento součet nejvyšší. U tohoto maxima jsou ještě kontrolovány součty jednotlivých složek, aby se omezily artefakty kdy pokud na projektor nesvítím se nezachytávaly zobrazené křížky.

14 3 MATERIÁL A METODY Tato metoda se ukázala být poměrně spolehlivá, ale je potřeba najít vhodné nastavení konstant pro zahazování bodů, protože obzvláště při denním osvětlení či osvětlení různými zdroji světla jsou snímané body různých barev a je potřeba co nejvíce špatných zahodit, ale nezahodit s nimi i ty, co chceme najít. Křížová metoda Tato metoda je zjednodušenou verzí metody, o níž jsem dlouho uvažoval, ale je implementačně náročná. Metoda je založena na faktu, že hledáme bod, tzn. nějaké malé osvícené kolečko, kde má střed a několik bodů v okolí výrazně jiné vlastnosti než zbytek obrázku. Ideální stav je hledat 2 mezikruží, což je ale poměrně obtížné a tak jsem v této metodě použil jen výrazně zjednodušenou verzi. O O I I P I I O O Obr. 1: Pixely používané při křížové metodě hledání bodu. V této verzi jsou sledovány pouze barvy aktuálně zkoumaného bodu P, jeho nejbližších sousedů I a poté čtyř bodů O vzdálených 5 pixelů na každou ze čtyř stran od bodu P. Pokud zrovna svítím na bod P, pak body I budou díky své blízkosti také osvíceny poměrně výrazně a naopak na body O nebude mít již nasvícení bodu P žádný vliv a budou tedy reprezentovat barvu pozadí. U bodů I a O se počítá vždy průměr jednotlivých barevných složek ze všech 4 bodů. U každé skupiny bodů je možné nastavovat maximální a minimální hodnoty jasu jednotlivých složek, což dává poměrně silný nástroj k odfiltrování nežádoucích bodů. Tato metoda se ukázala spolehlivější než čtvercová, protože dokáže odfiltrovat velké jasné plochy. 3.2.2 Kalibrace Kalibrace je prvním z dějů souvisejících s transformací. Cílem kalibrace je zjistit, v jakých bodech na snímaném obraze se zobrazují rohy obrazu zobrazovaného dataprojektorem. To je důležité proto, abychom dokázali přepočítat bod nalezený na obrazu webkamery na bod, který zobrazíme na projektoru. Nyní k funkci kalibrace.

3.2 Popis softwaru 15 Program postupně rozsvítí 4 čtverečky v rozích obrazu projektoru a vždy chvíli počká, aby se kamera přizpůsobila. Pak je sejme již popsaným způsobem a najde je. Tímto získáváme 4 kalibrační body, se kterými již můžeme počítat v transformacích. 3.2.3 Transformace Toto je nejdůležitější a matematicky nejobtížnější část celého projektu, která zajišťuje správné zobrazení bodu na projektoru. Co to je a proč je potřeba? Předpokládejme, že máme projektor, který promítá na plátno obdélníkový obraz. Pokud by ho promítal zkreslený, má své vlastní funkce ke korekci tohoto zkreslení. Pokud nyní obraz snímáme kamerou, získáme nějaký útvar. Optimální situace nastává, pokud kamera snímá ze stejného bodu, jako promítá projektor. V tom případě je snímaný útvar obdélník se stejným poměrem stran k promítanému obrazu. Tady nám stačí úplně základní transformace a to jednoduché přinásobení konstantou odpovídající poměru délky strany snímaného a promítaného obrazu. Toto je ale situace, která nastane velmi zřídka. Většinou snímáme kamerou obraz zkreslený, protože pokud si představíme to, co snímá kamera, jde o jakýsi nekonečně vysoký čtyřboký jehlan. Pokud snímáme útvar mimo osu projektoru, bude snímaný útvar určitým řezem daného jehlanu, tudíž to bude docela obecný čtyřúhelník. My potřebujeme tento čtyřúhelník roztáhnout vhodně tak, abychom získali obdélník, který bude odpovídat obdélníku promítanému projektorem, abychom mohli tento obdélník zobrazit. To je právě záležitost transformace. Transformace se 2 body Tato transformace je vymyšlená Lukášem Langerem. Základem je to, že při zachycení zkresleného obrazu se původně rovnoběžné přímky určené rohovými body A, B, C a D budou sbíhat a tudíž se protnou v nějakém bodě (Q, W ). Tento bod jednoduše nalezneme prodloužením stran. Přímka procházející zachyceným bodem P a rovnoběžná se stranou AC nebo AB na skutečném plátně bude při zkreslení procházet nalezeným průsečíkem Q či W. Nalezneme průsečík této přímky se stranou AB nebo AC, nazveme ho α a β a určíme poměr části k průsečíku k celé této straně. Toto provedeme pro obě rovnoběžné strany a získané poměry stačí vynásobit šířkou a výškou zobrazovaného obrazu. Tato transformace dává výsledky s přesností okolo 5 cm. Poměrová transformace Základem je fakt, že i ve zkresleném útvaru zůstanou zachovány poměry vzdáleností a to speciálně poměrů vzdáleností nalezeného osvíceného bodu od stran. Pokud tuto úvahu zobecníme na dva rozměry, získáme rovnice, pomocí kterých můžeme získané souřadnice nalezeného bodu přepočíst na souřadnice bodu na obrazovce.

16 3 MATERIÁL A METODY W A β B Q α P C D Projektivní transformace Obr. 2: Schéma dvoubodové transformace Princip projektivní transformace je vysvětlen v [1]. Projektivní transformace umí převádět mezi souřadnicemi v jedné a druhé rovině, což je přesně to, co potřebujeme. Transformační rovnice dopředné transformace jsou x = a 0x + a 1 y + a 2 a 6 x + a 7 y + 1 y = a 3x + a 4 y + a 5 a 6 x + a 7 y + 1 Koeficienty se dají také pěkně zadat do matice: u x a 1 a 2 a 3 v = y a 4 a 5 a 7 w 1 a 7 a 8 1 Vzniklý vektor musíme ještě normalizovat: x = u w y = v w

3.2 Popis softwaru 17 Na vypočítání koeficientů transformace musíme naleznout inverzní matici transformace a spočítat její koeficienty. Tuto část mi pomohl udělat Jan Olšina 6 v Mathematice, za což mu přísluší velký dík. Získané koeficienty pak již stačí jen přepsat do zdrojového kódu. Tato transformace je nejpřesnější, protože jde o přesné matematické vyjádření. S touto transformací se podařilo dosáhnout přesnosti jednotek centimetrů, kde je přesnost limitována rozlišením kamery. Další transformace Během vývoje vznikly ještě 2 další transformace a to transformace přibližná, která vždy předpokládala, že útvar je lichoběžník a to postupně v obou rozměrech a výsledek pak zprůměrovala. Toto byla používaná transformace v začátcích, než byla odhalena chyba v transformaci poměrové. Se stoupajícím zkreslením rapidně klesá přesnost. Druhá ze vzniklých transformací byla založena na úhlech a postupném posouvání kalibračních bodů do vrcholů promítaného čtyřúhelníka. Při nasimulování její činnosti ale bylo zjištěno, že byly úvahy chybné a tato transformace nemůže fungovat. Využívanou transformací v dobách, kdy byl projekt v Pythonu, byla transformace grafická, která využívala knihovní funkce Python Image Library, ale tuto transformaci se nepodařilo převést do Objective C. 3.2.4 Zobrazení Obraz se vykresluje do černého okna o velikosti obrazu promítaného projektorem. Při vykreslování je třeba dbát na to, aby barva, kterou kreslíme, nebyla příliš jasná nebo se nepodobala barvě laserového ukazovátka. V prvním případě totiž dojde k přepalům v obraze, v druhém k chybbnému vyhodnocení osvíceného bodu a oba tyto problémy vedou k nepřesnostem a chybám v zobrazování. 6 organizátor M&M, jan.olsina@gmail.com

18 4 VÝSLEDKY 4 Výsledky Pokud známe umístění bodu vůči plátnu, tzn. jeho polohu v souřadnicích projektoru, máme mnoho možností, jak ho vizualizovat. Níže jsou popsány výsledné aplikace, které slouží jako ukázka možností projektu. 4.1 Kreslení jednou barvou V tomto případě se přepočítaný bod uloží do Beziérovy křivky, která se při každém nově příchozím bodu opět vykreslí. Pokud se bod nepodaří nalézt, tak se čeká, než je nalezen nějaký platný bod a do tohoto bodu se kreslení přesune bez toho, aby kreslilo čáru. Tímto se tedy dají kreslit i přerušované čáry. Kresba se dá resetovat a dá se zvolit tloušťka čáry. 4.2 Kreslení třemi barvami Princip je stejný jako u kreslení jednou barvou, ale v tomto případě jsou Bézierovy křivky tři, pro každou barvu jedna. Přepínání mezi barvami je pomocí tří barevných čtverců v levém horním rohu obrazu promítaného projektorem. Pod těmito barvami je čtverec pozastavující kreslení a v levém dolním rohu je čtverec, na kterém když je setrváno alespoň 20 zpracovaných snímků, kresba se resetuje. 4.3 Střílení balonků Toto je ukázka, jak lze využít laserového ukazovátka pro ovládání hry. Na plátno se promítají různě velké a barevné balonky, které stoupají vzhůru a laserového ukazovátka se využívá k jejich sestřelování. Je možné si zvolit parametry hry, na obrazovce je zobrazen počet ulétlých a sestřelených balonků.

5 DISKUSE 19 5 Diskuse 5.1 Srovnání s podobnými aplikacemi Souhrn aplikací s podobnými vlastnosti jsem již uvedl na začátku. L.A.S.E.R Tag je aplikace o mnoho větší a umožňuje velmi pokročilé činnosti, jediná výhoda mé aplikace spočívá v automatické kalibraci plátna. Oproti dalším aplikacím je největší výhodou projektivní transformace, která zajišťuje vysokou přesnost, i když kamera se nedívá na plátno kolmo. 5.2 Problémy v průběhu práce Prvním, zásadním a nejhloupějším problémem byl problém s poměrovou transformací. Jeho podstata byla v odlišném číslování rohů obdélníka při kalibraci a při transformaci. Tato chyba nás zdržela o jedno odpoledne, kdy jsme mohli pokračovat v programování. Byla odhalena až asi v polovině prezentace konfery na soustředění M&M. Problémy byly při přepisování do Objective C, ale byly úspěšně překonány. Největším problémem bylo vždy rozběhat danou transformaci, protože při přepisování do počítače vznikla vždy alespoň jedna chyba, která se dost těžko hledala. Tyto problémy se táhly dlouhou dobu, je to vidět i na tom, že první námi naprogramovaná transformace se podařila zprovoznit až za dlouhou dobu a například zprovoznit dvoubodovou transformaci trvalo od 27. ledna, kdy byla uveřejněna na SVN až do 18. března, kdy vyšla stabilní revize. Dalším problémem bylo kreslení, při němž jsem si nevšiml, že [NSBezierPath bezierpath] je autorelease a divil jsem se, že do ní pak při dalším volání metody nešlo zapisovat. Při přechodu na využívání vazeb se vyskytl problém se čtením hodnot. Sice fungovalo nastavování, ale v GUI se to nezobrazovalo. Příčina nebyla zjištěna, nyní to již funguje tak, jak má. Nejdéle trvajícím problémem bylo zprovoznění použitelné transformace. V době ročního výročí opět na podzimním M&M se mi s vydatnou pomocí Irigiho podařilo zprovoznit projektivní transformaci, která je matematicky správně, a přesnost je již záležitostí rozlišení kamery. Drobným problémem při implementaci střílení balonků bylo zjištění, že maxsize je rezervované slovo a tudíž nelze použít jako název proměnné. To bylo obejito použitím názvu maxisize, které sice nezapadá do používaného značení, ale nekoliduje s rezervovaným slovem. Občas se také vyskytly problémy se SVN, kdy některý commit nechtěl být přijat, ale nakonec se tyto problémy podařilo vždy vyřešit zkopírováním vhodných.svn do problémových složek.

20 6 VYUŽITí V PRAXI 6 Využití v praxi Využití pro kreslení a střílení balonků je zmíněno výše. Jako další využití se nabízí možnost náhrady interaktivní tabule pomocí laserového ukazovátka nebo svítícího pera. Pro toto použití by bylo nezbytné použít dostatečně silného světelného zdroje, aby byl odlšitelný od obrazu na plátně. Také by byla potřeba kamera bez automatické regulace jasu, protože by se dala lépe nastavit na daný zdroj světla. Další možností využití jsou, při použití více barev laserů, různé multiplayerové hry ukazovátky ovládané. Při vhodném pozadí a správném nastavení barev by se mohlo kreslení využívat pro zkoumání trajektorií například vržených předmětů.

7 ZÁVĚR 21 7 Závěr V současné době je projekt plně použitelný s výše zmíněnými aplikacemi. Nyní je projekt stabilní, hledání bodu je poměrně spolehlivé, transformace přesná. Práce na projektu trvaly dlouhou dobu, během které se zlepšily některé počáteční nedostatky (např. rozdělení zdojového kódu do mnoha tříd, protokoly). Aplikace je oproti dřívějším dobám rychlejší a umožňuje pracovat s vyšším rozlišením. 7.1 Nápady do budoucna Zpracování obrazu automatické nastavení maximálních a minimálních jasů odfiltrování oblastí mimo plátno s využitím kalibračních dat možnost volby rozlišení v GUI Kalibrace ukládání kalibračních dat automatické načítání kalibračních dat při startu aplikace Kreslení nastavování šířky laserovým ukazovátkem automatická konverze do SVG možnost výběru libovolné barvy (i laserovým ukazovátkem) Střílení balonků zrychlení vykreslování změny na balonku v závislosti na počtu zásahů efektní sestřelení balonku v průběhu hry postupně zrychlující balonky odladit okrajové situace