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)
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” 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
Histogrammes d’orientation : reconnaissance NB: Un retour visuel de la confiance aide à déboguer et à apprendre à exprimer le bon geste.
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 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)
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
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 ? –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
angle position i Comment trouver le bout de chaque doigt ?
Deuxième technique D’un article de Malik et Laszlo (2004) Comment trouver la direction de chaque doigt ?