Hlavním cílem při rozeznávání gesta ruky je určit následující: umístění ruky, držení nebo póza ruky nebo vyjádření gesta.
Rozeznávání gest může být realizováno dvěma způsoby. Buď použitím datové rukavice, která převádí informaci o pohybu končetiny do elektronické podoby, nebo je možné využít přístup založený na pozorování, tj. kamera slouží jako lidské oko zaznamenávající polohy těla, které se následně extrahují při zpracování obrazu [5].
Je zřejmé, že první způsob přináší přesnější výsledky, jelikož se jedná o přímé a přesné pozorování skutečného stavu příslušné části lidského těla, na které se nachází oblečení typu datová rukavice.
Na druhé straně, přístup založený na pozorování neklade žádné další požadavky na zařízení pro koncového uživatele (s výjimkou kamery), takže je tento přístup vhodný pro všeobecné použití [5].
Použití datové rukavice je poměrně nepohodlné, pokud jde o komfort uživatele. Vybavení potřebné pro využívání této metody by bylo nepřijatelně nákladné pro většinu běžných zákazníků, takže je uplatnitelná pouze pro speciální účely (např. digitalizace pohybu pro animované filmy, tvorba počítačových her apod.).
Nevýhodou metody založené na pozorování spočívá v jeho algoritmické složitosti, kdy je potřebné značné množství času a výpočetního výkonu pro extrakci a extrapolaci pohybu těla [5].
Existují však rozličné algoritmy, které se zaměřují na různé projevy gestikulující osoby (a vycházejí tím z určitých předpokladů). Všeobecně platí, že mohou být rozděleny do dvou kategorií, a to na metody založené na vzhledu a na 3D metody založené na principu analýzy modelu. 3D metody založené na principu analýzy modelu porovnávají vstupní parametry končetiny s 2D projekcí trojrozměrného modelu končetiny. Přístup založený na vzhledu využívá obrazové příznaky pro modelování vizuálního vzhledu končetiny a porovnává jej s extrahovanými příznaky ze vstupního videa [5].
V kapitole 4.1 byly definovány tři typy gest. Pro detekci statických gest (tj. pózy) se používá všeobecný klasifikátor. Pod pojmem klasifikátor rozumějme – prvek nebo vlastnost, na základě kterého rozhodneme o zařazení do skupiny nebo kategorie. Takže klasifikátor nás informuje o tom, které gesto (nebo póza) bylo rozpoznané. Avšak u dynamických gest je třeba zohlednit i časové hledisko a proto rozeznání vyžaduje techniky, které zpracují i tuto dimenzi, např. skryté Markovovské modely HMM. Jiný způsob je pomocí pohybových modelů.
Některé z technik používaných pro statické (a dynamické) rozeznání gest jsou shluková analýza, algoritmus KNN (k-Nearest Neighbors), metoda strojového učení SVM (Support Vector Machines), a už vzpomínaný HMM algoritmus, DTW algoritmus či neuronové sítě [3].
Pro rychlejší zpracování dat se v procesu rozeznávání gest nepracuje s celým obrazem.
Poté, co je automaticky detekována ruka, označí se oblast okolo ní a dále se zpracovává jen ona. Tím se sníží výpočetní náročnost. Získané vzdálenosti se převedou na odstíny šedé a získáme tak obrys ruky.
Následuje popis dvou metod používaných v procesu rozeznávání.
Metoda konvexních nedostatků
V prvním kroku je nutné oddělit ruku od pozadí obrazu. Oddělení je možné udělat z hloubkového obrazu, kde lze určit, který pixel patří ruce a který ne. Druhým krokem je určení obrysu (tzv. kontury) ruky.
Tvary mnohých složitých objektů jsou dobře charakterizované pomocí tzv. konvexních nedostatků. Obrázek 4.3 znázorňuje koncept konvexních defektů na obrázku ruky. Konvexní obal je zobrazen jako tmavá čára okolo ruky, oblasti označené A až H jsou „nedostatky“ patřící k tomuto obalu. Jak je vidět, tyto konvexní nedostatky charakterizují též stav ruky. Algoritmus vrátí souřadnice tří bodů, počáteční bod, nejhlubší bod a koncový bod (viz Obr. 4.4). Nejhlubší bod je možné chápat jako maximální vzdálenost mezi obalem a obrysem ruky.
Cílem algoritmu je nalezení bodu na prstě, který je nejdále od středu ruky. Prvním krokem je odstranit všechny nedostatky, jejichž výška je menší než zadaná hodnota. Potom se odstraní nedostatky, které mají vzdálenost mezi počátečním bodem a maximálním bodem větší než zadaná hodnota, která je definována dynamicky (pokud jsou totiž dva body příliš daleko, znamená to, že nemohou představovat prst). Dále jsou také odstraněny nedostatky, které mají vzdálenost mezi počátečním a hloubkovým bodem menší, než je stanovená hodnota. Tato hodnota se mění dynamicky podle velikosti oblasti, kde je detekována ruka (viz Obr. 4.5). Posledním krokem je odstranění všech nedostatků, které se vyskytují pod zápěstím.
Rozeznávání gesta ruky založené na částech
V prvním kroku tohoto algoritmu, se extrahují části údajů (datové segmenty) obsahující ruku a převedou se na binární obraz. Střed dlaně (Obr. 4.6) se vypočítá z vnitřního kruhu a přidáním bodu na obal kontury, která patří ruce a má maximální vzdálenost od zjištěného nedostatku.
Všechny body z kontury ruky jsou mapované na osu X. Y-ova osa potom opisuje relativní vzdálenost jednotlivých bodů od středu dlaně. Všechny mapované body vytvoří křivku (Obr. 4.7).
Dalším krokem algoritmu je analýza křivky s cílem najít její lokální maximum. Potom, co je dokončena analýza křivky a nalezeno maximum, začnou se hledat prsty. Vzdálenost každého maxima je porovnaná s nastavenou prahovou hodnotou. Každý prst má specifickou váhu a na jejím základě a na základě vztahů mezi prsty jsou prsty rozeznané (vztah je porovnání váhy s danými hodnotami a na základě toho je znám počet prstů, tedy pokud váha < 1,5× průměrná váha – segment obsahuje jeden prst, atd.). Tento algoritmus funguje, i pokud jsou prsty spojené (Obr. 4.8).
Dynamická gesta zajišťují přístup uživatelů k soukromému obsahu nebo mu umožňují ovládání systému nebo aplikace. Je možné je použít i namísto hesla. V počátcích rozeznávání gest byly většinou používány neuronové sítě a genetické algoritmy.
Tyto metody měly přijatelnou úspěšnost rozeznávání, ale největší nevýhodou byl požadovaný výpočetní výkon a čas potřebný na trénování neuronových sítí. Oba tyto aspekty byly nepřijatelně vysoké pro užití v praktických aplikacích.
V dnešní době se používají na rozeznání gest nové techniky. Byly vyvinuty algoritmy, které nevyžadují neuronové sítě, například vyhledávání v zlatém řezu (Golden Section Search), algoritmus přírůstkového rozeznávání (Incremental Recognition Algorithm) a pravděpodobnostní modely jakými jsou skryté Markovovské modely HMM. Pro zvýšení úspěšnosti již zmíněných algoritmů se může použít strojové učení (tzv. Machine Learning). V posledních letech jsou velmi populární HMM metody. Hlavním důvodem je to, že HMM přístup je velmi dobře známý a užívaný v mnohých oblastech.
Algoritmus navržený Kristenssonem a Denbym [4], původně navržený pro rozeznávání tahů digitálním perem a na dotykovém displeji je možné rozšířit i na dynamická gesta.
V tomto algoritmu je definována šablona jako soubor segmentů popisujících dané gesto. Je zřejmé, že rozeznání gesta z dané sady gest, kde jsou gesta dostatečně vzájemně odlišitelná, může být úspěšné pouze v případě, pokud byla vykonána dostatečně velká část z daného gesta (Obr. 4.9).
Používání gest se postupně rozšířilo o tahová gesta. Tento typ gest přináší velmi přirozený a pohodlný způsob ovládání především pro koncového uživatele. Tahová gesta jsou určena pro rychlé a zběžné procházení menu, programů a galerií a umožňují 4 směry pohybu pro každou ruku a několik kombinací obouruč. Metoda kruhového rozeznávání dynamických gest CDGR (Circle Dynamic Gesture Recognition) publikovaná v [1], je založena na detekci ruky, rychlosti pohybu a vzdálenosti. Pokud ruka vykoná rychlejší pohyb a vnitřní kruh projde do vnějšího kruhu, systém zpracuje tento pohyb a určí typ gesta. Gesto je dáno úhlem vykonaného pohybu od středu do zóny vnějšího kruhu. Možná gesta jsou: přejít tahem vlevo, vpravo, nahoru a dolů. To stejné gesto může být vykonáno i oběma rukama. Uživatel může též vykonat gesto přiblížení a oddálení (Obr. 4.10).