Documents et code utile au démarrage
- [1] Wobbrock, J.O., Wilson, A. and Li, Y., Gestures without libraries, toolkits or training: a $1 recognizer for user interface prototypes, UIST'07. 2007. p. 159-168. [pdf] [autres ressources]
- Programme de démarrage pour ce tp
- L'algorithme de ré-échantillonnage est décrit par les auteurs dans l'annexe de l'article [1], y a-t-il des questions sur cette description? L'algorithme prend-il en considération le cas où le nombre de points dans le tracé d'origine est moins grand que le nombre de points après ré-échantillonnage?
- Après le ré-échantillonnage quel est le nombre de points du tracé de geste ré-échantillonné?
- Après le ré-échantillonnage que pouvez-vous dire de la longueur du tracé ré-échantillonné?
- A quoi sert l'étape de rotation à zéro? Que se passe-t-il lorsque cette étape n'est pas effectuée?
- Quelle est la transformation à appliquer à un tracé de geste pour l'étape de redimensionnement? Ecrire la matrice correspondant à cette transformation.
- Quelle est la transformation à appliquer à un tracé de geste pour l'étape de recentrage? Ecrire la matrice correspondant à cette transformation.
- Dans la classe geste, écrire une méthode
length
, qui calcule la longueur totale de la polyligne formée par les points du tracé original. - Ecrire une méthode
resample
de la classe geste qui calcule le geste ré-échantilloné en utilisant le principe de l'algorithme donné en cours et la méthodelength
écrite précédemment. - Tester le rééchantillonage sur quelques cas: en traçant plusieurs fois le même geste à différentes vitesses et différentes échelles, en affichant le geste ré-échantilloné, le nombre de points dans le geste d'origine et les longueurs respectives des gestes d'origine et ré-échantillonées.
- Dans la classe geste, écrire une méthode qui calcule le centre de gravité du tracé de geste.
- Ecrire une méthode qui calcule l'orientation du geste selon le principe vu en cours.
- Ecrire une méthode qui
rotateToZero
applique une rotation normalisante à un geste et construit un nouveau geste à partir du résultat de cette rotation. - Tester la rotation normalisante sur quelques cas: en traçant plusieurs fois le même geste avec différentes orientations et en affichant le geste après rotation normalisante et l'orientation trouvée pour chaque geste d'origine.
- Dans la classe geste, écrire une méthode, qui calcule la transformation à appliquer à un geste pour réduire sa dimension à un carré dont la longueur des côtés est donnée en paramètre.
- Ecrire une méthode
reduceSize
qui construit un nouveau geste à partir du résultat de cette l'application de la transformation précédente sur les points. - Tester le changement de dimension sur quelques cas: en traçant plusieurs fois le même geste à différentes tailles et en affichant le geste après réduction de taille de chaque geste d'origine.
- Dans la classe geste, écrire une méthode qui calcule la transformation à appliquer à un geste pour le recentrer sur son centre de gravité.
- Ecrire une méthode
centerOnGravity
qui construit un nouveau geste à partir du résultat de cette l'application de la transformation précédente sur les points. - Tester le recentrage sur quelques cas: en traçant plusieurs fois le même geste à différentes position et en affichant le geste après recentrage.
- Dans la classe geste, écrire une méthode
dissimilarity
, qui calcule la dissimilarité entre deux gestes. - Ecrire une méthode
similarity
, qui utilise la précédente pour calculer la similarité entre un geste et un template. - Tester ces méthodes sur les différentes représentations réduites d'un même template.
- Tester la similarité sur quelques candidats et un template.
Questions préliminaires
Ré-échantillonage
Comprendre le programme donné comme point de départ. Les étapes de réduction sont à écrire dans la classe Geste. Un échantillon de tracés se trouve dans le répertoire data du programme de démarrage. Les méthodes d'import/export permettent d'afficher les gestes et de les utiliser pour les tests.