lunes, 19 de octubre de 2015

Morphing múltiple con software libre

La semana pasada una compañera mencionó el interés de hacer un vídeo o presentación que indicara su evolución a lo largo de los años. Unos años atrás yo había realizado un "morphing" entre dos compañeros que había quedado "interesante" y se me "sugirió" como posible autor de ese vídeo. El problema es que en aquel momento utilizaba Windows y ahora, en Linux y software GPL, tras diferentes búsquedas, no he encontrade software libre que pudiera realizar un "morphing" múltiple entre 5 fotos. Por supuesto, por el simple hecho de aprender, hemos llegado a hacer un vídeo avi de 4 segundos con la evolución de esa persona a lo largo de los años.
Partimos de 5 fotos tamaño carnet que copiamos con el móvil (no buscamos la perfección, solo aprender los pasos). En Windows hay diferentes aplicaciones, la mayor parte de pago, que permiten hacer "morphing", pero las que lo hacen con más de 2 fotos —múltiples— son todas de pago. Con aplicaciones de las que usamos todos los días y que podemos instalar desde el terminal tenemos:
- Gimp, con la extensión —"plugin"— de vídeo gap (su -c 'dnf install gimp gimp-gap'
- Mencoder (su -c 'dnf install mencoder')
- Algunos scripts de Gimp

Describamos el proceso por partes:
1. Para hacer la fase de "morphing" hemos usado Gimp con su extensión Gap. Tenemos unas instrucciones más completas aquí. Lo que nos importa es que solo podemos hacer "morphing" entre 2 capas (lo siento, por protección de datos no hay fotos de la persona en cuestión).


Eso nos obliga a hacer una copia de la primera foto en gimp, pegarla como nueva capa y sobre ella añadir una segunda capa de la segunda foto. En el menú Video, que solo tendremos si antes hemos instalado la extensión Gap aparece la posibilidad de morphing - morph, que nos lleva a este menú.


Sobre como debe hacerse, el número de "sharepoints" y todo eso, remito a las instrucciones completas antes citadas. En mi caso, para generar una evolución natural, aplique un solo "sharepoint" en el punto del centro de la parte baja de cada una de las dos fotos. Para generar un segundo de vídeo entre cada dos fotos, pedí 25 superficies, lo que genera 25 capas nuevas que van evolucionando desde la primera foto hasta llegar a la última.
Las posibilidades que nos da Gimp una vez generadas las capas son guardar un gif, con la pérdida de calidad y niveles de color —256 colores— o animación mng, que es un formato de animación asociado a png, pero que no es un estándar y muchos programas no lo reconocen. Por eso decidí grabar cada capa como imagen individual y generar un fichero avi estándar desde la línea de comandos. Gimp no tiene esa posibilidad directamente, pero encontré unos scripts preparados. Guardando los scripts en al directorio /usr/share/gimp/2.0/scripts aparecen en el menú Archivo de Gimp la posibilidad de grabar las capas (como tal o completas) y eso me ha permitido tener la transición entre las dos imágenes.
1capa0001.png - 1capa0025.png (foto 1-2)
2capa0001.png - 2capa0025.png (foto 2-3)
3capa0001.png - 3capa0025.png (foto 3-4)
4capa0001.png - 4capa0025.png (foto 4-5)

2. Generar una salida con transición desde esas 100 imágenes hasta un fichero estándar aplicamos un comando que ya hemos utilizado anteriormente, preparando un avi formato mpeg4 y con 25 imágenes por segundo, aunque esta vez sobre png y no sobre jpg (lo he probado hasta en un windows media player y funciona).

mencoder "mf://*.png" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4

Listo; fácil y "free" (gratis y libre). Tras este experimento hemos comprobado que podemos realizar un morphing múltiple (entre 5 fotos) con aplicaciones de código libre.

Cosas a tener en cuenta:
- Las fotos deben todas tener la misma resolución (ajustar con gimp o bien en terminal con convert de ImageMagick)
- Probablemente sea recomendable ajustar esa resolución a aquella que queramos dar al vídeo (idem)
- La creación de capas en Gimp lleva tiempo; más cuanto menos potente sea el ordenador (y si la RAM está muy justita)
- El comando mencoder, tal como está aquí, sin reconversiones, se ejecuta en poco tiempo


No hay comentarios:

Publicar un comentario