slovenska technicka univerzita v bratislave …fogelton/pub/fogelton2009image...slovenska technicka...
TRANSCRIPT
Slovenska technicka univerzita v Bratislave
FAKULTA INFORMATIKY A INFORMACNYCH TECHNOLOGII
Studijny program: INFORMATIKA
Andrej Fogelton
Spracovanie obrazuBakalarsky projekt
Veduci bakalarskeho projektu: Ing. Matej Makula
maj, 2009
ANOTACIA
Slovenska technicka univerzita v Bratislave
FAKULTA INFORMATIKY A INFORMACNYCH TECHNOLOGII
Studijny odbor: INFORMATIKA
Autor: Andrej Fogelton
Bakalarsky projekt: Spracovanie obrazu
Veduci bakalarskeho projektu: Ing. Matej Makula
maj, 2009
Praca sa zaobera spracovanım obrazu, presnejsie vsak pojednava o tom, ako sprıstup-
nit’ obraz z web kamery tak, aby ho bolo mozne d’alej spracovavat’. Analyzovali sme
existujuce riesenia v oblasti interaktıvnych tabul’. Pomocou web kamery sa snıma po-
loha LED pera (na spicke pera sa namiesto tuhy nachadza vysoko svietiva dioda).
Softver prepocıtava polohu pera do suradnicovej sustavy zobrazovacieho zariadenia,
a tym sa nahradza draha interaktıvna tabul’a. Tento princıp je vyuzitel’ny najma pri
projektoroch, ale aj pri LCD displejoch. V praci sa rozoberaju rozne technologie sprı-
stupnenia web kamery. Navrh sa venuje prototypu riesenia, kde sa v casti softverovych
riesenı rozoberaju pouzite algoritmy na spracovanie obrazu. Na prepocıtavanie polohy
medzi suradnicovymi sustavami bol pouzity princıp homografie. V overenı riesenia sa
rozobera postup prace a zdovodnuje sa zvoleny smer riesenia problematiky. V casti
hardverovych riesenı opisujeme naroky na web kameru a konstrukciu LED pera.
ANNOTATION
Slovak University of Technology Bratislava
FACULTY OF INFORMATICS AND INFORMATION TECHNOLOGIES
Degree Course: INFORMATICS
Author: Andrej Fogelton
Bachelor Theses: Image processing
Supervisor: Ing. Matej Makula
2009, May
This work deals with image processing, more accurately it is about how to access
a webcam to set up the stream of images available for next processing. Similar existing
solutions in the field of interactive whiteboards were analyzed. The software is tracking
the location of the LED pen (a pen, which has a highly luminous LED at the top)
by a webcam. This software works over the position of the pen into the coordinate
system of a display device and this may be used instead of an expensive interactive
whiteboard. This principle can be used mostly with projectors, but also with LCD
displays. Technologies of accessing the webcam are described here as well. The design
presents a prototype of the solution, where the algorithms used in image processing
are described. The homography principle was used for recalculating the positions bet-
ween coordinate systems. In the verification of this solution, progress of the work was
described and the selected approach was reasoned. In the part dealing with hardware
solutions the demands on the webcam and the construction of the pen were described.
Cestne prehlasenie
Cestne prehlasujem, ze som svoju bakalarsku pracu vypracoval samostatne pod odbor-
nym dohl’adom Ing. Mateja Makulu a uvadzam pouzitu literaturu.
V Bratislave dna 15. maja 2009. podpis
Pod’akovanie
Chcel by som pod’akovat’ vsetkym, ktorı mi akymkol’vek sposobom pomohli pri vypra-
covanı tejto bakalarskej prace. Moje pod’akovanie patrı najma mojmu veducemu prace,
Ing. Matejovi Makulovi za jeho ochotu, odbornu pomoc a uzitocne rady pri vypracovanı
prace.
Obsah
1 Uvod 1
2 Analyza 3
2.1 Interaktıvna tabul’a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Spracovanie obrazu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Reprezentacia udajov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 Farebny model . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.1 Java Media Framework . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.2 Touchlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4.3 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5 Resers podobnych riesenı . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.5.1 Viac bodova interaktıvna tabul’a s pouzitım Wiimote . . . . . . 8
2.5.2 Touchless . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5.3 Slepa mapa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Opis riesenia 11
3.1 Specifikacia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.1 Funkcionalne poziadavky . . . . . . . . . . . . . . . . . . . . . . 11
3.1.2 Nefunkcionalne poziadavky . . . . . . . . . . . . . . . . . . . . 12
3.2 Navrh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 Hardver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Nastavenie ovladaca web kamery . . . . . . . . . . . . . . . . . 14
3.2.3 Nastavenie polohy kamery . . . . . . . . . . . . . . . . . . . . . 15
3.2.4 Detekcia polohy LED diody . . . . . . . . . . . . . . . . . . . . 16
3.2.5 Homografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.6 Automaticka kalibracia . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Implementacia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Ukazka zdrojoveho kodu . . . . . . . . . . . . . . . . . . . . . . 21
3.4 Overenie riesenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.1 Vyuzitie infracerveneho spektra svetla . . . . . . . . . . . . . . 23
3.4.2 Rucna kalibracia . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4.3 Stav projektu po zimnom semestri . . . . . . . . . . . . . . . . 27
3.4.4 Uskutocnene zmeny . . . . . . . . . . . . . . . . . . . . . . . . . 27
4 Zhodnotenie 29
Zoznam pouzitej literatury 30
A Pouzıvatel’ska prırucka 32
A.1 Instalacia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
A.2 Nastavenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
A.2.1 Nastavenie ovladaca web kamery . . . . . . . . . . . . . . . . . 33
A.2.2 Nastavenie polohy kamery . . . . . . . . . . . . . . . . . . . . . 33
A.2.3 Spravne nastavenia prahov pre vnımanie svetla . . . . . . . . . 34
A.3 Pouzıvanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
B Technicka dokumentacia 38
B.1 Singular Value Decomposition . . . . . . . . . . . . . . . . . . . . . . . 38
B.2 Triedy pouzite z JMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
C Obrazkova prıloha 40
D Clanok z IIT.SRC 2009 41
E Poster z IIT.SRC 2009 49
F Obsah DVD media 50
Kapitola 1
Uvod
Spracovanie obrazu je nepochybne vel’mi siroky pojem, zahrna vel’ke spektrum algo-
ritmov na upravu obrazkov, vel’ke mnozstvo matematickych algoritmov pouzıvanych
na rozpoznavanie obrazcov a inych tvarov v obrazkoch. Vel’mi zaujımave su algoritmy
na detekciu l’udskej tvare. Medzi najbeznejsie algoritmy na spracovanie obrazu patria:
zmena sytosti farieb, zmena jasu ci kontrastu, stlmenie urciteho spektra farieb a vy-
tiahnutie do popredia ineho alebo vytvorenie negatıvu fotografie. Spracovanie obrazu
bezpochyby patrı k nie vel’mi prebadanym temam, a aj z tohto dovodu som si vybral
prave tuto pracu. Naskytuje sa tu prılezitost’ vytvorit’ programove riesenie, ktore by
mohlo byt’ v urcitom smere originalne alebo dokonca zlepsujuce zname riesenia. Je tu
aj moznost’ uplatnenia, vytvorenia uzitocneho riesenia i pre bezneho pouzıvatel’a. Tato
oblast’ ma zaujala aj kvoli sirokemu mnozstvu moznych smerovanı prace. Po konzulta-
cii s veducim bakalarskeho projektu som sa rozhodol pre vytvorenie programu, ktory
by simuloval princıp interaktıvnej tabule.
Interaktıvna tabul’a je vel’mi vyhl’adavany sposob vyucby. Ma vel’ky potencial,
ktory spocıva v jednoduchosti pouzıvania a faktu, ze je mozne elektronicky zaznamena-
vat’, co sa na tabul’u pıse. Ale predsa sa tieto zariadenia v praxi vel’mi nevyuzıvaju. Je
to dosledkom ich privysokej ceny (aj okolo 70 000 SKK). Existuje aj lacnejsie riesenie,
ktore vyuzıva Nintendo WII ako infracervenu kameru. Zobrazovacia plocha je snımana
Nintendom, na tuto plochu sa”pıse“ infracervenym perom. Toto riesenie je vel’mi jed-
noduche a prakticke, ale predsa ma jednu podstatnu nevyhodu, a tou je male rozsırenie
daneho hardveru. Dalsım nelichotivym faktom je obtiaznost’ pripojenia tohto specific-
Kapitola 1. Uvod Andrej Fogelton
keho hardveru s pocıtacom. Pouzitım web kamery, ktora by nahradila Nintendo WII,
by sa stalo toto riesenie este lacnejsie a dostupnejsie pre vacsiu skupinu pouzıvatel’ov.
Tejto oblasti sa uz venovalo niekol’ko projektov, ale stale je to vel’mi neprebadana
oblast’. Ciel’om tejto prace je co najefektıvnejsie vyuzitie web kamery na interakciu
cloveka s pocıtacom, a tym urychlenie prace s pocıtacom.
V tomto projekte je snaha vyuzit’ ruke pohodlnejsiu a rychlejsiu pomocku – pero.
Perom bude pouzıvatel’ moct’ ovladat’ plochu pocıtaca namiesto mysi. Na spicke pera
sa namiesto tuhy bude nachadzat’ LED dioda, ktora sa rozsvieti pri stlacenı tlacidla.
Web kamera bude umiestnena tak, aby bola schopna zachytavat’ celu zobrazovaciu
plochu. Podl’a polohy zachyteneho svietiaceho bodu sa bude prepocıtavat’ poloha mysi
na zobrazovacej ploche. Z uvedeneho vyplyva, ze kurzor mysi bude kopırovat’ pohyb
pera.
V sekcii analyza sa nachadza analyza interaktıvnej tabule ako takej a prehl’ad do-
stupnych softverovych riesenı, ktore maju spolocne crty s tymto projektom. V analyze
technologiı sa spomenu Java Media Framework (JMF), Touchlib ci OpenCV. Vysvet-
lia sa princıpy a dolezitost’, preco sa tato oblast’ stava zaujımavejsou a nacrtnu sa jej
moznosti.
Navrh sa zaobera prototypom riesenia, presnejsie popisuje jednotlive casti pro-
jektu od hardverovych po softverove riesenia. Vysvetl’uje postup prace, venuje sa vznik-
nutym problemom a ich prıpadnym rieseniam. Vysvetl’uje sa princıp homografie a po-
uzitie algoritmu Singular Value Decomposition (SVD), ktore boli pouzite pri riesenı
projektu. Obsahuje vysvetlenie algoritmov na detekciu svetelneho bodu.
V overenı riesenia sa nachadzaju vysledky testovania pouzıvatel’ov, ich spokoj-
nost’, postrehy a navrhy na vylepsenie aplikacie. V zavere su popısane moznosti d’al-
sieho vylepsovania aplikacie a je zhodnotena uspesnost’ projektu.
2
Kapitola 2
Analyza
2.1 Interaktıvna tabul’a
Podstata takehoto zariadenia spocıva v pouzıvanı technologie, ktora umoznuje nahra-
dit’ klasicku ciernu tabul’u s kriedou. Nielenze dokaze nahradit’ klasicku tabul’u, ale
umoznuje zakomponovanie moznosti vyuzitia pocıtaca do vyucboveho procesu, napr.
prezentovanım obrazkov, grafov, map ci dokonca nazornych videı. Je to vel’mi vhodny
nastroj na prezentacie vsetkych druhov, prinasa novy rozmer a moznosti ako elektro-
nicky zaznamenavat’ udalosti (napr. co sa na tabul’u pısalo). V niektorych prıpadoch
odbremenuje studentov od pısania poznamok (elektronicky zaznamenane poznamky
moze vyucujuci ziakom sprıstupnit’), a tento usetreny cas sa da vyuzit’ na podrobnej-
sie vysvetlenie uciva.
Existuju dva zakladne princıpy interaktıvnych tabul’:
1. Interaktıvne tabule zalozene na vel’kych dotykovych displejoch.
2. Interaktıvne tabule vyuzıvajuce projektor (projekciou spredu, zhora alebo zo-
zadu).
Vyhodou technologiı zhora a zozadu je viditel’nost’ celej zobrazovacej plochy,
pouzıvatel’ si netieni. Pri oboch typoch tabul’ princıp interakcie spocıva pouzıvanım
specialneho pera, ktore pri dotyku na plochu aktivuje snımac, ktory odosle signal s po-
Kapitola 2. Analyza Andrej Fogelton
lohou pera. Tieto signaly potom spracuva pocıtac.
Obr. 2.1: Ukazka dotykovej interaktıvnej tabule.1
Obr. 2.2: Ukazka interaktıvnej tabule s projektorom.2
Tato praca sa zaobera riesenım nahradenia draheho snımaca ci dotykoveho disp-
leja beznou webkamerou, pomocou ktorej bude mozne urcit’ polohu pera.
1http://www.chambersburg.k12.pa.us/images/pageitems/13677/p58775878_13676.jpg2http://www.oakforduk.com/images/smart600i.jpg
4
Kapitola 2. Analyza Andrej Fogelton
2.2 Spracovanie obrazu
Tento pojem, zahrna vel’ke mnozstvo algoritmov, metod, ktore zo vstupneho obrazku
vedia vyextrahovat’ potrebne informacie a pomoct’ k detekcii obrysov alebo polohy
objektu na obrazku. Spracovanie obrazu pracuje s dvojrozmernymi obrazmi a poskytuje
funkcie (Fillo, 2008), naprıklad na:
• hl’adanie hran a rohov vyuzıvajuce gradientove operatory,
• geometricke transformacie, ktore zahrnaju transformaciu bodov a jasovu inter-
polaciu,
• morfologicke operacie ako dilatacia a erozia,
• vyhladzovanie, filtraciu, prahovanie a konverziu farieb,
• segmentaciu obrazu na zaklade oblastı a kontur (hranıc) objektu,
• pyramıdovu segmentaciu,
• zıskavanie geometrickych a centralnych momentov obrazu alebo kontury,
• hl’adanie ciar alebo kruhov pomocou Hough transformacie,
• pocıtanie, normalizaciu, ekvalizaciu a pracu s histogramom,
• vyhl’adanie objektov zalozene na metode porovnavania so vzorom.
2.3 Reprezentacia udajov
Iny sposob spracovania obrazu je priame pristupovanie na hodnoty jednotlivych farieb,
na to je potebne poznat’ reprenzentaciu udajov (Kozman, 2007) obrazu v pocıtaci.
2.3.1 Pixel
Rastrove obrazky su reprezentovane pol’om obrazovych bodov – pixelov (skratka zo slova
picture – obraz a element – prvok). Pixel je najmensia nedelitelna cast’ digitalneho
obrazu a obsahuje informacie o farbe a jase. Mnozstvo farieb, ktore dokaze pixel repre-
zentovat’ je urcene poctom bitov na pixel (bits per pixel – bpp). Standardne hodnoty su
5
Kapitola 2. Analyza Andrej Fogelton
8 bitov = 256 farieb, 16 bitov = 65536 farieb (high color) a 24 bitov = 16 777 216 farieb
(true color). Sucet bitov je odvodeny od jednotlivych komponentov farieb cervenej, ze-
lenej a modrej (RGB model). Pri 16-bitovej hlbke prvych 5 bitov reprezentuje cervenu,
nasledujucich 5 modru a 6 bitov reprezentuje zelenu, pretoze l’udsky zrak reaguje na
zelenu citlivejsie ako na ostatne dve zakladne farby. Pri 24-bitovej hlbke je kazda farba
vyjadrena pomocou 8 bitov.
2.3.2 Farebny model
Farebny model je abstraktny matematicky model, ktory popisuje reprezentaciu farieb
pomocou cısel, vacsinou vsak pomocou troch alebo styroch hodnot farebnych kompo-
nentov. Jedna farba moze byt’ reprezentovana roznymi farebnymi modelmi.
RGB - (Red/cervena, Green/zelena, Blue/modra) vyuzıva aditıvne miesanie farieb,
teda, ake svetlo ma byt’ emitovane na vytvorenie danej farby. Tento model sa pouzıva
pre farebne monitory. Ostatne farby sa vyjadruju pomocou vahoveho suctu jednotli-
vych zloziek. Cım maju farby vacsiu hodnotu, tym je vysledna farba svetlejsia. Model
RGB je reprezentovany jednotkovou kockou umiestnenou v zaciatku jednotkovej surad-
nicovej sustavy. Jednotlive osi suradnicoveho systemu reprezentuju vel’kost’ prıslusnej
farebnej zlozky vo vyslednej farbe. Bod v pociatku suradnicovej sustavy reprezentuje
ciernu farbu a vrchol (1,1,1) bielu farbu.
CMY a CMYK - (Cyan/tyrkysova, Magenta/purpurova, Yellow/zlta, Key — black/cier-
na) vyuzıva substraktıvne miesanie farieb. Pouzıva sa najma pri tlaci, urcuje, ake zlozky
musia byt’ pridane, aby vytvorili pozadovanu farbu. Model CMY sa moze ako model
RGB opısat’ jednotkovou kockou umiestnenou v suradnicovom systeme s vrcholom
v pociatku. Tento vrchol reprezentuje bielu farbu, vrchol (1,1,1) ciernu.
HSB – (Hue/odtien, Saturation/sytost’, Brightness/jas) odtien alebo ton farby urcuje
prevladajucu spektralnu farbu, sytost’ urcuje prımes ostatnych farieb a jas mnozstvo
bieleho (bezfarebneho) svetla. Pre priestorove zobrazenie sa pouzıva pravidelny sest’-
boky ihlan, ktoreho vrchol lezı v zaciatku suradnicovej sustavy. V ostatnych vrcholoch
6
Kapitola 2. Analyza Andrej Fogelton
su umiestnene zakladne farby R, G, B, C, M a Y.
Dalsie pouzıvane farebne modely su naprıklad YUV a YIQ pre prenos televızneho
signalu.
2.4 Technologie
2.4.1 Java Media Framework
Java Media Framework (JMF) API (Sun microsystem, 2008) umoznuje pridanie zvuku,
videa alebo inych multimediı do Java aplikaciı. Tento volitel’ny balık dokaze zachy-
tavat’, prehravat’, vysielat’ alebo prekodovat’ multimedialne formaty. Poskytuje moz-
nost’ sprıstupnit’ zvuk aj obraz z elektronickych zariadenı, ako je naprıklad mikrofon
alebo web kamera. Obsahuje nastroje na upravu zachyteneho signalu, ci uz pomocou
predspracovania obrazu, alebo pomocou upravy vystupnej vyrovnavacej pamati udajov
podl’a vole programatora.
Obr. 2.3: Architektura JMF.
2.4.2 Touchlib
Touchlib (Nuigroup, 2008) je kniznica pre vytvaranie multi-dotykovej interakcie s plo-
chou. Zvlada sledovanie infracerveneho svetla, a tieto posiela programom ako multi-
dotykove udalosti, naprıklad”prst nadol“,
”prst presunul“ a
”prst sa uvol’nil“. Ob-
sahuje konfiguracny prostriedok a niekol’ko ukazok tak, aby sa dali zıskat’ zakladne
vedomosti o schopnostiach tejto kniznice. Podporuje vacsinu typov webkamier a zaria-
denı pre digitalizaciu videa. V sucasnosti funguje iba pod Windows, ale vynakladaju
7
Kapitola 2. Analyza Andrej Fogelton
sa prostriedky na multiplatformovost’ tejto technologie.
2.4.3 OpenCV
OpenCV (Open Source Computer Vision) je vel’ka kniznica pre programovanie funkciı,
ktora bola vytvorena pod zastitou firmy Intel, a az neskor presla pod BSD licenciu.
Jej vyhodou je vel’ke mnozstvo uz predpripravenych algoritmov. Prıkladom aplikaciı
OpenCV (Intel, 2008) kniznice su programy na interakciu cloveka s pocıtacom: iden-
tifikacia objektov, segmentacia a rozpoznavanie tvare, rozpoznavanım gest, zachyta-
vanie pohybu, porozumenie pohybu, konstrukcia z pohybu, kalibracia pomocou stereo
a multi-kamier, vypocet hlbky ci mobilne roboty.
2.5 Resers podobnych riesenı
2.5.1 Viac bodova interaktıvna tabul’a s pouzitım Wiimote
Odkedy Wiimote dokaze zachytavat’ zdroje infracerveneho svetla, mozete pouzıvat’
specialne pera, ktore maju infracervenu LED diodu na svojom konci. Namierenım Wi-
imote na premietajucu plochu alebo LCD obrazovku, mozete vytvorit’ vel’mi lacnu
interaktıvnu tabul’u (Lee, 2008) ci dotykovu obrazovku. Wiimote dokaze zachytavat’
4 body, cize mozete pouzit’ az 4 pera. Taktiez sa s nım pracuje vel’mi dobre pri pouzitı
projektora.
Kalibracia a softver pre emulovanie kurzora mysi je dostupny na stiahnutie. Naj-
skor je potrebne pripojit’ Wiimote k PC cez Bluetooth. Existuje vel’a navodov ako toto
dosiahnut’, aj pre specificky softver/hardver existuje dostupna konfiguracia. Wiimote
pracuje s vel’a, ale predsa nie vsetkymi Bluetooth ovladacmi. O kompatibilite sa da
docıtat’ na WiimoteProject.com. Kl’ucom spravneho fungovania aplikacie je umiestne-
nie Wiimote tak, aby zachytaval celu zobrazovaciu plochu, ale nie zas vel’mi d’aleko,
pretoze sa potom straca sledovacie rozlısenie. Multidotykove ukazky su plnohodnotne
C# DirectX programy. Mozete si stiahnut’ prıklady, ale je to vytvarane programatormi
bez podpory a dokumentacie. Kod je vytvarany na vrchu tejto Wiimote kniznice. Je
vel’kou skodou, ze multidotykove schopnosti aplikaciı su v sucasnosti vel’mi zle. Du-
8
Kapitola 2. Analyza Andrej Fogelton
fajme, ze sa to zmenı, ked’ vyvojari zistia, aky to ma vel’ky potencial.
Prvou vel’kou nevyhodou tohoto riesenia je male rozsırenie specifickeho hardveru.
Samotny potrebny ovladac od WII konzoly stojı okolo 50 EUR, ale kol’ko l’udı by si
len kvoli tomu taketo nieco kupilo. Dalsou dost’ podstatnou nevyhodou je obtiaznost’
pripojit’ takyto specificky hardver k pocıtacu, ako uz bolo spomenute vyssie, Wii-
mote nespolupracuje so vsetkymi Bluetooth ovladacmi. Pri nekompatibilite sa ponuka
moznost’ nainstalovat’ iny Bluetooth ovladac, ale s varovanım mozneho poskodenia
hardveru. Ak aj budete mat’ spravny Bluetooth, stale nebudete mat’ istotu, ze sa vam
podarı prepojit’ Wiimote s pocıtacom.
2.5.2 Touchless
Touchless SDK umoznuje vyvojarom vytvorit’ multidotykovo zalozene aplikacie s pouzi-
tım web kamery na vstupe, a pritom dotyk ani nie je potrebny.
Touchless (Comunity Touchless, 2008) zacalo ako fakultny projekt Mike Wasser-
mana na Kolumbijskej Univerzite. Hlavna myslienka je ponuknut’ pouzıvatel’om novy
a lacny sposob vyuzıvania multidotykovych schopnostı bez potreby draheho hardveru
a softveru. Vsetko, co pouzıvatel’ potrebuje je kamera, ktora bude zachytavat’ farebne
znacky definovane pouzıvatel’om. Mike prezentoval projekt na Microsoft Office Labs
Productivity Science Fair. Office Labs si vybral Touchless ako komunitny projekt.
Touchless je uz vol’ne sıritel’ny ako open-source pod Microsoft Public License (Ms-
PL) na CodePlex. Ich ciel’om je zabezpecit’ rozvoj komunity a pouzıvanie SDK, ako
aj jeho d’alsie vyvıjanie. Clanok o moznost’iach spolu s ukazkou prace mozete najst’
v literature (Cızek, 2008).
Obr. 2.4: Ukazka programu Touchless.
9
Kapitola 2. Analyza Andrej Fogelton
2.5.3 Slepa mapa
Pouzıvanie pocıtacov k zlepsovaniu vyucovania vseobecne je na Slovensku vel’mi male.
Jednym z dovodov je absencia softverovych aplikaciı v tejto oblasti. Ciel’om tohto
projektu je zlepsit’ tuto situaciu vytvorenım prototypu systemu na rozpoznavanie lase-
roveho ukazovadla pre hodiny geografie na strednych skolach. Slepa mapa (Meszaros,
2008) je zalozena na sledovanı pozıcie lasera na informacnej tabuli s pouzitım obycaj-
nej web kamery. Spracovanım vstupu z kamery dostaneme spravnu pozıciu na mape
a meno najblizsieho znameho mesta sa prehra ako zvukovy zaznam.
Obr. 2.5: Princıp Slepej mapy (Meszaros, 2008).
10
Kapitola 3
Opis riesenia
3.1 Specifikacia
Po podrobnejsıch konzultaciach s veducim bakalarskej prace boli stanovene nasledovne
funkcionalne a nefunkcionalne poziadavky:
3.1.1 Funkcionalne poziadavky
Hlavnou myslienkou prace je vytvorit’ prototyp aplikacie, ktora by:
• simulovala princıp interaktıvnej tabule,
• pomohla zefektıvnit’ vyucbovy proces,
• vytvorila lacne softverove riesenie za pouzitia bezneho hardveru (web kamera) a
LED pera,
• ovladala kurzor pocıtacovej mysi a jej l’avy klik,
• bola schopna detekovat’ svetlo z vysoko svietivej LED diody a prepocıtat’ jeho
pozıciu z realneho sveta do suradnicovej sustavy zobrazovacieho zariadenia,
• umoznila pouzıvatel’ovi vidiet’, co prave kamera snıma pre spravne umiestnenie
kamery tak, aby bola schopna zachytavat’ celu zobrazovaciu plochu.
Kapitola 3. Opis riesenia Andrej Fogelton
3.1.2 Nefunkcionalne poziadavky
Program by mal d’alej splnat’ tieto poziadavky:
• prijatel’na odozva,
• umerne vyuzıvanie vypoctoveho vykonu procesora,
• jednoduchost’ ovladania pre pouzıvatel’ov,
• presnost’,
• rychle nastavenie aplikacie pred zacatım pouzıvania.
3.2 Navrh
Navrh riesenia presnejsie pojednava o hardverovych narokoch, o hlavnych princıpoch
a funkcionalitach programu.
3.2.1 Hardver
Pred zacatım prace na projekte prebiehala analyza, ake technicke vybavenie bude da-
nemu projektu najlepsie vyhovovat’. Po zvazenı dostupnych informaciı vyplynulo, ze
na zist’ovanie polohy pera sa bude pouzıvat’ bezna web kamera. Ked’ze spracovanie
snımanych obrazkov je vysoko vypoctovo narocne, mala sa pre zjednodusenie pouzı-
vat’ LED dioda svietiaca v infracervenom spektre. Vd’aka tomuto rozhodnutiu sa mal
pri spracovanı obrazu hl’adat’ len najjasnejsı bod. Od tohto zameru sa neskor upus-
tilo, kvoli automatickej kalibracii aplikacie. Podrobnejsie informacie o postupe riesenia
tohto projektu sa nachadzaju v casti Overenie riesenia.
LED pero
Najdolezitejsou sucast’ou pera je LED dioda. Pero ma len charakter ergonomickej po-
mocky. Na spicke pera sa nachadza vysoko svietiva farebna LED dioda. Z dovodu
nedostatocneho svetelneho prejavu sa nesmie pouzit’ obycajna farebna, naprıklad cer-
vena LED dioda. Vysoko svietiva LED dioda je pouzita najma z dovodu ul’ahcenia
12
Kapitola 3. Opis riesenia Andrej Fogelton
spracovania obrazu a odstanenım vel’keho mnozstva rusivych elementov. Pri tomto
pere aplikacia samotna nie je zat’azena zlozitym rozpoznavanım a teda moze poskyt-
nut’ rychlejsiu odozvu. Vysoko nadpriemerne svetlo sa vie efektıvnejsie rozpoznat’. Na
obrazku nizsie su zobrazene vyrobene prototypy pier pouzitych pri testovanı. Prve zl’ava
je pero s vysoko svietivou modrou LED diodou. Toto pero sa ukazalo ako najlepsie,
ale len kvoli danej diode, ktoru nebolo mozne presunut’ do lepsieho pera. Druhe zl’ava
je vynimocne svojım princıpom, pouzıvatel’ nestlaca spınac prstom, ale LED dioda sa
rozsvieti dotykom pera na plochu. Taketo riesenie sa ukazalo ako nie vel’mi apliko-
vatel’ne, pretoze pri pohybe pera po platne ci LCD by mohli vzniknut’ skrabance od
spınaca. Pri pohybe tymto perom sa vyskytlo nieziaduce trenie sposobene konstrukciou
spınaca.
Obr. 3.1: Ukazka roznych vyrobenych pier.
Dolezitym komponentom pera je spınac. Je vhodne pouzit’ vel’mi citlivy spınac,
pre ktoreho zopnutie clovek nemusı vyvinut’ vel’ku silu.
Obr. 3.2: Ukazka najlepsej konstrukcie prototypu pera.
13
Kapitola 3. Opis riesenia Andrej Fogelton
Pretoze cım vacsiu silu clovek vyvinie, tym sa spicka pera viac pohne a sposobı
nepresnost’. Preto sa pri testovanı roznych spınacov najviac osvedcil spınac zo starej
disketovej mechaniky. Bol vhodnej vel’kosti a l’ahko sa spınal. Na takyto doma vyrobeny
prototyp pera este potrebujeme baterie a kusok drotu. Cena takehoto pera sa pohybuje
do 2 EUR.
Web kamera
Tato aplikacia dokaze pracovat’ s l’ubovol’nou web kamerou. Jedine obmedzenie tyka-
juce sa typu web kamery spocıva v spravnom nastavenı Java Media Framework. JMF
musı spravne rozpoznat’ danu kameru a jej snımacie mody. Najjednoduchsie je mat’
zapojenu kameru v priebehu instalacie, JMF vtedy automaticky vykonava operacie na
rozpoznavanie multimedialnych vstupnych zariadenı, ako su mikrofon ci web kamera.
Ak by pouzıvatel’ chcel neskor pridat’ ine zariadenie, JMF ma vo svojom menu prıkaz
na detekciu hardveru.
Platı, cım vyssie rozlısenie kamery, tym presnejsie bude snımanie polohy. Ne-
mozno obetovat’ vyssie rozlısenie na ukor mensieho fps. Vel’kost’ fps sa musı zachovat’
na 30, pretoze inak by dochadzalo k neziaducemu trhaniu pohybu mysi. Testovanie
aplikacie prebiehalo s web kamerou MSI StarCam Clip s najvyssım moznym rozlısenım
pri 30 fps, 640×480. Toto rozlısenie sa ukazalo ako uplne postacujuce, co sa tyka kom-
promisu presnosti a vypoctovej narocnosti spracovanie jednotlivych snımkov. Keby sa
pouzilo nizsie rozlısenie, aplikacia by sa stala nepresnou. Pracu by skor spomal’avala
ako urychl’ovala, pretoze pouzıvatel’ by mal problem trafit’ naprıklad tlacidlo na zatvo-
renie okna. Opakom je pouzıvanie vyssieho rozlısenia, aplikacia by bola este presnejsia,
ale z testovania vyplynulo, ze obycajny pouzıvatel’ by si toho ani nemusel vsimnut’.
Vel’kou nevyhodou vyssieho rozlısenia je zvysenie narokov na vypoctovy vykon, a tym
aj zmensenie odozvy softveru.
3.2.2 Nastavenie ovladaca web kamery
Ako uz bolo spomenute vyssie, spracovanie obrazu je vysoko vypoctovo narocne, a aby
sa nemuseli pouzıvat’ zlozite algoritmy na rozpoznavanie, hl’adalo sa riesenie, ako co
najjednoduchsım sposobom detekovat’ svetlo z diody. Kvoli zmenseniu co najvacsieho
14
Kapitola 3. Opis riesenia Andrej Fogelton
Obr. 3.3: Pouzita testovacia web kamera - MSI StarCam Clip.
mnozstva rusivych elementov, ako su rozne svetelne podmienky v priebehu dna, rozna
svetelna intenzita umeleho osvetlenia alebo priame slnecne svetlo dopadajuce na zo-
brazovaciu plochu pri niektorych intenzitach, je nutne pred spustenım aplikacie zmenit’
trochu nastavenia ovladaca web kamery. Z testovania v priebehu prace vyplynuli na-
sledovne optimalne nastavenia:
Nazov Hodnota Rozsah
Svetelnost’ 0 0 – 63Kontrast 1.00 1.00 – 2.00Gamma 1.00 0 – 1.00Expozıcia 35 0 – 255
Automaticka expozıcia NIE ANO/NIE
Tabul’ka 3.1: Hodnoty pouzite pre driver web kamery.
Tieto hodnoty pokryvaju nastavenie pre najbeznejsie svetelne podmienky, ak by sa
mala aplikacia pouzıvat’ vo vel’mi tmavom alebo naopak vo vel’mi svetlom prostredı,
je nutne jemne upravit’ expozıciu.
3.2.3 Nastavenie polohy kamery
Pred spustenım funkcionality na ovladanie kurzora mysi je potrebne najskor nastavit’
polohu kamery tak, aby snımala celu plochu platna projektora alebo LCD obrazovky
pocıtaca. Vzdialenost’ medzi kamerou a touto plochou zalezı od pozorovacieho uhla
web kamery, ktory sa u beznej kamery pohybuje okolo 50 stupnov. Treba sa snazit’
15
Kapitola 3. Opis riesenia Andrej Fogelton
umiestnit’ kameru tak, aby snımala celu plochu, a zaroven nebola vel’mi d’aleko, pretoze
sa tym straca stopovacie rozlısenie. Pod stopovacım rozlısenım sa rozumie vel’kost’
plochy pouzitej na prepocıtavanie do ineho suradnicoveho systemu. Vacsina testov bola
praktikovana na LCD monitore a boli vyvodene nasledovne zavery. Pri umietnovanı
kamery zalezı ci je pouzıvatel’ pravak, alebo l’avak, aby si netienil vlastnou rukou.
Optimalna poloha je pri priamo namierenej kamere na obrazovku, ale pri praci sa
ukazala ako nie vel’mi pohodlna, pretoze pouzıvatel’ si casto tieni rukou a kamera
nevidı LED diodu. Preto je nutne umiestnit’ kameru trochu z uhla. Z d’alsıch testov
vyplynulo, ze tento uhol by mal byt’ okolo 30 stupnov. Je to kvoli zlemu pozorovaciemu
uhlu LCD displeja, pri pouzitı dataprojektoru moze byt’ tento uhol vacsı. Na obrazku
3.4 je schematicky znazornenie rozlozenie pre pravaka.
LCD obrazovka / plátno
0–30 stupňov
web kamera
Obr. 3.4: Umiestnenie web kamery pre pravaka.
Ako vidno z nazorneho obrazku 3.5 pri zvacsujucom sa uhle sa zmensuje presnost’
aplikacie tym, ze stale z menej a menej bodov sa prepocıtava do stale rovnakej plochy.
Este sa uvazovalo o umiestnenı kamery na strope, aby nezalezalo na tom, ktorou rukou
drzı pouzıvatel’ pero. Pri takomto riesenı by si netienil pouzıvatel’ rukou, ale pravde-
podobne hlavou. Vel’mi by zalezalo na vel’kosti miestnosti a umiestnenı platna v tomto
prıpade.
3.2.4 Detekcia polohy LED diody
Princıp detekcie LED diody je vel’mi jednoduchy, najma vd’aka vyssie popısanym vy-
lepseniam (pouzitie vysoko svietivej farebnej diody a specialne nastavenie ovladaca
16
Kapitola 3. Opis riesenia Andrej Fogelton
Obr. 3.5: Vel’kost’ plochy pouzitej na prepocıtavanie pri 0, 30, 70 a 85 stupnov.
kamery).
Obrazok je reprezentovany ako pole celych cısel, kazda zlozka pol’a sa testuje na
podmienku vysokej intenzity v nasom prıpade modreho svetla:
(b > τ1) & (r < τ2) & (g < τ2), (3.1)
V programe je implicitne nastavene τ1 na hodnotu 200 a τ2 na 100, pri tychto
nastaveniach aplikacia funguje vo vacsine svetelnych podmienok. Prva cast’ podmienky
zabezpecuje ci je modre svetlo nad danou intenzitou. Dalej sa kontroluje, ci ostatne dve
zlozky farby su pod urcitou hranicou, aby aplikacia nedetekovala ostre slnecne svetlo.
Problem s ostrym svetlom sa vsak tymto uplne nevyriesil. Hranicna situacia je pou-
zıvanie pera na ploche, na ktoru prave ostro svieti. Aplikacia vacsinou nie je schopna
detekovat’ vysoku intenzitu modreho svetla, pretoze sa v bielom silnom svetle rozp-
lyva, straca na intenzite. Riesenım takejto situacie je zastriet’ zavesy alebo vhodnejsie
umiestnenie platna.
Zo vsetkych bodov, ktore splnaju tuto podmienku (obrazok 3.6), sa vypocıta
aritmeticky priemer. Na danom obrazku nie je vel’mi dobre vidno, ze vysokosvietiva
LED dioda vyzaruje vo svojom strede biele svietlo a taktiez, ze kamera zachytava aj
17
Kapitola 3. Opis riesenia Andrej Fogelton
Obr. 3.6: Porovnanie obrazu pred a po spracovanı.
modre svetlo vyzarovane priamo diodou a nie len jej odraz od monitora ci platna. Dana
skutocnost’ vobec nevadı, pretoze sa pocıta priemer, pouzıvatel’ tymto javom nepoci-
t’uje znızenu presnost’ aplikacie. Ked’ze snımany obraz nie je totozny so zobrazovacım
zariadenım, nemozno jednoducho povedat’ mysi, aby sa presunula na danu pozıciu.
Suradnicovy system web kamery sa lısi od suradnicoveho systemu zobrazovacieho za-
riadenia. Na prepocet medzi tymito suradnicovymi systemami sluzi princıp homografie.
3.2.5 Homografia
Homografia (Criminisi, 1997) je projektıvna transformacia vyuzıvana na vypocet vzdia-
lenostı v skutocnosti a na obrazku.
Na obrazku 3.7 je viditel’ne znazornena problematika, ze vzdialenosti a polohy
objektov su ine v skutocnosti a na obrazku. Objekty na obrazku mozu byt’ zosikmene
a inak deformovane oproti skutocnosti, nehovoriac o vel’kosti objektov. Ak x, y su
suradnice bodu v suradnicovom systeme kamery a x, y su suradnice bodu v suradnico-
vom systeme zobrazovacej plochy, potom pre vypocet x, y z x, y budeme potrebovat’
maticu H, pricom platı nasledovny vzorec:x
y
1
=
xa/m
ya/m
m/m
=
h11 h12 h13
h21 h22 h23
h31 h32 h33
∗x
y
1
(3.2)
V danej rovnici pozname x, y (to je priemer detekovanych bodov podmienkou 3.1), ale
18
Kapitola 3. Opis riesenia Andrej Fogelton
Obr. 3.7: Princıp homografie.
nepozname maticu H. Ta sa vypocıta pomocou vzorca |Ah| = 0, kde
h = (h11, h12, h13, h21, h22, h23, h31, h32, h33)T (3.3)
Matica A je definovana nasledovne:
A =
x1 y1 1 0 0 0 −x1x1 −y1x1 −x1
0 0 0 x1 y1 1 −x1y1 −y1y1 −y1
x2 y2 1 0 0 0 −x2x2 −y2x2 −x2
0 0 0 x2 y2 1 −x2y2 −y2y2 −y2
. . . . . . . . .
. . . . . . . . .
xn yn 1 0 0 0 −xnxn −ynxn −xn
0 0 0 xn yn 1 −xnyn −ynyn −yn
(3.4)
Na vypocet |Ah| = 0 sa nemoze pouzit’ gaussova eliminacia, pretoze matica A nie je
regularna. Na zıskanie vektora h, teda aj matice H pouzijeme metodu Singular Value
Decomposition. Blizsie informacie o tejto metode sa nachadzaju v technickej dokumen-
tacii. Matica A sa urcı na zaklade kalibracnych bodov xi, yi a xi, yi (i ∈ {1 . . . n}),
19
Kapitola 3. Opis riesenia Andrej Fogelton
ktorych suradnice vieme v oboch suradnicovych systemoch, t.j. aj na obrazku z web
kamery, aj na zobrazovacej ploche. Na zıskanie tychto informaciı je potrebna kalibracia.
3.2.6 Automaticka kalibracia
Pred spustenım ovladania kurzora mysi je potrebna kalibracia pre vytvorenie matice A
popısanej vyssie. Matica sa musı skladat’ z minimalne 4 bodov, ktore su rovnomerne
rozlozene. Pre zvysenie presnosti aplikacie bola pouzita 9 bodova kalibracia.
Obr. 3.8: Rozlozenie kalibracnych bodov pri: a) 4 bodoch; b) 9 bodoch.
Kalibracia prebieha po inicializacii automaticky, bez zasahov pouzıvatel’a nasle-
dovne: kamera je spravne umiestnena a ma nastaveny ovladac podl’a predchadzajucich
instrukciı. Na celej obrazovke sa zobrazı cervena farba a tato cervena obrazovka zo-
trva okolo 5 sekund, aby sa poskytol kamere dostatocny cas na inicializaciu. Kamera si
uchova obrazok tejto celocervenej obrazovky. Postupne sa na obrazovke zacnu objavo-
vat’ modre kalibracne body, kazdy bod zotrva asi 0,5 sekundy a za tento cas web kamera
urobı obrazok. Modra farba pre kalibracne body bola zvolena kvoli vel’kej vzdialenosti
od cervenej farby na farebnej skale. Ked’ze pozname suradnice, na ktorych sa zobrazuje
kalibracny bod (suradnicovy system zobrazovacieho zariadenia), treba nam detekovat’,
kde sa tento bod nachadza v suradnicovom systeme kamery. Detekcia tohto kalibrac-
neho bodu sa robı sposobom porovnavania dvoch obrazkov. Na prvom je len cervena
obrazovka, na druhom je cervena obrazovka s danym bodom. Algoritmus hl’ada vysoku
zmenu modrej a cervenej farby medzi obrazkami, a to nasledovnou podmienkou:
(abs(r1 − r2) + abs(b1 − b2)) > τ (3.5)
Aplikacia v tomto prıpade pouzıva τ = 40, tato hodnota bola vyslednym kom-
20
Kapitola 3. Opis riesenia Andrej Fogelton
promisom vo viacerych testoch. Z bodov, ktore splnia tuto podmienku sa vypocıta arit-
meticky priemer a uz mame suradnice zo suradnicoveho systemu web kamery. Tento
proces sa zopakuje este 8 krat a vypocıta sa dolezita matica A.
Obr. 3.9: Ukazka rozpoznania kalibracneho bodu.
3.3 Implementacia
Na tento typ projektu existuju dve moznosti tvorby softveru. Bud’ vyuzijeme kniznicu
touchlib pre C++, alebo Java Media Framework (JMF) pre jazyk Java. My sme saroz-
hodli pre Javu, pretoze jej vel’kou vyhodou je prenositel’nost’ medzi operacnymi syste-
mami, ale naopak sa za to platı o trosku mensou odozvou, kvoli virtualizacii (JVM).
Za vyvojove prostredie som si zvolil Eclipse. Graficke prostredie bude implementovane
pomocou kniznice javax.Swing.
3.3.1 Ukazka zdrojoveho kodu
Funkcia na rozpoznanie svetelneho bodu ma ako paramater pole celych cısel, ktore
reprezentuje obrazok. Funkcia prehl’ada cele pole a kazdy prvok testuje na podmienku
3.1. Funkcia vrati suradnicu zpriemerovanych bodov alebo null, ak sa na obrazku ne-
nachadza ziadny bod splnujuci podmienku.
21
Kapitola 3. Opis riesenia Andrej Fogelton
Point process(int[] prepix)
{
int x = 0, y = 0, count = 0;
Point point = new Point(0, 0);
for (int p = 0; p < prepix.length; p++)
{
if ((((prepix[p]) & 0xff) > Main.treshholdBlue) &&
(((prepix[p] >> 8) & 0xff) < Main.treshholdOthers) &&
(((prepix[p] >> 16) & 0xff) < Main.treshholdOthers))
{
point.x += x;
point.y += y;
count++;
}
x++;
if (x >= ic.camWidth)
{
x = 0;
y++;
}
}
if (count != 0)
{
point.x = point.x / count / ic.camWidth;
point.y = point.y / count / ic.camHeight;
return point;
}
return null;
}
22
Kapitola 3. Opis riesenia Andrej Fogelton
3.4 Overenie riesenia
Overenie riesenia poskytuje uceleny pohl’ad na vyvoj projektu od jeho pociatocnych
faz az po finalne riesenie spolu s popisom prace na projekte.
3.4.1 Vyuzitie infracerveneho spektra svetla
Pocas prace na tomto projekte sa vyskytli rozne situacie, riesenie ktorych znamelo
aj vacsiu zmenu smerovania projektu. Pociatocnym umyslom bolo napodobnovat’ Nin-
tendo Wiimote a nastavit’ kameru, aby snımala len infracervene spektrum svetla. Kvoli
vyberu infracervenej LED diody musel byt’ prisposobeny aj vyber web kamery, pretoze
niektore kamery obsahuju infracerveny filter hned’ za objektıvom. To znamena, ze pre
tieto kamery nie je tento typ svetla viditel’ny. Filter sa da rucne odstranit’, ale treba
dbat’, aby nedoslo k poskodeniu kamery. To, ci kamera snıma aj infracervene svetlo
sa da najjednoduchsie overit’ tym, ked’ sa na kameru namieri bezny televızny ovladac.
Pri kamere bez filtra sa na obrazovke objavı svietiaci bod. To, ze kamera neobsahuje
tento filter sposobuje pri urcitych svetelnych podmienkach (pri vyssej koncentracii in-
fracerveneho svetla ako viditel’neho svetla) skresl’ovanie farieb. Pri pouzitı infracervenej
LED diody sa vyskytla moznost’ zjednodusit’ spracovanie obrazu, a to odstranenım co
najvacsieho poctu rusivych elementov z viditel’neho spektra svetla. Vyrobili sme fil-
ter, ktory prepust’a len infracervene spektrum svetla, tento filter sa umiestnil na web
kameru.
Obr. 3.10: Ukazka filtra viditel’neho svetla.
23
Kapitola 3. Opis riesenia Andrej Fogelton
Jeho vyroba bola pomerne jednoducha, naukladali sme 2-3 stare kinofilmy na
seba. a tie sa prilepili na papierovy valec. Tento valec sa potom umiestnil na objektıv
web kamery. Teraz kamera sıce snımala len infracervene spektrum, ale problem bol,
ze danym filtrom sa vyrazne znızila svetelnost’ obrazu, co sposobilo dlhu expozıciu
kamery. Pocet obrazkov za sekundu sa znızil z potrebnych 30 na priblizne 5. Ako efek-
tıvne riesenie uvedeneho problemu sa ukazalo znızenie expozıcie z implicitnej hodnoty
80 na 8. Pri nizsıch hodnotach dochadzalo k nechcenemu preblikavaniu obrazu. Samoz-
rejme sa musela vypnut’ automaticka expozıcia. Pri takto nastavenom ovladaci kamery
sa udrzalo pozadovanych 30 fps. Zaroven sa ukazalo, ze dany filter z kinofilmu sa stal
zbytocnym, pretoze kamera uz nesnıma rusive elementy pri takto znızenej expozıcii
a mohlo sa nastavit’ aj ciernobiele snımanie. Slnecne svetlo obsahuje tiez ifracervene
svetlo, preto pri ostrom svetle sa ukazal filter tiez ako neucinny. Vtedajsı prototyp sa
testoval vacsinou iba na LCD monitore. Po zapozicanı projektoru sa ukazala nedosta-
tocna svetelnost’ infracervenej diody na vacsiu vzdialenost’. Preto sme zacali pouzıvat’
vysoko svietive biele diody.
Najskor sa pre potreby testovania snımania kamery pouzıvala iba samotna di-
oda jednoducho napojena na bateriu. Pri tychto testovaniach bolo zistene, ze dioda
vyzaruje svetlo na dvoch miestach: na spicke diody a priblizne v strede diody medzi ka-
todou a anodou. A to bolo neziaduce. Preto bolo treba najst’ sposob ako skoncentrovat’
vyzarujuce svetlo do jedneho bodu. Riesenım bolo umiestnenie LED diody do obalu
zo stareho pera, ktory bol vyrobeny z materialu odrazajuceho infracervene spektrum
svetla. V opacnom prıpade nastane situacia, ze infracervene svetlo prejde skrz mate-
rial, a potom to vyzera ako sviecka. Vel’mi vhodnym sa ukazal naprıklad pokovovany
plast. Pri vybere tela pera treba dbat’ aj na priemer koncovej dierky. Otvor na konci
Obr. 3.11: Ukazka provizorneho pera.
musı byt’ primerane vel’ky, aby prepustil dostatok svetla, a zaroven sa tym nestracala
presnost’ pri snımanı. Dalsı problem sa vyskytol pri pozorovanı vel’kosti odrazeneho
24
Kapitola 3. Opis riesenia Andrej Fogelton
svetla na roznych castiach obrazovky. Pri nie idealnych sklonoch pera (zakon dopadu
odrazu z fyziky) sa svetlo vel’mi rozptyli. Rozmysl’ali sme nad odstranenım tohto prob-
lemu pomocou sustred’ovania svetla sosovkou, ale pri testoch sa ukazalo, ze nedochadza
k zelanemu zvyseniu intenzity.
Dalsım milnıkom, od ktoreho sa upustilo, bolo snımanie len odrazu svetla od zo-
brazovacej plochy a pouzitie plastu (obrazok 3.11) na sustredenie tohto svetla. Toto
Obr. 3.12: Ukazka niekdajsieho snımania.
riesenie bolo vel’mi nepohodlne, pretoze pouzıvatel’ musel davat’ pozor na to, ako drzı
pero. Z d’alsıch testov vyplynulo, ze sustred’ovanie svetla ma viac nevyhod ako vyhod.
To, ze LED dioda vyzaruje svetlo na dvoch miestach vobec neznizovalo presnost’ apli-
kacie. Pri sustred’ovanı svetla istu cast’ pohltil samotny plast, a tym sa znızila celkova
svetelnost’.
3.4.2 Rucna kalibracia
Pri infracervenom snımanı sa vyuzıvala rucna kalibracia, nakol’ko zdrojom infracerve-
neho svetla muselo byt’ pero. System rucnej kalibracie pozostaval zo styroch bodov. Na
kalibracnej obrazovke (obrazok 3.13) sa zjavil terc, na ktory musel pouzıvatel’ zasvietit’
perom. Pocas tohto svietenia sa musel zmenit’ popis z nesnımam infrabod na snımam
infrabod, a zaroven stlacit’ tlacidlo Nacıtaj. A takto to urobit’ dohromady styrikrat.
Pri pouzitı s LCD displejom tuto kalibraciu zvladol i jeden clovek samostatne. Ale pri
pouzitı s projektorom sa vyzadoval asistent, ktory by stlacil tlacidlo prave vtedy, kedy
aplikacia snımala infracervene svetlo z pera na kalibracnom terci. Okrem vel’kej zlozi-
tosti takejto aplikacie sa ukazala aj ista nepresnost’ sposobena nie vel’mi presnym tria-
25
Kapitola 3. Opis riesenia Andrej Fogelton
fanım kalibracnych tercıkov pouzıvatel’om. Kvoli zjednoduseniu kalibracie sa vyskytla
Obr. 3.13: Niekdajsia kalibracna obrazovka.
nevyhnutnost’ znovu nastavit’ kameru, aby vnımala rozne farby. Hl’adal sa kompromis
tlmenia neziaducich rusivych elementov a schopnost’ vnımat’ farby. Vysledky tychto
testov sa nachadzaju v casti Nastavenie ovladaca web kamery. Vd’aka tejto nutnosti
sa zacalo uvazovat’ o vnımanı farebnych LED diod. Uspesne testy prebehli s cervenou
LED diodou, ale znovu sa ukazala nızka svetelnost’ pri pouzitı s projektorom. Poslednou
upravou algoritmu na rozpoznavanie svetla bolo eliminovanie vnımania bieleho svetla.
Algoritmus totizto rozpoznaval kazde svetlo, naprıklad cervenej farby nad urcitu sve-
telnost’, naprıklad 210. Ale biele svetlo sa sklada so vsetkych troch zloziek a vsetky
tri su vysoko svetelne, preto pri ostrom svetle slnka aplikacia zacala hybat’ a klikat’
mysou hocijako. Tato neprıjemnost’ sa odstranila zakomponovanım do podmienky aj
ostatnych dvoch zloziek svetla tak, aby boli nizsie ako dana hodnota. Z testov vyply-
nulo, ze aplikacia nevnımala rusive elementy sposobene bielym svetlom pri nastavenı
tejto premennej na 100.
26
Kapitola 3. Opis riesenia Andrej Fogelton
3.4.3 Stav projektu po zimnom semestri
Dany prototyp programu bol poskytnuty na testovanie skupine pouzıvatel’ov, ktorı po
vyskusanı programu odpovedali na par otazok. Z odpovedı bolo prijatych mnozstvo
napadov, ako vylepsit’ pretrvavajuce nedostatky. Pouzıvatelia prejavili nespokojnost’
naprıklad s oneskorenym pohybom mysi (sposobene v znacnej miere virtualizaciou) a
boli prijate nasledovne podnety na vylepsenie tohto riesenia:
• skusit’ pouzit’ laserove ukazovadlo,
• nepouzıvat’ vysoke fps, ale znızit’ ho a pomocou algoritmov na vypocet priamky
predpokladat’ body medzi jednotlivymi zachytenymi bodmi,
• pre znızenie vypoctoveho vykonu ohranicit’ oblast’ hl’adania bodu v d’alsom ob-
razku na okolie predchadzajuceho bodu,
• znızenie vypoctoveho vykonu,
• automaticka kalibracia aplikacie,
• pouzıvatel’ nevidı kam infracervene pero ukazuje,
• odstranit’ rusenie sposobene bielym svetlom,
• odbremenit’ pouzıvatel’a nastavovanım ovladaca web kamery,
• nedostatocna presnost’,
• skusit’ pouzit’ sosovku na sustredenie lucov s pouzitım farebnej diody,
• prisposobit’ aplikaciu aj na pouzitie inych typov web kamier,
• pri hl’adanı najsvetlejsieho bodu nebrat’ do uvahy okolie obrazovky a zbytocne
nezat’azovat’ CPU.
3.4.4 Uskutocnene zmeny
Z tychto pripomienok sa ich niekol’ko podarilo uskutocnit’, ako odfiltrovanie rusiveho
bieleho svetla, pouzıvanie vysoko svietivych farebnych LED diod (pouzıvatel’ vidı kam
mieri) ci vyskusanie sosovky.
Vypoctova narocnost’ sa podarila vo vel’mi vyraznej miere znızit’ pomocou uspa-
27
Kapitola 3. Opis riesenia Andrej Fogelton
vania vlakna. Pred realizaciou uspavania vlakna sa vypoctova narocnost’ pohybovala
na urovni 80 percent pri dvoch jadrach o vykone 1,6 GHz. Teraz sa to pohybuje do
20 percent. Totizto dochadzalo k tomu, ze funkcia na zıskanie obrazku z vyrovnava-
cej pamati web kamery vracala aj viackrat ten isty obrazok. Ako vel’mi jednoduche
riesenie sa ukazalo uspavanie vlakna na dobu potrebnu na vytvorenie d’alsieho ob-
razku. Ked’ze jedna sekunda ma 1000 ms a kamera vie urobit’ 30 obrazkov za sekundu
1000ms/30 = 33ms, vysledkom je uspavanie vlakna na 33ms v kazdom kroku cyklu.
Nepresnost’ spomınana pouzıvatel’mi bola nakoniec sposobena chybou v kniznici
JAMA (Hicklin, 2005), co je kniznica na pracu s maticami v JAVE, presnejsie obsahuje
chybny algoritmus Singular Value Decomposition. Chybny algoritmus sposoboval ne-
presnost’ na LCD displeji aj 8 cm, pri takejto nepresnosti bola aplikacia nepouzitel’na.
Samokalibraciu sa nakoniec podarilo uskutocnit’ a mala za nasledok nielen zjed-
nodusenie pre pouzıvatel’a, ale aj citel’ne zvysenie presnosti.
Uvazovalo sa aj nad moznost’ou ohranicit’ plochu hl’adania LED diody vymedze-
nım stvoruholnıka pomocou kalibracneho procesu. Toto riesenie sa nerealizovalo z do-
vodu pochybnostı o zlepsenı efektivity aplikacie. Museli by sa testovat’ d’alsie 4 pod-
mienky, ci sa bod nachadza v danej polrovine. Toto by zabralo priblizne ten vypoctovy
vykon, ktory by sa usetril nekontrolovanım okoliteho priestoru obrazovky.
28
Kapitola 4
Zhodnotenie
Aplikacia je vel’mi dobre pouzitel’na v praxi, dokaze sa nastavit’ tak, aby pracovala
spravne vo vacsine svetelnych podmienkach. Aplikacia disponuje dostatocnou presnos-
t’ou a jednoduchou kalibraciou. Asi najvacsou nevyhodou je nizsia odozva, ktora sa
pohybuje v rozmedzı 0,5 az 1 sekundy. Aplikacia poskytuje vyrazne zlepsenie v inte-
raktivite na prednaskach. Profesor nemusı chodit’ k notebooku kvoli prepnutiu na d’alsı
slajd. Aplikacia skvele ovlada ine programy, na ktorych pouzıvanie postacuje mys a jej
l’ave kliknutie.
Bol ukazany vel’mi dobry zamer, na ktorom by sa dali neskor aplikovat’ aj d’alsie
vylepsenia, ako naprıklad:
• moznost’ doprogramovania praveho kliknutia (pouzitım vysoko svietivej LED di-
ody inej farby),
• vytvorenie JAVA API, ktore by obsluhovalo web kameru a dokazalo by vytvarat’
udalosti typu; modre pero zacalo/prestalo svietit’, cervene pero zacalo/prestalo
svietit’, zelene pero zacalo/prestalo svietit’,
• znızenie vypoctoveho vykonu pomocou ci uz pouzitia nizsieho fps a dopocıtavania
chybajucich bodov alebo aj vymedzenie oblasti hl’adania svetla pre d’alsı obrazok,
• odbremenit’ pouzıvatel’a nastavovanım ovladaca web kamery.
Zoznam pouzitej literatury
CIZEK, J. Touchless – vyzkousejte si futuristicke ovladanı pocıtace. http://www.zive.
cz/Clanky/Touchless--vyzkousejte-si-futuristicke-ovladani-pocitace/
sc-3-a-143984/default.aspx, oktober 2008. [Posledny prıstup: 9. maj 2009].
COMUNITY TOUCHLESS. Touchless. http://www.codeplex.com/touchless, ok-
tober 2008. [Posledny prıstup: 9. maj 2009].
CRIMINISI, A. Homografia. http://www.robots.ox.ac.uk/~vgg/presentations/
bmvc97/criminispaper/node3.html, jul 1997. [Posledny prıstup: 9. maj 2009].
FILLO, P. Elektronicky terc. Bakalarska praca, Slovenska technicka univerzita v Bra-
tislave, 2008.
HICKLIN, J. a. Java Matrix Package. http://math.nist.gov/javanumerics/jama,
jul 2005. [Posledny prıstup: 9. maj 2009].
INTEL. OpenCV. http://opencv.willowgarage.com/wiki/#Welcome.
2BAC8-Introduction.WhatisOpenCV.3F, december 2008. [Posledny prıstup:
9. maj 2009].
KOZMAN, M. Spracovanie obrazu. Bakalarska praca, Slovenska technicka univerzita
v Bratislave, 2007.
LEE, J. C. Viac bodova interaktıvna tabul’a s pouzitım Wiimote. http://www.cs.
cmu.edu/~johnny/projects/wii/, december 2008. [Posledny prıstup: 9. maj 2009].
MESZAROS, V. a. Z. Laser Pointer Map Interaction. Zbornık IIT.SRC 2008. 2008,
s. 5. ISSN 1383-7133.
Zoznam pouzitej literatury Andrej Fogelton
MIT. Singular Value Decomposition. http://web.mit.edu/be.400/www/SVD/
Singular_Value_Decomposition.htm, september 2002. [Posledny prıstup: 9. maj
2009].
NUIGROUP. Touchlib. http://www.nuigroup.com/touchlib/, december 2008. [Po-
sledny prıstup: 9. maj 2009].
SUN MICROSYSTEM. Java Media Framework. http://java.sun.com/javase/
technologies/desktop/media/jmf/, december 2008. [Posledny prıstup: 9. maj
2009].
31
Prıloha A
Pouzıvatel’ska prırucka
Aplikacia Interactive Whiteboard prestavuje jednoduche a lacne riesenie pre interak-
tıvnu tabul’u, stacı mat’ lacnu web kameru, pero a projektor alebo LCD displej. Apli-
kacia poskytuje moznost’ ovladania pocıtacovej mysi, presnejsie jeho l’aveho kliknutia.
A.1 Instalacia
Pre spustenie aplikacie je odporucane mat’ nainstalovanu JAVU verzie 6 update-u 10
a JMF 2.1.1e. Ak web kamera nebola zapojena v case instalacie, je nutne spustit’ proces
detekcie multimedialneho hardveru v JMStudiu.
Je potrebne mat’ web kameru, ktora dokaze pracovat’ s minimalnym rozlısenım
640×480 pri 30 fps, odporucany typ web kamery je MSI StarCam Clip. Vlastnosti pera
su obmedzene na pouzitie modrej vysoko svietivej LED diody, ktora je pripojena na spı-
nac umiestneny tak, aby sa dal jemne stlacat’ a nevznikali vel’ke odchylky. Samozrejme
LED dioda je umiestnena viditel’ne na spicke pera.
Obr. A.1: Ukazka konstrukcie pera.
Prıloha A. Pouzıvatel’ska prırucka Andrej Fogelton
A.2 Nastavenie
A.2.1 Nastavenie ovladaca web kamery
Pred spustenım aplikacie je nutne zmenit’ trochu nastavenia ovladaca web kamery:
Nazov Hodnota Rozsah
Svetelnost’ 0 0 – 63Kontrast 1.00 1.00 – 2.00Gamma 1.00 0 – 1.00Expozıcia 35 0 – 255
Automaticka expozıcia NIE ANO/NIE
Tabul’ka A.1: Hodnoty pouzite pre ovladac web kamery.
Tieto hodnoty pokryvaju nastavenie pre najbeznejsie svetelne podmienky. Ak by
sa mala aplikacia pouzıvat’ vo vel’mi tmavom alebo naopak vo vel’mi svetlom prostredı,
je nutne jemne upravit’ expozıciu. Pri pouzitı s LCD displejom s mensım pozorovacım
uhlom, je vhodne pridat’ na saturacii o priblizne 0,5.
A.2.2 Nastavenie polohy kamery
Pred spustenım funkcionality na ovladanie kurzora mysi je potrebne najskor nastavit’
polohu kamery tak, aby snımala celu plochu platna projektora alebo LCD obrazovky
pocıtaca. Treba sa snazit’ umiestnit’ kameru tak, aby snımala celu plochu, a zaroven
nebola vel’mi d’aleko, pretoze sa tym straca stopovacie rozlısenie. Pod stopovacım roz-
lısenım sa rozumie vel’kost’ plochy pouzitej na prepocıtavanie do ineho suradnicoveho
systemu. Vacsina testov bola praktikovana na LCD monitore a boli vyvodene nasle-
dovne zavery. Umiestnenie kamery zavisı od toho, ci je pouzıvatel’ pravak alebo l’avak,
aby si netienil vlastnou rukou. Uhol by mal byt’ maximalne 30 stupnov. Je to kvoli
zlemu pozorovaciemu uhlu LCD displeja, pri pouzitı dataprojektoru moze byt’ tento
uhol vacsı. Na obrazku A.2 je schematicky znazornene rozlozenie pre pravaka.
Ako vidno z nazorneho obrazku 3.5, pri zvacsujucom sa uhle sa zmensuje presnost’
aplikacie tym, ze stale z menej a menej bodov sa prepocıtava do stale rovnakej plochy.
Je dolezite umiestnit’ web kameru tak, aby snımala celu obrazovku. Na tento ucel sluzi
33
Prıloha A. Pouzıvatel’ska prırucka Andrej Fogelton
LCD obrazovka / plátno
0–30 stupňov
web kamera
Obr. A.2: Umiestnenie web kamery pre pravaka.
Obr. A.3: Vel’kost’ plochy pouzitej na prepocıtavanie pri 0, 30, 70 a 85 stupnoch.
WebCam View, pomocou ktoreho pouzıvatel’ vidı, co prave zachytava kamera a moze
ju spravne nastavit’.
A.2.3 Spravne nastavenia prahov pre vnımanie svetla
Po uspesnej instalacii a nastavenı kamery je potrebne overit’ spravne nastavenia pra-
hov pre detekciu pera a kalibracie. Na overenie spravnej detekcie pera stacı spustit’
TrackView. Spravne nastavene prahy sa prejavuju ciernou obrazovkou. Ak sa na ob-
razovke objavuju zelene body a ziadne pero sa vtedy nepouzıva treba zvysit’ citlivost’
na zachytavanie pera z implicitnych 200 postupne az do 250. Cım je cıslo mensie, tym
je to pre detekciu pera lepsie, ale nesmu byt’ vidno rusive elementy. Ked’ uz mame
34
Prıloha A. Pouzıvatel’ska prırucka Andrej Fogelton
Obr. A.4: Hlavne okno programu.
Obr. A.5: Idealne umiestnenie kamery pre pravaka.
nastavene prahy tak, ze vidıme len ciernu obrazovku odskusame pero v kazdom rohu
obrazovky. Ak sa pri rozsvietenı LED diody na obrazovke vo vsetkych styroch rohoch
zjavia zelene body, mozeme sa pustit’ do procesu kalibracie.
Kalibracia funguje na princıpe porovnavania dvoch obrazkov, pricom je mozne
nastavit’ prah, ako vel’mi sa lısia dane dva obrazky od seba. Pocas procesu kalibracie
sa vytvaraju obrazky, ktore sa ukladaju do adresaru /calibrationimages. Ak by
35
Prıloha A. Pouzıvatel’ska prırucka Andrej Fogelton
bol proces kalibracie neuspesny, je nutne vypnut’ program a skontrolovat’ kalibracne
obrazky. Ak je obrazok cierny, znamena to, ze nastaveny prah je prılis vysoky alebo
pouzıvate LCD monitor s nızkym pozorovacım uhlom a je nutne zvysit’ saturaciu na
ovladaci web kamery.
Obr. A.6: Spravne najdeny kalibracny bod.
Obr. A.7: Zle najdeny kalibracny bod.
Ako vidno z obrazku A.7, pri takto zle skalibrovanej aplikacii treba zvysit’ prah
rozdielu medzi obrazkami.
36
Prıloha A. Pouzıvatel’ska prırucka Andrej Fogelton
A.3 Pouzıvanie
Po nastavenı prahov a skalibrovanı aplikacie je mozne zacat’ pouzıvat’ aplikaciu. Pouzı-
vanie je jendoduche. Aplikacia vysle signal stlacenia l’aveho tlacidla mysi po detekovanı
svetla, presunie kurzor mysi na pozıciu pera. Pocas doby svietenia aplikacia presuva
kurzor podl’a aktualnej pozıcii pera. Pri skoncenı detekovania svetla aplikacia vysle
signal o opustenı l’aveho kliknutia.
37
Prıloha B
Technicka dokumentacia
B.1 Singular Value Decomposition
Singular value decomposition (MIT, 2002) sa pouzıva namiesto gaussovej eliminacie pri
neregularnych maticiach.
Anxp = UnxnSnxpVTpxp (B.1)
V TV = I (B.2)
UTU = I (B.3)
Riesenım je riadok matice V, ktory je urcuny pozıciou riadka, v ktorom je najmensie
cıslo matice S. Dany riadok sa rozdelı do troch riadkov po tri cısla a vznikne matica H.
B.2 Triedy pouzite z JMF
Na prıstup k obrazkom web kamery sa pouzila trieda DataSource, pretoze tato trieda
umoznovala dany obrazok aj spracovat’, pred tym ako sa zobrazil na obrazovke. Trieda
Player sa pouzila na zobrazovanie obrazkov, len pre ucely Webcam view modu.
Prıloha B. Technicka dokumentacia Andrej Fogelton
Obr. B.1: JMF player model.
39
Prıloha C
Obrazkova prıloha
Na prilozenych obrazkoch vidno rozdiel vo funkcionalite programu po zimnom semestri
a teraz.
Obr. C.1: Vyuzitie aplikacie na nakreslenie smajla po zimnom semestri.
Obr. C.2: Vyuzitie aplikacie na nakreslenie smajla teraz.
Prıloha D
Clanok z IIT.SRC 2009
Prıloha E
Poster z IIT.SRC 2009
Prıloha F
Obsah DVD media
/Interactive Whiteboard/ - obsahuje spustitel’ny jar subor
/install/ - obsahuje instalacie pre JAVU a JMF
/documents/ - obsahuje dokumentaciu, pouzıvatel’sku prırucku
a clanok z IIT.SRC 2009
/source/ - obsahuje zdrojove subory