0% ont trouvé ce document utile (0 vote)
13 vues43 pages

Suivi D'objets

Le document traite des applications de vision artificielle, en mettant l'accent sur la bibliothèque OpenCV, qui facilite l'exécution d'algorithmes de vision par ordinateur en temps réel. Il explique les principes de base des images numériques, les opérations de traitement d'images, ainsi que les algorithmes et techniques offerts par OpenCV pour le suivi d'objets et l'analyse vidéo. Enfin, il aborde la reconstruction 3D et l'importance de la calibration de la caméra dans le traitement d'images.

Transféré par

diarrassoubakarim91
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
13 vues43 pages

Suivi D'objets

Le document traite des applications de vision artificielle, en mettant l'accent sur la bibliothèque OpenCV, qui facilite l'exécution d'algorithmes de vision par ordinateur en temps réel. Il explique les principes de base des images numériques, les opérations de traitement d'images, ainsi que les algorithmes et techniques offerts par OpenCV pour le suivi d'objets et l'analyse vidéo. Enfin, il aborde la reconstruction 3D et l'importance de la calibration de la caméra dans le traitement d'images.

Transféré par

diarrassoubakarim91
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

4.1.

Introduction :
Les applications de vision artificielle sont intéressantes et utiles, mais les
algorithmes sous-jacents sont gourmands en ressources informatiques.

Avec l'avènement du cloud computing, nous disposons de plus de puissance de


traitement pour travailler. La bibliothèque OpenCV nous permet d'exécuter
efficacement les algorithmes de vision par ordinateur en temps réel. Elle existe
depuis de nombreuses années et elle est devenue la bibliothèque standard dans ce
domaine. L'un des principaux avantages d'OpenCV est qu'elle est hautement
optimisée et disponible sur presque toutes les plateformes.

4.2. Principes de base des images


Une image numérique est une représentation électronique d'un objet/scène ou d'un
document numérisé.

La numérisation d'une image consiste à la convertir en une série de chiffres et à


stocker ces chiffres dans un système de stockage informatique.

4.2.1. Les Pixels :


Imaginez une série de points disposés en rangées et en colonnes, et ces points ont
différentes couleurs. C'est à peu près comme cela que se forme une image.

Les points qui forment une image sont appelés pixels. Ces pixels sont
représentés par des nombres, et les valeurs des nombres déterminent la couleur
d'un pixel. Pensez à une image comme à une grille de cellules carrées dont
chaque cellule est constituée d'un pixel d'une couleur particulière. Par exemple,
une image de 300×400 pixels signifie que l'image est organisée en une grille de
300 lignes et 400 colonnes. Cela signifie que notre image a 300×400 = 120 000
pixels.

4.2.1.1. Couleur du pixel :


Un pixel est représenté de deux façons : en niveaux de gris et en couleur.

4.2.1.1.1. Niveaux de gris :


Dans une image en niveaux de gris, chaque pixel prend une valeur comprise
entre 0 et 255. La valeur 0 représente noir, et 255 représente le blanc. Les valeurs
intermédiaires sont des nuances de gris. Le site

Les valeurs proches de 0 sont des nuances de gris plus sombres, et les valeurs
proches de 255 sont des nuances de gris plus claires.

4.2.1.1.2. Couleur :
Le modèle de couleur RVB (RGB) (rouge, bleu et vert) est l'une des
représentations les plus populaires d'un pixel.). Il existe d'autres modèles de
couleurs.

Dans le modèle RVB, chaque pixel est représenté comme un tuple de trois
valeurs, généralement représentées comme suit : (valeur pour la composante
rouge, valeur pour la composante verte, valeur pour la composante bleue).
Chacune des trois couleurs est représentée par des entiers allant de 0 à 255.

Voici quelques exemples :

(0,0,0) est une couleur noire.


(255,0,0) est une couleur rouge pure.

(0,255,0) est une couleur verte pure.

4.3. Opérations de traitement d'images :


Le traitement d'images consiste à transformer une image sous une forme
numérique et à effectuer certaines opérations pour en tirer des informations
utiles. Le système de traitement d'images traite généralement toutes les images
comme des signaux 2D lorsqu'il applique certaines méthodes prédéterminées de
traitement du signal.

Il existe cinq grands types de traitement d'images :

-Visualisation - Trouver des objets qui ne sont pas visibles dans l'image.

-Reconnaissance - Distinguer ou détecter des objets dans l'image

-Accentuation et restauration - Créer une image améliorée à partir de l'image


originale.

-Reconnaissance des formes - Mesurer les différents motifs autour des objets dans
l'image

-Récupération - Parcourir et rechercher des images dans une vaste base de données
d'images numériques similaires à l'image originale.

4.3.1. Étapes fondamentales du traitement de l'image :


4.3.1.1. Acquisition d'images
L'acquisition d'images est la première étape du traitement d'images. Cette étape
est également connue sous le nom de prétraitement dans le traitement d'images.
Elle consiste à récupérer l'image à partir d'une source, généralement une source
matérielle.

4.3.1.2. Amélioration de l'image


L'amélioration d'une image consiste à faire ressortir et à mettre en évidence
certaines caractéristiques intéressantes d'une image qui a été masquée. Il peut
s'agir de modifier la luminosité, le contraste, etc.

4.3.1.3. Restauration d'images


La restauration d'image est le processus d'amélioration de l'apparence d'une
image. Cependant, contrairement au rehaussement d'image, la restauration
d'image est effectuée à l'aide de certains modèles mathématiques ou
probabilistes.

4.3.1.4. Traitement des images en couleur


Le traitement des images en couleur comprend un certain nombre de techniques
de modélisation des couleurs dans un domaine numérique. Cette étape a pris de
l'importance en raison de l'utilisation importante d'images numériques sur
Internet.
4.3.1.5. Ondelettes et traitement multi résolution
Les ondelettes sont utilisées pour représenter des images à différents degrés de
résolution. Les images sont subdivisées en ondelettes ou en régions plus petites
pour la compression des données et pour la représentation pyramidale.

4.3.1.6. Compression
La compression est un processus utilisé pour réduire le stockage nécessaire à
l'enregistrement d'une image ou la bande passante requise pour la transmettre.
Cela se fait notamment lorsque l'image est destinée à être utilisée sur Internet.

4.3.1.7. Traitement morphologique


Le traitement morphologique est un ensemble d'opérations de traitement permettant
de transformer des images en fonction de leurs formes.

4.3.1.8. Segmentation
La segmentation est l'une des étapes les plus difficiles du traitement d'images. Elle
consiste à partitionner une image en ses parties constitutives ou objets.

4.3.1.9. Représentation et description


Après qu'une image a été divisée en régions au cours du processus de
segmentation, chaque région est représentée et décrite sous une forme adaptée à
un traitement informatique ultérieur. La représentation concerne les
caractéristiques de l'image et les propriétés régionales. La description consiste à
extraire des informations quantitatives qui permettent de différencier une classe
d'objets d'une autre.
4.3.1.10. Reconnaissance
La reconnaissance attribue une étiquette à un objet sur la base de sa description.

4.3.1.11. Avantages du traitement d'images


La mise en œuvre de techniques de traitement d'images a eu un impact massif sur
de nombreuses organisations technologiques. Voici quelques-uns des avantages
les plus utiles du traitement d'images, quel que soit le domaine d'activité :

-L'image numérique peut être mise à disposition dans le format souhaité (image
améliorée, radiographie, négatif photo, etc.).

Il permet d'améliorer les images pour l'interprétation humaine

-L'information peut être traitée et extraite des images pour l'interprétation par la
machine.

-Les pixels de l'image peuvent être manipulés pour obtenir la densité et le contraste
souhaités.

-Les images peuvent être stockées et récupérées facilement

-Il permet une transmission électronique facile des images à des fournisseurs tiers.

4.3.2. Applications du traitement d'images :


4.3.2.1. Recherche d'images médicales
Le traitement d'images a été largement utilisé dans la recherche médicale et a
permis d'établir des plans de traitement plus efficaces et plus précis. Par exemple,
il peut être utilisé pour la détection précoce du cancer du sein à l'aide d'un
algorithme sophistiqué de détection des nodules dans les scanners mammaires.
Étant donné que l'usage médical exige des processeurs d'images hautement
qualifiés, ces applications nécessitent une mise en œuvre et une évaluation
importante avant d'être acceptées.

4.3.2.2. Technologies de détection du trafic


Dans le cas des capteurs de trafic, nous utilisons un système de traitement
d'images vidéo ou VIPS. Celui-ci se compose) d'un système de capture d'images,
b) d'un système de télécommunication et c) d'un système de traitement d'images.
Lors de la capture vidéo, un VIPS comporte plusieurs zones de détection qui
émettent un signal "on" lorsqu'un véhicule entre dans la zone, puis un signal
"off" lorsque le véhicule sort de la zone de détection. Ces zones de détection
peuvent être configurées pour plusieurs voies et peuvent être utilisées pour
détecter le trafic dans une station particulière.

Figure 33 : A gauche - image de circulation normale | A droite - une image


VIPS avec des zones de détection.

En outre, il peut enregistrer automatiquement la plaque d'immatriculation du


véhicule, distinguer le type de véhicule, surveiller la vitesse du conducteur sur
l'autoroute et bien d'autres choses encore.

4.4. La puissante sauvegarde : OpenCV


Nous allons démontrer la puissance du suivi OpenCV et son fonctionnement.
Cependant, vous vous demandez ce qu'est OpenCV ? Comment cela soutient-il
les objectifs de suivi en cours de réalisation ? Dans cette partie, nous allons nous
concentrer sur OpenCV et vous aider à mieux comprendre les mécanismes sous-
jacents.

4.4.1. OpenCV :
OpenCV (Open Source Computer Vision Library) est une bibliothèque logicielle
open source de vision par ordinateur et d'apprentissage automatique. OpenCV a
été construit pour fournir une infrastructure commune pour les applications de
vision par ordinateur et pour accélérer l'utilisation de la perception artificielle
dans les produits commerciaux.
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 plus de 500 fonctions [50]. Et
plus de 2500 algorithmes optimisés, qui ont une excellente précision en termes
de performances et de vitesse dans la vision par ordinateur et d'apprentissage
automatique classiques et de pointe. Ces algorithmes peuvent être utilisés pour
détecter et reconnaître des visages, identifier des objets, classer des actions
humaines dans des vidéos, suivre les mouvements de caméra, suivre des objets
en mouvement, extraire des modèles 3D d'objets, La bibliothèque est largement
constituée de sociétés professionnelles, de groupes de recherche et d’autres
groupes. De nombreuses entreprises bien établies telles que Google, Yahoo,
Microsoft, Intel, IBM, Sony, Honda et Toyota qui emploient la bibliothèque.
[51]

Figure 34 : Le logo d’OpenCV Рисунок 35 - Архитектура OpenCV

.
4.4.2. Les algorithmes préconstruits offerts par OpenCV pour le suivi
d'objets
Il y a 8 algorithmes prédéfinis qu'OpenCV offre pour le suivi d'objets. Ils sont tous
uniques et nous vous présentons ici leurs avantages et leurs inconvénients pour
vous permettre de mieux les comprendre.
Traqueur Avantages Inconvénients
BOOSTING  Suivez les objets  Relativement lent.
Tracker avec précision.  Impossible de
s'arrêter lorsqu'un
objet est perdu.
MIL Tracker  Forte résistance au  Faible vitesse.
bruit.  Impossible
 Donne des résultats d'arrêter le suivi
précis. une fois l'objet
perdu.
KCF Tracker  Vitesse et précision  Incapacité de
élevées. continuer à suivre
 Arrête le suivi les objets une fois
lorsque l'objet est perdus.
perdu.
TLD Tracker  Résistance au  Instable dans la
chevauchement et à détection et le
la mise à l'échelle suivi des objets.
des objets.  Perd constamment
l'objet.
MEDIANFLOW  Haute précision et  Perd rapidement
Tracker rapidité. son objet en raison
 Précision dans la de sa vitesse
détermination de la élevée.
perte de l'objet.
GOTURN  Montre une  Si la vitesse d'un
Tracker résistance aux objet est élevée, il
obstructions et au se déplace vers un
bruit. autre objet.
MOSSE Tracker  Capable de  Perd l'objet
poursuivre le suivi facilement si la
après la perte de vitesse est très
l'objet. élevée.
 Vitesse élevée.
CSRT Tracker  Bonne résistance au  Vitesse lente.
chevauchement.  Instable lorsqu'un
 Haute précision. objet est perdu.

4.4.3. Mise en œuvre avec Python et OpenCV


Maintenant, après l'explication théorique d'OpenCV et du suivi OpenCV,
apprenons le suivi d'objets OpenCV Python avec le codage et nos instructions
simples et pas à pas.
Figure 36 : OPENCV Python

4.5. Construction de l'interface graphique (GUI) :


OpenCV fournit un module appelé highgui qui gère toutes les opérations de
l'interface opérations de l'interface utilisateur. Disons que vous travaillez sur un
problème et que vous souhaitez vérifier à quoi ressemble l'image avant de passer
à l'étape suivante. Ce module possède des fonctions qui peuvent être utilisées
pour créer des fenêtres afin d'afficher des images et/ou des vidéos.

Il existe également une fonction d'attente qui attendra que nous appuyions sur une
touche du clavier pour passer à l'étape suivante.

Avant de passer à l'étape suivante. Il existe également une fonction qui peut
détecter les événements de la souris.
Cette fonction est très utile pour développer des applications interactives. En
utilisant cette fonction, nous pouvons dessiner des rectangles sur ces fenêtres de
saisie et ensuite procéder en fonction de la région sélectionnée.

Figure 37 : L’application de GUI sur un bateau.

Comme on peut le voir, nous avons dessiné un rectangle vert sur l'image et
appliqué un effet de film négatif à cette région. Une fois que nous avons les
coordonnées de ce rectangle, nous pouvons opérer uniquement sur cette région.

4.6. Analyse vidéo :


L'analyse vidéo comprend des tâches telles que l'analyse du mouvement entre
des images successives, le suivi de différents objets dans une vidéo, la création
de modèles pour la vidéosurveillance, et ainsi de suite.
OpenCV fournit un module appelé vidéo qui peut gérer tout cela. Il existe un
module appelé videostab qui traite de la stabilisation de la vidéo. La stabilisation
de la vidéo est une partie importante des caméras vidéo. Quand vous capturez des
vidéos en tenant la caméra dans nos mains, il est difficile de garder nos mains
parfaitement stables. Si nous regardons la vidéo telle qu'elle est, elle aura l'air
mauvaise et instable. Tous les appareils modernes utilisent des techniques de
stabilisation vidéo pour traiter les vidéos avant de les présenter à l'utilisateur
final.

4.7. Reconstruction 3D :
La reconstruction 3D est un sujet important en vision par ordinateur. Étant donné
un ensemble d'images 2D nous pouvons reconstruire la scène 3D en utilisant les
algorithmes appropriés. OpenCV fournit des algorithmes qui peuvent trouver la
relation entre divers objets dans ces images 2D pour calculer leurs positions 3D.

Nous disposons d'un module appelé calib3d qui peut gérer tout cela. Ce module
peut également gérer la calibration de la caméra, qui est essentielle pour estimer
les paramètres de la caméra. Ces paramètres sont en fait les paramètres internes
d'une caméra donnée qui les utilise pour transformer la scène capturée en une
image.

Nous devons connaître ces paramètres pour concevoir des algorithmes, sinon nous
pourrions obtenir des résultats inattendus. Considérons la figure suivante :
Figure 38 : Prendre une figure de plusieurs positions.

Comme le montre l'image précédente, le même objet est capturé sous plusieurs
poses. Notre travail consiste à reconstruire l'objet original en utilisant ces images
2D.

4.8. Suivi d'objets OpenCV


Le suivi OpenCV est une méthode populaire utilisée pour suivre des objets dans
une vidéo en temps réel. OpenCV est une bibliothèque puissante utilisée pour les
applications de traitement d'images et de vision par ordinateur.
De l'analyse vidéo en temps réel à la réalité augmentée, OpenCV Tracking a un
large éventail d'utilisations et peut aider les secteurs privé et public à détecter et à
suivre l'objet souhaité dans une image ou une vidéo.
Dans cette étape de notre travail, nous allons explorer le suivi OpenCV et ses
trackers préconstruits. Nous utiliserons la bibliothèque OpenCV et Python pour
mettre en œuvre cette application de suivi d'objets en rapport avec nos travaux
précédents.
4.8.1 Qu'est-ce que le suivi d'objets ?
Le suivi d'objets détermine l'emplacement d'un objet dans une vidéo et peut être
utilisé à des fins diverses, notamment la surveillance, la sécurité, le contrôle du
trafic, la criminalistique numérique, la détection d'anomalies, la reconnaissance de
gestes, la surveillance visuelle, l'interaction homme-machine, la réalité augmentée
et la vision robotique.
Même si cela peut sembler facile pour une personne ordinaire, le suivi d'un objet
est assez complexe pour les ordinateurs, car ils doivent analyser un ensemble
d'images et estimer la trajectoire de l'objet en se basant sur des chiffres plutôt que
sur des images.
En raison de sa complexité, le suivi des objets est considéré comme l'une des tâches
les plus difficiles de la vision par ordinateur. Même s'il s'agit d'un défi, il n'est pas
impossible à relever.

Figure 39 : Exemples des domaines d’applications

Et il y a deux niveaux de suivi d'objet que vous devez connaître :


4.8.2. Les niveaux de suivi d'objet que vous devez connaître : SOT et MOT
Single Object Tracking (SOT) : SOT est un algorithme de suivi qui crée des
modèles d'apparence avancés et/ou des modèles de mouvement pour gérer des
problèmes difficiles comme les rotations hors plan, les variations d'éclairage ou les
changements d'échelle.
Multiple Object Tracking (MOT) : MOT suit toutes les parties d'une vidéo et
s'occupe principalement des tâches de niveau moyen et sert de base aux tâches de
haut niveau.
4.8.3. La différence entre le suivi et la détection d’objets
Le suivi et la détection d’objets sont deux méthodes importantes en vision par
ordinateur. Le suivi d’objet permet de suivre en temps réel la position d’un objet
donné dans une image ou une vidéo, tandis que la détection d’objet identifie et
localise les objets dans une image ou une vidéo. C’est là toute la différence.

Рисунок 40 – Основные категории детекторов объектов [15]

4.8.4. Les types de suivi d'objets


4.8.4.1. Le suivi des images
Le suivi d'image permet aux utilisateurs d'interagir plus naturellement avec le
contenu numérique et les aide à se déplacer et à interagir avec les objets
numériques de la même manière qu'avec les objets physiques du monde réel.
Le suivi des images peut être utilisé dans diverses applications de réalité augmentée
(RA), telles que les jeux, le shopping et la navigation en RA. En outre, vous pouvez
également l'utiliser à des fins pédagogiques, par exemple pour enseigner l'anatomie
ou fournir des instructions pour une tâche difficile.
4.8.4.2. Le suivi des vidéos
Le suivi vidéo est le processus de suivi des objets dans une séquence vidéo et peut
être utilisé pour diverses applications, telles que la détection et le comptage des
objets dans une scène, la compréhension de leurs mouvements et la reconnaissance
des activités.
4.8.5. Les difficultés du suivi des objets
Comme il a été mentionné ci-dessus, l’utilisation du suivi d’objet est polyvalente.
Cependant, le suivi des objets présente certains défis, tels que :
Encombrement de l’arrière-plan : L’arrière-plan peut avoir un impact sur
l’extraction des caractéristiques d’un objet. Si l’arrière-plan est plus densément
peuplé, la détection ou le suivi de l’objet d’intérêt peut être plus difficile.
Occlusion : Il s’agit d’un phénomène où l’objet suivi est affecté par l’arrière-plan
ou le premier plan. L’algorithme de suivi est alors perturbé par la proximité de
plusieurs objets, ce qui entraîne la perte de la trace de l’objet.
Variations d’échelles spatiales : Les échelles spatiales variables font référence à
l’objet cible de taille ou de forme différente, ce qui peut perturber l’algorithme et
entraîner des erreurs.
Formation et suivi de la vitesse : Si l’objet se déplace trop rapidement ou est trop
petit, il peut être difficile à suivre. Le module de suivi doit donc être conçu pour
suivre, identifier et localiser des objets en quelques secondes.
4.8.6. Mécanisme de suivi d’objets
Après l'introduction du suivi d'objets sur le plan technique, découvrons son
mécanisme sous deux angles : les périodes du processus de travail et la façon dont
il effectue le suivi.
4.8.6.1. Étapes du processus de suivi des objets
Voici les étapes du processus de suivi des objets :
- Initialisation de la cible
L'initialisation de la cible est la première étape du suivi d'objets. Elle consiste à
définir les cibles ou les objets d'intérêt et à dessiner une boîte englobante autour
d'eux dans l'image initiale. Ensuite, le tracker doit détecter la position de l'objet
dans l'image tout en dessinant la boîte englobante.
- Modélisation de l'apparence
La modélisation de l'apparence est importante pour comprendre comment un objet
se présentera dans différentes circonstances. Si l'objet suivi change d'aspect en
raison d'un éclairage, d'un angle ou d’une vitesse différente, l'algorithme de suivi
peut perdre ses informations et l'objet lui-même. Par conséquent, elle doit être
menée pour permettre à l'algorithme de détecter les changements et les distorsions.
- Estimation du mouvement
L'estimation du mouvement implique la capacité du modèle à anticiper avec
précision la position future d'un objet.
- Positionnement de la cible
L'estimation du mouvement est un processus d'approximation de la région la plus
probable où un objet pourrait être présent. Une fois l'emplacement de l'objet
approximé, un modèle visuel peut être utilisé pour déterminer plus précisément
l'emplacement de la cible.
4.8.6.2. Méthodes de suivi des objets

- Suivi d’objets basé sur OpenCV


La méthode de suivi d’objet OpenCV est largement utilisée car elle offre
plusieurs fonctions intégrées conçues spécifiquement dans ce but, telles que
GOTURN, MIL, MediandFlow, et CSRT. Le type de tracker que vous choisirez
dépendra de la conception de votre application spécifique. Chaque tracker a ses
avantages et ses inconvénients, de sorte qu’il n’existe pas un seul type de tracker
idéal pour toutes les applications.
- MDNet
Multi-Domain Convolutional Neural Network Tracker est un tracker visuel basé
sur des neurones convolutifs et a remporté le défi VOT2015. De plus, il est
composé de couches spécifiques au domaine, de branches et de multiples
couches partagées.
Figure 41 : Architecture standard d’un réseau à convolutions
Le tracker MDNetT est un réseau neuronal profond qui a été entraîné sur de
nombreux ensembles de données de suivi d’objets. Le traqueur est conçu pour
fonctionner dans plusieurs domaines, notamment la vidéo, le texte et les images.
- DeepSort
L’algorithme DeepSort peut suivre les objets en temps réel et utilise YOLO v3
pour calculer les boîtes englobantes autour des objets dans une image.
DeepSort utilise le filtre de Kalman de l’algorithme Simple Online and Realtime
Tracking et un modèle d’identification, ReID, pour relier les boîtes de
délimitation et les pistes des objets.
- ROLO
ROLO est une nouvelle méthode de suivi des objets qui utilise des réseaux
neuronaux récurrents (RNN) pour apprendre des représentations spatio-
temporelles spécifiques aux objets. Cette méthode fonctionne avec YOLO, un
algorithme de détection d’objets, et un LTSM pour déterminer la trajectoire
d’un objet.
4.9.1. Langage de programmation

1.8.1.2. Python

Le langage de programmation Python a été créé en 1989 par Guido van Rossum,
aux Pays-
Bas. Le nom Python vient d’un hommage à la série télévisée Monty Python’s
Flying Circus. Python est un langage de script de haut niveau, structuré en
open source, la première version publique de ce langage a été publiée en
1991.La dernière version de Python est la version 3.8.5 qui a été introduit le
20 juillet 2020. La version 2 de Python est désormais obsolète et cessera
d’être maintenue après le 1er janvier 2020. Dans la mesure du possible évitez
de l’utiliser. Python est le langage de programmation le plus utilisé dans le
domaine du Machine Learning, du Big Data et de la Data Science.

1.7.4.2. Pourquoi choisir python ?


Ce langage de programmation présente des nombreuses caractéristiques
intéressantes tel que :
• Il est multiplateforme (portable). C’est-à-dire qu’il fonctionne sur de
nombreux systèmes d’exploitation : Windows, Mac OS X, Linux,
Android, iOS, depuis les miniordinateurs Raspberry Pi jusqu’aux
supercalculateurs.
• Il est gratuit. Vous pouvez l’installer sur autant d’ordinateurs que
vous voulez (même sur votre téléphone !).
• C’est un langage de haut niveau. Il demande relativement peu de
connaissance sur le fonctionnement d’un ordinateur pour être utilisé.
• C’est un langage interprété. Un script Python n’a pas besoin d’être
compilé pour être exécuté, contrairement à des langages comme le C ou
le C++. Il convient bien à des scripts d’une dizaine de lignes qu’à des
projets complexes de plusieurs dizaines de milliers de lignes. Il est
relativement simple à prendre en main.
• Toutes ces caractéristiques font que Python est désormais enseigné
dans de nombreuses formations, depuis l’enseignement secondaire
jusqu’à l’enseignement supérieur.
Figure 42 : Le logo du python
1.7.4.3. Numpy

NumPy est une extension du langage de programmation Python, destinée à


manipuler des matrices ou tableaux multidimensionnels ainsi que des
fonctions mathématiques opérant sur ces tableaux. Plus précisément, cette
bibliothèque logicielle libre et open source fournit de multiples fonctions
permettant notamment de créer directement un tableau depuis un fichier ou au
contraire de sauvegarder un tableau dans un fichier, et manipuler des vecteurs,
matrices et polynômes. On peut aussi l’intégrer avec le code C / C ++ et
Fortran.

3. Réalisation et résultats expérimentaux

3.1. Introduction

Dans ce chapitre, nous présenterons le matériel utilisé dans notre projet de


stabilisation basée sur un capteur gyroscopique. Et ensuite nous verrons
comment appliquer le suivi d'objets à l'aide de OpenCV et python. Plus
précisément, nous allons utiliser l’algorithme MIL Tracker pour construire
notre système de suivi d'objets. A la fin, nous examinerons les résultats des
différents tests.

3.2. Assemblage du matériel et tests du système de stabilisation


3.2.1. Комплектация:
— подвес;

— крепежная площадка с демпферами;

— крепеж камеры на подвес;

— болтики для крепежа подвеса на раму модели;

— провод из штекером JST;

— шлейф из пяти проводов для управления с аппаратуры подвесом.

3.2.2. Характеристики:
— процессор: STM32F103;

— гироскоп и акселерометр MPU6050;

— драйвера моторов DRV8313

— моторы бесколлекторные;

— размер крепежной площадки — 60х60мм

— полная высота подвеса — 120мм

— вес — 197грамм.

— питание подвеса — 10-18V,

— подвес работает на три управляемые оси;

— моторы БК

— материал рамы подвеса — металл;


— возможность настройки работы подвеса через ПК

Figure 43 - болтики для крепежа подвеса на раму модели

За повороты подвеса по оси отвечает бесколлекторный мотор С2805 145Kw.

Figure 44 - мотор С2805 145Kw


Figure 45 - крепеж камеры на подвес

Figure 46 - процессор: STM32F103

L’accéléromètre et le gyroscope de la puce MPU6050 sont chargés de stabiliser les axes « X »


et « Z ».
Figure 47 - гироскоп и акселерометр MPU6050

Figure 48 - Les différentes facettes après montage des pièces

Figure 50 - вес — 197грамм


Figure 49 - Электрическая схема и компоновка плат

Для платы v1.3x STorM32 схема подключения немного отличается (обратите


внимание на «пересечение» линий Tx/Rx на разъеме NT на плате STorM32):

Поддержка энкодера T-STorM32 основана на концепции NT и, в частности, на


возможности подключения специализированных модулей двигателя к шине NT.
T-STorM32 достигает своих целей за счет использования модулей двигателя,
которые также включают в себя энкодеры или управляют ими. Таким образом,
эти модули можно назвать модулями NT Motor-Encoder.

Концепция T-STorM32 состоит из основной платы контроллера STorM32 и трех


модулей NT Motor-Encoder, по одному для каждой оси (предполагается 3-осевой
стабилизатор). Драйверы двигателей на основной плате v1.3x или v4.1 STorM32
не могут быть использованы, и, в отличие, например, от Basecam/Alexmos, также
невозможно подключить энкодеры непосредственно к основной плате. Модули
NT Motor-Encoder подключаются к шине NT, а двигатели и энкодеры
подключаются к соответствующему модулю NT Motor-Encoder. Модули NT
Motor-Encoder также должны быть подключены к аккумуляторной батарее. Таким
образом, была введена шина NTX, которая передает как сигналы шины NT, так и
линии питания аккумулятора.

Таким образом, концепция, в которой также нарисована типичная схема


подключения, выглядит следующим образом:
Рисунок 36 - схем подключения

3.6.2. Environnement immatériel ou le software


3.6.2.1. Installation de python
Pour pouvoir aller au bout de nos objectifs, on va avoir besoin de télécharger
un certain nombre de programmes (Python 3) (que nous devrions avoir déjà
installé), ainsi que certaines librairies.
Figure 51 : Installation de Python 3.6.1

3.6.2.2. Installation des librairies :


On va en utiliser plusieurs, qui seront téléchargées par le biais de pip (installé en
même temps avec Python). Saisissez les commandes suivantes dans la console
Windows (Cmd) pour tout récupérer :

Figure 52 - Installation d’OpenCV par la commande pip


Figure 53 - Test de fonctionnement d’OpenCV

Figure 54 - Installation de Numpy par la commande pip

Figure 55 - Test de fonctionnement de Numpy


Figure 56 - Test de fonctionnement de argparse

3.7. Configurer les traqueurs


3.7.1. Création d’un Jupyter-notebook et configurez les trackers avec le code.
Pour exécuter Jupyter Notebook dans l’environnement créé
MyNewEnvironmentName, nous devons rechercher Anaconda3 au démarrage et
lancez le notebook avec le nom de l’environnement.

Figure 57 - exécution de Jupyter Notebook


3.7.2. La fenêtre de console s’affiche : il s’agit du moteur Jupyter Notebook, qui
s’exécute en arrière-plan :
Figure 58 - fenêtre de console en arrière-plan

В Jupyter запускаем Python 3 :

Figure 59 - Python 3
3.7.3. Для того, чтобы убедиться в какой среде мы работаем, можно
вбить ряд команд (ниже приведен текст этих команд для Python 3):
Figure 60 :
3.8. Объяснение программы
3.8.1. Tâches
 cv2. version renvoie le numéro de version de la bibliothèque OpenCV.
 Enregistrez le nom des huit trackers.
 Vérifiez la liste de la version sur laquelle vous travaillez et créez un objet de
suivi en fonction du numéro.
Figure 61 - Enregistrez le nom des huit trackers
3.8.2. Capturez l'entrée vidéo
Pour capturer l'entrée vidéo, écrivez les lignes de code suivantes :
Tâches :
 Utilisez la classe VideoCapture pour capturer une vidéo via la webcam ou en

récupérer une enregistrée sur votre PC.


 Dans VideoCapture - ligne 2, donnez le chemin vers votre vidéo.
 Commentez la deuxième ligne pour utiliser la webcam pour le suivi et
décommentez la troisième ligne.
Création de la boîte englobante et initialisation du traqueur
Définissez une boîte englobante aléatoire initiale ou sélectionnez les choix pour
l'objet que vous voulez suivre avec le code suivant :
Démarrer le traqueur et vérifier la sortie
Enfin, écrivez les lignes de code ci-dessous pour démarrer le traqueur :
3.9. Implémentation et résultats expérimentaux
Tout d'abord, nous importons les packages nécessaires pour que notre modèle
puisse fonctionner.
3.9.1. Importation des packages nécessaires :
import serial : Pour la communication série

import time : Pour la gestion du temps

import binascii : Pour les opérations sur les données binaires

import numpy as np : Pour les calculs numériques

import cv2 : Pour le traitement d'image et la vidéo

import sys : Pour les opérations système

Figure 62 : Les bibliothèques d'importation.

Ensuite, nous analysons nos arguments de ligne de commande :

3.9.2. Initialisation

dwig = False : Variable booléenne pour activer/désactiver quelque chose

tracker = cv2.TrackerMIL_create() : Crée un tracker d’objet de type MIL

cap = cv2.VideoCapture(1) : Ouvre la caméra vidéo, ici la caméra 1


Figure 63 – Initialisation

3.9.3. Configuration de la connexion série :


ser = serial.Serial(...) : Ouvre une connexion série avec les paramètres spécifiés

Figure 64 :
3.9.4. Fonctions
crc16(data, offset, length) : Calcule le CRC16 d'un tableau d'octets
intToBytes(num) : Convertit un entier en deux octets (high, low)
Figure 65

3.9.5. Constantes :
cmdStart = 'FA' : Début de la commande

cmd_pitch = '020A', cmd_roll = '020B', cmd_yaw = '020C' : Adresses des


commandes de tangage, roulis et lacet

Pitch = 0, Roll = 0, Yaw = 0 : Angles de départ

pitchRatio, rollRatio, yawRatio : Facteurs d'échelle pour les angles

Fonction move_gimbal(pitch, roll, yaw) :

 Calcule les valeurs des servos de tangage, roulis et lacet


 Convertit ces valeurs en deux octets (high, low)
 Construit les commandes de tangage, roulis et lacet

Figure 66
3.9.6. Fonction move_gimbal(pitch, roll, yaw)
 Calcule les valeurs des servos de tangage, roulis et lacet
 Convertit ces valeurs en deux octets (high, low)
 Construit les commandes de tangage, roulis et lacet
Figure 67
3.9.7. La boîte englobante de la zone à suivre
Le code commence par initialiser le tracker avec une boîte englobante sélectionnée
à l'aide de la fonction cv2.selectROI.

Figure 68
Le code comprend des commandes pour initialiser le suiveur avec le premier cadre
d'une vidéo et une boîte de délimitation, ainsi que pour obtenir la largeur et la
hauteur des cadres vidéo. Il contient également une boucle qui lit de nouveaux
cadres de la vidéo, fait pivoter chaque cadre de 180 degrés, et sort de la boucle s'il
échoue à lire un nouveau cadre.
Figure 69 - commandes pour initialiser le tracker

Ensuite, le code compare la position du centre de la boîte englobante par rapport au


centre de l'image pour déterminer les mouvements de tangage (Pitch), de roulis
(Roll) et de lacet (Yaw). Ces valeurs sont utilisées pour contrôler un cardan
(gimbal) à l'aide de la fonction move_gimbal.

Figure 70

3.10. Les Résultats des expériences


3.10.1. Délimitation de la zone à tracker
Figure 71 - Utilisation de la trajectoire pour dessiner la boîte de délimitation

3.10.2. Le suivis du mouvement de la tête


Ensuite, il lit les dimensions de la vidéo d'entrée et initialise un compteur de temps.
Dans la boucle principale, le code lit chaque nouveau cadre de la vidéo, effectue
une rotation de 180 degrés sur le cadre et met à jour le tracker avec le nouveau
cadre. Ensuite, il dessine une boîte englobante autour de l'objet suivi et calcule le
centre de la boîte englobante.

Figure 72 - Lancement du minuteur et détermination de la trajectoire des


mouvements de la tête
3.10.3. Suivi de l’objet a une distance éloignée
Enfin, le code affiche les informations de suivi et la vidéo résultante avec les boîtes
englobantes dessinées. Il vérifie également si une seconde s'est écoulée depuis la
dernière mise à jour du cardan, afin de ne pas le mettre à jour trop fréquemment.
Le code se termine en vérifiant si la touche ESC a été pressée, auquel cas le
programme se termine.
Le programme commencera le suivi. Ensuite, appuyez sur la barre d'espacement
pour arrêter le suivi.

Figure 73 - Affichage des informations de suivi et la vidéo résultante avec les boîtes
englobantes.
3.11. Conclusion
Dans cette partie de notre travail, nous avons écrit un script utilisant OpenCV et
Python pour isoler et suivre un objet, un membre de notre corps en mouvement et
en temps réel. Nous avons pu voir les vitesses auxquelles se déplace chaque objet
suivi. Ce script peut être mis à jour pour détecter différents objets en utilisant un
Haar Cascade pré-entraîné de la bibliothèque OpenCV.

Vous aimerez peut-être aussi