Procesamiento de vídeos con MATLAB

Aplicaciones, ejemplos y técnicas

Aplicaciones frecuentes

Las aplicaciones de vídeo presentan retos comunes pero complejos que precisan un análisis flexible y funcionalidades de procesamiento. Los productos MATLAB® y Simulink® permiten desarrollar soluciones para abordar los retos más habituales del procesamiento de vídeos, tales como estabilización del vídeo, creación de mosaicos de vídeos, detección de objetivos y seguimiento.

Seguimiento de objetos

El seguimiento de objetos es una parte esencial de muchas aplicaciones, tales como evitación de peatones, seguridad y vigilancia o realidad aumentada. En este ejemplo, se realiza el seguimiento de una pelota pequeña mediante filtrado de Kalman.

Detección y recuento de objetos

El procesamiento de vídeos se puede emplear para detectar y contar objetos que se mueven en secuencias de vídeo. En este caso de estudio, científicos australianos utilizan metraje de vídeo para estimar la población de aves acuáticas.

Procesamiento de vídeos en MATLAB

MATLAB® proporciona herramientas y algoritmos que permiten visualizar, analizar, leer y escribir vídeos. El procesamiento de vídeos puede resultar útil en aplicaciones como las siguientes:

El procesamiento de vídeo es esencial en áreas como deep learning, estimación del movimiento y conducción autónoma. Aprenda a interactuar con vídeos, procesarlos y analizarlos viendo un ejemplo detallado en MATLAB.

Procesamiento de vídeos en cuatro pasos simples

El procesamiento de vídeos en MATLAB implica los siguientes pasos:

  1. Leer el vídeo
  2. Mostrar el vídeo
  3. Procesar el vídeo
  4. Escribir el vídeo

Paso 1. Leer el vídeo

Es posible leer vídeos mediante archivos o directamente desde una cámara.

Un simple comando de MATLAB permite leer vídeos a partir de archivos:

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

MATLAB admite webcams para el procesamiento de vídeos, mientras que Image Acquisition Toolbox™ permite la adquisición en tiempo real mediante muchas cámaras industriales y científicas.

MATLAB ofrece la posibilidad de leer archivos de vídeo mediante diversos códecs, incluidos códecs específicos para sistemas operativos como Microsoft® Windows®, Mac y Linux®.

Paso 2. Mostrar el vídeo

Existen dos métodos para mostrar vídeos en MATLAB:

  • deployableVideoPlayer: visualización eficiente de una serie de fotogramas de vídeo.
  • implay: inicio de la app Video Viewer para visualizar vídeos.

La app Video Viewer, que reproduce películas, vídeos o secuencias de imágenes de MATLAB. Esta app permite iniciar, detener y reproducir vídeos a diferentes velocidades, así como saltar a una parte del vídeo.

Paso 3. Procesar el vídeo

Un vídeo es una secuencia de fotogramas de vídeo (o imágenes) individuales. Esto significa que un algoritmo diseñado para llevar a cabo la detección de bordes en una imagen se puede convertir con rapidez para que detecte los bordes en un vídeo.

Read single image

Read image frame from video

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

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

El procesamiento de vídeos puede ser muy simple, como en el ejemplo de la detección de bordes, o significativamente más complejo, como en el caso de los algoritmos de seguimiento que deben tener en cuenta la ubicación de un objeto en los fotogramas anteriores.

Para obtener más información sobre el procesamiento de vídeo avanzado, véanse los siguientes ejemplos:

Paso 4. Escribir el vídeo

Después del procesamiento, es posible escribir cada uno de los fotogramas de un vídeo de nuevo en un archivo. Se puede crear un archivo de vídeo con la siguiente función:

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

La variable vid_w puede acumular nuevos fotogramas para crear un vídeo.

Un ejemplo de MATLAB completo

Reunamos todos los componentes y veamos un ejemplo completo a fin de ver los pasos necesarios para leer, mostrar, procesar y escribir vídeo:

 %% 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) 

Este código se puede descargar desde MATLAB Central.

Técnicas avanzadas

Algoritmos de procesamiento de vídeos para visión artificial

Los algoritmos de MATLAB que emplean la correlación temporal para el procesamiento de vídeos se basan en el concepto de “estado”, es decir, la idea de que el algoritmo trabaja en el fotograma de vídeo actual pero también usa los fotogramas anteriores para determinar la salida. Esto es crucial para los algoritmos de seguimiento de objetos, que confían en la información previa para determinar las acciones futuras. Un ejemplo habitual de seguimiento es el algoritmo KLT, que realiza el seguimiento de puntos individuales en un objeto para rastrear la ubicación de un objeto.

Los desarrolladores de algoritmos de procesamiento de vídeos también pueden usar los algoritmos específicos de visión incluidos en Computer Vision System Toolbox™. Los algoritmos permiten leer y ver vídeos de alta resolución de una forma rápida y sin consumir mucha memoria. Esta toolbox también incluye algoritmos para procesamiento de nubes de puntos 3D, visión en estéreo, detección de objetos, seguimiento y reconocimiento, y otras aplicaciones.

Ejemplos

Más información sobre el procesamiento de vídeos

Utilice GPU Coder para generar código CUDA a partir de un algoritmo de rectificación de niebla escrito en MATLAB.
Learn the considerations, workflow, and techniques for targeting a vision processing algorithm to FPGA hardware
Descubra cómo MATLAB aborda los retos más comunes a la hora de desarrollar sistemas de reconocimiento de objetos y vea nuevas capacidades para deep learning, machine learning y visión artificial.