4 Navigácia pomocou gest
4.4 Techniky pre rozpoznávanie základných gest

Celkovým cieľom pri rozpoznaní gesta rukou je určiť nasledovné: umiestnenie ruky, držanie alebo póza ruky alebo vyjadrenie gesta.

Rozpoznávanie gest môže byť vykonané dvoma spôsobmi. Buď použitím dátovej rukavice, ktorá prevádza informáciu o ohybe končatiny do elektronickej formy alebo sa použije prístup založený na pozorovaní, čiže kamera slúži ako ľudské oko zaznamenávajúce polohy tela, ktoré sa potom extrahujú pri spracovaní obrazu [5].

Je zrejmé, že prvý spôsob prináša presnejšie výsledky, keďže sa jedná o priame a presné pozorovanie skutočného stavu príslušnej časti ľudského tela, na ktorej sa nachádza oblečenie typu dátová rukavica.

Na druhej strane prístup založený na pozorovaní nemá žiadne ďalšie požiadavky na zariadenie pre koncového používateľa (s výnimkou kamery), takže je vhodný pre všeobecné použitie [5].

Použitie dátovej rukavice je pomerne nepohodlné, pokiaľ ide o komfort používateľa. Tiež vybavenie potrebné na použitie tejto metódy by bolo neprijateľne nákladné pre väčšinu štandardných zákazníkov, takže je vhodný iba pre špeciálne použitie (napr. digitalízácii pohybu pre animované filmy, tvorbe počítačových hier a pod.).

Nevýhoda metódy založenej na pozorovaní spočíva v algoritmickej zložitosti, kde je potrebné značné množstvo času a výpočtového výkonu pre extrakciu a extrapoláciu pohybu tela [5].

Existujú viaceré algoritmy, ktoré sa zameriavajú na rôzne aspekty gestikulujúcej osoby a vychádzajú z rôznych predpokladov. Všeobecne platí, že môžu byť rozdelené do dvoch kategórií, a to metódy založené na vzhľade a 3D metódy založené na princípe analýzy modelu. 3D metódy založené na princípe analýzy modelu porovnávajú vstupné parametre končatiny s 2D projekciou trojrozmerného modelu končatiny. Prístup založený na vzhľade využíva obrazové príznaky na modelovanie vizuálneho vzhľadu končatiny a porovnáva ho s extrahovanými príznakmi zo vstupného videa [5].

V sekcii 4.1 boli definované tri typy gest. Na detekciu statických gest (t.j. pózy) sa používa všeobecný klasifikátor. Pod klasifikátorom rozumieme – prvok alebo vlastnosť, na základe ktorého rozhodneme o zaradení do skupiny alebo kategórie. Takže klasifikátor nám hovorí o tom, ktoré gesto (alebo póza) bolo rozpoznané. Avšak pri dynamických gestách treba zohľadniť aj časové hľadisko a preto rozpoznanie vyžaduje techniky, ktoré spracúvajú aj túto dimenziu, napr. skryté Markovove modely (HMM). Iný spôsob je pomocou pohybových modelov.

Niektoré z techník používaných pre statické (a dynamické) rozpoznanie gest sú K-means algoritmus, KNN, SVM, už spomínaný HMM algoritmus, DTW algoritmus alebo neurónové siete [3].

Techniky použité pre rozpoznanie statických gest

Pre rýchlejšie spracovanie dát sa v procese rozpoznávania gest nepracuje s celým obrazom.

Potom, čo je automaticky detekovaná ruka, označí sa oblasť okolo nej a ďalej sa spracováva iba táto oblasť . Tým sa zníži výpočtová náročnosť. Získané vzdialenosti sa prevedú do odtieňov sivej a získame obrys ruky.

Nasleduje popis dvoch metód používaných v procese rozpoznávania.

Metóda konvexných nedostatkov

V prvom kroku sa musí oddeliť ruka od pozadia obrazu. Oddelenie sa môže spraviť z hĺbkového obrazu kde sa určí, ktorý pixel patrí ruke a ktorý nie. Druhým krokom je určenie obrysu (kontúry) ruky.

Tvary mnohých zložitých objektov sú dobre charakterizované pomocou konvexných nedostatkov. Fig. 4.3 znázorňuje koncept konvexných nedostatkov na obrázku ruky. Konvexný obal je zobrazený ako tmavá čiara okolo ruky, oblasti označené A až H sú "nedostatky" patriace k tomuto obalu. Ako je vidieť, tieto konvexné nedostatky charakterizujú tiež stav ruky. Algoritmus vráti súradnice troch bodov, počiatočný bod, najhlbší bodkoncový bod (Fig. 4.4). Najhlbší bod možno chápať ako maximálnu vzdialenosť medzi obalom a obrysom ruky.

image
Fig. 4.3 – Konvexný obal vykreslený ako tmavá čiara okolo ruky
image
Fig. 4.4 – Označená oblasť sú konvexné nedostatky a tri body: počiatočný bod (vľavo), najhlbší bod (dolu) a koncový bod (hore)

Cieľom algoritmu je nájdenie bodu na prste, ktorý je najďalej od stredu ruky. Prvým krokom je odstrániť všetky nedostatky, ktorých výška je menšia ako zadaná hodnota. Potom sa odstránia nedostatky, ktoré majú vzdialenosť medzi počiatočným bodom a maximálnym bodom viac ako je zadaná hodnota, ktorá je definovaná dynamicky (ak sú dva body príliš ďaleko znamená to, že nemôžu predstavovať prst). Ďalej sú tiež odstránené nedostatky, ktoré majú vzdialenosť medzi počiatočným a hĺbkovým bodom menej, než je stanovená hodnota. Táto hodnota sa mení dynamicky podľa veľkosti oblasti, kde je detekovaná ruka (Fig. 4.5). Posledným krokom je odstrániť všetky nedostatky, ktoré sa vyskytujú pod zápästím.

image
Fig. 4.5 – Znázornenie logiky používajúcej trojuholníky na minimalizovanie nedostatkov (obrázok vľavo hore znázorňuje maximálne body, obrázok vpravo hore znázorňuje hĺbkové body, obrázok vľavo dolu znázorňuje minimálne body a obrázok vpravo dolu znázorňuje výsledný trojuholník)

Rozpoznávanie gesta ruky založené na častiach

V prvom kroku tohto algoritmu sa extrahujú časti údajov (dátové segmenty) obsahujúce ruku a prevedú sa na binárny obraz. Stred dlane (Fig. 4.6) sa vypočíta z vnútorného kruhu a pridaním bodu na obal kontúry, ktorá patrí ruke a má maximálnu vzdialenosť od zisteného nedostatku.

image
Fig. 4.6 – Hľadanie stredu dlane

Všetky body z kontúry ruky sú mapované na osi X. Y-ová os potom opisuje relatívnu vzdialenosť jednotlivých bodov od stredu dlane. Všetky mapované body vytvoria krivku (Fig. 4.7).

image
Fig. 4.7 – Krivková reprezentácia

Ďalším krokom algoritmu je analýza krivky s cieľom nájsť lokálne maximum. Potom, čo je dokončená analýza krivky, nájdené maximum, začnú sa hľadať prsty. Vzdialenosť každého maxima je porovnaná s nastavenou prahovou hodnotou. Každý prst má špecifickú váhu a na jej základe a na základe vzťahov medzi prstami sú prsty rozpoznané (vzťah je porovnanie váhy s danými hodnotami a na základe toho je známy počet prstov, teda ak váha <1,5x priemerná váha - segment obsahuje jeden prst, atď.). Tento algoritmus funguje aj keď sú prsty spojené (Fig. 4.8).

image
Fig. 4.8 –Detekované prsty

Techniky použité pre rozpoznanie dynamických gest

Dynamické gestá zaisťujú prístup používateľov k súkromnému obsahu alebo mu umožnia ovládanie systému alebo aplikácie. Možno ich použiť aj namiesto hesla. V začiatkoch rozpoznávania gest boli väčšinou používané neurónové siete a genetické algoritmy.

Tieto metódy mali prijateľnú úspešnosť rozpoznávania, ale najväčšou nevýhodou bol požadovaný výpočtový výkon a čas potrebný na trénovanie neurónových sietí. Obidva tieto aspekty boli neprijateľne vysoké pre praktické aplikácie.

V dnešnej dobe sa používajú na rozpoznanie gest nové techniky. Boli vyvinuté algoritmy, ktoré nevyžadujú neurónové siete, napríklad Vyhľadávanie v zlatom reze (Golden Section Search), Algoritmus prírastkového rozpoznávania (Incremental Recognition Algorithm) a pravdepodobnostné modely ako skryté Markovove modely (HMM). Na zvýšenie úspešnosti spomínaných algoritmov sa môže použiť strojové učenie (tzv. Machine learning). V posledných rokoch sú veľmi populárne HMM metódy. Hlavným dôvodom je to, že HMM prístup je veľmi dobre známy a používaný v mnohých oblastiach.

Algoritmus navrhnutý Kristensson a Denby [4], pôvodne navrhnutý pre rozpoznávanie ťahov digitálnym perom a na dotykovom displeji, je možné rozšíriť aj pre dynamické gestá.

V tomto algoritme je definovaná šablóna ako súbor segmentov popisujúcich gesto. Je zrejmé, že rozpoznanie gesta z danej sady gest, kde sú gestá dostatočne vzájomne odlíšiteľné, môže byť úspešné iba ak bola vykonaná dostatočne veľká časť z gesta (Fig. 4.9).

image
Fig. 4.9 – Náhľad testovanej aplikácie. Červená čiara znázorňuje vykonané gesto. Šablóny pod obrazom predstavujú najpravdepodobnejšie vykonané gestá (zľava doprava možno vidieť tvary štvorec, kruh a trojuholník. Pri každom útvare je vidieť aj hodnotu pravdepodobnosti s akou bolo gesto vykonané).

Používanie gest sa postupne rozšírilo o ťahové gestá. Tento typ gest prináša veľmi prirodzený a pohodlný spôsob najmä pre koncového používateľa. Ťahové gestá sú určené pre rýchle a bežné prezeranie v ponuke, v programoch a galériách a obsahujú 4 smery pre každú ruku a niekoľko kombinácií vľavo-vpravo. Tzv. metóda Kruhové rozpoznávanie dynamických gest (Circle Dynamic Gesture Recognition) - CDGR publikovaná v [1], je založená na detekcii ruky, rýchlosti pohybu a vzdialenosti. Ak ruka vykoná rýchlejší pohyb a vnútorný kruh prejde do vonkajšieho kruhu, systém spracuje tento pohyb a určí typ gesta. Gesto je dané uhlom vykonaného pohybu od polovice do vonkajšieho kruhu. Možné gestá sú: prejsť ťahom vľavo, vpravo, hore a dole. To iste gesto môže byť vykonané obidvoma rukami. Používateľ môže tiež vykonať gesto priblíženia a oddialenia (Fig. 4.10).

image
Fig. 4.10 – Kruhové rozpoznávanie dynamických gest (CDGR circle dynamic gesture recognition)