SUJETS SPÉCIAUX EN INFORMATIQUE I PIF-6003
Analyse du mouvement et suivi d’objets Image de l’historique de mouvement (MHI) Flux optique Suivi d’objets par ondelettes de Gabor Suivi d’objets par le filtre de Kalman
Image de l’historique de mouvement (MHI) Une MHI est une image qui accumule les changements durant un intervalle de temps donné pour chaque pixel d’une image Une image de gradient de mouvement (MGI) représente le gradient de mouvement dans une MHI, représente la direction et l’intensité du changement spatial
Image de l’historique de mouvement (MHI) Image au temps t0 b) Image au temps tk c) Image de mouvement non seuillée d) Image de mouvement détecté
Image de l’historique de mouvement (MHI) ROI Front Œil gauche Œil droit Joue gauche Joue droit Bouche
Image de l’historique de mouvement (MHI) La MHI est mise à jour à chaque fois qu’une image de différence découlant de la différence entre deux images prises au temps tk et tk+1est produite Si Idiff( x,y ) > S => MHI(x,y) = Si Idiff( x,y ) < S & MHI(x,y) < (-) => MHI(x,y) = 0 Si Idiff( x,y ) < S & MHI(x,y) >= (-) => MHI(x,y) -= 1 Avec: : le temps t actuel : la durée maximale de l’historique de mouvement
Image de l’historique de mouvement (MHI)
Image de l’historique de mouvement (MHI) L’image du gradient (MGI) de mouvement est obtenue en calculant le gradient avec le filtre de Sobel sur la MHI
Image de l’historique de mouvement (MHI) a) MHI au début (surprise) b) MGI au début c) MHI à la fin d) MGI à la fin
Image de l’historique de mouvement (MHI)
Flux optique Deux suppositions importantes: La fonction image I(x, y, t) est principalement dépendante de la position x,y La fonction image I(x,y,t) d’un objet ne change pas dans l’image Si après un temps t un objet subit une translation dx et dy, nous pouvons écrire la fonction I(x, y, t) en faisant le développement en séries de Taylor
Flux optique De la supposition 2 nous pouvons écrire: Alors En divisant par dt Équation du mouvement
Flux optique Approche proposée par Lucas & Kanade Résolution d’un système d’équations linéaires par moindres carrés Les sol’n sont les vecteurs vitesse u et v Voir lkdemo.c dans le répertoire samples de OpenCV
Flux optique (lkdemo.c dans OpenCV)
Flux optique (lkdemo.c dans OpenCV )
Suivi d’objets par ondelettes de Gabor Pour suivre le mouvement des expressions du visage, ou le déplacement de pixels significatifs dans une image nous pouvons utiliser des méthodes de suivi comme l’approche Block Matching mais cette approche est sensible au bruit et au changement d’illumination. De plus si ces pixels ne sont pas nécessairement dans des régions à fort contraste, une méthode étant capable de considérer un pixel et son environnement immédiat devrait être employée. Aussi, la méthode doit être capable de supporter une certaine déformation des éléments du voisinage d’un pixel en plus d’être tolérantes aux changements d’illumination ainsi qu’aux transformations globales de translations, rotations et changements d’échelle. La transformée basée sur les ondelettes de Gabor possèdent les caractéristiques requises
Suivi d’objets par ondelettes de Gabor L’ondelette de Gabor est une sinusoïdale atténuée par une gaussienne. Lorsque utilisée comme noyau de convolution, elle permet d’associer à chaque pixel un nombre complexe caractérisant ce pixel dans sont environnement à une fréquence et une orientation spatiale donnée. En augmentant le nombres d’orientations et les fréquences d’échantillonnage, on obtient une mesure de plus en plus précise de la région de l’image
Suivi d’objets par ondelettes de Gabor
Suivi d’objets par ondelettes de Gabor La transformée en ondelettes de Gabor et plus spécifiquement la définition d’un jet tel que définie par Wiscott et al., permet de caractériser un pixel et son environnement en considérant un nombre discret d’échelles et d’orientations. Un jet est une série de résultats découlant des convolutions obtenues avec des noyaux de Gabor générés à différentes échelles et orientations
Cette expression revient à une convolution dans le domaine discret Suivi d’objets par ondelettes de Gabor Le jet J d’un pixel donné dans une image est donné par: Cette expression revient à une convolution dans le domaine discret
Pour 4 fréquences et 6 orientations Suivi d’objets par ondelettes de Gabor La famille de noyaux de Gabor peut être déduit par Pour 4 fréquences et 6 orientations
Suivi d’objets par ondelettes de Gabor En utilisant par exemple, quatre (4) fréquences et six (6) orientations, un jet se compose donc de vingt-quatre (24) coefficients complexes, ce qui peut être écrit sous la forme -1 Partie imaginaire Partie réelle
Suivi d’objets par ondelettes de Gabor Résultat de la convolution de quatre noyaux de Gabor (2 fréquences et 2 orientations)
Suivi d’objets par ondelettes de Gabor Pour localiser les jets qui se déplacent d’une image à l’autre, il faudra comparer le jet original dans une image donnée aux jets environnant dans une autre image pour trouver celui est semble le plus similaire La formule suivante permet de comparer deux (2) jets Le symbole . représente le produit scalaire et les barres verticales représentant le module. Cette fonction retourne le cosinus de l’angle entre les deux (2) vecteurs dans un espace complexe à vingt-quatre (24) dimensions
Suivi d’objets par ondelettes de Gabor Pour suivre le déplacement des points, il suffit de trouver le pixel minimisant cette fonction dans le voisinage du pixel de l’image précédente. Puisque la fonction S implique un grand nombre de multiplication et est donc algorithmiquement coûteuse, il faut éviter de parcourir l’image entière pour localiser le pixel idéal. Pour ce faire, une recherche saccadée est souhaitable. Nous pouvons débuter la recherche centrée sur la position du pixel dans l’image précédente et tester ensuite les pixels qui apparaissent dans la grille suivante Le meilleur candidat est ensuite sélectionné comme centre pour la prochaine itération
Suivi d’objets par ondelettes de Gabor Grille de recherche utilisée pour la comparaison des jets
Suivi d’objets par le filtre de Kalman Cette approche permet de faire la mise à jour temporelle du vecteur d’état d’un système permettant de prédire son état dans le future La mise à jour basée sur les mesures empiriques permet l’ajustement de l’estimation projetée
Suivi d’objets par le filtre de Kalman Si nous considérons un pixel significatif dans une image captée au temps tk Ce pixel a une vélocité de Avec un vecteur d’état
Suivi d’objets par le filtre de Kalman Le modèle du système est écrit sous forme d’un filtre de Kalman Bruit gaussien de moyenne nulle Position et vitesse mise à jour au temps k
Suivi d’objets par le filtre de Kalman Sous forme matricielle nous pouvons réécrire le vecteur d’état:
Suivi d’objets par le filtre de Kalman Nous pouvons alors estimer zk la position du point pk à chacune des images d’une séquence, de cette façon le modèle empirique du filtre de Kalman devient: Bruit gaussien de moyenne nulle
Suivi d’objets par le filtre de Kalman L’INPUT au temps tk est formé des matrices de covariance Qk-1 associée au processus de bruit k-1 et Rk-i associé au processus de bruit k-1
Suivi d’objets par le filtre de Kalman (kalman.c dans OpenCV)
Suivi d’objets par le filtre de Kalman (kalman.c dans OpenCV) Suivi d’un point effectuant une rotation. La vitesse de rotation est constante. Les vecteurs d’état et de mesures empiriques sont 1D (a point angle), Les mesures sont des valeurs réelles (angles) + bruit gaussien. La position des points réel et estimée sont reliés par une ligne jaune, La position des points réel et mesurée sont reliés par une ligne rouge. Si l’algorithme de Kalman fonctionne bien: le segment de droite jaune devrait être plus court que le rouge.
Suivi d’objets par le filtre de Kalman (kalman.c dans OpenCV)
Suivi d’objets par le filtre de Kalman (kalman.c dans OpenCV)
Suivi d’objets par le filtre de Kalman (kalman.c dans OpenCV)
Résumé Analyse du mouvement et suivi d’objets MHI Flux optique Suivi d’objets par ondelettes de Gabor Suivi d’objets par le filtre de Kalman