2009/07/30

Fotografía digital y Linux: flujo de trabajo

This article is also available in English: Digital Photography and Linux: my Workflow.

En este artículo, quisiera compartir en este artículo el flujo de trabajo que utilizo habitualmente para manejar las fotos que hago, utilizando exclusivamente Linux y software gratuito.

Preparar

Creo que no sigo ningún ritual especial en cuanto a preparación, no suelo formatear las tarjetas antes de empezar a fotografiar, excepto cuando voy de viaje y estoy varios días fuera. Seguramente, lo único que merece la pena comentar es que siempre disparo en RAW, nunca en JPEG.

Descargar

Para descargar las fotos utilizo Rapid Photo Downloader: sólo con insertar la tarjeta en el lector (antes conectaba la cámara por USB, pero es más lento) el programa arranca y comienza a descargar todas las fotos que encuentra en la tarjeta. Rapid Photo Downloader deja las fotos una carpeta dentro de "/home/eperez/Pictures", con nombres del tipo "20090727" (usando la fecha y la hora de la descarga); demás, a medida que descarga las fotos va guardando una copia en un disco externo, y al final del proceso borra de la tarjeta todas las fotos descargadas (y copiadas) correctamente.

Estas carpetas las uso como zonas de trabajo, y así tengo todos los ficheros de una "sesión" dentro de una misma carpeta; también me sirve para localizar rápidamente el trabajo que tengo pendiente, y saber cuanto tiempo lleva esperándome. A parte de la seguridad de contar con un respaldo en caso de desastre, el hecho de tener una segunda copia de todas las fotos en un disco independiente, me da más agilidad a la hora de descartar las fotos, porque sé que siempre cuento con esa copia y no tengo que pensarlo dos veces antes de borrar una foto mala.

Visualizar

A veces necesito hacer una exportación rápida de las fotos, sea para enseñarselas a alguien, o bien para enviarlas por email. Entonces lo que hago es extraer el JPEG embebido que hay en los ficheros RAW (se trata de un pequeño fichero JPEG, de menor resolución, con los ajustes de la cámara aplicados). Utilizo el siguiente script (lo tengo asociado a una acción en Nautilus, para activarlo desde el menú contextual), que genera una subcarpeta llamada EXP y exporta allí una versión reducida de cada RAW:

#! /bin/sh

SELF=`basename $0`

DIR="$1"
PRE="$DIR"/"PRE"

echo "$SELF: `date`"

echo "$SELF: Options:"
echo "$SELF:  Input  = $DIR"
echo "$SELF:  Output = $PRE"

echo "$SELF: Creating output directory:"
mkdir "$PRE"

echo "$SELF: Extracting JPGs:"
ufraw-batch --out-type=jpeg --embedded-image --overwrite --out-path="$PRE" "$DIR"/IMG_????.CR2 "$DIR"/img_????.cr2

Clasificar

Suelo experimentar y jugar bastante, y es habitual que llegue a casa con varias panorámicas y HDRs en la tarjeta. Prefiero agrupar cada lote de fotos en una carpeta independiente, para tratarlos después de forma separada. Tengo otro script (también asociado al menú contextual de Nautilus), que genera una subcarpeta nueva (con nombres secuenciales "000", "001", ...) y mete allí los ficheros seleccionados:

#! /bin/sh
SELF=`basename $0`

DIR="$1"
shift

echo "$SELF: `date`"

for i in 0 1 2 3 4 5 6 7 8 9; do
 for j in 0 1 2 3 4 5 6 7 8 9; do
  for k in 0 1 2 3 4 5 6 7 8 9; do
   SUB="$DIR"/$i$j$k
   if [ ! -e "$SUB" ]; then
    break 3
   fi
  done
 done
done

echo "$SELF: Options:"
echo "$SELF:  Directory  = $DIR"
echo "$SELF:  Subdir     = $SUB"

echo "$SELF: Creating output directory"
mkdir "$SUB"

echo "$SELF: Moving files"
while [ "$1" != "" ]; do
 FILE="$1"

 echo "$SELF:  Moving file '$FILE'"
 mv "$DIR"/"$FILE" "$SUB"/

 shift
done

Seleccionar

Con el resto de las fotos (las normales) lo primero que hago es una selección de las que quiero conservar, borrando las repetidas y todas las que me parecen inservibles (las que están desenfocadas, movidas, ...). Utilizo Geeqie, proque puedo desplazarme rápidamente entre las fotos y borrar las que no me interesan, o comparar dos fotos muy parecidas y quedarme con la que más me convence (muy util para cuando disparo ráfagas, por ejemplo).

Revelar

Una vez que tengo la carpeta limpia de polvo y paja, toca la hora de revelarlas. Después de haber probado varios programas, el que más me convence para esta tarea es RawTherapee; el resultado tiene muy buena calidad, y es muy rápido para trabajar con muchas fotos, porque permite copiar y pegar parámetros de una foto a otra. Con el ordenador que tenía antes editaba primero todas las fotos, pero sin exportarlas, y después dejaba al programa trabajando; pero ahora que tengo uno más rápido, al mismo tiempo que voy editando las fotos el programa va haciendo las exportaciones, en segundo plano. En cualquiera de los dos casos, el resultado será una subcarpeta con todos los ficheros tratados.

Antes de pasar a la siguiente etapa suelo hacer una última revisión del resultado: con Eye of GNOME abro la carpeta en modo "pase de diapositivas", a pantalla completa; principalmente se trata de detectar errores en el revelado.

Retocar

Algunas fotos merecen especial atención, bien porque es necesario corregir algún defecto, o bien porque me apetece hacer un tratamiento más laborioso. Estas fotos no las exporto a JPG sino a TIFF sin compresión, para evitar perdidas de calidad. Para el retoque uso casi exclusivamente GIMP, junto con algunos plug-ins y pinceles que he ido recopilando con el tiempo.

Panoramas

Una vez tengo tratadas todas las fotos individuales, es cuando empiezo con las panorámicas. El pograma que uso para hacer el montaje es Hugin; pero antes de comenzar, necesito convertir los ficheros RAW a un formato que pueda manejar el programa, y sin pérdida de información: TIFF de 16 bits. En este caso me basta con hacer una conversión directa, sin retoques ni ajustes, porque ese tratamiento lo haré después del montaje. El siguiente script se encarga de hacer esta parte del trabajo; crea una subcarpeta llamada EXP, y exporta allí todos los ficheros RAW a TIFF, usando UFRaw:

#! /bin/sh

SELF=`basename $0`

DIR="$1"
EXP="$DIR"/"EXP"

echo "$SELF: `date`"

echo "$SELF: Options:"
echo "$SELF:  Input  = $DIR"
echo "$SELF:  Output = $EXP"

echo "$SELF: Creating output directory:"
mkdir "$EXP"

echo "$SELF: Extracting TIFFs:"
ufraw-batch --gamma=0.45 --linearity=0.10 --exposure=0.0 --saturation=1.0 --wb=camera --out-type=tiff --out-depth=16 --overwrite --out-path="$EXP" "$DIR"/IMG_????.CR2 "$DIR"/img_????.cr2

Ahora es cuestión de abrir con Hugin los ficheros exportados, montar la panorámica (se dice fácil), y guardarla de nuevo en TIFF de 16 bits; ese fichero, con la panorámica ya montada, lo abro entonces con RawTherapee, hago los ajustes habituales de color, curvas, nitidez, etc, ..., y exporto el resultado a un JPEG.

HDRs

El tratamiento que hago de los HDRs está explicado en "HDR en Linux": básicamente se trata de ejecutar un script (está en "Un script para hacer HDR en Linux") y después hacer los ajustes por capas en GIMP; el resultado final lo exporto también a un JPG y lo doy por acabado.

Panoramas en HDR

En algunas ocasiones hago panorámicas en HDR, tomando varias exposiciones para cada posición de la cámara. Para hacer el tratamiento de estas panorámicas, mi método consiste montar primero una panorámica para cada exposición, de forma independiente, y después hacer el tratamiento HDR como si se tratara de una foto normal. Este proceso también está explicado en "Panorámica noctura de Barcelona, en HDR".

Almacenar

Una vez tengo todas las fotos de un mismo evento procesadas, las almaceno utilizando el siguiente esquema:

  • Dentro de la carpeta "Pictures" tengo una carpeta para cada año, y dentro otra subcarpeta para cada evento, usando un número secuencial y el nombre del evento; por ejemplo, "/home/eperez/Pictures/2009/19-Cerdanya".
  • Allí van los JPEGs, una subcarpeta con los RAW originales y los PP2 usados por RawTherapee, y otra subcarpeta con los XCF de GIMP (para las fotos retocadas); normalmente no guardo los ficheros intermedios de las panorámicas ni los HDRs, porque ocupan mucho espacio y son relativamente fáciles de volver a crear.
  • Los ficheros JPEGs los renombro (usando pyRenamer) a "nnn_mmm.jpg", donde "nnn" es un número secuencial único para cada evento, y "mmm" el número de foto dentro del evento; los ficheros RAW y PP2 mantienen sus nombres originales, mientras que los XCF tienen el mismo nombre que el RAW correspondiente.

Finalmente, para facilitar la búsqueda de la carpeta que contiene un determinado fichero, mantengo otra carpeta especial llamada "/home/eperez/Pictures/0000", donde tengo enlaces simbólicos a todas las carpetas de los eventos, usando el número global del evento; por ejemplo "/home/eperez/Pictures/0000/090" apunta a "/home/eperez/Pictures/2009/19-Cerdanya".

Catalogar

Desgraciadamente, a la hora de catalogar las fotos aún no he encontrado un programa para Linux nativo que me convenzca. De momento estoy usando Picasa básicamente para añadir TAGs a las fotos y facilitar las búsquedas posteriores.

Notas

2009/09/21: Vincent Tassy ha publicado una interesante alternativa a mi paso de clasificación: él tiene un script que automáticamente detecta los ficheros de una misma toma HDR, y los mueve a una carpeta. Está en Linux script to automatically sort bracketed images.

2011/01/20: He actualizado el arttículo, en particular he cambiado el software que uso para descargar y catalogar las fotos.

6 comentarios :

Anónimo dijo...

Increible, buen Howto!

Abel dijo...

Muy buen blog Edu y muy buen albun.

Decirte que uso el mismo flujo de trabajo y supongo que eres de los mios; lo importante es la foto no los miles de botoncitos que tiene el photoshop ;).

Por señalar algo me gustan mucho tus fotos en W&B transmiten mucho.

Un saludo.

eduperez dijo...

@Abel:

Sí, yo también pienso que lo importante es el resultado, y no perder el tiempo con herramientas excesivamente complicadas. Seguro que Photoshop tiene mil opciones más que Gimp; pero en el fondo sólo usaré cuatro, lo demás me sobra.

Gracias por tus comentarios, me alegra saber que te gustaron las fotos.

Anónimo dijo...

gracias por explicar todo el proceso.
soy nuevo con linux pero he venido para quedarme.
biba linux ! V es de vendetta
aitor

Jaif dijo...

Interesante de veras, soy un poco novato en el revalado raw (estoy intentando usar rawTherapee o Draktable) pero me pierdo un poco con los flujos de trabajo. ¿POdrías explicar los pasos de revelado raw que haces? ¿qué revisas o que parámetros tienes en el enfoque con ambos?

Gracias

eduperez dijo...

@Jaif:

Me temo que no sigo un esquema fijo a la hora de hacer el revelado; cada foto es distinta, simplemente voy ajustando los parámetros hasta que obtengo el resultado que busco.

Publicar un comentario en la entrada