miércoles, 9 de junio de 2010

El crudo movimiento

Los que seguís la página habéis podido ver que últimamente me ha vuelto a dar por los Stop Motions. Cuando empecé a interesarme por ellos, ya hace un par de años, hice una serie de scripts para Linux que ayudaban a llevar a cabo esta curiosa técnica (que consiste en crear movimiento uniendo un buen conjunto de fotos fijas).

Ahora he evolucionado en mi hobby de la fotografía, y he hecho llegar a esta página técnicas como el HDR y formatos nuevos, como el NEF (el RAW de Nikon). Pensé que sería una aberración interesante combinarlo todo, así que eso he hecho.


Os presento a continuación dos scripts parecidos basados en UFRaw (para revelar los archivos RAW), Qtpfsgui (para crear imágenes HDR y mencoder (para hacer los vídeos).

Script RAW2Avi en acción. Incluye barra de progreso basada en Zenity.


El primero es RAW2Avi. Este script coge una sucesión de archivos NEF tal y como salen de una cámara Nikon, los revela con la configuración que le demos (a través de un archivo ID de UFRaw) y realiza un vídeo con los fotogramas revelados.

#!/bin/bash
#
# AUTORÍA:
#
# Script realizado por Astaroth (O.R.G - http://astarothsworld.blogspot.com), apoyado en muchos otros programas que son los que realmente hacen todo el trabajo.
#
# OBJETIVO:
#
# Partiendo de una secuencia de imágenes RAW y un posible patrón de UFRaw (ID), hacer un clip de video.
#
#
# DEPENDENCIAS:
#
# Usaremos UFRaw opara revelar los archivos y mencoder para hacer el vídeo.
#
# Uso:
#
# "./RAW2Avi" en la carpeta con las imágenes.
#
# ------------------------------------------
#
# FASE CERO: Presentación y pedida de datos.
carpeta=`pwd`
clear
echo "****************************"
echo "BIENVENIDO A HDR CLIP MAKER!"
echo "****************************"
echo "By Astaroth (O.R.G.)"
echo " "
echo "Suponemos que las imágenes tiene la nomenclatura _DSC####.NEF,"
echo "donde \"####\" representa la numeración que ha de ser CONSECUTIVA."
echo "En caso contrario, habría que editar este script para ajustarlo"
echo "a lo que necesitemos."
echo " "
echo "Cuál es el número que etiqueta la primera foto?"
read ini
echo "Cuál es el número que etiqueta la última foto?"
read fin
echo " "
echo "IMPORTANTE: Si desea introducir un patrón de UFRaw, asegúrese de"
echo "que esté copiado en la carpeta \"$carpeta\""
echo "junto con las imágenes RAW antes de continuar."
echo " "
echo "Pulse ENTER para empezar."
read nomeimporta
{
# PRIMERA FASE: Revelado.
numfot=`echo "$fin-$ini+1" | bc`
#echo " "
echo "# Identificando se se ha introducido un archivo ID de UFRaw..."
if [ -e *.ufraw ] ; then
    idarch=`ls | grep *.ufraw`
    ida=1
    echo "#DETECTADO!"
else
    ida=0
    echo "#NO ENCONTRADO ARCHIVO ID!"
fi
#echo " "
echo "#Revelando las $numfot imágenes RAW..."
#echo " "
mkdir .fotogramas
fotograma=0
for foto in $(seq $ini $fin) ; do
    fotograma=`echo "$fotograma + 1" | bc`
    porcent=`echo "scale=2; ( $foto - $ini + 1 ) * 80 / $numfot" | bc`
    echo "$porcent"
    if [ $ida = 1 ] ; then
      # Revelado con archivo ID:
      # echo " "
      echo "#Revelando la imagen número $foto de $fin..."
      ufraw-batch --conf=$idarch --size=720 --out-type=jpg --output=.fotogramas/$fotograma.jpg _DSC$foto.NEF
    else
      #Revelado sin archivo ID:
      # echo " "
      echo "#Revelando la imagen número $foto de $fin..."
      ufraw-batch --size=720 --out-type=jpg --output=.fotogramas/$fotograma.jpg _DSC$foto.NEF
    fi # echo " "
done
#
# SEGUNDA FASE: Realización del vídeo.
echo "90"
#echo " "
echo "#Realizando vídeo..."
#echo " "
mencoder "mf://.fotogramas/*.jpg" -mf fps=16 -vf scale=720:576 -o Vídeo.avi -ovc lavc -lavcopts vcodec=mpeg4
echo "#Borrando copias innecesarias..."
#echo " "
echo "99"
rm -R .fotogramas
#echo "TERMINADO! Ahora, a disfrutar del vídeo ;)!"
}| zenity --progress --auto-close --auto-kill

El segundo se llama HDRClipMaker. Hace básicamente lo mismo que el anterior, pero añade al revelado un tratamiento HDR.

#!/bin/bash
#
# AUTORÍA:
#
# Script realizado por Astaroth (O.R.G - http://astarothsworld.blogspot.com), apoyado en muchos otros programas que son los que realmente hacen todo el trabajo.
#
# OBJETIVO:
#
# Partiendo de una secuencia de imágenes RAW y un posible patrón de UFRaw (ID), hacer un clip de video en HDR.
#
#
# DEPENDENCIAS:
#
# Usaremos UFRaw opara revelar los archivos, qtpfsgui para conseguir que sean HDR y mencoder para hacer el vídeo.
#
# Uso:
#
# "./HDRClipMaker" en la carpeta con las imágenes.
#
# ------------------------------------------
#
# FASE CERO: Presentación y pedida de datos.
carpeta=`pwd`
clear
echo "****************************"
echo "BIENVENIDO A HDR CLIP MAKER!"
echo "****************************"
echo "By Astaroth (O.R.G.)"
echo " "
echo "Suponemos que las imágenes tiene la nomenclatura _DSC####.NEF,"
echo "donde \"####\" representa la numeración que ha de ser CONSECUTIVA."
echo "En caso contrario, habría que editar este script para ajustarlo"
echo "a lo que necesitemos."
echo " "
echo "Cuál es el número que etiqueta la primera foto?"
read ini
echo "Cuál es el número que etiqueta la última foto?"
read fin
echo " "
echo "IMPORTANTE: Si desea introducir un patrón de UFRaw, asegúrese de"
echo "que esté copiado en la carpeta \"$carpeta\""
echo "junto con las imágenes RAW antes de continuar."
echo " "
echo "Pulse ENTER para empezar."
read nomeimporta
{
# PRIMERA FASE: Revelado HDR.
numfot=`echo "$fin-$ini+1" | bc`
#echo " "
echo "# Identificando se se ha introducido un archivo ID de UFRaw..."
if [ -e *.ufraw ] ; then
    idarch=`ls | grep *.ufraw`
    ida=1
    echo "#DETECTADO!"
else
    ida=0
    echo "#NO ENCONTRADO ARCHIVO ID!"
fi
#echo " "
echo "#Revelando las $numfot imágenes RAW..."
#echo " "
mkdir .Basura
mkdir .fotogramas
fotograma=0
for foto in $(seq $ini $fin) ; do
    porcent=`echo "scale=2; ( $foto - $ini + 1 ) * 80 / $numfot" | bc`
    echo "$porcent"
    mkdir .Basura/$foto
    if [ $ida = 1 ] ; then
      # Revelado con archivo ID: for exp in $(seq -1 1); do
      # echo " "
      echo "#Revelando la imagen número $foto con una exposición = $exp EV..."
      ufraw-batch --conf=$idarch --size=720 --out-type=jpg --exposure=$exp --output=.Basura/$foto/$exp.jpg _DSC$foto.NEF
    done rm .Basura/$foto/*.ufraw
else
    #Revelado sin archivo ID:
    for exp in $(seq -1 1); do
      # echo " "
      echo "#Revelando la imagen número $foto con una exposición = $exp EV..."
      ufraw-batch --size=720 --out-type=jpg --exposure=$exp --output=.Basura/$foto/$exp.jpg _DSC$foto.NEF
    done
fi
# echo " "
fotograma=`echo "$fotograma + 1" | bc`
echo "#Pasando a HDR la foto número $foto (fotograma: $fotograma)..."
qtpfsgui -v -t fattal -r 720 -p alpha=1.7:beta=0.9:noise=0.01:color=1:new=true -e 0,-1,1 .Basura/$foto/*.jpg -o .fotogramas/$fotograma.jpgdone
#
# SEGUNDA FASE: Realización del vídeo.
echo "90"
#echo " "
echo "#Realizando vídeo..."
#echo " "
mencoder "mf://.fotogramas/*.jpg" -mf fps=16 -vf scale=720:576 -o HDRClip.avi -ovc lavc -lavcopts vcodec=mpeg4
echo "#Borrando copias innecesarias..."
#echo " "
echo "99"
rm -R .Basura
rm -R .fotogramas
#echo "TERMINADO! Ahora, a disfrutar del vídeo ;)!"
}| zenity --progress --auto-close --auto-kill

Los resultados de este último deberían afinarse vídeo a vídeo cambiando los parámetros del tratamiento HDR en el script. Así y todo, las pruebas que he podido realizar yo quedan un poco raras...


Pero bueno, las fotos de partida tampoco eran demasiado buenas y no he probado demasiado a variar los parámetros para mejorar el efecto.

Comparte en Facebook

1 comentario:

  1. Ese no es el tío que estaba en el metro? :P
    La parte que más me mola es cuando le aparece la espada en la mano, aunque va tan rápido que me marea! :P

    ResponderEliminar

Querido astarothista!,

Si te ha gustado la entrada y quieres dejar constancia de ello, tienes alguna sugerencia para completarla o corregirla, quieres mostrar tu opinión respecto a algo de lo que se haya hablado en esta entrada (con respeto) o simplemente quieres dejarme un mensaje a mi o a la comunidad, no dudes en comentar ;)!

Recuerda que también estamos en Facebook y en Google+.