Reconstruction du mouvement humain par système de vision


Projet GE2-GE3 2013 : Reconstruction du mouvement humain par système de vision
Entreprise / Client : INRIA, Christine Azevedo
Auteurs : Taoufik EL Kabir,Amine Boukouta
Responsable Projet : Sébastien Lengagne
Tuteur industriel : Pascal Fickinger

1. Résumé
2. Abstract
3. Lexique
4. Abréviation
5. Introduction
6. Présentation du Sujet

1. Equipe DEMAR
2. Contexte et enjeux
3. Etat de l’art

1. Kinovea
2. Système Vicon

4. Comparaison entre Les systèmes de vision existant et l’application à concevoir

7. Cahier des Charges
8. Developpement

1. Problématiques
2. Faisabilité

1. Solutions envisageables
2. Comparaison et choix de la méthode du suivi de mouvement

3. Etude Théorique

1. Algorithme détection par couleurs

4. Solutions

1. Qu’est ce que c’est OpenCV ?
2. Développement et explication de l’algorithme suivi de mouvement choisi

1. Suivi de l’objet et amélioration de la précision
2. Gestion des obstructions

3. Algorithme enregistrement vidéo et synchronisation
4. Test et validation

1. Programme suivi point d’intérêt
2. Programme enregistrement et synchronisation des webcams
3. Résultats et tests

9. Gestion de Projet

1. W.B.S.
2. Gantt

10. Notes d'application

1. sujet 1
2. sujet 2

11. Bilan

1. Etat d'avancement
2. Limites
3. Perspectives

12. Bibliographie


Résumé

Le projet s’inscrit dans le cadre de l’équipe DEMAR de l’INRIA (L'Institut national de recherche en informatique et en automatique), il consiste en la réalisation d’une interface qui permet l’enregistrement de plusieurs vidéos issues de webcams ainsi que le suivi du mouvement humain en trois dimensions dans des conditions cliniques. La méthode utilisée est appelée « La vision par ordinateur », elle a pour but de permettre à un ordinateur de comprendre ce qu'il « voit » lorsqu'on le connecte à une ou plusieurs webcams. OpenCV qui est une bibliothèque graphique libre, spécialisée dans le traitement d'images a été d’une grande aide lors de la réalisation du projet surtout qu’elle fourni plusieurs fonctions de traitement d’image. Le langage de programmation utilisé était le C++.

Ce Laboratoire serait intéressé par la réalisation de cette interface, car elle permettrait d’extraire des informations sur le mouvement des personnes pour l'évaluation clinique des performances physiques.

Mots clefs :

• Vision par ordinateur
• Modèle de l'humain
• Suivi et précision
• Obstructions


Abstract


The project joins within the framework of the team DEMAR of the INRIA (The national Institute of IT research and in automatic), it consists of the realization of an interface which allows the recording of several videos stemming from webcams as well as the follow-up of the human movement in three dimensions in clinical conditions. The used method is called " The vision by computer ", it aims at allowing a computer to understand what he "sees" when we connect it to one or several cameras. The language of used programming is C ++ as well as all the functions of the bookshop Open CV which is a free graphic library, specialized in the image processing.

This Laboratory would be interested in the realization of this interface, because she would allow to extract information on the movement of the people for the evaluation.

Keywords:

• Vision by computer
• Model of the human being
• Follow-up and precision
• Obstructions


Lexique


- La stimulation électrique fonctionnelle : Utilise des électrodes qui sont appliquées sur la peau afin de stimuler l'extrémité des nerfs avec du courant électrique et engendrer ainsi une contraction des muscles. Les électrodes sont liées par des câbles à un stimulateur qui engendre des impulsions électriques.

- Paraplégiques : La paraplégie est la paralysie plus ou moins complète des deux membres inférieurs et de la partie basse du tronc .

- Hémiplégiques : est une paralysie d'une ou plusieurs parties du corps d'un seul côté .

- Sensori-moteur : Partie du système nerveux responsable de la sensation et de la commande des mouvements.

- Données cinématiques : Information sur le mouvement de type : hauteur, angle de rotation, distance parcourue, vitesse de mouvement, accélération.

- Gant : Outil utilisé en gestion de projet pour visualiser l’état d’avancement des différentes tâches.

- Synchronisé : pouvoir démarrer en même temps.

- Déficience motrice : Atteinte de la motricité, c’est-à-dire de la capacité du corps à se mouvoir ou à se maintenir dans une position donnée de façon ordinaire.

- Photogramme : Image en cours de la vidéo.

- Background : Arrière plan.

- Histogramme : représente la distribution des intensités ou des couleurs de l'image. C'est un outil fondamental dutraitement d'images, avec de très nombreuses applications.

- Frame : Image.

- Pixel : l'unité de base permettant de mesurer la définition d’une image numérique.

- CPU : Processeur.


Abréviation

INRIA : L'Institut national de recherche en informatique et en automatique.

CNRS: Centre national de la recherche scientifique.

LIRMM: *Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier

SEF : stimulation électrique fonctionnelle.

SSM : Système Sensori-moteur.

3D : Trois dimensions.

2D : Deux dimensions.

W.B.S : Word Breakdown Structure.

HSV : Hue, Saturation, Value, en français : TSV Teinte, Saturation, Valeur.

BGR : Blue, Green, Red ou bleu, vert, rouge. Toutes images classiques sont en BGR, équivalent de RGB mais avec une inversion des canaux bleu et rouge.


Introduction

Pour une formation complète et une préparation à la vie professionnelle, la formation d’ingénieur Génie Electrique au sein de Polytech Clermont Ferrand inclue une réalisation de projet industriel en 4eme année. Ce projet se compose d’une première partie ayant pour but de répondre à un appel d’offre d’un client. Dans notre cas La réalisation technique du projet aura lieu en parallèle avec la gestion de projet. Le projet « Reconstruction du mouvement humain par système de vision » a était proposé par l’équipe DEMAR de L'Institut national de recherche en informatique et en automatique (INRIA) centre Montpellier, plus précisément par Mme Christine Azevedo. Ce projet est encadré par Mr.Lengagne, tuteur technique, et Mr.Fickinger, tuteur industriel. Ces travaux pourront être incorporés dans une publication scientifique internationale.

Dans ce cadre, le problème est de reconstruire le mouvement d'une personne en trois dimensions lors d'expérimentation clinique avec peu d'espace et beaucoup de personnes dans le champ de vision. L’interface réalisée permettra l’enregistrement de plusieurs vidéos issues de webcams, ainsi que suivre des points d’intérêts sur des personnes afin d’extraire des informations tels que les coordonnées d’un point sélectionné au cours du temps.

À nos jours ils existent des outils de suivi de trajectoire des mouvements humains uniquement en deux dimensions. On cite le logiciel « Kinovea » qui est dédié principalement aux entraîneurs, aux athlètes et aux professionnels de la médecine. Il est compatible avec Windows XP, Windows Vista et Windows 7, par contre il n'existe pas à l'heure actuelle de version pour les systèmes d'exploitation Mac ou GNU/Linux.

Pour traiter cette problématique l’étude choisie est la vision par ordinateur qui est la seule technologie permettant la reconnaissance des gestes humains, pour la mise en œuvre de cette méthode, il faut choisir et implémenter l’algorithme de suivi le plus adéquate à notre cahier des charges.

Dans un premier temps vous trouverez une présentation du projet, son origine, son contenu et son objectif. Ceci permettra de présenter le cahier des charges. Par la suite la gestion de projet développé durant ce projet. Puis on parlera sur les différentes étapes de la réalisation et de la conception du système de suivi de points d’intérêts et l’enregistrement des vidéos issues de webcams synchronisées. Ensuite nous exposerons l’application finale et les perspectives du projet.


Présentation du Sujet


Equipe DEMAR

DEMAR est une équipe-projet hébergé à INRIA/LIRMM, il s'agit d'un projet commun entre le CNRS et les universités de Montpellier 2 et Montpellier 1.Cette équipe-projet appartient au département de recherche en robotique et microélectronique de LIRMM.

DEMAR s'intéresse au système sensori-moteur et ses déficiences selon deux axes de recherche :

 Modélisation et identification du SSM
 Synthèse et commande du mouvement induit par stimulation électrique fonctionnelle.


Contexte et enjeux

La capture de mouvement est une technique permettant d'enregistrer les positions d'objets ou partie du corps. La reconstruction tridimensionnelle à partir de séquences vidéo multi-caméra pour l’analyse ou le suivi du mouvement de personnages ou plus généralement d’objets déformables est un sujet d’une grande actualité au sein de la communauté internationale du domaine de par de nombreuses applications présentes et surtout à venir.

La stimulation électrique fonctionnelle permet de contracter artificiellement les muscles. La recherche améliore cette technique, qui reste aujourd'hui la seule façon de restaurer le mouvement de membres paralysés. Dans ce cadre les chercheurs en robotique, microélectronique et ingénierie biomédicale de l'équipe DEMAR (INRIA/LIRMM) ont recentré leurs activités autour de l'expérimentation clinique menée avec des patients paraplégiques et hémiplégiques notamment, en étroite interaction avec des médecins. Modéliser le système sensori-moteur leur permet de mieux comprendre son fonctionnement pour mieux en contrôler le comportement via la stimulation électrique, afin d'atteindre des objectifs valorisables pour les patients et les médecins.

Dans ce cadre l’objectif de notre projet est de créer une interface qui permet d’extraire les positions articulaires des patients ce qui va permettre de restaurer leurs mouvements est d’en tirés l’information voulu tels que la position ordonnée et modulée dans le temps. Une des pistes est la vision par ordinateur mais les obstructions peuvent être fréquentes.


Etat de l’art

Afin de bien comprendre les objectifs souhaités à travers ce projet, il est nécessaires de comprendre ce qui a était fais jusqu'à maintenant concernant les systèmes de vision.


Kinovea

Kinovea est un logiciel d'analyse vidéo dédié au sport, il permet la reconstruction et le suivi du mouvement humain ainsi que l’extraction des informations sur le mouvement des personnes pour l'évaluation clinique des performances physiques. Il cible principalement les entraîneurs, les athlètes et les professionnels de la médecine.

Les options d'export incluent l'enregistrement en vidéo ou vers de multiples images, et la sauvegarde des analyses dans un format tableur pour poursuivre le traitement ailleurs. (Cordonnées de l’objet suivi, le temps nécessaire pour effectuer le mouvement)

Un mode double écran permet de comparer deux performances côte à côte. Les vidéos peuvent être synchronisées sur un événement commun pour faire des comparaisons dynamiques.

Les contrôles vidéo permettent de se concentrer sur une action spécifique dans la vidéo et d'explorer le mouvement image par image ou au ralentit. Kinovea lit quasiment tous les types de fichiers.


Système Vicon

Ce système collecte et traite les données en moins de temps comparé à « Kinovea » et requiert une intervention minimale de l’opérateur. Ce système utilise les caméras de capture de mouvement pour acquérir rapidement les coordonnées 3D de l’objet à suivre. Les images sont traitées au sein des cameras de capture optiques où les marqueurs sont identifiés et les coordonnées calculées avant d’être transférées à l’ordinateur. Après la fin du mouvement, le système procure les coordonnées 3D et les données cinématiques.

Ils existent d’autres systèmes de capture de mouvements, tels que « Peak » ou « Optitrack », qui ont déjà été appliqué dans l’analyse de la marche, la rééducation des handicapés ainsi que la réalisation d’effets spéciaux pour le cinéma d’animation en 3D.


Comparaison entre Les systèmes de vision existant et l’application à concevoir

Dans le cadre de notre projet, l’objectif et de reconstruire le mouvement humain en trois dimensions et sous différents systèmes d’exploitation contrairement à « Kinovea» qui permet seulement un suivi en 2D et sous système d’exploitation Windows.

Les systèmes de capture de mouvement qui existe sur le marché et qui permettent un suivi en trois dimensions sont relativement onéreux.


Cahier des Charges


L’objectif global du cahier des charges est de définir le projet et de lister toutes les différentes fonctions et contraintes auxquelles le projet sera rattaché.Le cahier des charges est le suivant :


Developpement


Problématiques

Ce projet s'inscrit dans le cadre de l'équipe DEMAR localisée à Montpellier qui traite de l'assistance fonctionnelle dans le cas de déficience motrice.

Afin d’aider à la réalisation de ce projet de recherche, un suivi des points d’intérêts tels que les articulations est obligatoire pour une étude plus approfondis des évolutions et des perspectives d’améliorations des patients. La prise en compte des conditions cliniques est un facteur à ne pas négligé surtout pendant l’enregistrement des vidéos des expériences. Ces vidéos permettront le suivit des point d’intérêts et une étude approfondie sur les souffrants.


Faisabilité

Avant d’entamer la phase de programmation en langage informatique, il est nécessaire de déterminer l’algorithme le plus adapté à notre cahier de charge.

Solutions envisageables

Pour suivre un objet sur une vidéo il existe plusieurs algorithmes de traitement d’image.

Dans cette partie, une étude se fera sur les quatre algorithmes étudiés, ils seront présentés de la manière suivante, tout d’abord leurs fonctionnements sera expliqués, puis les paramètres qui les caractérise, les résultats obtenus, et enfin une analyse des résultats obtenus. Une comparaison de ces méthodes sera effectuée afin de voir les meilleures applications entre chacune d’entre elle, pour qu’ensuite détaillé encore plus la solution choisie pour répondre aux besoins du client.

a. Détection par couleurs :

Fonctionnement : lecture de la couleur de chaque pixel, puis test sur le pixel, suivant la couleur à reconnaitre, ils doivent être supérieurs ou inférieurs au seuil imposé. S’ils respectent ces conditions alors on passe au pixel suivant.

Test : condition de supériorité ou d’infériorité à un seuil sur chaque couleur.
Paramètres : Les paramètres principaux sont les différents seuils des couleurs
Résultats :

•Analyse :+

Avantage :

 C’est une méthode assez simple à mettre en œuvre, il suffit de reconnaître une couleur qui ressort par rapport au reste de l’image.

Inconvénients :

 Il existe beaucoup de nuance de couleur (256³) il faut alors avoir une grande base de données puis choisir la couleur ou définir à chaque fois la couleur souhaitée ce qui sous entend que ces valeurs soit connues.

 Si un autre objet possède la même couleur on ne peut les différencier, excepté s’il y a une grande différence de taille entre les deux objets et que l’objet à reconnaître est le plus grand.
 Si notre objet change de couleur au cours de la vidéo, la couleur à reconnaître devra également être modifiée.

- b. Détection de mouvement :

• Fonctionnement :

Il s’agit de comparer pixel par pixel l’objet suivi et le fond correspondant si la différence entre les deux valeurs de pixels est supérieure à un seuil donné alors on considère qu’il y a mouvement.
• Paramètres :

Le photogramme d’origine peut être le premier photogramme de la vidéo, dans ce cas, elle ne doit pas contenir l’objet à suivre, sinon il est possible de rentrer en paramètre une image correspondant au «background».

• Résultats :

• Analyse

Avantage de la méthode :

o La simplicité d’utilisation

Inconvénient de la méthode :

o Le premier photogramme ne doit contenir aucun objet, il s’agit du fond.

o La caméra doit rester fixe, le « background » reste fixe. Si la caméra n’est plus fixe alors le «background » non plus et il est alors impossible de reconnaître l’objet.

c. Histogramme :

• Fonctionnement :

Il y a deux types de reconnaissance à l’aide d’un histogramme. L’image de référence est toujours la même, alors que la seconde est modifiée à chaque photogramme.
Dans chacun des cas, on va comparer, les histogrammes de chacune des couleurs, entre l’image de référence et l’image actuelle. Une moyenne sera effectuée, puis inversée de façon à ce que la différence la plus petite possède le poids le plus grand.

• Paramètre :

L’image de référence : cette image peut être une image sélectionnée de la bibliothèque ou une sélection faite à la main sur le premier photogramme de la vidéo.
En effet il est possible de changer le photogramme origine à chaque photogramme, ceci peut être intéressant si l’objet change de forme ou de couleur.

• Résultats :

Avec un changement d’image de référence, l’objet se perd peu à peu. Avec une image fixe, l’objet sera toujours présent mais si cet objet change de couleur alors il sera impossible de le repérer. Il faut donc trouver un compromis, permettant de repérer l’objet à chaque image.

• Analyse :

Si l’image de référence est fixe et que l’objet change de taille, de forme ou de couleur au cours de la vidéo la reconnaissance ne se fera pas. En changeant l’image d’origine et donc l’histogramme de comparaison le risque est moindre car l’histogramme varie de la même manière que l’objet.

Inconvénients :

Les paramètres sont difficiles à mettre en place, il y a un manque de précision et les résultats ne sont pas toujours ceux espérés. Cet algorithme n’est pas idéal dans l’étude effectuée.

d. Différence :

• Fonctionnement :

Après avoir comparé les éléments de l’image avec le « background », on met les pixels identiques en blanc et les autres en noir.

• Paramètre :

Le « background » ne change pas, il s’agit du premier photogramme ou d’un photogramme chargé de la bibliothèque. L’image en cours est comparée avec le «background », chaque pixel identique est mis en blanc, s’ils sont différents, il est mis en noir.

• Résultats :

Les numéros sur la figure ci dessus correspondent au numéro de photogramme dans la vidéo.

• Analyse :

Le fait de sélectionner le background de référence sur le premier photogramme, permet de localiser au mieux dès le début l’objet à suivre. Le changement du background par une autre image de référence est nécessaire à chaque fois que l’objet est reconnu. L’image courante et de référence sont comparées, il faut donc que les deux images soient différentes pour pouvoir détecter le mouvement.


Comparaison et choix de la méthode du suivi de mouvement

L'étude des différentes méthodes de détection de mouvement proposées nous a permis de constater que la plupart des solutions proposées consistent à considérer les séquences vidéo comme des successions d'images, classées généralement en deux catégories : l'image courante, et le passé. L'approche la plus fréquente consiste à construire un modèle plus ou moins compact censé représenter tout le passé, et à confronter l'image courante à ce modèle afin de décider en tout point, si celui-ci représente l'arrière-plan ou un objet mobile.

Les différents algorithmes étudiés présentent des avantages et des inconvénients pour différentes situations. L’algorithme de couleur est idéal pour le suivi d’un objet d’une couleur unique. Celui du mouvement est pratique dans beaucoup de situations mais ne permet pas le suivi avec une caméra qui bouge même de peu. L’histogramme n’est pas très adapté car compliqué au vu du nombre de paramètres. Pour l’algorithme de la « différence » tout comme l’algorithme de mouvement est pratique mais ne convient pas à toutes les situations.

Globalement avec OpenCV nous pourrons utiliser facilement deux types de méthodes pour traquer des objets. Celles qui repèrent des détails caractéristiques de l’objet et celles qui se basent sur la détection de couleur. Le choix dépend des conditions.

Afin de répondre aux exigences du client, la méthode de détection par couleurs a été choisit ce qui va permettre de traquer un objet qui n’a pas de forme prédéfinie, mais ayant une couleur bien à lui, cela permettra aussi détendre l’étude sur un grand nombre d’objets.

On expliquera par ailleurs les limites de cette méthode dans le cadre de notre projet. (Problème de plusieurs couleurs identiques dans les vidéos, perte du suivi en cas d’obstruction).

Pour l’algorithme d’enregistrement de vidéo et synchronisation, une seule méthode a été envisagée, elle a comme principe d’enregistrer les images capturées par les webcams dans des dossiers associés et convertir chaque séquence d’images en vidéos.


Etude Théorique

Algorithme détection par couleurs


Solutions

Qu'est ce que c'est *OpenCV

OpenCV est une bibliothèque libre de vision par ordinateur. Cette bibliothèque est écrite en C et C++ et peut être utilisée sous Linux, Windows et Mac OS X. Des interfaces ont été développées pour Python, Ruby, Matlab et autres langages. OpenCV est orienté vers des applications en temps réel.

Un des buts d’OpenCV est d’aider les gens à construire rapidement des applications sophistiquées de vision à l’aide d’infrastructure simple de vision par ordinateur. La bibliothèque d’OpenCV contient près de 500 fonctions.


Développement et explication de l'algorithme suivi de mouvement choisi

Dans la présente partie l'algorithme présenté dans la figure ci dessus ( Partie "Algorithme détection par couleurs" ) sera détaillé étape par étape.

- Conversion de l’image en HSV :

Il faut tout d’abord convertir l’image qui est en BGR en HSV. Il est obligatoire de passé l’image en HSV car ainsi il est possible de se baser sur la teinte et la saturation de la couleur en laissant plus libre la « brillance » (V – value) de cette dernière. Ce qui permet, en partie seulement, d’éloigner les problèmes liés à l’éclairage.

o Code C : image en HSV

IplImage?*hsv;
hsv = cvCloneImage(image);
cvCvtColor(image, hsv, CV_BGR2HSV);

- Création d’un masque :

La création du masque est nécessaire pour permettre de représenter l’image binarisée, Il doit donc être lui aussi de la même taille que notre image originale.

o Code C : création masque

IplImage? *mask;
mask = cvCreateImage(cvGetSize(image), image->depth, 1);
Pour mettre en blanc tous les pixels ayant les mêmes valeurs HSV que notre couleur, il faut chercher les pixels qui se situent dans un intervalle autour de cette couleur, pour cela on déclare une variable appelé « Tolerance ».

Une fonction OpenCV nous permet d’appliquer cette opération directement à tous les pixels de notre image HSV et met à jour directement notre masque. Si l’expression est vérifiée pour un pixel donné de l’image, elle met le pixel correspondant en blanc, sinon, elle le met en noir.

o La fonction se présente comme suit :

cvInRangeS(hsv, cvScalar(h – tolerance -1, s – tolerance, 0), cvScalar(h + tolerance -1, s + tolerance, 255), mask);

- Binarisation :

La binarisation d’une image consiste à transformer une image de niveau de gris ou couleur en une image binaire. On choisit un seuil, soit fixe soit aléatoire, et on compare tous les pixels de l'image à ce seuil. Si la valeur de l'intensité du pixel est plus grande que la limite définie on mettra un 1 pour le pixel de l'image de sortie, sinon on mettra un 0. Et donc séparer les pixels de l’image en deux classes distinctes.

Notre première classe correspondra à notre couleur à isoler, la seconde à toutes les autres couleurs. Ainsi, si la couleur sélectionnée est le rouge, nous verrons sur notre image binarisée tous les éléments rouges apparaître en blanc sur un fond noir.

- Choix de la couleur :

Afin de remplir le masque il faut faire le choix des paramètres HSV de la couleur traquée.
Il est possible de donné les valeurs initiaux HSV de la couleur directement dans le code ou le faire manuellement en choisissant la couleur désirée grâce à la souris. Dans ce projet le choix se fera avec la souris.

- Erosion et dilatation :

Après le choix de la couleur, et la création du masque binarisé vient l’étape de l’érosion et la dilatation.

Afin d’isoler l’objet voulu dans le masque c’est deux étapes sont obligatoire, a part si on choisit la tache la plus présente dans le masque.

Une érosion permet de supprimer les pixels « isolés » qui ne correspondent pas à notre objet traquer. Ensuite vient l’étape de la dilatation qui nous permet de renforcer les groupes denses de pixels notamment l’objet suivi.

- Calcul du barycentre :

Il nous faut récupérer les coordonnées x et y de notre tâche afin de calculer son barycentre. Pour cela nous parcourons le masque et nous additionnons les coordonnées (les x et les y respectivement) de tous les pixels blancs dans notre cas. Nous comptons au passage le nombre de point afin de pouvoir diviser nos sommes.

- Ajout d’un marqueur et Lissage du déplacement :

Nous pouvons maintenant ajouter un marqueur sur notre image qui sera centré sur le barycentre calculé. Par exemple un cercle ou une image pour identifier l’objet à suivre sur la vidéo.

Ensuite un lissage du déplacement a été fait pour permettre une continuité du suivi du mouvement, cela en créant 2 seuils, un seuil minimal et maximal.

- Libération de la mémoire :

A chaque création d’un objet, il faudra le supprimer par la suite afin de libérer la mémoire. Il faut donc supprimer les images HSV, ainsi que le masque.


Suivi de l’objet et amélioration de la précision

Toutes c’est étapes ont permit d’avoir un masque qui contient l’objet voulu et isoler la couleur voulu.

Afin de faire le suivi de cet objet un algorithme de calcul de la position de l’objet est obligatoire. L’algorithme choisit est l’algorithme du barycentre.

Pour cela on définit un carré virtuel autour de notre objet suivi, dans ce carré s’effectue l’addition des coordonnées x et y de tous les pixels blancs. Ce carré virtuel bouge au fur et à mesure que l’objet se déplace, ce qui permet une précision améliorée par rapport à notre algorithme de départ qui consistait à parcourir tous le masque et de rechercher la tache la plus importante. Cette méthode était très vulnérable par rapport aux obstructions, et donc dans le cas où des personnes passaient devant l’objet suivi, le suivi se perdait, sans dire que n’importe quel objet qui entrait dans le cadre de la vidéo et qui avait des paramètres HSV un peu prés similaire à notre objet suivi pouvait être traqué et donc nos valeurs étaient faussés.

Le programme permet de tracer la trajectoire de l’objet suivi sur une image, et d’enregistrer également ces coordonnées (x,y) et les saisir dans un fichier texte.


Gestion des obstructions

L’interface réalisée sera utilisée dans des conditions cliniques, donc avec peu d’espace et beaucoup de personnes dans le champ de vision. Cela était pris en compte durant la réalisation du projet.

Dans le cas des obstructions, le suivi s’arrête, jusqu’à ce que le programme repère à nouveaux la couleur qui à été sélectionné au départ, ou bien c’est à l’utilisateur de sélectionné à nouveaux la couleur voulu pour continuer le suivi.


Algorithme enregistrement vidéo et synchronisation

La recherche d’algorithme et l’exécution de cette partie qui était la plus simple à pris 2 semaines. Un seul algorithme a été réalisé et exécuté.

Au début une capture d’image se faisait, ainsi ces images étaient mis directement dans un "fichier.avi", mais cette méthode limitait le temps de la vidéo à 5 ou 6 secondes puisque ces images restaient dans la mémoire vive de notre ordinateur et donc au bout d’un certain temps cette mémoire saturait et le système plantait, ce qui respectait pas le cahier des charges. Afin de contourner ce problème, il a fallu enregistrer pour chaque webcam les images capturées dans des dossiers associés, et après convertir la séquence d’images de chaque dossier en vidéo.

Le programme démarrera les webcams par tour de rôle, ainsi il aura un décalage minime de l’ordre de 0.3s entre chaque vidéo enregistré.


Test et validation

Lors de cette partie des explications seront faites afin d’exécuter correctement les deux programmes.

Programme suivi point d’intérêt

Le programme de suivi de point d’intérêt prend en entrée une vidéo avec format AVI, MKV ou MP4, le chemin de la vidéo doit être insérer dans les endroits suivant dans notre programme :


Résultats et tests

Après compilation du programme qui permet le suivi des objets il faut :

 Choisir l’objet à traquer en appuyant sur la couleur à suivre.
 L’appui sur la touche « espace » permet de faire un saut d’un certains nombres d’images qu’on peut définir.

A la fin du suivi, la trajectoire de l’objet suivi sera tracée sur une image enregistrée dans le dossier de travail, ainsi que les coordonnées (X, Y) de la trajectoire enregistré dans un fichier texte.

Pour le programme de l’enregistrement des vidéos, on aura en sortie trois vidéos avec un décalage minime de l’ordre de 0.3 s.


Gestion de Projet

W.B.S.

Voici le découpage de notre projet sous forme de tâches :


Gantt

Le Gant permet de visualiser dans le temps les diverses tâches composant notre projet. Il s'agit d'une représentation d’un graphe connexe, évalué et orienté, qui permet de représenter graphiquement l'avancement du projet.

Le diagramme de Gantt représente le planning prévisionnel. Les prévisions ont étaient respectées ce qui a permis par la suite de retravailler la forme du programme et ses performances.


Notes d'application

sujet 1

sujet 2


Bilan

Le bilan de ce projet est très positif. En effet, ce projet a été très intéressant et surtout très formateur. Nous sommes satisfaits de notre travail et de l'évolution générale du projet, de plus, ce projet nous a permis de découvrir une nouvelle branche de programmation qui est la vision par ordinateur.

Réalisé ce projet nous a permit d’acquérir plusieurs connaissances tels que la gestion de projet mais aussi de maitrisé de nouveaux outils de traitement d’images telle que OpenCV qui est la bibliothèque de référence dans ce domaine. Ce projet nous a aussi permit d’avoir un avant gout du monde de l’entreprise puisqu’on était tous le temps en interaction avec notre cliente à qui il fallait faire un rapport d’avancement et satisfaire ses attentes par rapport au projet, on devait aussi surmonter les obstacles auxquels on était confronté par nous même, ce qui nous a permit d’avoir une certaine maturité et prise de responsabilité. Tous ces éléments on fait de cette expérience, une expérience enrichissante qui nous sera très utile dans l’avenir.

Ensuite, ce projet nous a permis de découvrir et de mettre en place une démarche de suivi et de gestion de projet. Nous nous sommes d'ailleurs rendu compte que chacune des parties qui composent le projet est importante : il ne faut pas uniquement penser à la réalisation. Toutes les étapes précédentes, que ce soit l'élaboration du cahier des charges, la recherche d'informations et de solutions, la revue d'appel d'offres ou encore le diagramme prévisionnel sont très importantes. Ce projet a donc été une expérience très enrichissante du point de vue de sa mise en œuvre.

Enfin, nous ajouterons que nous avons apprécié le travail d'équipe : le partage d'idées, les discussions, la recherche de solutions avec le client, le tuteur de projet et entre nous. Le travail en équipe a été l'un des piliers de la réussite du projet. En effet, pour réussir il faut assurer une bonne cohésion au sein du groupe, échanger des idées et être à l'écoute les uns des autres.


Etat d'avancement

Le but du projet était de suivre un point d’intérêt dans une vidéo. Ainsi que l’enregistrement de trois vidéos issues de trois webcams en respectant la condition de synchronisation. L’étude portait sur différents algorithmes de reconnaissance de mouvements, les différents algorithmes étudiés ont tous montré des avantages et des inconvénients. Certains algorithmes sont simples d’utilisation et de compréhension mais ont des limites et répondait pas à notre cahier des charges.

Le choix d’utilisé la vision par ordinateur plus précisément de travailler avec OpenCV nous a permit de simplifier le travail est d’atteindre les meilleurs résultats possible.

Théoriquement on avait 48h de projet pendant lesquelles on devrait aboutir à des résultats techniques et en même temps réalisé les études d’avant projet tel que la gestion et l’organisation du projet. Ce qui était une tache assez ardue sachant qu’on devait maîtriser une nouvelle bibliothèque jamais étudié dans notre cursus universitaire, mais grâce aux efforts de nos professeurs et aux heures supplémentaire d’investissement le cahier des charges a été respecté de tel façon qu’on arrive à suivre un point d’intérêt en prenons en compte les contraintes et les conditions dans lesquelles l’interface sera utilisée.

Par rapport à La synchronisation des caméras Le programme conçu démarrera les webcams par tour de rôle, ainsi il aura un décalage minime de l’ordre de 0.3s entre chaque vidéo enregistré.
Le fait de suivre plusieurs objets en même temps n’a pas pu être étudié dans le cadre de ce projet.

Plusieurs pistes peuvent être envisageable afin d’améliorer la précision du suivi et la gestion des webcams.


Limites

Pour un fonctionnement optimal du programme suivi de point d’intérêt il faut respecter les conditions suivantes :

 Une seule couleur prédominante associée à l’objet suivi devra être présente dans la vidéo, ainsi les erreurs indésirables seront évitées.
 Eviter les mouvements trop rapides.
 Limité le nombre de couleurs présentes dans la vidéo.
 Problème de luminosité.

Pour le programme qui permet l’enregistrement des vidéos :

 Les trois webcams démarre pas au même instant, le retard et de l’ordre de 0.3s.


Perspectives

Afin d’améliorer la précision du suivi de point d’intérêt plusieurs points doivent être vérifiés :

 Recherche d’un nouvel algorithme mathématique plus performant que le calcul du barycentre effectué dans notre programme.
 Réduire la binarisation sur un petit périmètre et non pas sur l’image en entier. Cela pourrait améliorer la précision du suivi.

Pour le programme de l’enregistrement des vidéos une solution est envisageable pour améliorer la synchronisation des webcams :

 Utilisations d’un processeur pour le démarrage de chaque webcam, cela permet une synchronisation parfaite des webcams et une charge du CPU moins importante.


Bibliographie


: Une première version de cet article est parue dans le dossier n°52 La modélisation informatique, exploration du réel de la revue Pour la Science, numéro de juillet/septembre 2006.
[Détection de mouvement] : S. Arulampalam, S. Maskell, N. Gordon, and T. Clapp. A tutorial on particlefilters for on-line non-linear/non-gaussian bayesian tracking. IEEE Transactions on Signal Processing, 50(2) :174–188, 2002.
[Algorithme enregistrement vidéo et synchronisation] : J. Y. Bouguet. http :www.vision.caltech.edu/bouguetj/calib_doc/ — camera caibration toolbox for matlab.

toto_20140501223939_20140501224037.jpeg (76.3 KB) axel BARRIEUX, 04/06/2021 03:11 PM

Capture_20140501232858_20140501232913.jpg (148 KB) axel BARRIEUX, 04/06/2021 03:35 PM

Comparaison_dynamique_avec_Kinovea_20140501231417_20140501231541.jpeg (25.2 KB) axel BARRIEUX, 04/06/2021 03:35 PM

Cahier_des_charges_20140501171601_20140501171626.jpeg (191 KB) axel BARRIEUX, 04/06/2021 03:41 PM

Exemple_detection_couleurs_20140501232510_20140501232603.JPG (18 KB) axel BARRIEUX, 04/06/2021 03:45 PM

Reconnaissance_de_mouvement_20140501232858_20140501233019.jpg (57.2 KB) axel BARRIEUX, 04/06/2021 03:49 PM

refe_20140501233528_20140501233550.jpg (39.2 KB) axel BARRIEUX, 04/06/2021 03:53 PM

Algo_20140501234041_20140501234100.jpg (89.7 KB) axel BARRIEUX, 04/06/2021 03:54 PM

Code_permettant_le_calcul_du_barycentre_20140501234629_20140501234705.jpg (56.4 KB) axel BARRIEUX, 04/06/2021 04:01 PM

Code_permettant1_20140501235249_20140501235317.jpeg (83.6 KB) axel BARRIEUX, 04/06/2021 04:02 PM

Code_permettant_20140501235249_20140501235735.jpg (51.5 KB) axel BARRIEUX, 04/06/2021 04:03 PM

Partie_programme_indiquant_le_chemin_de_la_video_20140502000113_20140502000129.jpg (90.9 KB) axel BARRIEUX, 04/06/2021 04:06 PM

Capture123_20140510160023_20140510160101.jpg (349 KB) axel BARRIEUX, 04/06/2021 04:08 PM

Gant_20140502000744_20140502000800.jpg (200 KB) axel BARRIEUX, 04/06/2021 04:09 PM