woensdag 28 oktober 2009

Gebaren

2 soorten van gebaren:
directe gebaren (direct gestures): gebaren die objecten direct kunnen manipuleren:
* scaleren (--> pinching): 2 vingers van elkaar weg of naar elkaar toe bewegen om in te zoomen of uit te zoomen
* roteren: 2 vingers in roteren rond eenzelfde middelpunt
* transleren: drag-and-drop met 1 vinger ipv muis
Deze categorie van gebaren is eerder beperkt, want ze hangen sterk af van het object dat gemanipuleerd wordt. Meestal kan een object, dat in dit geval eigenlijk een 2D-beeld is, slechts op een eindig aantal manieren gemanipuleerd worden, zoals hierboven beschreven.

symbolische gebaren (symbolic gestures): patronen die gebaseerd zijn op de locatie en traject van het gebaar. Zo kan er aan een bepaalde bewegingssequentie van 1 of meerdere vingers een actie gekoppeld worden. Een recognition engine is typisch in staat voorgedefinieerde patronen te herkennen en hierbij een opdracht te geven om de actie uit te voeren gekoppeld aan dit patroon.
Deze categorie laat toe eigenlijk een oneindig aantal patronen te definiƫren. Zo zou er een bepaalde functie opgeroepen kunnen worden als er een bepaald nummer getekend wordt.

Hoe gebaren herkennen?
De meest gangbare modellen om patronen te herkennen zijn de volgende 3: neural netwerken, modellen gebaseerd op regio en modellen gebaseerd op richting.
Neural netwerken worden vaak gebruikt voor patroonherkenning. Men gebruikt dan feedforward neural networks die 3 lagen hebben: input, hidden en output layer. Een groot nadeel van dit model is dat initieel de knopen van de hidden layer gevuld worden met random gewichten zodanig dat dit model eerst getraind moet worden om een accurate herkenning te kunnen doen.
Een regiogebaseerd herkenningsmodel houdt initieel een 3x3 grid bij die kan scaleren naargelang het afgelegde pad van het gebaar. Voor elke cel in het grid slaat het model op of een gebaar langs die cel gepasseerd is of niet. De nummers van de cellen waar een gebaar gepasseerd is worden opgeslagen in een string die dan vergeleken kan worden met de gebaren in de database.
Een richtingsgebaseerd herkenningsmodel beschrijft een pad van een gebaar als een opeenvolging van richtingen. Als men bv. 8 richtingen (zoals de 8 windrichtingen) definieert met het oosten als richting 0 en zo in wijzerszin tot en met 7, dan zou de letter 'N' geschreven kunnen worden als '616'. Twee keer naar boven (6) en 1 keer schuin naar beneden (1). De bekomen string van richtingen gaat men dan vergelijken met de patronen uit de database met behulp van de Levenshtein-afstand. Het patroon waarvoor de laagste kost berekend werd, wordt dan geselecteerd. Om valse positieven te vermijden kan er een waarde voor maximale kost ingesteld worden. Dit laatste model heeft als voordeel dat het relatief gemakkelijk te implementeren is.

Geen opmerkingen:

Een reactie posten