Vous êtes sur la page 1sur 2

Détection de mouvement

La réalisation d’un logiciel permettant de faire de la détection de mouvement à partir d'une


caméra. Ce projet a été réalisé sur Macintosh et comportait deux parties principales : Le
développement du pilote de la webcam, et le logiciel de détection.

Le mouvement
Un film est composé en réalité de plusieurs images qui défilent très rapidement de manière à ce
que nos yeux aient l'impression d'un mouvement continue. La persistance rétinienne étant de 1/
10 de seconde, les images doivent défiler le plus rapidement pour ne pas avoir l'impression qu'il
y a des saccades. Ainsi on peut remarquer que la différence entre deux images successives est
très faible : En effet, seul les objets en déplacement provoquent un changement dans l'image,
et comme le fréquence des images est très rapide on peut détecter facilement le moindre
mouvement.
L'idée principale de l'algorithme de détection de mouvement est donc de calculer la différence
entre deux images successives et d'interpréter les résultats.

Temps t Temps t+1 Soustraction

L'image ci-dessus montre le résultat de la soustraction (après


filtrage) de deux images pixel par pixel, on voit clairement qu'il ne reste plus que la trace de la
main preuve que la main a bougé et pas le reste.

Le filtrage

Vous vous en doutez, une simple soustraction ne suffit pas pour faire une
détection de mouvement. En effet on peut voir après une soustraction que de nombreux points
n'appartenant pas à un objet mobile sont tout de meme présent après la soustraction, c'est ce
qu'on appelera du bruit. Le bruit est du à deux facteurs différents :
● La faible qualité de la caméra : Si vous vous êtes déjà servit d'une webcam vous
savez que la qualité est très mauvaise et que l'image est brouillée. Cela provoque des
changements de couleurs de certains pixels sans qu'il y ait de changement dans la
scène filmée.
● Le scintillement de la lumière : Sans que l'on s'en rende compte à l'oeil nu, sous un
éclairage artificiel, la luminosité n'est pas constante, elle peut varier légèrement à cause
d'un scintillement. Cela va aussi provoquer du bruit dans la soustraction.
Il faut donc passer par une phase de filtrage qui consiste à éliminer tous les
pixels isolés et toutes les différences trop faibles. Pour ces dernières on procéde à un seuillage
après la soustraction.

La localisation du mouvement

A présent nous avons une image filtrée représentant la différence entre deux
images. Ce qui nous intéresse c'est de repérer la ou les zones en mouvement, pour ca il existe
deux techniques différentes :
● Si l'on veut détecter un seul et unique mouvement, la technique la plus simple consiste
à encadrer la zone de mouvement. Pour cela, on part de chaque bord de l'image et on
avance en direction opposée jusqu'à rencontrer des pixels de couleurs indiquant la limite
du mouvement.
● Si l'on veut détecter des déplacements multiples le traitement est un peu plus
compliqué. L'algorithme qui nous avons créé part à la recherche d'amas de couleurs sur
l'image de soustraction. Lorsqu'il en trouve un, il essai de trouver ses limites extérieures
en agmentant progressivement la taille d'un cadre. Très souvent on obtient plusieurs
cadres se superposant, cela veut dire que les deux amas que l'algorithme pensait avoir
trouvés n'en n'était qu'un en réalité. Il faut donc fusionner ces cadres et ainsi on obtient
la limite de tous les objets en mouvement.
Le suivi du mouvement

Jusqu'à présent nous n'avons utilisé que deux images, les


traitements précédents doivent donc se faire en moins de 1/20 de seconde selon la fréquence
des images. Maintenant nous allons utiliser la position des objets à chaque instant pour pouvoir
suivre le mouvement. Pour cela il faut détecter une tendance de mouvement, par
exemple : "Cet objet se déplace de gauche à droite depuis 4 ou 5 images". L'algorithme que
nous avons utilisé se base donc sur la direction du mouvement. A chaque instant on essai
d'assimiler les nouveaux objets détectés à ceux détectés à l'image précédente, il s'agit en fait
de comparer la position et la taille des objets. Une fois que l'on a ces informations, on est
capable de prédire facilement le mouvement des objets.

Résultats

Dans l'ensemble les algorithmes utilisés fonctionnent


correctement et suffisemment rapidement pour faire du temps réel à partir d'une webcam. On
remarquera tout de même que selon l'éclairage et la qualité de l'image le niveau de seuillage le
plus performant peut varier. Ainsi on laisse la possibilité à l'utilisateur du logiciel de changer la
sensibilité de la détection.