Institut Supérieur de l Électronique et du Numérique Tél. : +33 (0)2.98.03.84.00 Fax : +33 (0)2.98.03.84.10 20, rue Cuirassé Bretagne CS 42807-29228 BREST Cedex 2 - FRANCE N4 Année scolaire 2008/2009 Stage d application Méthodes de suivi d un objet en mouvement sur une vidéo effectué du 15/06/09 au 19/09/09 à L université Jaume I 12071 Castellón de la plaña Espagne Encadré par : Raul Montoliu Colas, Laboratoire de vision Département d ingénierie et des sciences informatiques Correspondant ISEN Brest : Mme Maratray Anne-Claire MAHEO
Résumé Ce projet consiste en une étude de différents algorithmes de suivi d un ou plusieurs objets dans une vidéo en utilisant la méthode du filtre à particules. Elle aura deux applications principales, la première le suivi de joueurs de basket pour le calcul des performances, la seconde pour le suivi de poisson pour en étudier le mode de vie et leurs déplacements. Durant ce projet, quatre algorithmes ont été étudiés, permettant de suivre les objets de différentes manières en utilisant la couleur, le mouvement et un dérivé, les histogrammes. Chacun de ces algorithmes nécessitent des variables et des paramètres différents. Ces paramètres et variables modifie les résultats, en améliorant la précision et en diminuant la reconnaissance. Il est donc nécessaire de trouver un compromis entre ces valeurs afin de ne pas perdre en qualité et de reconnaitre l objet à chaque photogramme. Abstract This project consists in a study of differents algorithms which follow one or more objects in a video and using a particles filter. This study will have two main applications, the first is the following of basketball players to calcul their performances, the second is to follow fishes to study their way of life. During this project, four algoritms have been studied, to allow the following of objects of differents means using color, motion or kind of this and histogram. All these algorithms need variables and differents parameters. These variables and parameters change results, improving precision and decreasing recognition. It is necessary to find an arrangement between these values in order to do not loose quality and to recognize the object in all the frames. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 2
Remerciement Je souhaite remercier tout d abord mon maître de stage Raul Montoliu Colas et Filiberto Pla pour avoir accepté de me prendre en charge, m avoir permis de réaliser un stage dans le domaine que je souhaitais, et pour l épanouissement que j ai eu tant sur le plan personnel que professionnel avec tout ce que j ai pu apprendre, durant ces trois mois. Je veux remercier également les gens du laboratoire qui m ont accueillie et aidé lors de mon projet, tant les professeurs que les étudiants thésards. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 3
Sommaire Résumé... 2 Abstract... 2 Remerciement... 3 Sommaire... 4 Indexe des figures... 5 Lexique... 6 Introduction... 7 Projet... 8 1. Motivation... 8 2. Concepts... 8 3. Objectifs... 9 4. Objectifs du projet /tache... 10 5. Vue préalable des résultats obtenus... 11 6. Planification... 11 7. Organisation du document... 13 Open CV... 14 1. Qu est-ce que c est?... 14 2. Fonctions utiles :... 14 Le programme... 19 1. Comment fonctionne le programme... 19 2. Classe et fonction / Architecture... 19 3. Fonction principale... 19 4. Classe Particle... 20 5. Classe ParticleFilter... 20 6. Classe MeasureFunction... 23 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 4
Algorithmes... 24 1. Introduction... 24 2. Couleur... 24 3. Mouvement... 26 4. Histogramme... 27 5. Différence... 29 6. Conclusion... 30 Conclusion... 31 Conclusions... 31 Futurs travaux... 32 Bibliographie... 33 Indexe des figures Figure 1 : Planification générale P : 10 Figure 2 : Déroulement de la partie prototype P : 11 Figure 3 : Fonctionnement de la classe ParticleFilter P : 20 Figure 4 : Fonctionnement de la classe MeasureFunction P : 22 Figure 5 : Exemple1, pixels de couleur rouge reconnus dans les particules et reconnaissance de l objet P : 23 Figure 6 : Exemple 2, reconnaissance d un objet à l aide de la couleur après modification d un paramètre. P : 24 Figure 7 : Reconnaissance de mouvement P : 25 Figure 8 : Photogramme de référence pour l histogramme avec différents paramètres Le numéro correspond au numéro de photogramme dans la vidéo. La première ligne la précision est de 10 et la deuxième est de 11. P : 27 Figure 9 : Image de référence pour la reconnaissance avec la différence. Le numéro correspond au numéro de photogramme dans la vidéo. P :29 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 5
Lexique Photogramme ou frame : Image composants la vidéo. Frame rate : Fréquence d échantillonnage, correspond au nombre de frame affiché en une seconde. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 6
Introduction La vision par ordinateur est une branche de l'intelligence artificielle dont le but est de permettre à une machine de comprendre ce qu'elle «voit» lorsqu'on la connecte à une ou plusieurs caméras. Elle peut servir entre autre à la reconnaissance de formes, qui consiste à reconnaitre une forme dans une image après l avoir enregistrée. Le projet consiste à suivre sur une vidéo un ou plusieurs objets en utilisant différentes méthodes, l une d entre elle est le filtre à particule. C est cette méthode que l on va détaillée dans ce rapport. Pour cela nous avons utilisé plusieurs algorithmes que nous avons comparés. Les vidéos utilisées sont d une part des vidéos sur le basket, où dans un premier temps un puis plusieurs joueurs seront en mouvement, il s agira de les suivre et de les différencier. D autre part il s agit de poissons en mouvement dans des aquariums. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 7
Projet 1. Motivation La vision par ordinateur, peut être utile dans plusieurs domaines tels la sécurité, la santé Depuis quelque année, le sport prend une part importante dans la vie de chacun, en tant que spectateur ou en tant que joueur. La vision par ordinateur permet de donner une autre perspective au sport tant pour le téléspectateur que pour les équipes engagées dans une compétition. Il est possible de zoomer, d améliorer les vues, de calculer les performances d une équipe. Les techniques développées permettent de donner en temps réel la position de chaque joueur sur le terrain. Montrant ainsi aux téléspectateurs la manière dont le jeu est en train de se dérouler. Permettant ainsi aux équipes de modifier une stratégie en fonction des placements. Le calcul des performances d un joueur peut ainsi lui permettre de s améliorer de voir ce qu il doit travailler ou alors de connaitre les faiblesses de son adversaire. Dans le domaine de la biologie, la vision par ordinateur permet la reconnaissance des différentes formes de vie, mais également de suivre un mouvement pouvant prévenir d un danger, ayant une cause pouvant expliquer le comportement anormal de toute forme de vie. Ici le mouvement des poissons dans un aquarium pourrait permettre de comprendre leur comportement et leur façon de vivre. 2. Concepts a. Vision par ordinateur La vision par ordinateur (aussi appelée vision artificielle, vision numérique ou plus récemment vision cognitive) est une branche de l'intelligence artificielle dont le but est de permettre à une machine de comprendre ce qu'elle «voit» lorsqu'on la connecte à une ou plusieurs caméras. Les problèmes posés par la modélisation de la vision sont encore loin d'être résolus. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 8
b. Tracking Le tracking est un procédé de localisation d un (ou plusieurs) objet en mouvement en temps réel en utilisant une caméra. Un algorithme analyse les photogrammes de la vidéo et localise les cibles en mouvement sur la vidéo. La principale difficulté dans le tracking sur une vidéo est d associer la localisation des cibles dans les photogrammes successifs, particulièrement lorsque les objets bouge rapidement par rapport au frame rate. Les systèmes de tracking sur une vidéo normalement utilisé, utilise un modèle en mouvement qui décrit comment l image de la cible peu changer en tenant compte du mouvements possible de l objet traquer. Le rôle d un algorithme de tracking est d analyser les photogrammes dans l ordre et d estimer les paramètres de mouvement. Ces paramètres caractérisent la localisation de la cible. c. Le filtre à particule Le filtre à particule consiste à placer, sur l image à étudier, un nombre de particule de manière aléatoire. Puis de définir un poids à chaque particule, dans notre cas, la particule choisie sera alors celle possédant le poids le plus important, ayant le plus de probabilité d être ce que nous souhaitions trouver. 3. Objectifs L objectif de se projet consiste à suivre plusieurs objets en déplacement dans un champ donné. Pour cela il faut étudier les différentes méthodes existantes pour ainsi choisir suivant les situations la plus adéquate. Le projet effectué fait partie de deux autres projets. Le sport et en particulier le basket, le but du projet est de reconnaître chaque joueur présent sur le terrain de connaitre leur position. De calculer les performances de chacun, ainsi que celle de l équipe entière au cours du match. Le second projet consiste à suivre les déplacements des poissons dans un aquarium. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 9
4. Objectifs du projet /tache La méthode étudiée est le filtre à particules. Le but étant d étudier le filtre à particules, les différentes moyennes et méthodes. Juan Jose Pantrigo, professeur de l Université Juan Carlos I de Madrid, a réalisé un code en Matlab, utilisant le filtre à particules. C est ce code qui va nous servir comme base de départ. Ce code utilise la reconnaissance de la couleur et permet de suivre un objet en mouvement. Cette programmation a été réalisée en Matlab. Il est nécessaire dans un premier temps de comprendre le fonctionnement du code écrit par le professeur Pantrigo. Le projet devant se réaliser en langage C++, il est nécessaire de transcrire le code Matlab dans ce nouveau langage. Par la suite, de nouveaux algorithmes de calcul doivent être pensés, tel que par exemple le mouvement ou la comparaison d histogramme et des améliorations de ceux-ci. Une étude de quatre différents algorithmes sera réalisée. Les quatre méthodes sont la reconnaissance de couleur, de mouvement, la comparaison d histogramme et la différence, cette dernière étant un dérivé du mouvement. Le problème de la reconnaissance de plusieurs objets apparaitra alors. Cette reconnaissance ne consiste pas à reconnaitre seulement un objet et de le suivre tel une personne, un joueur mais de pouvoir faire la différence entre deux joueurs ou deux personnes afin de permettre l étude de leurs mouvements et performances par la suite. Suite à cela un autre problème pourra alors être abordé, il s agit du mouvement de la caméra perdant alors certains repères et compliquant le suivi. Pour arriver à ce résultat, la librairie OpenCv sera utilisée. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 10
5. Vue préalable des résultats obtenus Le projet avait comme base le projet de reconnaissance nce de la couleur du professeur Pantrigo, où il y avait le suivi d un objet en matlab. Après avoir retranscris le programme en C++, quatre algorithmes ont été développés. 1-La couleur. Cet algorithme évalue les différentes couleurs RGB des pixels, si cette valeur est supérieure à une moyenne alors l objet est détecté. C est la reprise du travail du professeur Pantrigo. 2-Le mouvement. Cet algorithme compare les valeurs des pixels entre le photogramme «background» et le photogramme actuel. Si la moyenne est supérieure à un seuil alors le mouvement est détecté comme étant un objet. 3-L histogramme. Cet algorithme compare l histogramme de l objet à reconnaitre avec celui de la particule. Si la moyenne est supérieure à un seuil alors la particule est détectée comme étant l objet recherché. 4-La comparaison de mouvement. Il s agit comme pour le mouvement de comparer le photogramme «background» avec le photogramme actuel. Puis de comparer les différences avec une image référence. Dans chacun des algorithmes étudiés, il a été nécessaire d ajouter des variables et des seuils. En effet ceux-ci ci sont nécessaires pour améliorer la reconnaissance de l objet. Mais ce sont aussi des contraintes supplémentaires et pause de nouvelles difficultés car ces seuils et variables diffèrent suivant les cas. Il faut donc les modifiés à chaque nouveau test, chacun de ces paramètres à son importance. Ils peuvent augmenter la précision de la reconnaissance, diminuer le nombre de fausse ou de non reconnaissance 6. Planification La planification générale du projet se découpe de la manière suivante : Figure 1 : Planification générale 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 11
La partie prototype s est déroulée de cette façon : Figure 2 : Déroulement de la partie prototype Idée : Correspond à l utilisation du filtre à particules Prototype : Algorithmes à étudier, qui fait l objet d une recherche. Implémentation : Codage en langage C++du prototype et le rajouter au programme. Tests : Tests sur les différentes vidéos de la méthode codée, trouver les bons paramètres qui permettent de suivre l objet. Discussion et analyse : Analyse des résultats, amélioration possible, questionnement sur le pourquoi ca ne fonctionne pas. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 12
7. Organisation du document Projet : C est le chapitre actuel, il sert de présentation du projet. La motivation les objectifs, les concepts utiles à la compréhension, ainsi que la planification. Open CV : Présentation des outils utilisés au cours du projet Programme : Fonctionnement, déroulement, explication des classes. Algorithmes et résultats : Présentation des algorithmes étudiés, de leurs tests effectués et des résultats rencontrés. Conclusion : Présente les conclusions du projet, des résultats obtenus et analyse les possibles améliorations à apporter au projet dans le futur. Bibliographie: Bibliographie comprenant les différents documents et adresse URL utilisés pour la réalisation de ce projet. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 13
Open CV 1. Qu est-ce que c est? 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 autre langage. Open CV 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. Il est possible grâce a la «licence de code ouvert» de réaliser un produit commercial en utilisant tout ou partie d OpenCV. Il n est pas obligatoire de montrer le code du produit et les améliorations réalisées au domaine public. 2. Fonctions utiles : Dans la suite de ce chapitre, les différentes fonctions et classes utilisées de la bibliothèque OpenCV sont détaillées et expliquées. Pour le traitement d image Pour la lecture de l image, il est nécessaire de connaître certaines fonctions IplImage* cvloadimage( const char* filename, int iscolor=cv_load_image_color ) Cette ligne charge l image. La fonction cvloadimage détermine le format de l image à partir du nom passé en argument, réserve la mémoire nécessaire pour la structure de données de l image et renvoi un pointeur. Ce pointeur s utilise pour manipuler tant l image que les données. Le second argument spécifie la couleur de l image chargée (RGB, noir et blanc ou échelle de gris). cvnamedwindow( Name, CV_WINDOW_AUTOSIZE); cvnamedwindow() ouvre une fenêtre qui peut contenir et montrer une image. Le premier argument correspond au nom à donner à la fenêtre. Le second défini les propriétés de la fenêtre. Ici CV_WINDOW_AUTOSIZE, signifie que la fenêtre prendra la taille de l image. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 14
cvshowimage( Name, img); Cette fonction permet d afficher une image de type «IplImage» dans la fenêtre créée au préalable. cvwaitkey(0); Cette ligne de code interrompt, momentanément ou indéfiniment, l exécution du programme. La valeur positive, entrée en argument, correspond au temps en millisecondes avant que le programme ne s exécute de nouveau. S il s agit d une valeur nulle ou négative, le programme attend que l utilisateur tape une touche du clavier pour s exécuter de nouveau. cvreleaseimage(&img); Cette fonction libère la mémoire réservée pour contenir les données de l image. cvdestroywindow( Example ); Cette fonction permet de détruire la fenêtre. IplImage* cvcloneimage( const IplImage* image ) Cette fonction permet de créer une copie complète de l image passée en argument. IplImage* cvcreateimage( CvSize size, int depth, int channels) Crée un emplacement et enregistre les données de l image. Le premier argument spécifie la taille de l image (hauteur et largeur). Le second spécifie la profondeur en bits des éléments (pixels) de l image. Le troisième spécifie le nombre de caractères par pixel. void cvcvtpixtoplane( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 ) Cette fonction sépare une matrice multi-canaux(src) vers plusieurs matrices n ayant qu un canal (dst0, dst1, dst2 y dst3). 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 15
Classe ImageOpenCV La classe ImageOpenCV a été crée afin de faciliter et regrouper certaines fonctions. Elle permet de déterminer les caractéristiques d une image, son nombre de lignes, de colonnes. inline T & GetPixel(const int &c, const int &r) Cette fonction est une des plus importantes fonctions utilisées. Elle permet, grâce aux paramètres rentrés en argument, d accéder aux données du pixel, par exemple les composantes RGB du pixel. Les paramètres rentrés en argument correspondent respectivement à la colonne et à la ligne du photogramme. int GetNCols() Renvoi le nombre de colonnes de l image. int GetNRows() Renvoi le nombre de lignes de l image. Pour lire la video Pour lire une vidéo et la travailler, les fonctions suivantes sont utiles CvCapture* capture = cvcreatefilecapture(argv[1]); La fonction cvcreatefilecapture() prend en argument le nom de du fichier AvI à être chargé et renvoi un pointeur à une structure de données CvCapture. Cette structure contient toute les informations sur le fichieravi qui a été lu. Le pointeur pointe au debut de la vidéo. cvreleasecapture(&capture); Libere la mémoire utilisée avec la structure CvCapture. Cette fonction ferme également tous les fichiers ouvert et qui font référenceau fichier AVI. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 16
CvVideoWriter* cvcreatevideowriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 ) Cette fonction crée une structure pour écrire une vidéo. Les arguments nécessaires sont : - Filename. Nom de la vidéo de sortie. - Fourcc. Code de quatre caractères du codec utilisé pour comprimer le photogramme - Fps.Nombre de photogrammes par seconde de la vidéo que l on veut créer. - Frame_size. Taille du photogramme. - Is_color. Permet de définir l échelle de couleur de l image. RGB, gamme de gris ou noir et blanc. IplImage* cvqueryframe( CvCapture* capture ) Lit puis renvoi le photogramme d une caméra ou d un fichier. double cvgetcaptureproperty( CvCapture*capture,int property_id); Obtient les propriétés de la vidéo. Propriété et vidéo spécifiées en argument. Voici quelques exemples de propriétés utiles au programme : - CV_CAP_PROP_FPS. Nombre de photogramme par seconde. - CV_CAP_PROP_FOURCC. Code de quatre caractères du codec utilisé - CV_CAP_PROP_FRAME_COUNT. Nombre de photogrammes dans la vidéo int cvwriteframe( CvVideoWriter* writer, const IplImage* image) Cette structure permet d ajouter un photogramme à la vidéo. void cvreleasevideowriter( CvVideoWriter** writer ) Cette fonction finalise l enregistrement de la vidéo et libère la structure. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 17
Classe ImageSourceVideo La classe ImageSourceVideo, comme la classe Image OpenCV regroupe quelques fonctions, dans ce cas ces fonctions renvoi en majorité les caractéristiques de la vidéo. IplImage * QueryFrame(bool &stop) S il s agit du dernier photogramme de la vidéo, la variable «stop» est mise à vrai, sinon la fonction cvqueryframe est appelée. int GetNCols() ; int GetNRows() ; int GetNumFrames() ; double GetFramesPerSecond() ; double GetFourcc() ; Ces cinq fonctions renvoient, respectivement, le nombre de colonnes, de lignes, de frame, de frames par seconde et FOURCC. FourCC est le code du codec utilisé pour l'écriture, sous forme d'entier. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 18
Le programme Dans ce chapitre, le fonctionnement du programme sera décrit. Il évoque la partie générale du programme celle qui est utilisée dans chaque méthode. 1. Comment fonctionne le programme Ce programme consiste à lire une vidéo, image par image, et sur chaque image de reconnaitre l objet voulu à l aide d un filtre à particule. 2. Classe et fonction / Architecture Il existe trois classes, la classe Particle, MeasureFunction et ParticleFilter. Elles sont coordonnées entres elles et rattachées à la fonction principale. 3. Fonction principale La fonction principale s utilise de la manière suivante : - Enregistrement de la vidéo à étudier - Lecture des photogrammes les uns après les autres - Etude du photogramme o Appel de la classe ParticleFilter et MeasureFunction o Affichage de la particule reconnue à chaque photogramme si au moins une particule correspond aux critères. - Fermeture de tous les fichiers et fenêtres ouverts après avoir passé tous les photogrammes. Plusieurs fonctions annexes sont utiles pour le fonctionnement du programme et appelé par la fonction principale : void DrawTrack (IplImage *,double,double, ParticleFilter) Dessine la particule, reconnu comme étant l objet. Les paramètres correspondent à l image dans laquelle la particule doit être dessinée, la taille de la particule, et sa position sur l image. La particule est un cadre rectangulaire avec un cercle en son centre. Void on_mouse (int event, int, int, int, void *) Permet de sélectionner, une image référence sur la frame en cours. Il faut selecionner deux points avant de valider en utilisant une touche du clavier. Le premier point correspond au coin supérieur gauche et le second au coin inférieur droit de l image sélectionnée. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 19
Void ChangeFrameOrigin (IplImage*,double,double,ParticleFilter,MeasureFunction*) Change la frameorigin à chaque photogramme. IplImage* CopyFrame (IplImage *img) Permet de copier l image à l identique. Void RGBtoBWframeOrigin (MeasureFunction*,IplImage*,double,double,ParticleFilter) Compare l image référence avec le «background» met le pixel en blanc si les pixels sont identiques, en noirs sinon. 4. Classe Particle Il s agit des caractéristiques de chaque particule, leur position (ligne, colonne), leur vitesse (deux paramètres), leur poids. Les fonctions la définissant sont les get et les sets permettant de lire ou de modifier les paramètres. 5. Classe ParticleFilter Elle possède plusieurs paramètres qui peuvent jouer sur le résultat du tracking. Parmi eux le nombre d objets, la taille de la fenêtre (deux paramètres nombre de lignes et de colonnes), nombre de particules, taille de la particule (deux paramètres nombre de lignes et de colonnes), la diffusion et le mouvement (deux paramètre chacun), le temps entre chaque frame, les particules et la méthode de suivi utilisé. C est la classe la plus importante, elle est appelée par la fonction principale pour la création de la classe, puis pour le tracking. Le constructeur Initialisation par défaut de plusieurs paramètres (taille de la particule nombre de particules, ).Initialisation aléatoire des positions de chaque particule. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 20
Le tracking Il suit ce principe : Figure 3 : Fonctionnement de la classe ParticleFilter Les fonctions sont expliquées dans le paragraphe suivant. Différentes fonctions utilisées Initialisation Consiste en un choix aléatoire de la ligne et de la colonne pour chaque particule. Si aucune particule ne possède un poids suffisamment important alors il y a réinitialisation afin de trouver la bonne particule. Actualisation Calcul du poids de la particule Appel de la classe «measure function» correspondant. La fonction de la classe renvoie pour chaque particule une moyenne. Estimation Il s agit de choisir la meilleure moyenne, dans ce cas, la particule, ayant le poids le plus élevé, est retenue. Prédiction Permet de connaitre la position suivante de chaque particule Pour cela nous utilisons la roulette, puis un algorithme de diffusion et de mouvement, permettant d anticiper la position suivante de l objet. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 21
o La roulette Principe de la roulette Il s agit de créer la roulette puis de regarder quelle est la première particule à obtenir un poids différent de zéro. Pour cela on somme le poids de toutes les particules précédent la particule en cours. La particule qui ressort de la roulette n est pas forcément la particule ayant le plus de poids, mais une particule proche. o Diffusion Correspond aux différentes possibilités de direction de l objet à l instant suivant (continuation ou changement de direction) PositionColonne= PositionColonne + valeur aléatoire comprise entre [-I ; I] PositionLigne= PositionLigne + valeur aléatoire comprise entre [-J ; J] VitesseColonne= VitesseColonne+ valeur aléatoire comprise entre [-K; K] VitesseLigne= VitesseLigne+ valeur aléatoire comprise entre [-L ; L] Les valeurs I, J, K et L étant définies dans le constructeur de la classe. o Mouvement Correspond aux différentes vitesses que peut prendre l objet (accélération, continuation, ralentissement, arrêt) PositionColonne=PositionColonne+VitesseColonne*DT+accélération PositionLigne=PositionLigne+VitesseLigne*DT+accélération VitesseColonne= VitesseColonne+ valeur aléatoire comprise entre [-X ;X] VitesseLigne= VitesseLigne+ valeur aléatoire comprise entre [-Y ; Y] Positions enregistrées sont celles de la précédente fonction diffusion. DT : 1/FPS, correspond à la vitesse de défilement des photogrammes. FPS : nombre de frame par seconde Accélération : valeur aléatoire comprise entre [-Z ; Z]. X, Y et Z sont définis dans le constructeur de la classe. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 22
6. Classe MeasureFunction Cette classe permet de calculer le poids de la particule. Il s agit de la classe mère. Elle possède différents paramètres tel le nombre de lignes et de colonnes de la particule et une image référence dans certains cas. Les classes filles suivantes seront plus détaillées dans le chapitre suivant. - MeasureFunctionColor - MeasureFunctionMotion - MeasureFunctionHisto - MeasureFunctionDiff Le principe de chaque classe fille est le suivant : Figure 4 : Fonctionnement de la classe MeasureFunction L image est parcourue pixel par pixel pour en lire la valeur RGB. Le traitement des données dépend de chaque classe fille, certaine ne possèdent pas cette partie, il y a juste besoin de la partie test. Pour la partie test, si suite au traitement, les critères correspondent alors la moyenne est incrémentée. Cette moyenne sera renvoyée et correspondra au poids de la particule. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 23
Algorithmes 1. Introduction Dans cette partie, il est détaillé les quatre algorithmes étudiés, ils seront présentés de la manière suivante, tout d abord il sera expliqué son fonctionnement, puis les paramètres qui le 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 de chacune d entre elle. 2. Couleur Fonctionnement : lecture pixel par pixel de la valeur de celui-ci en rouge vert et bleu. Puis test sur le pixel, suivant la couleur à reconnaitre le rouge, le vert et le bleu doivent être supérieur ou inférieur au seuil imposé. S ils respectent ces conditions alors on incrémente Test : condition de supériorité ou d infériorité sur chaque couleur. Paramètres Les paramètres principaux sont les différents seuils des couleurs (RGB). Dans l exemple utilisé, les conditions sont R>120, G<100, B<100. Résultats Figure 5 : Exemple1, pixels de couleur rouge reconnus dans les particules et reconnaissance de l objet 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 24
Sur les images ci-dessus, une erreur apparait, l objet n est pas reconnu sur la frame du milieu, cette erreur est du à la reconnaissance dans une particule. En ajoutant un paramètre, cette erreur peut être évitée, ce paramètre est un seuil appliqué à la moyenne de la particule, en effet si la moyenne est trop faible alors elle est considérée comme nulle. Le même exemple repris avec l ajout de ce seuil donne le résultat suivant. Figure 6:Exemple 2, reconnaissance d un objet à l aide de la couleur après modification d un paramètre. 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. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 25
3. Mouvement Fonctionnement: Il s agit de comparer pixel par pixel la particule 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. Puis une moyenne est faite pour chaque particule. Comparaison de pixel s effectue de la manière suivante : Chaque pixel est composé de trois valeurs (rouge, vert, bleue) le calcul peut s effectuer de deux manières : D= ((Rf-Rb)²+(Gf-Gb)²+(Bf-Bb)²) D=( Rf-Rb + Gf-Gb + Bf-Bb )/3 Paramètres Le photogramme «origine» peut être le premier photogramme de la vidéo, dans ce cas, elle ne doit pas contenir l objet, sinon il est possible de rentrer en paramètre une frame correspondant au «background». Résultats Analyse Figure7 : Reconnaissance de mouvement Dans la première image, le corps de la personne se découpe très bien, les contours sont visibles. Dans la seconde en revanche, une parte du buste n est pas reconnu. Tout cela dépend seulement du «background», ici la différence entre l objet et le «background» est très faible et donc n est pas prise en compte. Il est possible d amélioré cela, il suffit de modifier la valeur du seuil, mais il y a un risque de reconnaitre également des petits détails qui pourraient induire des erreurs. Dans ce 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 26
cas, il n y a pas de problème/ il n est pas nécessaire de modifier la valeur du seuil, en effet l objet à reconnaître étant important le reste suffit à le reconnaître. Avantage de la méthode : - La simplicité d utilisation. Inconvénient de la méthode : - Le premier photogramme ne doit contenir aucun objet, il s agit du fond (background). Possibilité de mettre une image «background» de la bibliothèque. - 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. 4. Histogramme Fonctionnement : Il y a deux types de reconnaissance à l aide d un histogramme. La première l image référence est toujours la même, le seconde elle 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 la particule. Une moyenne sera effectuées, puis inversée de façon a ce que la différence la plus petite possède le poids le plus grand. Paramètres : 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. Le changement de photogramme origine ou non : en effet il est possible de changer le photogramme origine a chaque photogramme, ceci peut être intéressant si l objet change de forme ou de couleur. Dans notre cas, les basketteurs peuvent être courbé ou alors en pleine extension lors d un saut pour marquer. Pour le poisson la couleur de l aquarium change légèrement mais peut provoquer des erreurs. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 27
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. Lorsque le choix de l image de référence se fait à la main sur le premier photogramme, les particules ne sont alors pas placées aléatoirement sur toute la frame, mais autour de la particule sélectionnée. De cette façon, l objet est détecté tout de suite, et si les paramètres sont corrects alors l objet est correctement suivi à chaque frame. Les paramètres de tracking, en particulier avec la méthode de l histogramme, sont difficiles à obtenir. En effet, ces paramètres peuvent dépendre de la taille de la particule référence mais aussi des informations qu elle contient. De ce fait, il est très difficile avec une sélection du photogramme référence, de trouver les bon paramètres car la sélection ne sera pas identique à chaque fois. Plus le nombre d information sur l objet est important, moins les erreurs sont possibles, en effet plus il y a d information, meilleurs sont les résultats. Mais si ces informations concernent «le background» en majorité, alors c est particule qui correspond le plus au «background» qui sera reconnu. Si tout le «background» est éliminé, une partie des informations de l objet sera également éliminées. En effet, un objet n est presque jamais rectangle et la forme des particules ne peut varier. 0 10 15 20 15 20 25 30 35 Figure 8 : Photogramme de référence pour l histogramme avec différents paramètres Le numéro correspond au numéro de photogramme dans la vidéo La première ligne la précision est de 10 et la deuxième est de 11 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 28
Dans la figure 9, il y a deux exemples, dans le premier les paramètres sont mis à 10, ce qui signifie que le poids minimum est a 10 sinon c est zéro et que si aucune particule n arrive à ce poids alors l objet n est pas reconnu, dans le second ils sont tous à 11. Ces paramètres sont la moyenne minimum, la condition d affichage et de prédiction. Analyse Si l image référence est fixe et que l objet change de taille, de forme ou de couleur au cour de la vidéo la reconnaissance ne se fera pas. En changeant la frame origin et donc l histogramme de comparaison le risque est moindre car l histogramme varie de la même manière que l objet. En revanche si on utilise le changement de frame il y a un risque de décalage à chaque changement et de ne reconnaître que le fond à la fin de la vidéo. Il est donc nécessaire de trouver un bon équilibre et de ne changer la frame et l histogramme que lorsque la particule et l histogramme sont très proche mais pas à chaque frame. 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. 5. Différence Fonctionnement Après avoir comparé la particule avec le «background», on met les pixels identique en blanc et en noir sinon. On compare ensuite avec l image référence le nombre de pixel noir en commun et on incrémente la moyenne. Pour les tests et ainsi voir les résultats ne manière nette, les pixels sont en noir et blanc. En revanche pour plus de rapidité dans le code final, seuls les pixels rouges sont modifiés, le résultat est le même. Paramètres Le «background» il ne change pas, il s agit du premier photogramme ou d un photogramme chargé de la bibliothèque. L image référence, comme chaque particule elle est comparée avec le «background», chaque pixel identique est mis en blanc, s ils sont différents, il est mis en noir. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 29
Résultats Le fait de sélectionner à la main l image référence sur le premier photogramme, permet de placer les particules autour afin de mieux localiser dès le début l objet à suivre. Le changement d image référence à chaque fois que l objet est reconnu est nécessaire. Les différences de l image et de la particule avec le «background» sont comparées, il faut donc que les deux images soient proche pour avoir de meilleurs résultats. En changeant d image référence et en la remplaçant par la meilleure particule rencontrée au photogramme précédent, les deux images seront plus ressemblantes. En effet dans l exemple du joueur de basket, les résultats seront meilleurs en comparant deux joueurs en pleine extension plutôt qu un joueur en extension et un joueur qui court courbé avec le ballon. 0 10 15 20 25 30 Figure 9 : Image de référence pour la reconnaissance avec la différence Le numéro correspond au numéro de photogramme dans la vidéo Ici, le joueur est très bien reconnu. Ce sont les images de références comparées avec le «background», elles sont ensuite comparées aux particules. 6. Conclusion 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 en mouvement. L histogramme n est pas très adapté car compliqué au vu du nombre de paramètres. Pour la différence tout comme le mouvement est pratique mais ne convient pa à toutes les situations. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 30
Conclusion Conclusions Le but du projet était de suivre plusieurs objets en même temps d une vidéo. Ces vidéos étant, une de basket avec trois joueurs ayant un parcours distinct et une autre de poissons, quatre poissons dans quatre aquariums différents se mouvant de manière aléatoire. L étude portait sur différents algorithmes de reconnaissance avec un filtre à particules. 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. L algorithme de reconnaissance des couleurs, algorithme utilisé par le professeur Pantrigo, était la premier algorithme étudié. Cet algorithme est simple et pratique mais limité car il ne reconnait que les objets à couleur unique. La méthode de reconnaissance de mouvement est l algorithme le plus simple d utilisation et de compréhension, malheureusement il est limité par le fait que la caméra doit être fixe, dans l étude faite la caméra ne bougeait pas, mais si des améliorations sont apportées afin d utiliser tout type d enregistrement, cet algorithme ne pourra être utilisée. L algorithme de comparaison d histogramme a été le plus difficile à mettre en place et les résultats ne sont pas très concluants, car il est difficile de trouver un seuil utilisable pour une vidéo et qui fonctionne. Le dernier algorithme est une reprise de l algorithme de reconnaissance de mouvement avec quelques améliorations permettant d augmenter les performances de reconnaissance et d éviter des erreurs en particulier si des objets qui font partis du background sont en mouvement. Il possède la même contrainte que la méthode de reconnaissance de mouvement sur la caméra. Chacun des algorithmes étudiés sont plus efficaces que les autres dans des cas précis, du fait de leur simplicité ou de leur précision. Ils ont néanmoins un point commun, il est nécessaire de faire des compromis, il est nécessaire de reconnaitre l objet à chaque instant, mais sans commettre d erreurs. Le fait de suivre plusieurs objets en même temps n a pu être étudié, de même que la partie de suivi d un objet avec une caméra qui n est pas fixe. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 31
Futurs travaux Le programme, fonctionnant pour le moment, pourrait également être amélioré, tout d abord améliorer sa vitesse d exécution en le simplifiant, améliorer son résultat en améliorant les techniques, ou encore en facilitant son utilisation, car un des problèmes majeurs est le nombre important de variables qui peut jouer un rôle dans la reconnaissance de l objet. Dans le futur, il sera intéressant de terminer le projet, de reprendre le travail effectué et de le compléter afin de pouvoir suivre plusieurs personnes à la fois. Pour élargir les types de vidéo, travailler avec une caméra qui n est pas fixe pourrait être intéressant. Cet objectif ne faisait pas parti des objectifs principaux mais il permettrait de travailler avec d autres vidéos, nous ne serions pas limité. Le problème est que certains algorithmes étudiés seraient inutilisables dans ces cas, en particulier celles qui utilisent un «background». Pour cela, il serait envisageable d étudier de nouveaux algorithmes qui pourraient améliorer les résultats d un type de vidéo ou d objet. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 32
Bibliographie (1) G.BRADSKI & A.KAELHER, Learning OpenCV Computer Vision with the OpenCV Library, O Reilly, Sebastopol, 2008. (2) Tutoriel de language C++ : http://www.cplusplus.com/doc/tutorial/ (3) J.SEGARRA MARTINEZ, Memoria técnica del proyecto Estudio de técnicas de segmentación temporal de video para su posible aplicación a video deportivos, Département informatique, Université Jaume I, Castellon de la Plaña, Juin 2009. 2009 Méthodes de suivi d un objet en mouvement sur une vidéo Page 33