Crear vídeos con MATLAB en 3 sencillos pasos

Publicado por Alejandro Escario en

MATLAB, como no podía ser de otra manera, es una herramienta muy útil para el desarrollo ágil de algoritmos, probarlos y así, cuando nos decidamos a pasarlos a un lenguaje distinto que nos permita su mejor explotación, estemos seguros de que va a funcionar, que no hemos implementado funciones que realmente no nos hacían falta y que no vamos a dar demasiados pasos en falso.

Nosotros, los que estudiamos Ingeniería de Telecomunicaciones, estamos bastante acostumbrados a trabajar con MATLAB pero, al menos en mi caso, siempre me había visto tratando señales de audio o de radiación, nunca imágenes o vídeos. Pero ayer, en un intento de hacer algo diferente (mostrar la evolución de una imagen conforme se va comprimiendo), se me ocurrió la idea de mostrar cada una de las imágenes obtenidas por mi algoritmo como un frame de vídeo en una película.

Tras investigar un poco, puedo decir que crear un vídeo *.avi usando MATLAB, es de lo más sencillo, es más, sólo tenemos que escribir cuatro líneas (aunque usa podrá repetirse tantas veces como frames tengamos en nuestro vídeo).

Paso 1

Creamos una variable en la que insertaremos los distintos frames:

movie = avifile('video.avi', 'fps', 10, 'compression', 'none');

Esta función tiene la siguiente especificación:

aviobj = avifile(filename, ParameterName, ParameterValue)

Es decir, le tenemos que pasar el nombre del fichero y tantas parejas parámetro->valor como deseemos; en nuestro caso hemos especificado que queremos mostrar 10 frames por segundo y que no queremos compresión alguna en nuestro vídeo resultante.

Paso 2

Añadimos todos los frames que deseemos, para ello antes debemos convertir la imagen que queremos que aparezca en el vídeo en un frame; en definitiva:

frame = im2frame(image, gray(256));
movie = addframe(movie, frame);

Si tienes dudas sobre lo que hacen estas funciones puedes consultar las especificaciones de im2frame y de addframe.

Paso 3

Cerramos las variables y, por consiguiente dejamos el video listo para reproducirse en programas como el videolán:

movie = close(movie);
Categorías: ManualesMATLAB

5 comentarios

Josh · junio 25, 2013 a las 2:59 pm

[img=http://www.subirimagenes.cl/images/2013/06/24/Untitled-1.gif]

Buena… pero un comunicado…

La funcion avifile solo estará disponible hasta el matlab r2012b
a partir de posteriores, se eliminara y remplazara por «videowriter»

Miguel · enero 23, 2014 a las 3:54 am

Hola. Estoy realizando un trabajo en el cual se haga un video .avi a partir de una serie de imagenes utilizando los ciclos FOR. ¿me podria colaborar?

    Alejandro Escario · enero 23, 2014 a las 8:31 am

    Dentro del for, para cada una de las imágenes debes ejectuar lo siguiente:

    frame = im2frame(image, gray(256));
    movie = addframe(movie, frame);

julio · marzo 27, 2014 a las 4:20 pm

hola, yo quisiera poder hacer lo contrario, es decir tener el video y dividirlo en imágenes
gracias.

eloy picallo · octubre 2, 2014 a las 11:47 am

hola me gustaria saber como pasar una trama en formato SDI DE 8 bit en formato avi con el matlab
muchas gracias

Los comentarios están cerrados.