Interfaces perceptuelles Interaction avec une caméra
Comment enlever le bruit dans une image de caméra ? Calculer la moyenne des N images les plus récentes On a besoin de stocker les N images le plus récentes Désavantages: temps de calcul O(N), et mémoire requis O(N) Exemple du résultat de calculer une moyenne d’images: http://marcodsouza.blogspot.com/2009/04/reduce-noise-in-your-digital-photos.html
Comment enlever le bruit dans une image de caméra ? (suite) Calculer une moyenne des images, avec un poids qui diminue de façon exponentielle avec le temps: L’image la plus récente a alors un poids de α, l’image précédente un poids de (1-α)α, la précédente (1-α)2α, la précédente (1-α)3α, etc. On a seulement besoin de stocker la moyenne précédente, et l’image actuelle, pour calculer la nouvelle moyenne Temps de calcul O(1), mémoire requis O(1) (si on laisse tomber la résolution des images comme étant des constantes)
Une première technique pour reconnaître des gestes de mains
Le gradient Le gradient est un vecteur calculé à partir d’une fonction scalaire Les changements sont plus rapides dans la direction du gradient. Autrement dit, le gradient est perpendiculaire aux “arêtes” (“edges”, ou “edgels”) dans l’image.
Pour estimer l’orientation de l’arête passant par un pixel : Utiliser un estimé du gradient: L’angle du vecteur donne l’orientation La norme du vecteur est proportionnelle au contrast entre les deux côtés de l’arête
Exemples de gradients
Histogrammes d’orientation : apprentissage Freeman et al. 1998, “Computer Vision for Interactive Computer Graphics”
Histogrammes d’orientation : reconnaissance NB: Un retour visuel de la confiance aide à déboguer et à apprendre à exprimer le bon geste. Freeman et al. 1998, “Computer Vision for Interactive Computer Graphics”
Histogrammes d’orientation : Cas problématiques pour une main Rotation globale de la main Des ensembles de doigts différents, mais orientés dans la même direction Freeman et al. 1998, “Computer Vision for Interactive Computer Graphics” La main n’occupe pas la majorité de l’image
Une deuxième technique pour reconnaître une main (sur un fond monochrome) D’un article de Malik et Laszlo (2004) http://doi.acm.org/10.1145/1027933.1027980
Deuxième technique Comment distinguer les pixels du fond des pixels de la main ? Il faut “segmenter” l’image en deux parties: l’avant plan (“foreground”) et l’arrière plan (“background”)
Deuxième technique
Deuxième technique
Deuxième technique
Deuxième technique
Deuxième technique Questions: - Est-ce que le seuil à utiliser pourrait changer à mesure que les conditions d’éclairage changent, ou avec différents utilisateurs? - Comment trouver un bon seuil de façon automatique?
Deuxième technique (Ici, avec du bruit rajouté manuellement.)
Deuxième technique On identifie chaque region de pixels connexes avec une couleur unique (ceci peut se faire, par exemple, avec des opérations de “floodfill”).
Deuxième technique On élimine toutes les régions avec une aire plus petite qu’un seuil, et on garde au maximum les deux régions les plus grandes. Question: comment identifier la main gauche et la main droite ?
Deuxième technique Pourquoi un fond noir ? Et un fond vert ou bleu ? Avantages: fonctionne assez bien même avec des ombres Et un fond vert ou bleu ? Pourrait fonctionner mieux si la peau a une couleur foncée
Deuxième technique Comment trouver les doigts ?
Deuxième technique Suivre le contour des pixels d’avant plan, et évaluer l’angle entre les pixels i-k, i, et i+k …
Deuxième technique
Deuxième technique
Deuxième technique
Deuxième technique angle position i Comment trouver le bout de chaque doigt ?
Deuxième technique Comment trouver la direction de chaque doigt ? D’un article de Malik et Laszlo (2004) http://doi.acm.org/10.1145/1027933.1027980
TAFFI (Thumb and Fore-Finger Interface; Andy Wilson 2006) http://research.microsoft.com/en-us/um/people/awilson/publications/wilsonuist2006/wilsonuist2006.html http://doi.acm.org/10.1145/1166253.1166292
Tanglible User Interface (TUI) : reactable ( http://www. reactable