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.

MATLAB Conference 2017 Australia Dr. Shannon Dundas, NSW Department of Primary Industries

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:

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.
video-viewer-app

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.

Lectura de una sola imagen

Lectura de un fotograma de vídeo

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.

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

Descubra las consideraciones, el flujo de trabajo y las técnicas para algoritmos de procesamiento de visión destinados a hardware de FPGA.
Descubra cómo MATLAB aborda los desafíos más comunes encontrados en el desarrollo de sistemas de reconocimiento de objetos y obtenga información sobre las nuevas prestaciones de Deep Learning, Machine Learning y visión artificial.