reconnaissance de gestes
Transcription
reconnaissance de gestes
1 RECONNAISSANCE DE GESTES Géry Casiez http://www.lifl.fr/~casiez PJE Interface Multitouch - Master 1 informatique Minority report 2 Iron man 3 Plan 4 ! ! ! Objectifs Technique libstroke Technique $1 Objectifs 5 ! ! Reconnaître des gestes réalisés par l’utilisateur pour les associer à des commandes On se limite aux gestes un seul trait (unistroke) Multistroke Unistroke - Graffiti (Palm OS) Technique de reconnaissance de gestes élémentaires: libstroke (1997) 6 ! Librairie disponible dans FVWM http://etla.net/libstroke/ ! Les gestes sont décrits par des séquences de chiffres Libstroke: algorithme 7 ! 1) détermination de la boite englobante (bounding box) à partir de minx, maxx,miny, maxy 2) définition d’une boite carrée en utilisant la plus grande dimension de la boite englobante et centrage du geste 3) division de la boite en 9 cellules 4) étiquetage des points 5) factorisation 6) comparaison aux motifs enregistrés ! Extension Firefox: Mouse Gestures Redox ! ! ! ! ! Techniques de reconnaissance 8 ! ! ! ! ! Classifieurs statistiques Modèles de Markov cachés Réseaux de neurones Méthodes ad-hoc 2 techniques les plus utilisées: Rubine et Dynamic Time Warping (DTW) Techniques de reconnaissance 9 ! ! ! ! $1 recognizer Méthode simple à implémenter et donnant des taux de reconnaissance comparables à Rubine et DTW 1 seul exemple suffit Technique publiée dans l’article de recherche "Gestures without Librairies, Toolkits or Training: A $1 Recognizer for User Interface Prototypes" à la conférence User Interface Sofware and Technology (UIST) en 2007 (écrit par Wobbrock, Wilson et Li) $1 recognizer 10 Algorithme 11 ! 1) L’utilisateur réalise un geste ! Le ! ! geste est représenté par une liste ordonnée de points 2) Ce geste est comparé à un ensemble de gestes de référence (templates) en utilisant une mesure de distance euclidienne 3) Le geste reconnu est celui pour lequel cette distance est minimale Problèmes posés 12 ! Le nombre de points pour définir un geste va dépendre de la vitesse d’exécution, de la fréquence d’échantillonnage du périphérique… Problèmes posés 13 ! Un geste peut être réalisé à différentes positions sur l’interface, Suivant différentes orientations ! Et différentes échelles ! 4 étapes 14 ! ! ! ! 1) Ré-échantillonnage du geste pour être invariant à la fréquence d’acquisition et la vitesse d’exécution du geste 2) Ré-orientation du geste pour être invariant à l’orientation suivant laquelle il est exécuté 3) Mise à l’échelle et translation pour être invariant à l’échelle de réalisation du geste et la position à laquelle il est exécuté 4) Reconnaissance du geste 1ère étape: Ré-échantillonnage 15 ! ! ! Le geste est défini par M points ordonnés On veut N points ordonnés équidistants les uns des autres N = 64 1ère étape: Ré-échantillonnage 16 ! 1) Calcul de la distance I entre 2 points: ! Calcul de la longueur totale du geste ! I = longueur / (N-1) ! ! 2) On parcourt le chemin du geste d’origine en déterminant les points par interpolation linéaire => permet lors de l’étape de reconnaissance de calculer la distance entre les gestes en prenant les points 2 à 2. 1ère étape: Ré-échantillonnage 17 ! Interpolation linéaire 1ère étape: Ré-échantillonnage 18 p37 p35 p34 p36 p38 p39 p40 1ère étape: Ré-échantillonnage 19 2e étape: Rotation « indicative » 20 ! ! ! 1) Calcul du centre du geste (centroïde) 2) Calcul de l’angle entre le centroïde, le premier point et l’horizontale 3) Rotation des points en utilisant cet angle 2e étape: Rotation « indicative » 21 ! Rappel de la semaine dernière 2e étape: Rotation « indicative » 22 3e étape: mise à l’échelle et translation 23 ! ! Mise à l’échelle non uniforme: on ramène le geste à un carré de référence 1) détermination de la boîte englobante du geste (bounding box) ! Détermination ! ! de minx, maxx, miny, maxy 2) Mise à l’échelle 3) Translation à l’origine 3e étape: mise à l’échelle et translation 24 4e étape: reconnaissance 25 ! Un geste candidat C est comparé à chacun des gestes enregistrés (templates) Ti pour calculer la distance moyenne di entre les points correspondants ! Le template avec la distance moyenne la plus faible est le résultat de la reconnaissance La distance est tranformée en score entre 0 et 1 ! 4e étape: reconnaissance 26 ! ! L’utilisation de l’angle indicatif ne garantit pas que le geste candidat C sera parfaitement aligné avec un template On cherche à ajuster l’angle de rotation de C pour minimiser la distance entre C et Ti 4e étape: reconnaissance 27 ! ! Golden Section Search: Recherche d’une valeur minimale pour une fonction unimodale Similaire à la recherche dichotomique a+c = b c/a=a/b phi=b/a phi^2-phi-1=0 phi1 = (1+sqrt(5))/2 phi2 = (-1+sqrt(5))/2 x2=(1-phi)x1+phi x4 X3=phi x1+(1-phi)x4 4e étape: reconnaissance 28 4e étape: reconnaissance 29 4e étape: reconnaissance 30 Limitations 31 ! ! Pas possible de distinguer un carré d’un rectangle, une ellipse d’un cercle, une flèche vers le bas d’une flèche vers le haut Pas possible de reconnaître des gestes « 1D » Mise en application 32 ! ! ! Tenir une image avec 2 doigts et faire un « delete » gesture pour la faire disparaître Exécuter un rectangle dans le conteneur pour y faire apparaître un nouvelle image Exécuter un cercle dans le conteneur pour remettre les images dans leur configuration d’origine