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.
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 :
- Reconnaissance d'objets à l'aide du Deep Learning
- Estimation du mouvement comme le flux optique
- Détection et suivi de visages
Le traitement vidéo en quatre étapes simples
Le traitement vidéo dans MATLAB se compose des étapes suivantes :
- Lire de la vidéo
- Afficher la vidéo
- Traiter la vidéo
- 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 image unique |
Lire une image d'une vidéo |
---|---|
|
|
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.
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.