HowTo:Fotografía:HDR
De Luispa
Revelado con HDR
Sobre HDR ya existen muchos artículos en internet y en la wikipedia encontrarás esta descripción. El HDR o High Dynamic Range aplicado a la Fotografía es una técnica que permite iluminar correctamente todas las zonas (claras y oscuras) de la foto. Es algo así como poder usar diferentes exposiciones según la zona y luego ponerlo todo en la misma foto.
La técnica consiste en hacer tres o más versiones de la misma escena, pero con diferentes exposiciones, varias subexpuestas en -1 o -2, al menos una normal (0), y otras sobreexpuestas en +1 o +2. Después, en el ordenador, se usa software para revelar, alinear y unificar dichas versiones consiguiendo el efecto HDR, es decir, en una única imagen ver de forma nítida tanto las zonas oscuras como las iluminadas.
En este artículo encontrarás el script mihdr.sh que junto con el script-fu luispa-mihdr.scm automatiza en linux todo el proceso. Recuerda que lo óptimo es hacer la foto en RAW, con tres o más tomas con diferentes exposiciones y por supuesto de una escena estática y usando trípode. Si no tienes este escenario perfecto y sólo tienes un RAW pues no pasa nada, ya que puedes revelarlo tres o más veces con diferentes aperturas. Ahora bien, si nos vamos al "peor" caso, tener un único JPG, echa un ojo en google que existen artículos describiendo cómo proceder.
- Me he basado en lo aprendido en este artículo y el script allí descrito.
Herramientas necesarias
- Herramientas que voy a utilizar (y sus nombres de paquetes en Gentoo)
* ExifTool: exiftool (media-libs/exiftool-7.50) * Convertir a TIFF: ufraw-batch (media-gfx/ufraw-0.15) * Alinear las fotos: align_image_stack del paquete Hugin (media-gfx/hugin-0.7.0) * Herramientoas PFS: PFSTools (media-gfx/pfstools-1.8.1, media-gfx/pfscalibration-1.4, media-gfx/pfstmo-1.3.2) * Script de generación de HDR's: mihdr.sh * Script-fu para GIMP: luispa-mihdr.scm
Instalación en Gentoo
- Instalación de los diferentes programas:
$ emerge -v exiftool ufraw hugin
- Instalación de PFSTools, PFSCalibration. Nota: No hay ebuilds oficial, así que parto desde aquí y uso mi overlay bajo /usr/local/portage
1) Modifico /etc/portage/package.keywords # PFSTools =media-gfx/pfstools-1.8.1 ~amd64 =media-gfx/pfscalibration-1.4 ~amd64 =media-gfx/pfstmo-1.3.2 ~amd64 Modifico /etc/portage/package.use # PFSTools media-gfx/pfstools imagemagick opengl tiff raw matlab octave openexr qt3 -netpbm media-gfx/pfstmo fftw 2) Creo los siguientes ficheros (y parche) /usr/local/portage/media-gfx/pfstools/pfstools-1.8.1.ebuild /usr/local/portage/media-gfx/pfstools/s/files/pfstools-1.8.1-new-netpbm_gentoo.patch /usr/local/portage/media-gfx/pfscalibration/pfscalibration-1.4.ebuild /usr/local/portage/media-gfx/pfstmo/pfstmo-1.3.2.ebuild 3) Ejecuto el "ebuild manifest" # cd /usr/local/portage/media-gfx/pfstools # ebuild pfstools-1.8.1.ebuild digest # # cd /usr/local/portage/media-gfx/pfscalibration # ebuild pfscalibration.ebuild digest # # cd /usr/local/portage/media-gfx/pfstmo # ebuild pfstmo.ebuild digest 4) Instalo pfstools # emerge -v pfstools pfscalibration pfstmo : * Se instalan los siguientes ejecutables: Ejecutables de PFSTools Ejecutables de PFSCalibration Ejecutables de PFSTmo
Revelado con "enfuse"
En todos los ejemplos siguientes se asume que tienes los ficheros RAW en el directorio actual. En mi caso sólo tengo 3 ficheros RAW (acabados en .CR2) con diferentes exposiciones (-1, 0 y +1). Los pasos necesarios para revelar con "enfuse" son los siguientes.
Nota: --conf es opcional, yo lo uso en mi programa misfotos.sh, tal como describo en este artículo
- Convertir a TIFF con: /usr/bin/ufraw-batch (media-gfx/ufraw)
$ ufraw-batch --conf=/home/arte/ficheros/ufraw-misfotos-0.9.conf --wb=camera --exposure=0.5 --black-point=auto \
--out-type=tif --out-depth=16 --overwrite --quiet *.CR2
- Alinear las fotos con: /usr/bin/align_image_stack (media-gfx/hugin0.7.0)
$ align_image_stack -a AIS_ *.tif
- Crear un primer HDR (no demasiado "currado" pero puede ser válido)
$ enfuse -o Foto_en_HDR.tif AIS_*.tif
Revelado con PFSTools
En todos los ejemplos siguientes se asume que tienes los ficheros RAW en el directorio actual. En mi caso sólo tengo 3 ficheros RAW (acabados en .CR2) con diferentes exposiciones (-1, 0 y +1). Los pasos necesarios para revelar con "enfuse" son los siguientes.
Nota: --conf es opcional, yo lo uso en mi programa misfotos.sh, tal como describo en este artículo
- Convierto los RAW a formato TIFF usando ufraw-batch (media-gfx/ufraw)
$ ufraw-batch --conf=/home/arte/ficheros/ufraw-misfotos-0.9.conf --wb=camera --exposure=0.5 --black-point=auto \
--out-type=tif --out-depth=16 --overwrite --quiet *.CR2
- Partiendo de los RAW y de los TIFFs genero un fichero HDR
$ dcraw2hdrgen *.CR2 | sed -e "s/CR2/tif/" > hdrgen.txt $ pfsinhdrgen hdrgen.txt | pfsout pfs.hdr
- El formato HDR "no" es utilizable, por lo que hago un Mapeo tonal para volver a la zona LDR.
Sigo la recomendación del autor original del artículo y uso Mantiuk06 y Fattal02, así obtengo dos conversiones y me quedaré con la que más me guste. Te recomiendo la lectura de dicho artículo y échale un ojo a su script. $ pfsin pfs.hdr | pfsclamp --rgb | pfstmo_mantiuk06 | pfsgamma --gamma 2.2 | pfsout pfstmo_mantiuk06.tif $ pfsin pfs.hdr | pfsclamp --rgb | pfstmo_fattal02 | pfsgamma --gamma 2.2 | pfsout pfstmo_fattal02.tif
- Una vez que termina, se continúa con GIMP.
1) GIMP: Abrir enfuse.tif 2) Fichero->Abrir como capas->pfstmo_mantiuk06.jpg Opacidad de la capa: 50% 3) Fichero->Abrir como capas->pfstmo_fattal02.jpg Opacidad de la capa: 50%. Modo: Solapar/Overlay 4) Darle toque personal de niveles, contraste, etc... 5) Salvarlo como fichero .jpg al 100% de calidad
Automatización con "mihdr.sh"
- Para automatizar todo el proceso, y partiendo del script antes comentado, he creado el mio propio: mihdr.sh, con la novedad de incluir también el post-procesado Gimp a través de un script-fu: luispa-mihdr.scm.
- Es decir, en un sólo script e unificado todo el proceso, de modo que puedes conseguir un revelado rápido en HDR que podría quedar como te interesa. Es muy difícil automatizar este tipo de revelados, dado que casi nunca va a quedar como te interesa, pero puede ayudarte para tener una primera aproximación a la versión HDR de una foto, para hacerte una idea.
Instalación
- Descarga mihdr.sh y copialo a tu PATH, después descarga luispa-mihdr.scm y copialo a ~/.gimp2.4/scripts o ~/.gimp2.6/scripts, dependiendo de tu versión de Gimp.
$ wget http://wiki.luispa.com/svn/publico/scripts/misfotos/trunk/mihdr.sh $ wget http://wiki.luispa.com/svn/publico/scripts/misfotos/trunk/luispa-mihdr.scm $ mv luispa-mihdr.scm $HOME/.gimp2.6/scripts $ mv mihdr.sh $HOME/priv/bin $ chmod +x $HOME/priv/bin/mihdr.sh
Ejecución
- El programa "mihdr.sh" genera una versión HDR de una foto. El orginal puede ser un único fichero RAW, o bien varios ficheros de tipo RAW o TIFF que tienen versiones con diferente exposición de la misma fotografía. A continuación muestro la sintaxis y algunos ejemplos:
mihdr.sh -a|b -[l] <fichero(s)> -a -> HDR avanzado -b -> HDR básico -l -> Alinear los ficheros <ficheros(s)> -> Fichero o ficheros con diferentes exposiciones
- Generar un HDR usando varios RAW disparados con distintas exposiciones de la misma foto
$ mihdr.sh -a -l Fichero-1.CR2 Fichero-0.CR2 Fichero+1.CR2
- Generar un HDR usando varios ficheros TIF disparados con diferente exposure para la misma foto. Los RAWs ya los tenía, pero los he revelado manualmente y ahora tengo los TIFFs
$ mihdr.sh -a revelados-*.tif
- Generar un HDR partiendo de único fichero RAW de la foto. Lo que hace el script es crear varios TIFFs revelando el RAW con diferentes exposiciones.
$ mihdr.sh -a mifoto.CR2
- El programa deja dos ficheros de salida:
salida-basico.tif Versión enfuse del revelado salida-avanzado.jpg Versión completa: enfuse + manituk + fattal + montaje con capas, solapado, etc.
Enlaces y Créditos
| [1] | PFSTools | Conjunto de programas para manipulación de ficheros RAW |
| [2] | Qtpfsgui | Aplicación gráfica para crear imágenes en HDR. |
| [3] | CVLTonemap | Visor interactivo para imágenes HDR, integrado con las PFSTools. |
| [4] | Artículo HDR en Linux | Explicación muy buena sobre como hacer HDR en Linux |
| [5] | Script HDR en Linux | Script para generar HDR |
| [6] | Web HDR | Web HDR |
| [7] | Salibración HDR | Más sobre HDR |
Volver a la sección de Fotografía
--Luis 16:24 7 jul 2009 (CEST)

