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

Documents pareils