Traitement d'images et Computer Vision

Traitement vidéo avec MATLAB

Applications, exemples et techniques

Applications courantes

Les applications vidéo présentent des défis courants mais difficiles, qui exigent des fonctionnalités d'analyse et de traitement flexibles. Grâce aux produits MATLAB et Simulink, vous pouvez développer des solutions aux problèmes les plus courants du traitement vidéo, notamment la stabilisation vidéo, le mosaïquage vidéo, la détection de cibles et le tracking.

Tracking d'objets

Le tracking d'objets est une composante essentielle de nombreuses applications telles que l'évitement de piétons, la sécurité, la surveillance et la réalité augmentée. Dans cet exemple, une balle est suivie à l'aide d'un filtre de Kalman.

Détection et comptage d'objets

Le traitement vidéo peut servir à détecter et compter des objets mobiles dans des séquences vidéo. Dans cette étude de cas, des scientifiques australiens utilisent des enregistrements vidéo pour estimer la population d'oiseaux aquatiques.

Traitement vidéo dans MATLAB

MATLAB propose des outils et des algorithmes qui permettent de visionner, d'analyser, de lire et d'écrire des vidéos. Le traitement vidéo peut s'avérer utile dans les applications suivantes :

Le traitement vidéo en quatre étapes simples

Le traitement vidéo dans MATLAB se compose des étapes suivantes :

  1. Lire de la vidéo
  2. Afficher la vidéo
  3. Traiter la vidéo
  4. Ecrire la vidéo

Étape 1. Lire la vidéo

Vous pouvez lire des vidéos à partir de fichiers ou directement depuis des caméras.

Une commande MATLAB unique vous permet de lire des vidéos à partir d'un fichier :

 >> vid = VideoReader('filename.avi')

MATLAB supporte les webcams pour le traitement vidéo, tandis qu'Image Acquisition Toolbox permet l'acquisition de données vidéo en temps réel depuis plusieurs caméras industrielles et scientifiques.

MATLAB vous permet de lire des fichiers vidéo grâce à de nombreux codecs, comme ceux propres aux systèmes d'exploitation Microsoft® Windows®, Mac et Linux®.

Étape 2. Afficher la vidéo

MATLAB propose deux méthodes pour l'affichage de vidéos :

  • deployableVideoPlayer : affichez efficacement une série d'images vidéo.
  • implay : lancez l'application Video Viewer pour afficher des vidéos.
video-viewer-app

L'application Video Viewer pour la lecture de films, de vidéos ou de séquences d'images dans MATLAB vous permet de démarrer, d'arrêter ou de lire une vidéo à des vitesses différentes, ou encore d'accéder à une section précise de la vidéo.

Étape 3. Traiter la vidéo

Une vidéo est une séquence d'images individuelles. Ainsi, un algorithme conçu pour la détection de contours sur une image peut être facilement adapté à la détection de contours sur une vidéo.

Lire une image unique

Lire une image d'une vidéo

current_image = imread('flowers.png');
edge(current_image);

current_image = readFrame(vid);
edge(current_image);

Le traitement vidéo peut être très simple, comme dans le cas de la détection de contours. Il peut également être extrêmement complexe, notamment lorsqu'il fait intervenir des algorithmes de tracking qui doivent tenir compte de la position d'un objet dans les images précédentes.

Pour plus d'informations sur le traitement vidéo avancé, reportez-vous aux exemples suivants :

Étape 4. Ecrire la vidéo

À l'issue du traitement, vous pouvez écrire chaque image d'une vidéo dans un fichier. Vous pouvez créer un fichier vidéo avec la fonction suivante :

 >> vid_w = VideoWriter('newfile.avi'); >> open(vid_w)

La variable vid_w peut accumuler de nouvelles images afin de créer une vidéo.

Un exemple MATLAB complet

Nous allons maintenant voir un exemple complet illustrant les étapes de lecture, d'affichage, de traitement et d'écriture d'une vidéo :

 %% Read and process a video into MATLAB % Setup: create Video Reader and Writer videoFileReader = VideoReader('tilted_face.avi'); myVideo = VideoWriter('myFile.avi'); % Setup: create deployable video player and face detector depVideoPlayer = vision.DeployableVideoPlayer; faceDetector = vision.CascadeObjectDetector(); open(myVideo); %% Detect faces in each frame while hasFrame(videoFileReader)  % read video frame videoFrame = readFrame(videoFileReader);  % process frame bbox = faceDetector(videoFrame); videoFrame = insertShape(videoFrame, 'Rectangle', bbox);  % Display video frame to screen depVideoPlayer(videoFrame);  % Write frame to final video file writeVideo(myVideo, videoFrame); pause(1/videoFileReader.FrameRate); end close(myVideo)

Vous pouvez télécharger ce code depuis MATLAB Central.

Techniques avancées

Algorithmes de traitement vidéo pour la Computer Vision

Les algorithmes MATLAB qui utilisent la corrélation temporelle pour le traitement vidéo sont basés sur le concept d'« état », à savoir que l'algorithme traite une image précise tout en utilisant des images précédentes pour déterminer son résultat. Cela est essentiel pour les algorithmes de tracking d'objets, qui reposent sur des informations antérieures pour déterminer les actions à venir. L'algorithme de Kanade-Lucas-Tomasi constitue un exemple de tracking courant : il effectue le tracking des points individuels d'un objet pour suivre sa position.

Les développeurs d'algorithmes de traitement vidéo peuvent également utiliser les algorithmes de Computer Vision Toolbox. Ceux-ci vous permettent de lire et d'afficher des vidéos haute résolution rapidement et avec un minimum de mémoire. La toolbox contient des algorithmes pour le traitement de nuages de points 3D, la vision stéréo, la détection, le tracking et la reconnaissance d'objets, et d'autres applications.

En savoir plus sur le traitement d'image

Générer du code CUDA pour un algorithme de suppression de l'effet brouillard

Utilisez GPU Coder pour générer du code CUDA à partir d'un algorithme de suppression des effets du brouillard écrit dans MATLAB.

Le traitement d'images sur FPGA (5 Vidéos)

Découvrez les considérations, les workflows et les techniques permettant de cibler un algorithme de traitement de la vision sur FPGA.

Le Deep Learning pour la Computer Vision

Découvrez comment MATLAB relève les défis les plus courants rencontrés lors du développement de systèmes de reconnaissance d'objets et découvrez les nouvelles fonctionnalités de Deep Learning, de Machine Learning et de Computer Vision.