Projet

Général

Profil

P14A06 Identification du mouvement humain par système de vision » Historique » Version 15

Anonyme, 06/04/2021 16:08

1 1 Anonyme
h1. Reconstruction du mouvement humain par système de vision
2
3 2 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16119/toto_20140501223939_20140501224037.jpeg!
4
5
---
6
7
*Projet GE2-GE3 2013* : Reconstruction du mouvement humain par système de vision
8
*Entreprise / Client* : INRIA, Christine Azevedo
9
*Auteurs* : Taoufik EL Kabir,Amine Boukouta
10
*Responsable Projet* : Sébastien Lengagne
11
*Tuteur industriel* : Pascal Fickinger
12
13
14
[[1. Résumé]] 
15
[[2. Abstract]] 
16
[[3. Lexique]] 
17
[[4. Abréviation]]
18
[[5. Introduction]] 
19
[[6. Présentation du Sujet]] 
20
        
21
p(((. [[1. Equipe DEMAR]] 
22
[[2. Contexte et enjeux]] 
23
[[3. Etat de l’art]] 
24
            
25
p((((. [[1. Kinovea]] 
26
[[2. Système Vicon]] 
27
        
28
p(((. [[4. Comparaison entre Les systèmes de vision existant et l’application à concevoir]] 
29
   
30
[[7. Cahier des Charges]] 
31
[[8. Developpement]] 
32
        
33
p(((. [[1. Problématiques]] 
34
[[2. Faisabilité]] 
35
            
36
p((((. [[1. Solutions envisageables]] 
37
[[2. Comparaison et choix de la méthode du suivi de mouvement]] 
38
        
39
p(((. [[3. Etude Théorique]] 
40
            
41
p((((. [[1. Algorithme détection par couleurs]] 
42
        
43
p(((. [[4. Solutions]] 
44
            
45
p((((. [[1. Qu’est ce que c’est OpenCV ?]] 
46
[[2. Développement et explication de l’algorithme suivi de mouvement choisi]]
47
48
p(((((. [[1. Suivi de l’objet et amélioration de la précision]]
49
[[2. Gestion des obstructions]] 
50
            
51
p((((. [[3. Algorithme enregistrement vidéo et synchronisation]] 
52
[[4. Test et validation]] 
53
                
54
p(((((. [[1. Programme suivi point d’intérêt]] 
55
[[2. Programme enregistrement et synchronisation des webcams]] 
56
[[3. Résultats et tests]] 
57
    
58
[[9. Gestion de Projet]] 
59
       
60
p(((. [[1. W.B.S.]] 
61
[[2. Gantt]] 
62
    
63
[[10. Notes d'application]] 
64
       
65
p(((. [[1. sujet 1]] 
66
[[2. sujet 2]] 
67
  
68
[[11. Bilan]]  
69
        
70
p(((. [[1. Etat d'avancement]] 
71
[[2. Limites]] 
72
[[3. Perspectives]] 
73
    
74
[[12. Bibliographie]]
75
76
---
77
78
p=. *%{color:#82B6E1}Résumé%* 
79 3 Anonyme
80
*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++.*
81
82
*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.*
83
84
p(((. *Mots clefs :*
85
86
*• Vision par ordinateur
87
• Modèle de l'humain
88
• Suivi et précision
89
• Obstructions*
90
91
---
92
93
p=. *%{color:#82B6E1}Abstract%* 
94
95
---
96
97
*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.*
98
99
*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.*
100
101
p(((. *Keywords:*
102
103
*• Vision by computer
104
• Model of the human being
105
• Follow-up and precision
106
• Obstructions*
107
108
---
109
110
p=. *%{color:#82B6E1}Lexique%* 
111
112
---
113
114
- 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.*
115
116
- 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 .*
117
118
- Hémiplégiques : *est une paralysie d'une ou plusieurs parties du corps d'un seul côté .*
119
120
- Sensori-moteur : *Partie du système nerveux responsable de la sensation et de la commande des mouvements.*
121
122
- Données cinématiques : *Information sur le mouvement de type : hauteur, angle de rotation, distance parcourue, vitesse de mouvement, accélération.*
123
124
- Gant : *Outil utilisé en gestion de projet pour visualiser l’état d’avancement des différentes tâches.*
125
126
- Synchronisé : *pouvoir démarrer en même temps.*
127
128
- 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.*
129
130
- Photogramme : *Image en cours de la vidéo.*
131
132
- Background : *Arrière plan.*
133
134
- 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.*
135
136
- Frame : *Image.*
137
138
- Pixel : *l'unité de base permettant de mesurer la définition d’une image numérique.*
139
140
- CPU : *Processeur.*
141
142
---
143
144
p=. *%{color:#82B6E1}Abréviation%*
145
146
INRIA : *L'Institut national de recherche en informatique et en automatique.*
147
148
CNRS: *Centre national de la recherche scientifique.*
149
150
LIRMM: *Laboratoire d'Informatique, de Robotique et de Microélectronique de Montpellier
151
152
SEF : *stimulation électrique fonctionnelle.*
153
154
SSM : *Système Sensori-moteur.*
155
156
3D : *Trois dimensions.*
157
158
2D : *Deux dimensions.*
159
160
W.B.S : *Word Breakdown Structure.*
161
162
HSV : *Hue, Saturation, Value, en français : TSV Teinte, Saturation, Valeur.*
163
164
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.*
165
166
---
167
168
p=. *%{color:#82B6E1}Introduction%* 
169
170
*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.*
171
172
*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.*
173
174
*À 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.*
175
176
*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.*
177
178
*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.*
179
180
---
181
182
p=. *%{color:#82B6E1}Présentation du Sujet%*
183
184
---
185
186
Equipe DEMAR
187
188
*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.*
189
190
*DEMAR s'intéresse au système sensori-moteur et ses déficiences selon deux axes de recherche :*
191
192
p(((. * Modélisation et identification du SSM*
193
* Synthèse et commande du mouvement induit par stimulation électrique fonctionnelle.*
194
195
---
196
197
Contexte et enjeux
198
199
*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.*
200
201
*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.*
202
203
*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.*
204
205
---
206
207
Etat de l’art
208
209
*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.*
210
211
---
212
213
Kinovea
214
215
*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.*
216
217
*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)*
218 4 Anonyme
219
p=. !https://forge.clermont-universite.fr/attachments/download/16121/Capture_20140501232858_20140501232913.jpg!
220
221
*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.*
222 5 Anonyme
223
p=. !https://forge.clermont-universite.fr/attachments/download/16122/Comparaison_dynamique_avec_Kinovea_20140501231417_20140501231541.jpeg!
224
225
*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.*
226
227
---
228
229
Système Vicon
230
231
*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.*
232
233
*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.*
234
235
---
236
237
Comparaison entre Les systèmes de vision existant et l’application à concevoir
238
239
*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.*
240
241
*Les systèmes de capture de mouvement qui existe sur le marché et qui permettent un suivi en trois dimensions sont relativement onéreux.*
242
243
---
244
245
p=. *%{color:#82B6E1}Cahier des Charges%*
246 6 Anonyme
247
---
248
249
*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 :*
250 7 Anonyme
251
p=. !https://forge.clermont-universite.fr/attachments/download/16123/Cahier_des_charges_20140501171601_20140501171626.jpeg!
252
253
---
254
255
p=. *%{color:#82B6E1}Developpement%*
256
257
---
258
259
Problématiques
260
261
*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.*
262
263
*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.*
264
265
---
266
267
Faisabilité
268
269
*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.*
270
271
Solutions envisageables
272
273
*Pour suivre un objet sur une vidéo il existe plusieurs algorithmes de traitement d’image.*
274
275
*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.*
276
277
p(((. *a. Détection par couleurs :*
278
279
p((. *• +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.*
280
281 8 Anonyme
p((. *• +Test :+* condition de supériorité ou d’infériorité à un seuil sur chaque couleur.
282 7 Anonyme
*• +Paramètres :+* Les paramètres principaux sont les différents seuils des couleurs
283 1 Anonyme
*• +Résultats :+*
284 8 Anonyme
285
p<. !https://forge.clermont-universite.fr/attachments/download/16124/Exemple_detection_couleurs_20140501232510_20140501232603.JPG!
286
287
p((. *•Analyse :+* 
288
289
p((. *Avantage :*
290
291
p(((. * 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.*
292
293
p((. Inconvénients : 
294
295
p(((. * 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.*
296
297
p(((. * 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.*
298
* Si notre objet change de couleur au cours de la vidéo, la couleur à reconnaître devra également être modifiée.*
299
300
p((((. - *b.* Détection de mouvement :
301
302
p((. *+• Fonctionnement :+*
303
304
*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.
305
• Paramètres :*
306
307
*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».*
308
309
*+• Résultats :+*
310 9 Anonyme
311
p=. !https://forge.clermont-universite.fr/attachments/download/16125/Reconnaissance_de_mouvement_20140501232858_20140501233019.jpg!
312
313
*+• Analyse+*
314
315
*Avantage de la méthode :*
316
317
*o La simplicité d’utilisation*
318
319
*Inconvénient de la méthode :*
320
321
*o Le premier photogramme ne doit contenir aucun objet, il s’agit du fond.*
322
323
*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.*
324
325
p(((. *c.* Histogramme :
326
327
*+• Fonctionnement :+*
328
329
*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.
330
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.*
331
332
*+• Paramètre :+*
333
334
*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.
335
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.*
336
337
*+• Résultats :+*
338
339
*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.*
340
341
*+• Analyse :+*
342
343
*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.*
344
345
Inconvénients :
346
347
*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.*
348
349
p((((. *d.* Différence :
350
351
*+• Fonctionnement :+*
352
353
*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.*
354
355
*+• Paramètre :+*
356
357
*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.*
358
359
*+• Résultats :+*
360 10 Anonyme
361
p=. !https://forge.clermont-universite.fr/attachments/download/16126/refe_20140501233528_20140501233550.jpg!
362
363
*Les numéros sur la figure ci dessus correspondent au numéro de photogramme dans la vidéo.*
364
365
*+• Analyse :+*
366
367
*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.*
368
369
---
370
371
Comparaison et choix de la méthode du suivi de mouvement
372
373
*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.*
374
375
*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.*
376
377
*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.*
378
379
*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.*
380
381
*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).*
382
383
*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.*
384
385
---
386
387
Etude Théorique
388
389
Algorithme détection par couleurs
390
391 11 Anonyme
p=. !https://forge.clermont-universite.fr/attachments/download/16127/Algo_20140501234041_20140501234100.jpg!
392 1 Anonyme
393 11 Anonyme
---
394
395
Solutions 
396
397
*Qu'est ce que c'est *%{color:red}OpenCV%*
398
399
*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.*
400
401
*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.*
402
403
---
404
405
Développement et explication de l'algorithme suivi de mouvement choisi
406
407
*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.*
408
409
p(((. *- Conversion de l’image en HSV :*
410
411
*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.*
412
413
*o Code C : image en HSV*
414
415
*IplImage?*hsv;
416
hsv = cvCloneImage(image);
417
cvCvtColor(image, hsv, CV_BGR2HSV);*
418
419
p(((. *- Création d’un masque :*
420
421
*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.*
422
423
*o Code C : création masque*
424
425
*IplImage? *mask;
426
mask = cvCreateImage(cvGetSize(image), image->depth, 1);
427
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 ».*
428
429
*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.*
430
431
*o La fonction se présente comme suit :*
432
433
*cvInRangeS(hsv, cvScalar(h – tolerance -1, s – tolerance, 0), cvScalar(h + tolerance -1, s + tolerance, 255), mask);*
434
435
p(((. *- Binarisation :*
436
437
*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.*
438
439
*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.*
440
441
p(((. *-  Choix de la couleur :*
442
443
*Afin de remplir le masque il faut faire le choix des paramètres HSV de la couleur traquée.
444
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.*
445
446
p(((. *- Erosion et dilatation :* 
447
448
*Après le choix de la couleur, et la création du masque binarisé vient l’étape de l’érosion et la dilatation.*
449
450
*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.*
451
452
*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.*
453
454
p(((. *- Calcul du barycentre :*
455
456
*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.*
457 12 Anonyme
458
p=. !https://forge.clermont-universite.fr/attachments/download/16128/Code_permettant_le_calcul_du_barycentre_20140501234629_20140501234705.jpg!
459
460
p(((. *- Ajout d’un marqueur et Lissage du déplacement :*
461
462
*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.*
463
464
*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.*
465 13 Anonyme
466
p=. !https://forge.clermont-universite.fr/attachments/download/16129/Code_permettant1_20140501235249_20140501235317.jpeg!
467
468
p(((. *- Libération de la mémoire :*
469
470
*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.*
471 14 Anonyme
472
p=. !https://forge.clermont-universite.fr/attachments/download/16130/Code_permettant_20140501235249_20140501235735.jpg!
473
474
---
475
476
Suivi de l’objet et amélioration de la précision
477
478
*Toutes c’est étapes ont permit d’avoir un masque qui contient l’objet voulu et isoler la couleur voulu.*
479
480
*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.*
481
482
*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.*
483
484
*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.*
485
486
---
487
488
Gestion des obstructions
489
490
*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.*
491
492
*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.*
493
494
---
495
496
Algorithme enregistrement vidéo et synchronisation
497
498
*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é.*
499
500
*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.*
501
502
*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é.*
503
504
---
505
506
Test et validation
507
508
*Lors de cette partie des explications seront faites afin d’exécuter correctement les deux programmes.*
509
510
Programme suivi point d’intérêt
511
512
*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 :*
513 15 Anonyme
514
p=. !https://forge.clermont-universite.fr/attachments/download/16131/Partie_programme_indiquant_le_chemin_de_la_video_20140502000113_20140502000129.jpg!
515
516
---
517
518
Résultats et tests
519
520
*Après compilation du programme qui permet le suivi des objets il faut :*
521
522
p((. * Choisir l’objet à traquer en appuyant sur la couleur à suivre.
523
 L’appui sur la touche « espace » permet de faire un saut d’un certains nombres d’images qu’on peut définir.*
524
525
*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.*
526
527
*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.*
528
529
---
530
531
p=. *%{color:#82B6E1}Gestion de Projet%* 
532
533
W.B.S.
534
535
*Voici le découpage de notre projet sous forme de tâches :*