Estabilizar luz (deflicker) de un timelapse en Linux
viernes, 4 de diciembre de 2015Un timelapse es una secuencia de fotografías tomas a intervalos regulares y procesadas posteriormente para componer con ellas una secuencia de vídeo. Hasta ahí todo claro. El problema es que para que la secuencia de vídeo tenga cierta continuidad, suavidad y aspecto «real» hay cumplir una serie de requisitos. La exposición fotográfica y el control del balance de blancos en la cámara debe ser dispuesta en modo manual de lo contrario los continuos ajustes que la cámara haga entre fotograma y fotograma provocarán una película llena de «saltos» en la luz de la escena, algunos muy sutiles y otros auténticas verbenas de luces.
El verdadero problema es que incluso estableciendo estos controles en manual estos saltos de luminancia, por otras cuestiones, siguen apareciendo. Es raro que una réflex haga en idénticas condiciones 250 fotos exactamente iguales y que no «salten» al verlas en formato de vídeo (parece que este defecto solo afecta a las réflex no a compactas por lo que muy probablemente se deba a pequeñas imprecisiones del diafragma del objetivo, reflejos internos de luz en el visor, etc… ).
Es el llamado «flickeo» de un timelapse, pequeñas variaciones de luz entre fotogramas contiguos que provocan que el vídeo «parpadee» muy sutilmente resultando extremadamente molesto.
Herramientas deflicker
Para evitar este «flickeo» aparecen las herramientas de «deflicker«. Básicamente son script muy sencillos que toman la secuencia de fotografías (ojo fotos originales, no vídeo resultante) analizan la luminancia de los fotogramas con sus «vecinos» y la alteran para amortiguar estos saltos de luz.
Como os podéis imaginar hay multitud de herramientas, de las que he probado y con diferencia la que mejores resultados produce es VirtualDub, una herramienta opensource para Windows con la que manipular vídeos y secuencias fácilmente.
Para GNU/Linux en terminal existe otra herramienta todavía más sencilla pero con muy buenos resultados: timelapse-deflicker.pl, un script en PERL.
Timelapse-deflicker.pl
Para instalar el script simplemente descarga este archivo timelapse-deflicker.pl, guardalo en ~/bin/, hazlo ejecutable (chmod +x ~/bin/timelapse-deflicker.pl) y ejecuta en consola timelapse-deflicker.pl -h
Es posible que tengas que instalar algunas librerías PERL para que funcione correctamente.
Entra en la carpeta donde tengas la secuencia de imágenes que componen el timelapse y en un terminal escribestimelapse-deflicker.pl -p 1 -w 15 Mi_secuencia*.jpg
Dentro de dicha carpeta el script creará otra llamada Deflickered donde irá produciendo otras tantas imágenes con la luz ya estabilizada. El proceso es lento y puede tardar alrededor de media hora para 250 fotografías. Al final comprueba si el resultado es de tu agrado generando un vídeomencoder mf://Deflickered/*jpg -vf scale -zoom -xy 512 -ovc lavc -o demo.avi
Haz pruebas, posiblemente tengas que probar diversos valores de -p y -w, yo suelo utilizar 2 pasadas (-p 2) y anchura de 30 (-w 30)timelapse-deflicker.pl -p 1 -w 15 Mi_secuencia*.jpg
Ten en cuenta, si el parpadeo (flicker) es fruto de un timelapse hecho con el exposímetro o el balance de blancos en automático, no hay Deflicker que lo arregle.
manuti
#1/ 04 de December/2015 a 13:08:31
Otros comentarios de «manuti»
Tomo nota, porque mis experimentos con la Raspberry Pi no me gustaron nada por ese efecto. https://www.youtube.com/watch?v=skq4Bkx1htQ
Trebol-a
#2/ 04 de December/2015 a 14:57:52
Otros comentarios de «Trebol-a»
Ten en cuenta que estamos hablando de flickering EN CÁMARAS REFLEX, esto no se produce en cámaras digitales compactas, cctv, etc... en estos casos aunque el defecto es muy parecido (solo que suele ser muchísimo más acusado) es debido sobretodo a la imposibilidad de funcionar en modo manual en el exposímetro y el balance de blancos.
Este script funciona bien cuando la variación de luz entre fotogramas es pequeña o muy pequeña.
18 de December, 2024 @ 10:58