Documents et code utile au démarrage

Questions préliminaires

  1. 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?
  2. Après le ré-échantillonnage quel est le nombre de points du tracé de geste ré-échantillonné?
  3. Après le ré-échantillonnage que pouvez-vous dire de la longueur du tracé ré-échantillonné?
  4. A quoi sert l'étape de rotation à zéro? Que se passe-t-il lorsque cette étape n'est pas effectuée?
  5. Quelle est la transformation à appliquer à un tracé de geste pour l'étape de redimensionnement? Ecrire la matrice correspondant à cette transformation.
  6. Quelle est la transformation à appliquer à un tracé de geste pour l'étape de recentrage? Ecrire la matrice correspondant à cette transformation.

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.

  1. 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.
  2. 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éthode length écrite précédemment.
  3. 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.

Rotation

  1. Dans la classe geste, écrire une méthode qui calcule le centre de gravité du tracé de geste.
  2. Ecrire une méthode qui calcule l'orientation du geste selon le principe vu en cours.
  3. Ecrire une méthode qui rotateToZero applique une rotation normalisante à un geste et construit un nouveau geste à partir du résultat de cette rotation.
  4. 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.

Réduction de taille

  1. 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.
  2. 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.
  3. 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.

Recentrage

  1. Dans la classe geste, écrire une méthode qui calcule la transformation à appliquer à un geste pour le recentrer sur son centre de gravité.
  2. 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.
  3. 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.

Calcul de similarité et appariemment

  1. Dans la classe geste, écrire une méthode dissimilarity, qui calcule la dissimilarité entre deux gestes.
  2. Ecrire une méthode similarity, qui utilise la précédente pour calculer la similarité entre un geste et un template.
  3. Tester ces méthodes sur les différentes représentations réduites d'un même template.
  4. Tester la similarité sur quelques candidats et un template.