VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Podobné dokumenty
Odečítání pozadí a sledování lidí z nehybné kamery. Ondřej Šerý

D E T E K C E P O H Y B U V E V I D E U A J E J I C H I D E N T I F I K A C E

13 Barvy a úpravy rastrového

Úloha - rozpoznávání číslic

Zobrazování barev Josef Pelikán CGG MFF UK Praha.

Rozpoznávání v obraze

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Jasové transformace. Karel Horák. Rozvrh přednášky:

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

Detekce a rozpoznávání mincí v obraze

Detekce obličeje v obraze s využitím prostředí MATLAB

Analýza a zpracování digitálního obrazu

DETEKCE HRAN V BIOMEDICÍNSKÝCH OBRAZECH

Analýza obrazu II. Jan Macháček Ústav skla a keramiky VŠCHT Praha

Moderní systémy pro získávání znalostí z informací a dat

12 Metody snižování barevného prostoru

VYUŽITÍ MATLABU PRO VÝUKU NUMERICKÉ MATEMATIKY Josef Daněk Centrum aplikované matematiky, Západočeská univerzita v Plzni. Abstrakt

Kybernetika a umělá inteligence, cvičení 10/11

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

SIFT: Scale Invariant Feature Transform Automatické nalezení korespondencí mezi dvojicí obrázků

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

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

TSO NEBO A INVARIANTNÍ ROZPOZNÁVACÍ SYSTÉMY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY NÁVRH STRATEGIE ROZVOJE MALÉ RODINNÉ FIRMY THE DEVELOPMENT OF SMALL FAMILY OWNED COMPANY

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

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

Automatické rozpoznávání dopravních značek

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

U Úvod do modelování a simulace systémů

Operace s obrazem II

Algoritmy a struktury neuropočítačů ASN P9 SVM Support vector machines Support vector networks (Algoritmus podpůrných vektorů)

Rozšíření bakalářské práce

8. Posloupnosti, vektory a matice

Trénování sítě pomocí učení s učitelem

Výukový materiál v rámci projektu OPVK 1.5 Peníze středním školám

Práce na počítači. Bc. Veronika Tomsová

7. Rozdělení pravděpodobnosti ve statistice

Vytěžování znalostí z dat

7 Další. úlohy analýzy řeči i a metody

Pravděpodobnost, náhoda, kostky

Počítače a grafika. Ing. Radek Poliščuk, Ph.D. Přednáška č.7. z předmětu

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

Zpracování digitalizovaného obrazu (ZDO) - Popisy III

ROZPOZNÁVÁNÍ AKUSTICKÉHO SIGNÁLU ŘEČI S PODPOROU VIZUÁLNÍ INFORMACE

OBRAZOVÁ ANALÝZA. Speciální technika a měření v oděvní výrobě

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

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

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

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

Stavový model a Kalmanův filtr

Pravděpodobnost, náhoda, kostky

TERMINOLOGIE ... NAMĚŘENÁ DATA. Radek Mareček PŘEDZPRACOVÁNÍ DAT. funkční skeny

I. D i s k r é t n í r o z d ě l e n í

Státnice odborné č. 20

2.6. VLASTNÍ ČÍSLA A VEKTORY MATIC

Náhodné chyby přímých měření

GIS ANALÝZA VLIVU DÁLNIČNÍ SÍTĚ NA OKOLNÍ KRAJINU. Veronika Berková 1

Moderní metody substitučního šifrování

Obsah. Úvodem 9 Kapitola 1 Jaký počítač a jaký systém? 11. Kapitola 2 Obrázky a fotografie 21

Úvod do zpracování signálů

p(x) = P (X = x), x R,

Klasifikace a rozpoznávání

Vojtěch Franc Centrum strojového vnímání, Katedra kybernetiky, FEL ČVUT v Praze Eyedea Recognition s.r.o MLMU

Semestrální práce z KIV/PRO. Využití Voroného diagramu pro inicializaci K-means

Projekt do předmětu ZPO

Klasifikace předmětů a jevů

VÝBĚR A JEHO REPREZENTATIVNOST

Semestrální projekt. Vyhodnocení přesnosti sebelokalizace VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií

Základy teorie pravděpodobnosti

DUM 14 téma: Barevné korekce fotografie

South Bohemia Mathematical Letters Volume 23, (2015), No. 1, DĚLENÍ KRUHU NA OBLASTI ÚVOD

řešeny numericky 6 Obyčejné diferenciální rovnice řešeny numericky

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ

Zpracování obrazů. Honza Černocký, ÚPGM

UNIVERZITA PARDUBICE. 4.4 Aproximace křivek a vyhlazování křivek

VY_32_INOVACE_In 6.,7.13 Vzorce vložení funkce

8.1. Definice: Normální (Gaussovo) rozdělení N(µ, σ 2 ) s parametry µ a. ( ) ϕ(x) = 1. označovat písmenem U. Její hustota je pak.

X = x, y = h(x) Y = y. hodnotám x a jedné hodnotě y. Dostaneme tabulku hodnot pravděpodobnostní

Klasifikace a rozpoznávání. Lineární klasifikátory

Neuronové sítě v DPZ

Lineární klasifikátory

Optimální rozdělující nadplocha 4. Support vector machine. Adaboost.

Naučte se víc... Microsoft Office Excel 2007 PŘÍKLADY

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Jednofaktorová analýza rozptylu

Automatická detekce anomálií při geofyzikálním průzkumu. Lenka Kosková Třísková NTI TUL Doktorandský seminář,

metodou Monte Carlo J. Matěna, Gymnázium Českolipská, Praha

Stonožka jak se z výsledků dozvědět co nejvíce

1. Vlastnosti diskretních a číslicových metod zpracování signálů... 15

METODY DOLOVÁNÍ V DATECH DATOVÉ SKLADY TEREZA HYNČICOVÁ H2IGE1

GIS Geografické informační systémy

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

Rozvoj tepla v betonových konstrukcích

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Interní norma č /01 Průměr a chlupatost příze

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

Transkript:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA OVLÁDÁNÍ POČÍTAČE GESTY BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR Petr Wiewiorka BRNO 2009

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA OVLÁDÁNÍ POČÍTAČE GESTY VIDEO-BASED HUMAN-COMPUTER INTERFACE BAKALÁŘSKÁ PRÁCE BACHELOR S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Petr Wiewiorka Ing. Michal Španěl BRNO 2009

Licenční smlouva je uložena v archivním výtisku v knihovně FIT VUT v Brně

Abstrakt Tato bakalářská práce popisuje možnost ovládání počítače pomocí gest ruky. Obraz je načítán pomocí webové kamery, ve kterém vyhledává pozice ruky v obraze a následně rozpozná gesta, ze kterých určí příkaz pro počítač. Pro práci s obrazem byla použita knihovna OpenCV. Na konci jsou zobrazeny výsledky práce. Abstract This bachelor s thesis descripts a way of controlling a computer by hand gestures. Picture is taken from web camera, in which search for a position of hand in picture and recognize gesture. The gesture signal controls a computer. I use the OpenCV library for a work with picture. At the end are output pictures. Klíčová slova Zpracování obrazu, ovládání počítače gesty, adaboost, haartraining, OpenCV Keywords Image processing, gesture computer controlling, adaboost, haartraining, OpenCV Citace Petr Wiewiorka: Ovládání počítače gesty, bakalářská práce, Brno, FIT VUT v Brně, 2009

Ovládání počítače gesty Prohlášení Prohlašuji, že jsem tuto bakalářskou práci vypracoval samostatně pod vedením ing. Michala Španěla. Uvedl jsem všechny literární prameny a publikace, ze kterých jsem čerpal.... Petr Wiewiorka 29.4.2009 Poděkování Rád bych chtěl poděkovat mému vedoucímu ing. Michalu Španělovi za poskytnuté znalosti, podporu při řešení a vedení v této bakalářské práci. Petr Wiewiorka, 2009 Tato práce vznikla jako školní dílo na Vysokém učení technickém v Brně, Fakultě informačních technologií. Práce je chráněna autorským zákonem a její užití bez udělení oprávnění autorem je nezákonné, s výjimkou zákonem definovaných případů..

Obsah Obsah...1 1 Úvod...2 2 Boosting a klasifikace obrazu...3 2.1 Adaboost...3 2.2 Haarovy příznaky...5 3 Rozpoznávání gest...7 3.1 Metody rozpoznávání gest...7 3.2 N-Gramy...7 4 Návrh rozpoznávače gest ruky...10 4.1 Základní popis...10 4.2 Příprava dat a trénování...13 5 Implementace...14 5.1 Popis programu...14 5.2 Detekce pokožky...15 5.3 Detekce dlaně...16 6 Výsledky řešení a vyhodnocení...17 6.1 Dosažené výsledky...17 6.2 Možné rozšíření...21 7 Závěr...22 1

1 Úvod V poslední době se čím dál více rozšiřuje snaha o ovládání počítače jiným způsobem než klávesnicí a myší. Nový způsob ovládání využívá načítání a zpracovávání obrazu, ve kterém se vyhledávají objekty. Tyto objekty se mohou lišit podle potřeby, např. vyhledávání dopravních značek u automobilů, detekce obličeje. Toto téma mě zaujalo, proto jsem si vybral vyhledávání dlaně a následné rozpoznávání gest v obraze. Ovládání gesty a pozice ruky v obraze by se dalo nahradit myš a klávesnici, jelikož pomocí detekce pozice vyhledané dlaně v obraze by se dalo pohybovat myší po ploše. Klávesnici by bylo možné nahradit např. vytvořením pozic a tvaru dlaně, jako u znakové řeči, nebo zobrazení klávesnice na obrazovce a klikáním na určená místa pomocí prstů by se také dalo psát text. Tato bakalářská práce se zabývá vyhledáním dlaně v načítaném obraze a detekcí gest, které budou ovládat počítač. V první části se budu zabývat metodami zpracovávání obrazu, ve které popíšu metody pro rozpoznávání objektu v obraze. Blíže se budu zabývat metodou Adaboost a haarovými příznaky pro rozpoznávání objektů v obraze. Dále se zmíním o způsobech rozpoznávání a druzích gest, které se používají pro komunikaci s počítačem. V třetí části budu popisovat vlastní návrh rozpoznávače gest, jaké funkce a postupy jsem použil pro přípravu dat, které slouží rozpoznávání objektů v obraze. Zmíním se o vlastních poznatcích, které jsem získal při přípravě a trénování rozpoznávače, výsledky trénování. Čtvrtá část bude obsahovat popis implementace, jaké nástroje jsem použil. V předposlední části budou uvedeny dosažené výsledky a jejich hodnocení. V závěru bude zhodnocení výsledků a možný návrh na rozšíření či jiné možnosti použití rozpoznávání gest v počítači. 2

2 Boosting a klasifikace obrazu V této kapitole popíšu metody, které slouží pro zpracovávání obrazu. Zmíním se o způsobech pro rozpoznávání objektů v obraze. Metody zpracování obrazu (image processing) lze přibližně rozdělit do tří kategorií: 1. přímá úprava dat se používá pro odstranění hrubých artefaktů vznikajících náhodně v průběhu měření, případně pro odstranění částí obrazu. 2. zvýšení vizuální hodnoty nemění vlastní data, jenom ovlivňuje jejich prezentaci jedná se o použití prostorových modelů, vhodnou volbu palety pseudobarev, použití stínování, změnu jasu a kontrastu, popř. zobrazování profilů podél zvoleného směru. 3. transformace dat a získávání informací může se jednat o úpravy primitivní (softwarové zvětšování, rotace, ) i složitější (např. korekce nelinearit). Například se jedná o aritmetické operace mezi dvěma obrazy (násobení pro aplikaci masky, odečítání pro kompenzaci topografie v LFM), korekce pozadí či různé druhy filtrací (zvýraznění studovaného jevu). Mezi informačními metodami lze uvést charakterizaci drsnosti povrchu, určení fraktální dimenze či distribuce velikostí částic. 2.1 Adaboost Adaboost, adaptive boosting [1], je algoritm pro strojové učení vytvořené Y. Freundem a R. Schapirem. Tento algoritmus se používá pro vylepšení různých druhů slabších algoritmů strojového učení nebo ve spojení s nimi. Boostingy pro svou činnost potřebují popsanou trénovaní množinu. Na tuto množinu se aplikuje algoritmus, který vytvoří natrénovaný silný klasifikátor. Většina boostovacích algoritmů je založena na iteracích. V každé iteraci se vyhledává nový slabý klasifikátor, pomocí kterého by se minimalizovala chyba na trénovaní množině. Pokud se najde takový klasifikátor, přiřadí se mu určitá váha. Poté se přidá klasifikátor do skupiny budoucího silného klasifikátoru. Na konci iterace se sečtou nově nalezené váhy jednotlivých prvků trénovaní množiny. Váhy prvků trénovaní množiny mají podstatný vliv na to, jakým způsobem jsou vybírány slabé klasifikátory. Boostingové algoritmy tyto váhy postupně utváří v průběhu celého trénování a reflektují v nich úspěšnost klasifikace každého prvku trénovaní množiny. Čím menší je tato úspěšnost, tím větší získává prvek váhu a naopak. To umožňuje algoritmu zaměřit se na trénování na prvky dříve chybně klasifikované a nalézt v nich nové určující vlastnosti zlepšující jejich klasifikaci. 3

Vstupy: Inicializace: pro (2.1) (2.2) Pro t=1,,t : Najdi klasifikátor, který minimalizuje chyby s ohledem na distribuci D t : Vstupní podmínka: ε t < 0.5, jinak skončí., kde (2.3) Vyber, typicky (2.4), kde ε t je vážený chybový poměr klasifikátoru h t. Vylepšení: (2.5) kde Z t je normalizační prvek. Výstup konečného klasifikátoru: Rovnice pro vylepšení distribuce D t je tvořena takto: (2.6) (2.7) 4

2.2 Haarovy příznaky Haarovy příznaky jsou digitální obrazové příznaky používané v rozpoznávání objektů. Jsou podobné s Haarovými vlnkami. Zpočátku pracovaly pouze s intenzitou obrazu ( hodnoty RGB pixelů v celém obrázku), což bylo velmi početně náročné. [2] Publikace od Papageorgiou[3] navrhla pracovat s alternativní příznakovou sadou místo obvyklou intenzitou obrazu. Tato příznaková sada brala v úvahu obdélníkové oblasti obrazu a sumy pixelů v tomto obrázku. Tyto sumy byly použity k rozdělení obrazů, obr. 1. Např. vezmeme si sadu obrázků obličejů a budov. Je pravděpodobné, pokud bereme v úvahu oblast oka a vlasů, suma pixelů v této oblasti může být trochu vyšší pro lidský obličej, pro budovy může být libovolně vysoká nebo nízká. Následující hodnota může záviset na struktuře budovy a jejího okolí, i když hodnoty pro prvního budou přibližně stejné. Můžeme tedy rozdělit všechny obrázky do kategorií, jejichž Haarovy příznaky v tomto obdélníkovém regionu mohou být v přesném rozsahu hodnot do jedné kategorie a ty, které nepatří do daného rozsahu do jiné kategorie. Toto může zhruba rozdělit sadu obrázků do dvou sad. Ty které mají spoustu obličejů a málo budov a ty které mají málo obličejů a spoustu budov. Tato procedura může iterativně uskutečnit pozdější rozdělení obrazových shluků. P1 P2 D P3 P4 Obr.1 Výpočet sumy pixelů v obdélníku D = P 1 - P 2 - P 3 + P 4 (2.8) Nejjednodušší variantou je skládání dvou souměrných obdélníků, které mají stejnou velikost. Složitější pak se mohou skládat ze tří nebo čtyř obdélníků, popř. jsou pootočeny o 45. Příklady některých haarových příznaků jsou zobrazeny v obr. 2. 5

Obr. 2. Haarovy příznaky 6

3 Rozpoznávání gest Pro rozpoznávání gest je důležité vědět co to gesto vlastně je. Gesta slouží jako neverbální komunikace a jsou prováděné určitou částí těla, např. rukou nebo dlaní.[8] Může se používat spolu s verbální komunikací nebo odděleně. První gesto v počítačové terminologii bylo tažení pomocí myši. V této práci bych jsem se zaměřil na gesta prováděná dlaní ruky. Pomocí pohybu dlaně v obraze bude následně určena pravděpodobnost o jaké gesto by mohlo jít. 3.1 Metody rozpoznávání gest Pro rozpoznávání gest slouží metody, které zohledňují časovou osu. Jelikož nejde pokaždé udělat stejné gesto úplně stejně, musí se sledovat i rychlost provádění, které může také určit prováděné gesto. Musí se ale zohlednit i že gesta mohou provádět i různí lidé, proto se počítá i s určitou tolerancí. Pomocí časové osy a pozice sledovaného objektu v obraze se následně určí pravděpodobné gesto. Nejčastější metodou rozpoznávání gest je statické rozpoznávání. Základem statického rozpoznávání je rozdělení prostoru do všech vzorů třídy. Rozpoznání gesta tedy spočívá v tom, že určité množiny definovaných tříd se na základě daných kategorií zvolí ten vzor, který nejlépe odpovídá vstupu. 3.2 N-Gramy N-gramový model je typ pravděpodobnostního modelu pro předpověď následujícího objektu v sekvenci.[4] N-gramy jsou používané v různých oblastech statického zpracovávání přirozeného jazyka a analýzy genetické posloupnosti. N-gram je část posloupnosti o n objektech z dané sekvence. Objekty v dotazování mohou být slabiky, písmena, slova nebo základních párů v závislosti na aplikaci. Podle počtu objektu v n-gramu jsou pojmenovány, pro počet 1 se nazývá unigram, počet 2 se označuje jako bigram, nebo se také může označovat digram, pro velikost 3 je označení trigram, pro velikost 4 a více je obecně nazýváno jako n-gramy. N-gramový model posloupnosti, zejména přirozené jazyky, používá statické vlastnosti n-gramů. 7

Tento názor můžeme najít v experimentech v práci informační teorie od Claudia Sannona.[7] Jeho otázka byla, když je dána posloupnost znaků, např. posloupnost ex, jaká je pravděpodobnost dalšího znaku? Z trénovacích dat, můžeme odvodit pravděpodobné rozložení pro další daný znak z předchozích o velikosti n pro a = 0.4, b = 0.00001,., kde je suma pravděpodobností všech následujících znaků rovna 1. N-gramový model předpovídá stav na základě předcházejících stavů. V pravděpodobnostních výrazech není nic kromě P( xi xi-1, xi-2,, xi-n ). Při použití jazykového modelu nezávislých předpokladů, jsou vytvořeny tak že každé slovo závisí jen a pouze na posledních n slovech. Tento Markův model se používá pro aproximaci pravých základních jazyků. Tento předpoklad je důležitý protože významně zjednodušuje problém s učením jazyka s pomocí dat. Navíc vzhledem k otevřené povaze jazyka je běžné, že je sloučit neznáma slova jazyka dohromady. N-gramové modely jsou široce používané v statickém zpracování jazyka. V rozpoznávání gest, rozpoznávání řeči, fonémů a posloupnosti fonémů jsou modelovány pomocí n-gramové distribuce. Pro rozbor, slova jsou modelována tak že každý n-gram je složený z n slov. Pro rozpoznávání řeči, posloupnosti písmen jsou modelovány pro různé druhy řeči. Pro posloupnost slov, např. to je krásny den, budou trigramy # to je, to je krásný, je krásný den, krásný den #. Pro rozpoznávání gest jsou bigramy zobrazeny na obr. 3. A B B C D (A,B) (B,B) (B,C) (C,D) Obr. 3 Bigramy obrázků postavy Některé zpracované řetězce z praxe jsou schopny odstraňovat volná místa. N-gramy mohou být použity pro všechny typy dat. Mohou být velmi úspěšné jako první průchod v genetické sekvence hledání a identifikaci, které druhy krátkých sekvencí DNA, z které byly převzaty. N-gramy lze také použít pro efektivní přibližnou shodu. Převodem posloupnosti položek na sadu n-gramů, může být vtisknutý do vektorového prostoru, jinými slovy reprezentovány v histogramu, toto dovoluje, aby mohla být posloupnost porovnána s jinými posloupnostmi s účinným 8

způsobem. Například pro znaky abcba a bcbab povede k stejným bigramům. Avšak víme, že pokud mají dva řetězce reálného textu podobný vektor reprezentace, pak by mohly být podobné. Ostatní metriky byly rovněž použity na vektory n-gramů s různými a někdy i lepšími výsledky. Například z-skore byly použity pro porovnání dokumentů, zkoumá kolik směrodatných odchylek každého n-gramu se liší průměrným výskytem ve velké sbírce dokumentů, které tvoří pozadí vektoru. V případě menšího počtu, může dát lepší výsledky při porovnání alternativních modelů. 9

4 Návrh rozpoznávače gest ruky Pro samotné rozpoznávání gest je nejdříve třeba připravit si data abychom našli v načítaném obraze objekt, v našem případě dlaň. Pro tuto přípravu je třeba si připravit obrázky, pomocí kterých budeme rozpoznávač trénovat. Dále pak definovat jaká gesta bude rozpoznávač rozpoznávat. Podle rozeznaných gest se nakonec určí jaké úkony by měl počítač provést. 4.1 Základní popis Pro trénování je potřeba použít více obrázků, kde je dlaň, a obrázky, kde se dlaň nevyskytuje. Obrázky dlaní jsou označeny jako positivní obrázky, na Obr.4 je příklad obrázku s dlaní, a obrázky bez dlaně jsou označeny jako negativní. Negativní obrázky mohou být různě velké s různými motivy, ale nesmí na nich být dlaň nebo lépe žádná pokožka. Pro dobré natrénování je potřeba, aby objekt trénování byl různě nasvětlen na růžném pozadí, různě i mírně natočen a od více subjektů, např. muži i ženy. Čím více různorodá budou trénovací data, tím bude mít rozpoznávač větší možnost získat lepší data pro pozdější rozpoznávání. Obr. 4 Příklad trénovacích obrázků Pro trénování jsem použil funkci haarcascade.exe, která natrénuje rozpoznávač na rozpoznávání podle daných positivních obrázků. Pro trénování je třeba počítat s časovou náročností. V případě, že máme již připravený rozpoznávač, je také vhodné si podle barvy pokožky nalézt pravděpodobné místo výskytu dlaně. Toto vyhledávání se provádí na barevných obrázcích pomocí několika způsobů. Vybral jsem si vyhledávání pomocí barevného modelu RG, jehož složky získám z vzorce (4.1). R= 100 * r r+ g+ b G = 100 * g r+ g+ b (4.1) 10

Podle těchto hodnot se vypočítá inverzní kovarianční matice, která nám bude sloužit pro určení zda se jedná o barvu kůže nebo ne. Takto si převedeme na černobílý obraz, kde nám zůstanou pouze body odpovídající určené pravděpodobnosti barvy kůže. Na tento černobílý obrázek použijeme filtr, např. mediánový filtr, který by měl spojit oblasti velkého shluku bodů. Po nalezení shluku barvy lidské pokožky můžeme tuto oblast ohraničit, např. konturováním, a začít na ni rozpoznávat, zda jde o dlaň nebo o jinou část lidského těla, popř. jen barevnou podobnost s lidskou pokožkou. Následně použijeme na vybranou oblast rozpoznávač, který jsme si natrénovali na určité gesta a který nám určí o jakou pozici ruky jde, např. otevřená dlaň, zavřená dlaň nebo nerovnaný prst. Po rozpoznání pozice ruky lze pomocí n-gramů předpovědět o jaké gesto se jedná a následně provést danou operaci. Postup je znázorněn na Obr.5. 11

A B (A,B) Obr. 5 Základní zobrazení vyhledávání a rozpoznávání objektů 12

4.2 Příprava dat a trénování Jako první věc jsem musel vytvořit pozitivní obrázky, které následně sloužily pro trénování. Vytvořil jsem program, který načítal obrázky z webové kamery a ukládal je na pevný disk při stlačení pravého tlačítka myši. Pro trénování se používají černobílé obrázky, proto jsem hned při vytváření positivních obrázků je vytvářel černobíle o rozměrech 320x240 pixelů. Pro další pracování s obrázky byly 2 možnosti. Buď oříznout obrázky dlaně tak, aby byla na obrázku pouze dlaň, nebo do souboru, kde se uloží seznam obrázku s jeho popisem, vypsat každou polohu dlaně na každém obrázku. Jako jednodušší postup mi přišel ten první, kdy se oříznou fotky. Po úpravě fotek jsem si připravil negativní obrázky, které jsem buďto vytvořil nebo je stáhl z internetu. Po přípravě obrázků jsem si vytvořil soubory pro seznamy pozitivních a negativních obrázků, které jsem následně použil ve funkcích. Pomocí perlového skriptu, který pomocí různého pootáčení positivních obrázků, které byly umístěny na popředí negativních obrázků, vytvoří požadovaný počet positivních obrázků pro trénování, jsem si vytvořil 6000 positivních obrázků. Dále jsem vytvořil soubor podobný souboru pro popis negativních obrázků, kde byl ale seznam vytvořených pozitivních obrázků. Pomocí funkce mergevec.exe, jsem vytvořil jeden vec soubor, který slouží pro trénování pomocí funkce haarcascade. Nyní už jsou připravena všechna data pro trénování. Pomocí parametrů předáme funkci haarcascade seznam negativních obrázků, vytvořený soubor.vec a nastavíme velikost trénovacích obrázků, což jsem použil 20x20. Trénování probíhalo dokud nebylo trénování dostatečně přesné. Po dokončení trénování jsem vytvořil xml soubor, který slouží pro vyhledávání objektu v obrázcích funkcí cvhaardetectobject. Trénování jedné pozice dlaně mi zabralo na mém počítači 8 dní nepřetržitého trénování. Při použití rychlejšího počítače by se mělo trénování částečně zrychlit. 13

5 Implementace Pro naprogramování jsem se rozhodl využít programovací jazyk C s použitím knihovny OpenCV, která mi byla doporučena vedoucím, pro práci s obrazem a detekcí objektů v obraze. Pro přesnější používání funkcí jsem využil knížku o OpenCV [5], kde je tato knihovna velice dobře popsána. 5.1 Popis programu Nejdříve je třeba určit vstup, ze kterého se bude načítat stream. Možné vstupy jsou webová kamera nebo videosoubor, jehož název a cesta k němu je možno zadat při spuštění jako argument. Videosekvence je z důvodu rychlosti vyhledávání převedena do rozměrů 320x240. K lepšímu vyhledávání jsem použil barevný model RG, jehož složky jsem vypočetl z RGB barevného prostoru. Pro tento výpočet používám funkci pojmenovanou RGB2RG, která mi vypočte pomocí vzorce (4.1). Z těchto získaných hodnot jsem získal jejich průměrnou hodnotu ve funkci vypocti. Průměrná hodnota je potřebná pro výpočet hodnot kovarianční matice, které se následně zprůměrují. Z této matice vypočteme determinant, který budeme později potřebovat pro výpočet pravděpodobnosti barvy kůže. Díky vypočteným hodnotám můžeme přejít k samotnému vyhledávání barvy kůže v načítaném obraze. Za tímto účelem jsem vytvořil funkci preved, která převádí obraz na černobílý, podle pravděpodobnosti barvy kůže. Tuto pravděpodobnost vypočítáme ve funkci je_kuze za pomocí determinantu, průměrných hodnot R a G a inverzní kovarianční matici. Až projdeme celý obraz, vzniknou nám shluky bodů, kde je pravděpodobnost barvy kůže. Pomocí funkce cvsmooth použijeme mediánový filtr, který nám vyfiltruje počet shluků do větší oblasti. Nyní použijeme funkci cvfindcontours, která nám vyhledá a ohraničí spojité oblasti v obraze. V našem případě vyhledá větší počet shluků bodů. Takto získané oblasti mohou být různě velké diky šumu. Proto vybereme pouze největší, které před předáním dál ještě upravíme, abychom měli jistotu, že např. dlaň by nebyla bez horních částí prstů. Když nalezneme oblasti, kde by se mohla vyskytovat ruka, předáme je funkci detekce. V této funkci použijeme vyhledávání klasifikátoru na určenou oblast. Pokud v této oblasti nalezneme ruku, určíme o jakou pozici jde a můžeme ji použít k n-gramům. Bohužel z časových důvodů se mi nepodařilo vytvořit více klasifikátorů, které bych mohl použít pro n-gramy a pro následné určení funkce. Pro názornost jsem označil obdélníkem a zobrazil na výstupu. 14

5.2 Detekce pokožky Pro nalezení dlaně v obraze je důležité si připravit potřebná data. Pro výpočet průměrných hodnot jsem použil obr.6. Na tomto obrázku jsou různé barvy pokožky různých lidí. Obr.6 Barvy kůže Tento obrázek jsem prošel bod po bodu a hodnoty jsem uložil do souboru. Tento soubor načítám při spuštění aplikace a z hodnot RGB vypočítám potřebné hodnoty pro určení pravděpodobnosti, zda se jedná o kůži či nikoliv. Pro tento výpočet používám kovarianční matici, což je matice, která popisuje přesnost výsledků vyrovnání a jejich vzájemnou závislost. Vztahem (5.1) si vypočteme exponent, použitý pro výpočet pravděpodobnosti, z hodnot inverzní kovarianční matice, označené jako inv11,inv12,inv21 inv22, a hodnot a1 a a2 získané rozdílem průměrné hodnoty a RG zkoumaného bodu, získané pomoci vztahu (4.1). Díky vztahu (5.2) lze určit pravděpodobnost barvy kůže. a 1*( a1* inv11 + a2 * inv21) + a2 *( a1* inv12 + a2 * inv22) exp = 2 (5.1) e prob= 2 * π * exp det (5.2) Kde det je determinant vypočtený z hodnot kovarianční matice. 15

5.3 Detekce dlaně Když už máme možnost vybrat body, které odpovídají přibližně barvě kůže, převedeme obraz na černobílý. Jelikož žádný způsob není dokonalý, vytvoří se určitý šum, který je způsoben podobnosti barvě kůže. Tento šum se pokusíme částečně odfiltrovat Mediánovým filtrem o rozměrech 5x5, který patří mezi nelineární filtry. Mediánový filtr vezme pro každý pixel v obraze jeho okolí a ze všech těchto pixelů vybere tzv. medián[6], který se stává novou hodnotou zpracovaného pixelu. Na vzniklý obraz použijeme funkci cvfindcontours, která vytvoří seznam nalezených kontur. Projdeme tyto nalezené kontury a vybereme ty s největším objemem. Tyto oblasti následně předáme funkci detekce, kterou jsem vytvořil pro vyhledání dlaně v obraze. Této funkci předám originální obrázek, načítaný ze zdroje, vybranou oblast pomocí kontur a její pozici v obraze, která slouží pro následné označení, pokud najdeme dlaň. V této funkci následně použijeme funkci cvhaardetectobject, která nám vyhledá dlaň v obraze. Pokud najde funkce více objektů, což může být způsobeno nepřesným rozpoznávačem, vybereme ten s největšími rozměry, protože je vysoká pravděpodobnost, že to bude dlaň. Pokud je dlaň nalezena, lze s touto informací dále pracovat. 16

6 Výsledky řešení a vyhodnocení 6.1 Dosažené výsledky Jako první možnost jsem vyhledával objekt v obraze přímo, což vedlo k nepřesnému a nesouvislému vyhledávání dlaně. Po konzultaci s vedoucím bakalářské práce jsem začal vyhledávat podle průměrné barvy pokožky.první možnost jsem zvolil vyhledávání kůže mocí pevně daného trasholdingu, obr 7. Tato možnost nebyla příliš efektivní, protože při změně světlosti kůže nebyla ruka nalezena. Obr. 7 Vyhledávání barvy kůže pevným trasholdingem Pomocí dat z obr 6 a funkci popsaných v kapitole 5.1 jsem vytvořil černobílý obraz, obr 8. Obr 8 Obraz po převodu za pomocí pravděpodobnosti barvy kůže 17

Na tento obraz jsem pak použil různé druhy filtrů a jako nejlepší se ukázal Mediánový filtr 5x5, výsledek je na obr. 9. Obr.9 Mediánový filtr Na tento mediánový filtr jsem použil funkci pro zvýraznění obrysů spojitých částí. Obr.10 Obr. 10 Použití funkce pro zvýraznění spojitých oblastí Tato funkce vrátí seznam nalezených oblastí. Jelikož je předpoklad že dlaň bude mít jeden z největších rozměrů, budeme se zaměřovat na ty největší oblasti. Nalezené největší oblasti jsou znázorněny na Obr.11. 18

Obr. 11 Největší nalezené spojité oblasti Na obr. 11 nalezla funkce 2 oblasti s větší rozlohou. Obě oblasti nyní předáme funkci pro rozpoznávání dlaně pomocí klasifikátoru. Jelikož na oblasti ohraničené červeně žádná dlaň není, přejde na oblast ohraničenou zelenou barvou. Obr. 12. Obr. 12 Vlevo oblast šumu bez dlaně, vpravo oblast s dlaní Po předání obrazu funci se na daný obraz použijí rozpoznávače, kteří určí o jakou polohu dlaně jde. Pokud jde o otevřenou dlaň je oblast označena červeným obdélníkem, pokud jde o zdvižený ukazováček zeleným obdélníkem. Obr 13. 19

Obr. 13: Příklad označení druhu dlaně Vyhledávání na světlých, nejlépe bílých, pozadích je dosti jednoduché. Když jsem použil vyhledávání s rozmanitějším pozadím, bylo vyhledání barvy kůže a následné vyhledání dlaně dosti nepřesné. Obrázky s použitím na různých pozadích a s různými objekty jsou uvedeny na obr. 14 a 15. V případě že je na obrázku různé pozadí, může být vyhledávání složitější. Mohou se totiž objevit oblasti, které jsou z pohledu RG modelu podobné. Obr. 14 Červeně je označena větší nalezená oblast, zeleně druhá největší oblast. 20

Obr. 15 Nalezení 2 největších spojitých částí vlevo, vpravo při převodu na černobílý obraz Obr. 16 Vlevo použitý mediánový filtr na obr. 15, vpravo použití konturování 6.2 Možné rozšíření Jako možné rozšíření by bylo vhodné udělat přesnější vyhledávání dlaně v obraze. Způsob, který jsem použil, tzn. RG barevný model mi nepřišel příliš přesný. Při vyhledávání mi označil červenou košili, dlaň, dřevěnou skříň nebo došeda zbarvenou stěnu. To sice částečně lze odfiltrovat, ale pokud oblast větší tak nikoliv. Jako možné rozšíření by mohlo být používání dlouhého rukávu nejlépe v černé barvě, nebo barevně vzdálené barvě kůže. Usnadňuje to vyhledávání podle barvy kůže. 21

7 Závěr Tuto práci jsem si vybral, protože to je zajímavé a nově se rozvíjející téma. Bohužel jsem nedokázal dokončit kompletně aplikaci. Podařilo se mi nalézt v načítaném obraze dlaň i její pozici v obraze, avšak jsem již nestihl vytvořit klasifikátory pro rozpoznání, které slouží následně pro vytvoření n-gramů a následně ovládání počítače. Pokud by se podařilo nalézt přesnou a ne příliš měnící se polohu dlaně, dalo by se použít pro ovládání myši v závislosti na pohybu dlaně v obraze. Způsob, který byl mým záměrem, bylo udělat rozpoznávání ukazování prstů a její následnou kombinací, které by spustilo např. další skladbu, nebo by přepnulo televizní kanál. Pro budoucí práci by bylo vhodné vytvořit aplikaci pro vytváření trénovacích dat, které by se následně mohly použít pro přesnější natrénování. V současnosti je vše zaměřeno na detekci očí a obličeje. Postup při práci je téměř identický, ale podrobný popis trénovacích dat není dostupný. Tato aplikace by mohla naznačovat jaké by měly být data pro dobrý rozpoznávač. I přes neúspěch bych se chtěl touto tématikou dále zabývat. Částečně jsem tuto problematiku podcenil tím, že jsem neodhadl její časovou náročnou přípravu a nezbyl čas pro vytvoření více klasifikátorů. Pro další práci bych změnil barevný model a jeho funkce pro vyhledávání kůže. Další a možná lepší možností je využití preciznějšího HSV barevného modelu. 22

Literatura: [1] Wikipedia contributors. AdaBoost [online]. Wikipedia, The Free Encyclopedia; 2009 May 15, 21:27 UTC [cited 2009 May 17]. http://en.wikipedia.org/w/index.php?title=adaboost&oldid=290174411. [2] Wikipedia contributors. Haar-like features [online]. Wikipedia, The Free Encyclopedia; 2008 Sep 18, 20:50 UTC [cited 2009 May 17]. http://en.wikipedia.org/w/index.php?title=haar-like_features&oldid=239374548. [3] Papageorgiou, Oren and Poggio, "a general framework for object detection", International Conference on Computer Vision, 1998. [4] Wikipedia contributors. N-gram [online]. Wikipedia, The Free Encyclopedia; 2009 Apr 26, 19:30 UTC [cited 2009 May 17]. http://en.wikipedia.org/w/index.php?title=ngram&oldid=286283420. [5] Bradski, Gary a Kaehler, Adrian. Learning OpenCV: Computer Vision with the OpenCv Library. Sebastopol : O'Reilly Media, Inc., 2008. 978-0-596-51613-0. [6] Přispěvatelé Wikipedie, Medián [online], Wikipedie: Otevřená encyklopedie, c2009, Datum poslední revize 23. 02. 2009, 11:08 UTC, [citováno 17. 05. 2009] <http://cs.wikipedia.org/w/index.php?title=medi%c3%a1n&oldid=3653999> [7] Wikipedia contributors. Information theory [online]. Wikipedia, The Free Encyclopedia; 2009 May 12, 11:04 UTC [cited 2009 May 17]. http://en.wikipedia.org/w/index.php?title=information_theory&oldid=289440857. [8] Wikipedia contributors. Gesture [online]. Wikipedia, The Free Encyclopedia; 2009 May 8, 15:27 UTC [cited 2009 May 17].: http://en.wikipedia.org/w/index.php?title=gesture&oldid=288689978.