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 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:
- Reconocimiento de objetos con deep learning
- Cálculo del movimiento mediante flujo óptico
- Detección y seguimiento facial
Procesamiento de vídeos en cuatro pasos simples
El procesamiento de vídeos en MATLAB implica los siguientes pasos:
- Leer el vídeo
- Mostrar el vídeo
- Procesar el vídeo
- 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.
Lectura de una sola imagen |
Lectura de un fotograma de vídeo |
---|---|
|
|
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.
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.