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 est une étape essentielle dans des domaines tels que le Deep Learning, l'estimation de mouvement et la conduite autonome. Apprenez comment traiter, analyser et interagir avec des vidéos en regardant cet exemple détaillé dans MATLAB.

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.

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 seule image

Lire une trame image dans 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.

Exemples

En savoir plus sur le traitement d'image

Utilisez GPU Coder pour générer du code CUDA à partir d'un algorithme de rectification des effets du brouillard écrit dans MATLAB.
Découvrez les considérations, processus et techniques pour implémenter un algorithme de traitement d'images sur un FPGA.
Découvrez comment MATLAB adresse les défis courants du développement de systèmes de reconnaissance d'objets. Explorez les nouvelles fonctionnalités du Deep Learning, du Machine Learning et de la Computer Vision.