TUTORIAL
  DCRAW


   Creado
   28 May 2007


   Actualizado
   7 Mar 2010


   


© Guillermo Luijk 2007



QUÉ ES DCRAW

DCRAW es un revelador RAW de libre distribución programado por David Coffin que soporta innumerables formatos RAW en continua expansión. En palabras textuales del autor: "Ésta es mi misión: escribir y mantener un programa en ANSI C que descodifique cualquier archivo RAW de cualquier cámara digital en cualquier ordenador con cualquier sistema operativo". Y desde luego lleva varios años lográndolo.

DCRAW puede correr tanto en Linux como en Windows y Mac. En este tutorial se empleará la versión de Windows si bien funciona exactamente del mismo modo en las otras dos plataformas ya que DCRAW carece de interface gráfico al ser una herramienta 100% de línea de comandos.

DCRAW no requiere instalación, simplemente se copia en la ruta adecuada y se invoca tecleando desde una consola o terminal.

Existen front-end para dotar a DCRAW de un interface gráfico de usuario tales como UFRAW, si bien en mi opinión restan ese extra de potencia y flexibilidad que nos brinda DCRAW al no presentar todas sus opciones de manera tan directa como el programa original. Además es raro el mes en que no aparece alguna novedad o mejora en DCRAW, con lo que cualquier front-end se queda rápidamente desfasado. Mi consejo: aprender a usar directamente DCRAW.

DCRAW por sí solo no es un entorno amigable de usar y por tanto puede no ser el idóneo para un flujo de trabajo habitual. Sin embargo por su transparencia y potencia en cuanto al control a bajo nivel con que dota al usuario del revelado RAW resulta la herramienta ideal para hacer revelados RAW específicos en casos tales como:
  • Análisis y estudios técnicos
  • Fotografías especialmente complicadas de revelar
  • Comparativas entre reveladores RAW
Como opinión personal diré que DCRAW me encanta como aplicación de revelado no solo para experimentación sino en un flujo de trabajo normal. La clave está en trasladar a Photoshop todas esas cosas extra que otros reveladores RAW hacen aparte del puro revelado, y plantearse DCRAW como una herramienta que suministra la imagen en bruto, sin ningún tipo de procesado aplicado más que un revelado de calidad y bajo absoluto control.

Es el único revelador que he encontrado hasta la fecha que me transmite la certeza de estar haciendo con mis archivos RAW aquello que realmente quiero y no lo que el revelador quiere hacer; de hecho como veremos es capaz de hacer cosas que están vetadas a reveladores comerciales más populares tales como Adobe Camera Raw.

Usando DCRAW se aprende muchísimo sobre la teoría de los archivos RAW y la linealidad del sensor. Es un software que te hace sentir muy cerca del RAW.


DESCARGA E INSTALACIÓN DE DCRAW

Existen varias páginas web que mantienen periódicamente compilaciones actualizadas de DCRAW listas para descargar:
  • La página web de Manuel Llorens, RAWness. Digital Photography Science es el lugar de descarga más recomendable para usuarios Windows. En ella pueden encontrarse versiones compiladas para todas las plataformas Windows (XP, Vista, Windos 7) tanto para 32 como 64 bits y en varias versiones con diferentes niveles de optimización.
  • La Web de Francisco J. Montilla donde existen versiones para Windows, Linux y Mac, si bien en las versiones de Windows Vista y Windows 7 debido al requisito de ser compiladas con compilador Microsoft, no siempre se dispone del ejecutable para la última versión de DCRAW.
  • La Web de Benjamin Lebsanft, con optimizaciones para diversas plataformas si bien parece que está teniendo ciertos problemas con la política de contenidos de WordPress donde se aloja su blog.
Para las versiones Windows DCRAW no requiere instalación ya que consiste en un único ejecutable muy compacto. El fichero en cuestión se llama dcraw.exe y puede copiarse directamente en la ruta C:\WINDOWS\ para ser accesible desde cualquier directorio de la línea de comandos desde el que sea invocado.


CÓMO SE EJECUTA DCRAW

DCRAW se ejecuta desde la línea de comandos en una ventana de MS-DOS. Para abrir una ventana MS-DOS se ha de ir a Inicio → Ejecutar y escribir cmd. Se abrirá una ventana de fondo negro en la que si escribimos dcraw éste nos mostrará todas sus opciones disponibles:


Fig. 1 Línea de comandos mostrando todas las opciones de DCRAW v8.82.

En un ejemplo real de ejecución de DCRAW sobre un hipotético archivo RAW denominado foto.cr2, abriríamos la anterior ventana de comandos de línea, iríamos al directorio en cuestión donde se encontrase tal fichero (el comando CD permite movernos por los directorios del disco duro) y escribiríamos algo como:

   C:\>dcraw -v -w -H 1 -o 0 -q 3 -4 -T foto.cr2

DCRAW nos mostraría los mensajes siguientes:

   Loading Canon EOS 350D DIGITAL image from foto.cr2 ...
   Scaling with black 256, multipliers 0.586287 0.421032 1.000000 0.421032
   AHD interpolation...
   Building histograms...
   Writing data to foto.tiff ...

   C:\>

Quedando almacenado en el archivo foto.tiff el resultado del revelado RAW.


OPCIONES DE DCRAW

Como se ha visto en el listado anterior DCRAW tiene múltiples opciones cuya explicación puede encontrarse en el Manual de David Coffin. Aquí solo comentaré las que considero de más utilidad para el tratamiento fotográfico con la máxima calidad. Las opciones se escriben como letras precedidas de un guión tras el nombre del ejecutable dcraw, y son:

-v
Proporciona información textual sobre la evolución del revelado RAW (recomendable).

-e
Extrae el JPEG incrustado en el RAW, es decir el JPEG que generó la cámara para su previsualización en el display de la misma y que por lo tanto difiere de aquel JPEG que obtendremos si ponemos la cámara a funcionar en modo JPEG. Es una manera tremendamente rápida de tener los JPEG de todos los RAW de un directorio para una vista rápida. Por ejemplo haciendo: dcraw -e *.cr2.

-w
Utiliza, si lo encuentra, el balance de blancos que se ajustó en la cámara en el momento del disparo.

-a
Realiza un cálculo automático del balance de blancos analizando la imagen completa.

-r m1 m2 m3 m4
Establece el balance de blancos deseado por el usuario. Estos 4 valores son los factores por los que se van a escalar de manera lineal todos los niveles de los canales RGBG en ese orden. El balance de blancos implica un escalado y por tanto una traslación de todos los niveles de la imagen lo que en ciertos casos puede no ser lo deseable. Para no realizar ningún balance de blancos usaremos la opción -r 1 1 1 1. Más adelante se trata en detalle por su importancia el balance de blancos.

-H [0-9]
Con esta opción estableceremos el tratamiento que se va a dar a las altas luces siendo los posibles valores: 0=recorte, 1=sin recorte, 2=zonas quemadas gris neutro, 3-9=recuperar altas luces. Se tratará en detalle en el apartado correspondiente al balance de blancos y altas luces. Yo uso principalmente las opciones -H 0 por su linealidad y -H 2 cuando con la anterior corro el riesgo de quemar zonas importantes de la imagen. La opción -H 1 garantiza que no vamos a quemar al aplicar el balance de blancos ningún canal que no estuviera previamente quemado pero puede dar lugar a tonos erróneos en las zonas quemadas. Las opciones de recuperación de luces altas son más sofisticadas y enlentecen notoriamente la velocidad de ejecución.

-k n1 y -S n2
Establecen respectivamente los niveles de negro y de saturación que se usarán en el revelado. Si bien el nivel de negro es mejor dejar que lo calcule DCRAW, es muy interesante poder establecer nosotros el nivel de saturación de nuestra cámara concreta con -S.

-D
Extrae en forma de imagen los datos RAW sin revelar, es decir sin hacer ningún demosaicing ni escalado de los mismos. Muy útil para analizar los niveles captados por el sensor en su rango nativo de 12, 14 ó 16 bits.

-d
Como el comando anterior, no hace el demosaicing pero va un paso adelante en el proceso de revelado ya que efectúa los ajustes de punto negro y saturación, el balance de blancos y el escalado al rango de salida en 16 bits. Es muy interesante para obtener datos brutos no interpolados pero lineales (al haber sustraido el punto negro) y ajustados al rango de 16 bits con dcraw -d -r 1 1 1 1 lo que permite obtener histogramas por pasos de exposición con Histogrammar. También se puede usar para estudiar el patrón de Bayer del archivo RAW, lo que permite por ejemplo detectar defectos en el sensor de la cámara o píxeles de comportamiento anómalo:


Fig. 2 Detección de hot píxel sobre la matriz de Bayer (mover ratón sobre la imagen).


-o [0-5]
Establece el espacio de color de salida siendo los posibles valores: 0=ninguno (no se hace gestión de color), 1=sRGB, 2=AdobeRGB, 3=WideGamut, 4=ProPhoto, 5=XYZ. Convertir a un espacio de color implica una transformación matricial de los niveles de la imagen y en ciertos casos esto puede no ser lo deseable. Para no realizar conversión a ningún espacio usaremos la opción -o 0.

-q [0-3]
Establece la calidad del algoritmo de interpolación de la matriz de Bayer usado. A más calidad más complejidad y por tanto menos velocidad, si bien DCRAW es muy rápido en todos ellos. Los valores posibles son: 0=bilineal, 1=VNG, 2=PPG, 3=AHD. Yo siempre uso esta última que se trata de un algoritmo adaptativo de muy buenos resultados, si bien según su autor DCRAW utiliza por defecto para cada modelo de cámara el algoritmo que da mejores resultados. Así por ejemplo para cámaras Fuji el método -q 2 es más óptimo que -q 3.


Fig. 3 Recortes al 200% de las diferentes calidades de interpolación.


-4
Genera un archivo lineal de 16 bits en lugar de uno de 8 bits con gamma que es la opción por defecto. Siempre uso esta opción.

-T
Genera un archivo TIFF en lugar de PPM. También uso siempre esta opción.

-g gamma pend
Aplica a la salida una compensación gamma definida por el valor de gamma y la pendiente máxima de la curva. Para curvas gamma puras bastará especificar 0 como pendiente máxima. Algunos valores típicos son:
   -g 1 1 gamma 1,0 lineal (por defecto si se usa -4)
   -g 2.2 0 gamma 2,2 pura (Adobe RGB)
   -g 1.8 0 gamma 1,8 pura (ProPhoto RGB)
   -g 2.4 12.9 gamma de sRGB
   -g 2.222 4.5 gamma de la norma BT.709 (por defecto si no se usa -4)


Con el resumen visto ya tenemos información suficiente para al menos interpretar los parámetros usados en el ejemplo de arriba C:\>dcraw -v -w -H 1 -o 0 -q 3 -4 -T foto.cr2:

   -v Revelamos mostrando la información de progreso en pantalla
   -w Utilizamos el balance de blancos que se configuró en la cámara
   -H 1 Utilizamos un modelo de balance de blancos sin recorte de altas luces
   -o 0 Generamos la imagen sin convertir la salida a ningún espacio de color
   -q 3 Establecemos la máxima calidad del algoritmo de interpolación
   -4 -T Forzamos salida en TIFF lineal de 16 bits


HISTOGRAMA LINEAL

Si se usa la opción -4 el revelado se realiza a 16 bits y de forma lineal. Es el modo al que haré referencia en el resto del tutorial ya que es el que pone de manifiesto las principales bondades de DCRAW. Que el revelado se realice de modo lineal quiere decir que aún no se ha aplicado la habitual compensación gamma (típ. gamma=2,2), y por lo tanto los niveles quedan distribuidos en el histograma de forma lineal siendo cada uno de ellos directamente proporcional a la cantidad de luz (número de fotones) que recibió el pixel en cuestión durante la exposición.

Una imagen lineal no es directamente visualizable por su extrema oscuridad ya que el histograma se encuentra densamente concentrado en la parte baja, pero como veremos después PS sí permite visualizar estas imágenes de modo inteligible sin alterar los datos que contienen.

Para ver el aspecto de un histograma lineal tomemos una escena como la siguiente:


Fig. 4 Imagen ejemplo de revelado RAW.


La fotografía revelada con aplicación de compensación gamma tendría el siguiente histograma:


Fig. 5 Histograma resultado de revelado con corrección gamma.


Sin embargo revelada con DCRAW y la opción -4 obtendremos el siguiente histograma lineal:


Fig. 6 Histograma resultado de revelado lineal con DCRAW.


Las diferencias son obvias. Vemos como la información se concentra en los diafragmas bajos de modo que toda la segunda mitad de este segundo histograma corresponde solamente al último diafragma (marcado como 12) el cual está prácticamente vacío pues solo contiene las altas luces de la escena. El siguiente cuarto de histograma corresponde al siguiente diafragma (marcado como 11), y así sucesivamente hasta completar los 12 diafragmas que como máximo nos brinda el RAW de 12 bits usado como ejemplo.

No se ha de pensar que por el hecho de estar la información más concentrada que en el revelado con compensación gamma vamos a perder riqueza tonal. Esto en absoluto es así, de hecho el histograma con corrección viene de uno lineal al que se ha aplicado una curva gamma por lo que en la zona baja del mismo se crea una gran cantidad de huecos. La riqueza tonal ni aumenta ni disminuye por el hecho de usar uno u otro histograma.

Al tener la información de la imagen en formato lineal, cualquier transformación lineal que se quiera realizar sobre la misma resulta trivial; así la aplicación del balance de blancos o del control de exposición se convierten como veremos en simples escalados lineales de los niveles.


BALANCE DE BLANCOS Y TRATAMIENTO DE ALTAS LUCES

Como ya se ha comentado los comandos para realizar el balance de blancos y elegir el modo en que se procesarán las altas luces son respectivamente -w -a -r y -H. Dependiendo del comportamiento escogido para las altas luces, el balance de blancos puede llevarnos a quemar ciertas áreas de la imagen que no lo estaban en realidad en el RAW original. Esto es común a todos los reveladores RAW y lo trataremos en profundidad.


BALANCE DE BLANCOS

La forma en que DCRAW implementa el interface del balance de blancos no es el habitual ajuste de Temperatura/Tine sino una forma de más bajo nivel basada en 4 factores multiplicadores que escalarán linealmente cada uno de los canales RGBG de la matriz de Bayer (el balance de blancos se aplica antes del demosaicing). En general los factores 2 y 4 serán iguales dado que corresponden ambos al canal verde, solo que en localizaciones diferentes de la distribución de Bayer.

Hay que decir que un balance de blancos dado no implica un juego absoluto de valores de los multiplicadores, sino las proporciones que existan entre ellos. Así un mismo balance de blancos podrá obtenerse con diferentes factores siempre que se mantengan las relaciones numéricas entre ellos.

Los multiplicadores pueden originarse de 3 modos diferentes dependiendo de la opción empleada:

   -w Se ajusta el balance de blancos escogido en la cámara durante la toma
   -a Se calcula un balance de blancos automático analizando la imagen completa
   -r m1 m2 m3 m4 Balance de blancos con multiplicadores definidos por el usuario

Si no se utiliza ninguno de estos métodos, DCRAW empleará por defecto un preset de balance de blancos correspondiente a una iluminación estándar D65 sobre carta gris.

Los valores correctos que han de aplicarse variarán de unas cámara a otras. Intentar adivinar los mismos no es tarea fácil. Sin embargo es posible obtener de forma sencilla los factores que corresponden a cualquiera de los presets de nuestra cámara lo cual es un buen punto de partida. Para hacer esto basta realizar una toma con cada uno de dichos presets y revelar el archivo RAW resultante con los comandos -v -w con lo cual DCRAW mostrará dichos valores.

Aquí hay una tabla con los multiplicadores RGB empleados en los diferentes presets de la Canon 350D:
  • Por defecto (lámpara D65): factores 2.395443 1.000000 1.253807
  • Tungsteno: factores 1.392498 1.000000 2.375114
  • Luz de día: factores 2.132483 1.000000 1.480864
  • Fluorescente: factores 1.783446 1.000000 1.997113
  • Sombra: factores 2.531894 1.000000 1.223749
  • Flash: factores 2.429833 1.000000 1.284593
  • Nublado: factores 2.336605 1.000000 1.334642
Para indicar a DCRAW que no se aplique ningún balance de blancos utilizaremos la opción -r 1 1 1 1. Si lo hacemos así, podremos ajustar a posteriori el balance de blancos haciendo uso de la linealidad del histograma siendo ésta la mejor forma de probar diferentes valores hasta encontrar el que nos satisface. Si embargo ésta no es una forma adecuada de aplicar el balance de blancos, solo sirve para calcular los factores. Hecho esto debiéramos volver al archivo RAW original y utilizar estos valores con el comando -r ya que los algoritmos de interpolación de Bayer están optimizados para trabajar sobre imágenes previamente balanceadas.


MODOS DE ALTAS LUCES

La opción -H decidirá el comportamiento de DCRAW en lo referente a las altas luces. Pueden distinguirse dos modos de operación según el rango numérico que tomarán los multiplicadores del balance de blancos:

   -H 0 fuerza al menos un factor igual a 1, el resto serán mayores o iguales a 1
   -H [1-9] fuerza al menos un factor igual a 1, el resto serán menores o iguales a 1

IMPORTANTE: no importa los valores que se especifiquen en el comando -r, solo las proporciones relativas entre los mismos se mantendrán. Será el comando -H el que decida el rango en que se tomarán los valors finalmente empleados.

Con factores mayores o iguales a 1 se garantizará que no aparecen artefactos de color debidos al balance de blancos. Como desventaja nos arriesgaremos a quemar total o parcialmente (no todos los canales) ciertas áreas de la imagen por saturación ya que estaremos aumentando la exposición con dichos valores. Si no se especifica ninguna opción de altas luces -H 0 es el modo por defecto.

Por otra parte factores menores o iguales a 1 nos aseguran que ningún canal en ningún pixel que no estuvera realmente quemado en el archivo RAW lo hará debido al escalado del balance de blancos. La desventaja de este modo es que dependiendo del valor escogido para -H [1-9], podremos encontrarnos con artefactos de color en las zonas que estuvieran originalmente quemadas en el archivo RAW.

Como todo esto suena muy complicado pero no lo es, vamos a ver el ejemplo anterior. En él con -w y -H 1 se obtuvieron los siguientes factores multiplicadores:

   Scaling with black 256, multipliers 0.586287 0.421032 1.000000 0.421032

Pero sin embargo si hubiéramos usado la opción -H 0 se obtendrían los siguientes:

   Scaling with black 256, multipliers 1.392498 1.000000 2.375114 1.000000

Ambos juegos de valores mantienen las proporciones entre canales (0.586287/0.421032=1.392498/1.000000) por lo que corresponden por tanto a un mismo balance de blancos; en concreto al preset de balance de blanco Tungsteno de la 350D. Pero hay una diferencia clara en lo que ocurrirá si los aplicamos: como los factores de -H 0 son mayores o iguales que 1 podríamos llegar a quemar algunos canales que no lo estaban en origen. Cualquiera que haya trasteado con con el parámetro de Temperatura de ACR habrá notado que mover dicho control puede llevar a quemar zonas de la imagen que no lo estaban previamente o hacer que dejen de estar quemadas zonas que antes sí lo parecían estar. Aquí ocurre lo mismo.

Pero no se debe pensar que por ello -H 1 sea siempre mejor. De hecho suele ser al contrario, este último parámetro debe usarse con mucho cuidado, y solo si estamos segudos de que la imagen no tiene ni un solo píxel quemado. En tal caso podremos usar -H 1 sin dar lugar a ningún efecto indeseable. Sin embargo siempre que la imagen tenga alguna zona quemada en el archivo RAW (y esto incluye reflejos metálicos, bombillas, lámparas,...) esto es lo que nos pasaría si usáramos -H 0 y -H 1 respectivamente:


Fig. 7 Resultado de revelar utilizando -H 0 and -H 1 respectivamente.


En la primera imagen con toda probabilidad hemos quemado algunos canales que no lo estaban originalmente, pero hemos preservado el color blanco de las altas luces quemadas. Por otro lado, en la segunda imagen al emplear multiplicadores menores de 1 para los canales R y G, dejando B inalterado, las proporciones de dichos tres canales en las zonas quemadas han cambiado dado lugar a un indeseable tono magenta. El fenómeno se puede constatar en los histogramas obtenidos -H 0 vs -H 1 (fijaos en la descomposición de las zonas quemadas en tres picos localizados en niveles diferentes):


Fig. 8 Histogramas obtenidos al revelar con -H 0 y -H 1 respectivamente.


El parámetro -H 2 da lugar a un comportamiento similar a -H 1 ya que forzará que los factores sean iguales o mayores de 1, pero solucionará el problema visto aplicando una ligera corrección no lineal en las altas luces para garantizar un color neutro (gris) en las zonas quemadas.

Para terminar apuntar que dado que el balance de blancos con multiplicadores implica un escalado de todos los niveles de la imagen por un factor linear, estaremos alterando el grado de exposición, que podrá ajustarse con el control de exposición lineal que veremos después. Ésta es la razón por la que la imagen revelada con -H 0 (factores mayores o iguales a 1) tenga más brillo que la revelada con -H 1 (factores menores o iguales a 1).


RECUPERACIÓN DE ALTAS LUCES

Valores de -H entre 3 y 9 activan los diferentes algoritmos de recuperación de altas luces empleados multiplicadores manores o iguales a 1. Estos modos emularán el tono de las zonas circundantes no quemadas para rellenar las áreas quemadas. Cuanto mayor sea el valor del parámetro, se tendrá una mayor similitud del tono recuperado al de las áreas cercanas y se estará más lejos de garantizar un tono neutro (gris) en los píxels quemados.

A continuación se muestra un ejemplo del diferente resultado en cuanto a la recuperación de altas luces en una imagen con zonas parcialmente quemadas en el archivo RAW (zonas brillantes de la piel de la chica) comparando ACR y DCRAW. Mientras el primero lleva las zonas quemadas a unos tonos de gris neutro, en DCRAW la elección del parámetro -H 9 trata de emular los tonos de la piel.


Fig. 9 Comparación recuperación de altas luces ACR (izq.) vs DCRAW (der.).


En este caso la estrategia de DCRAW ha funcionado mejor ya que imita muy bien los tonos de la piel minimizando así la percepción de los brillos en la piel. Esto no quiere decir que DCRAW funcione mejor en todos los casos. Esto dependerá de las características de la imagen y de sus zonas quemadas.


NIVEL DE SATURACIÓN DEL SENSOR

Se comentó en la introducción que los comandos -k y -S sirven para establecer respectivamente los niveles de negro y de saturación del sensor.

El nivel de negro -k es mejor no especificarlo ya que DCRAW puede calcularlo mucho mejor que nosotros a partir de los píxels ocultos del sensor.

Sin embargo el nivel de saturación -S está íntimamente ligado al resultado del revelado en altas luces y sí que es muy interesante poder establecerlo ya que DCRAW, como cualquier otro revelador, utiliza una tabla de valores de saturación estándar para cada modelo de cámara, pero estos pueden no ser los adecuados para nuestra unidad particular o ISO empleado, o podrían simplemente ser incorrectos en el código original de David Coffin:
  • Si nuestra cámara satura sus canales en niveles inferiores al considerado por defecto por DCRAW tendremos problemas de cast magenta en altas luces con efectos similares a los vistos en la Fig. 7 por desalineación de canales.
  • Si en cambio nuestra cámara saturase en niveles superiores no se darían tales problemas pero podríamos perder innecesariamente información de altas luces en el revelado.
Por todo ello lo ideal es conocer el nivel en que nuestra cámara satura sus tres canales y aplicarlo para tener un revelado óptimo. Tomemos un ejemplo de archivo RAW con zonas de altas luces quemadas disparado por la 40D a ISO100:

   C:\>dcraw -v -w -H 2 -4 -T retrato.cr2
   Loading Canon EOS 40D image from retrato.cr2 ...
   Scaling with darkness 1023, saturation 16224


Fig. 10 Cast magenta por usar un nivel de saturación superior al real.


Vemos que DCRAW aplica para esta cámara de 14 bits un nivel de saturación por defecto de 16224 que provoca tonos erróneos en las altas luces. Ello se debe a que ese nivel es excesivamente alto para la unidad probada. Con el comando -D analizamos el RAW para saber exactamente en qué nivel satura esta unidad de 40D:

   C:\>dcraw -v -D -4 -T retrato.cr2


Fig. 11 Histograma del RAW puro mostrando nivel de saturación.


Vemos que la cámara en cuestión satura en el nivel 13824, sensiblemente inferior al usado por defecto por DCRAW. Revelando con este nuevo nivel de saturación vemos como desaparecen los cast magenta sin perder un ápice de información:

   C:\>dcraw -v -w -S 13824 -H 2 -4 -T retrato.cr2
   Loading Canon EOS 40D image from retrato.cr2 ...
   Scaling with darkness 1023, saturation 13824


Fig. 12 Nivel de saturación correctamente aplicado.


Que el histograma no alcance el máximo es debido a que se ha utilizado un balance de blancos con multiplicadores menores o iguales a 1.0 que garantiza no quemar nada en altas luces a cambio de subexponer los canales.

Lo importante es que como DCRAW ahora ya sabía correctamente cuál era el nivel de saturación ha hecho que dicha zona aparezca perfectamente neutra (R=G=B) gracias al comando -H 2.

~~~

Algunas cámaras no tienen el mismo punto de saturación en todos los canales (esto es habitual en Nikon), y algunas incluso ni siquiera saturan en un valor concreto sino a lo largo de un rango de valores (Fuji Super CCD R y Olympus).

En estos casos he concluído que la forma correcta de proceder es elegir el menor punto de saturación de los disponibles, de modo que cualquier valor mayor será considerado como saturado por DCRAW garantizando neutralidad de las altas luces.

Por ejemplo tomando un archivo RAW de la Olympus E-510 con el siguiente histograma RAW en las altas luces quemadas:


Fig. 13 Histograma del RAW puro mostrando niveles de saturación.


DCRAW aplica un punto de saturación por defecto para esta cámara de 3946, produciendo altas luces ligeramente magenta. En cambio si se emplea un valor de saturación de 3648 en el revelado, las zonas quemadas aparecen totalmente neutras:


Fig. 14 Histogramas tras revelado con distintos puntos de saturación.


~~~

En general puede concluirse que cuando se producen tonos incorrectos en las altas luces, típicamente una dominante magenta, se trata de un problema de software en el revelado RAW. El revelador RAW empleado no estaría aplicando un punto de saturación correcto y/o una estrategia apropiada de altas luces neutras. No sería de extrañar que usando un revelador RAW diferente el problema quedara solucionado.

En el caso de DCRAW la estrategia de altas luces neutras con -H 2 funciona muy bien, pero es sin embargo bastante común que el punto de saturación por defecto de DCRAW no sea el adecuado para varias cámaras. Para ellas deberá calcularse y establecerse con el comando -S.

Para conocer más a fondo los detalles sobre este importante parámetro puede acudirse al tutorial El nivel de saturación del RAW.


AJUSTES EN PS DE LA IMAGEN REVELADA

Llegados a este punto ya deberíamos tener nuestro RAW revelado en formato TIFF así que es el momento de abrirlo en Photoshop. Al hacerlo PS nos preguntará en qué espacio de color está el documento. Si lo hemos convertido a algún espacio de color durante el revelado PS lo detectará y deberemos decirle que le asigne ese preciso espacio. Si no lo hemos convertido a ningún espacio de color en el revelado (opción -o 0), le deberemos indicar que no realice gestión de color.

Lo ideal no es ni lo uno ni lo otro sino que lo más óptimo es disponer en Photoshop del perfil de color de nuestra cámara, es decir un perfil generado tras la calibración de la misma. En ese caso revelaríamos sin gestión de color (opción -o 0), y en la operación de abrir el archivo lineal asignaríamos el perfil de nuestra cámara.

En los tres casos la imagen tiene sus datos en formato lineal, pero cuando la hemos convertido a algún espacio de color DCRAW guarda en el TIFF la información que PS necesita para saber que efectivamente la imagen tiene un formato lineal y la mostrará automáticamente con una gamma de visualización corregida. En cambio si no ha sido convertido a ningún espacio de color la imagen se presentará tremendamente oscura. Para poder visualizarla correctamente hemos de ir a Edición → Ajustes de color... y en la sección 'Espacios de trabajo' elegir RGB: 'RGB personalizado...'. Se abrirá una ventana en cuya casilla 'Gamma' introduciremos un 1. Esto le indicará a PS que la imagen no tiene la gamma corregida.

En ningún caso estamos alterando los datos de la imagen que se mantienen lineales tal como salieron de DCRAW. Basta mostrar el histograma de la imagen para ver lo concentrado hacia las sombras que se encuentra.

Si ahora intentamos editar nuestra imagen con curvas por ejemplo, veremos que es misión imposible precisamente por esa concentración hacia las sombras. Por desgracia Photoshop no está preparado para realizar edición sobre imágenes lineales, por ello sus curvas y resto de herramientas no tienen definición suficiente en la parte de las sombras para hacer una edición de precisión. Lo que sí vamos a poder hacer en este momento aprovechando la linealidad de los datos que componen la imagen es:


CORRECCIÓN DE LA EXPOSICIÓN CON CURVAS

Es una cuestión de tener claro el concepto de exposición en digital: si nuestro sensor es lineal y por tanto produce en cada pixel un nivel proporcional a la cantidad de luz recibida, y nuestro histograma también es lineal, para aplicar en el mismo una sobreexposición de +1EV habrá que multiplicar por 2 todos los niveles de la imagen; y dividirlos entre 2 para obtener una subexposición de -1EV. Realizar esta operación con una curva es tan sencillo como esto:


Fig. 15 Curvas para realizar corrección de exposición.


Para sobreexponer +2EV usaríamos la curva que pasa por (64,255), para subexponer -2EV usaríamos la curva (255,64), y así sucesivamente. Por supuesto todos los valores intermedios también son posibles para un ajuste fino de la exposición.


BALANCE DE BLANCOS CON CURVAS

Para realizar el balance de blancos nos basamos exactamente en el mismo principio de linealidad solo que en este caso las curvas se aplicarán de forma independiente sobre cada uno de los 3 canales RGB para modelar los multiplicadores de que hemos hablado antes. Para saber la curva que modela un determinado multiplicador no hay más que hacer la conversión del mismo al rango 0..255 de la curva. Por ejemplo el balance de blancos tungsteno que vimos tenía los multiplicadores RGB con -H 0: 1.392498 1.000000 2.375114, que se modelarán con una curva de sobreexposición en el canal R que pase por (255/1.392498,255) = (183,255) y otra para el canal B que pase por (255/2.375114,255) = (107,255), dejando inalterado el canal G:


Fig. 16 Curvas para realizar balance de blancos.


Podríamos haber usado los multiplicadores menores de 1 que proporciona -H 1: 0.586287 0.421032 1.000000. Las curvas a usar en ese caso serían de subexposición y consistirían en una curva sobre el canal R que pasase por (255,255*0.586287) = (255,150) y otra curva sobre el canal G que pasara por (255,255*0.421032) = (255,107) dejando en este caso el canal B inalterado. Aplican exactamente todas las implicaciones vistas de usar un juego de multiplicadores mayores o iguales a 1, o un juego de factores menores o iguales a 1. No ha de asustar la radicalidad de estas curvas pues el histograma es lineal y ya vimos la fuerte concentración del mismo en la parte baja.

Lo bueno de ajustar el balance de blancos con curvas es que podemos ponerlas en una capa de ajuste e ir tocándolas hasta dar con la proporción óptima de canales para tener un correcto balance de blancos.

Veamos un ejemplo de imagen revelada sin balance de blancos (-r 1 1 1 1) y como queda al ser ajustada con las curvas representadas arriba (mover el ratón sobre la imagen para ver el efecto del balance de blancos):


Fig. 17 Efecto del balance de blancos (mover ratón sobre la imagen).


Es o no es emocionante ajustar por uno mismo un balance de blancos, sabiendo lo que en realidad está pasándole a la imagen? Y todo con una simple curva, aplicando de forma elegante y precisa los conceptos teóricos sobre la linealidad del sensor.

Por desgracia esta forma de operar tiene más interés didáctico que práctico, porque como ya se indicó al principio ajustar el balance de blancos a posteriori del revelado RAW no es aconsejable ya que los algoritmos de demosaicing están optimizados para interpolar una imagen que ya está equilibrada en blancos.

En la siguiente imagen se muestra a qué artefactos puede dar lugar que el balance de blancos se haga a posteriori (mover el ratón sobre la imagen para ver los artefactos de color):


Fig. 18 Balance de blancos antes vs después (mover ratón) de la interpolación Bayer.


~~~


En realidad la posibilidad de ajustar la exposición, y por lo tanto también el balance de blancos, mediante curvas de este tipo no es exclusiva de imágenes lineales. Se explica en el artículo Compensación gamma. DCRAW con gamma cómo una propiedad matemática de la curva gamma permite usar ese tipo de curvas también en imágenes no lineales, solo que los valores de las mismas serán diferentes.

Esto se aplica precisamente en el tutorial Balance de blancos JPEG para balancear en blancos archivos de imagen JPEG o de otro tipo, sin necesidad de que sean lineales.


CONVERSIÓN A UN ESPACIO DE COLOR Y GAMMA

Una vez hemos revelado nuestra imagen solo nos faltaría un paso para entrar en la fase de edición: la conversión a un perfil de color junto con la aplicación de la compensación gamma.


PERFIL DE COLOR

La imagen RAW se produce en el perfil del propio hardware de la cámara, por lo que para una correcta gestión de color del archivo RAW tenemos dos posibilidades:
  • Disponemos del perfil propio de nuestra cámara: en ese caso revelaremos en DCRAW sin gestión de color con el comando -o 0 y asignaremos la imagen a dicho perfil al abrirla en PS
  • Realizamos la conversión al espacio de color destino deseado en el propio revelado: usaremos en este caso los comandos -o 1-5 de conversión a un espacio de color
El revelado con DCRAW en 16 bits produce siempre una imagen en formato lineal, es decir de gamma=1,0, por lo tanto los espacios de color que asignemos al abrirla en PS deberán serlo también o se mostrará tremendamente oscura.

Si PS no reconociera directamente el perfil incrustado en la imagen revelada por DCRAW, pueden descargarse versiones lineales de los más habituales (sRGB y Adobe RGB) de este enlace. Bastará copiarlos en la ruta habitual de perfiles ICC (típicamente 'C:\Windows\System32\spool\drivers\color\') o si se tiene Windows Vista instalarlos con el botón derecho del ratón, y asignarlos al abrir las imágenes en PS.

Para el que desee crear sus propias versiones lineales de algún perfil de color puede seguir los siguientes pasos en PS (se ha tomado sRGB como ejemplo):

  1. Seleccionar 'Edición' → 'Ajustes de color...', y elegir el modo avanzado ('Más opciones')
  2. Seleccionar 'sRGB IEC61966-2.1' en el desplegable de 'Espacios de trabajo' en el apartado 'RGB'
  3. Seleccionar ahora en ese mismo desplegable la primera opción llamada 'RGB personalizado...'. En la ventana que aparecerá con los parámetros del perfil, cambiar el 2,2 por 1,0 en la casilla 'Gamma' e introducir un nombre identificativo, por ejemplo 'DCRAW Gamma1 sRGB', dejando todo lo demás inalterado. Pulsar 'OK'
  4. De nuevo sobre el mismo desplegable 'Espacios de trabajo' en 'RGB' de los pasos 2 y 3, seleccionar la tercera opción etiquetada 'Guardar RGB...'. Introducir un nombre apropiado, por ejemplo dejamos el propuesto 'DCRAW Gamma1 sRGB.icc', y pulsar 'Guardar'
  5. Ahora cerramos la ventana de 'Ajustes de color...' en que nos encontramos pulsando 'Cancelar' para que el nuevo perfil no se asuma como perfil por defecto del espacio de trabajo

COMPENSACIÓN GAMMA

Hemos visto que la imagen generada por DCRAW es lineal si no se aplica específicamente una compensación gamma con el comando -g. Si bien la edición lineal de imágenes es perfectamente posible, presentando de hecho grandes ventajas en ciertos aspectos frente a la edición no lineal, PS desafortunadamente no está bien preparado para ella resultando muchas de sus herramientas difíciles de manejar.

Es por ello por lo que como paso previo a la edición deberemos además deslinealizar la imagen aplicándole una compensación gamma, típicamente de 2,2.

Para llevar a cabo esta deslinealización basta hacer algo tan simple como convertir al espacio de color destino (con gamma=2,2 o la que sea) en que vayamos a trabajar. Recordemos que tenemos la imagen codificada y asignada en un perfil de color lineal, así que si este fuera por ejemplo sRGB, convertirla a la version no lineal del mismo espacio sRGB (la que habitual que usamos en PS) tendrá precisamente este efecto de deslinealizar la imagen.

Cuando hagamos esto podremos ver como el histograma se redistribuye desplazándose fuertemente hacia la derecha pero manteniendo invariable el aspecto de la imagen como en toda conversión de espacio de color.

He comprobado que PS (CS2) muestra las imágenes lineales de gamma no compensada con artefactos tipo solarización en las zonas homogéneas si el grado de zoom en pantalla es inferior al 50%. Este fenómeno es solo a efectos de visualización y por lo tanto no afecta para nada a la información real codificada en la imagen. La conversión final a un perfil de color no lineal hace además que desaparezcan estos fenómenos de solarización.

El ejemplo muestra cómo visualiza PS una imagen lineal con un zoom en pantalla del 36%, y como desaparece el problema tras la deslinealización por conversión a espacio de color con gamma no unitaria:


Fig. 19 Efecto de solarización al ver en PS imágenes lineales (izq.) vs no lineales (der.).


Una vez convertida la imagen al perfil de color no lineal elegido puede empezarse el proceso de edición de la imagen tal como lo haríamos si la hubiéramos revelado con cualquier otro revelador RAW.

Por supuesto todos estos pasos pueden obviarse si empleando el comando -g de DCRAW con los valores apropiados, obtenemos una salida con compensación gamma directamente en DCRAW.


VENTAJAS DE DCRAW FRENTE A REVELADORES RAW COMERCIALES

Al margen de la mejora o no en calidad de interpolación, reducción de ruido, aberraciones cromáticas,... lo que sería objeto de otro análisis, pueden deducirse de todo lo visto una serie de facilidades que aporta DCRAW y que no están disponibles en reveladores comerciales tales como ACR, y que son de gran utilidad para ciertos análisis o aplicaciones:
  • Extraer los datos RAW puros sin realizar revelado ni transformación alguna con -D
  • Extracción rapidísima de la imagen JPEG incrustada en el archivo RAW con -e
  • No aplicar balance de blancos con la opción -r 1 1 1 1 para tener canales sin balancear tal y como los captó el sensor
  • Aplicar balance de blancos sin quemar ningún canal que no lo estuviera en el RAW con -H 1-9
  • Revelar la imagen sin gestión de color con -o 0
  • Absoluta garantía de no realizar la menor reducción de ruido ni proceso de enfoque por defecto
  • Generar una imagen en formato lineal sin compensación gamma con -4
  • Realizar ajustes lineales que resultarían menos obvios sobre un histograma de gamma compensada
  • Ajuste del negro y punto de saturación a nuestra cámara particular con -k y -S
  • Mayor control de la recuperación de áreas quemadas parametrizable con -H
  • DCRAW no descarta píxels de los bordes mientras ACR sí (Canon 350D: ACR=3456x2304, DCRAW=3474x2314, 1% de superficie extra)
  • DCRAW genera imágenes de 16 bits reales mientras ACR las genera de 15 bits (mitad de niveles)
  • Además DCRAW es gratuito, compacto (<500KB), multiplataforma y está continuamente actualizado

FORMATOS RAW SOPORTADOS POR DCRAW

La lista no termina y está continuamente actualizándose conviertiendo a DCRAW en un auténtico diccionario universal de formatos RAW que llega a leer incluso algunos formatos RAW de cámaras compactas no documentados por sus fabricantes.

Es habitual que cuando aparece una nueva cámara en el mercado, David Coffin actualice DCRAW para poder leerlo antes que ningún fabricante. Solo ésta ya es una buena razón para tener en cuenta DCRAW mientras aparece una actualización para nuestro revelador RAW favorito.

Aquí puede consultarse el listado de formatos soportados.


FACILITANDO EL USO DE DCRAW EN WINDOWS

SCRIPT DCRAW PARA WINDOWS

Para ahorrarnos tener que hacer uso de la línea de comandos al hacer revelados con DCRAW, es recomendable asignar dicho programa dentro de las opciones del Explorador de ficheros de Windows para que al hacer Botón derecho → 'Enviar a' nos aparezca DCRAW como una de las opciones. Para ello basta usar el siguiente script por cortesía de Owockadoy del foro de OD:

   @echo off
   :inicio
   if _%1_==__ goto fin
   echo Procesando %1...
   c:\windows\dcraw -e %1
   shift
   goto inicio
   :fin

Lo guardaremos con un nombre identificativo tal como dcraw.bat en 'C:\Documents and Settings\usuario\SendTo' para Windows XP, o en 'C:\Users\usuario\AppData\Roaming\Microsoft\Windows\SendTo' para Windows Vista, donde usuario es nuestro usuario habitual de Windows.

Para localizar la segunda ruta en el dichoso Vista, puede ser necesario introducir en 'Ejecutar' (tecla Win izq. + 'R') la cadena '%USERPROFILE%\AppData\Roaming\Microsoft\Windows\SendTo' que nos llevará a la ruta correcta.

Es posible que para que Windows nos muestre la carpeta 'SendTo' tengamos que habilitar en Herramientas → Opciones del Explorador la opción de 'Mostrar todos los archivos y carpetas ocultos', opción que puede restablecerse una vez hemos copiado el script.

Guardado el script bastará seleccionar un archivo o grupo de archivos RAW, y con el botón derecho enviarlos al escript en cuestión. Por supuesto podemos definir varios scripts con diferentes opciones de revelado (en el ejemplo de arriba no se revelan los archivos, solo se extrae el thumbnail JPEG asociado a cada uno de ellos).


CONSOLA DESDE EL EXPLORADOR

Con la instalación de la siguiente minúscula herramienta: MS-DOS.reg en el registro de Windows, puede abrirse con gran facilidad una consola en cualquier ruta deseada con tan solo colocarse encima de la carpeta en cuestión en el Explorador de Windows y pulsando el botón derecho del ratón elegir la opción 'Consola sistema'.

De ese modo, para procesar con DCRAW cualquier archivo RAW que se encuentre en una ruta un poco intrincada no será necesario realizar ningún cambio de carpeta desde la consola con el comando cd. Podremos directamente abrir un terminal asociado a dicha ruta partiendo del explorador.


PERFECT RAW. DCRAW CON INTERFACE GRÁFICO

Para paliar la incomodidad de tener que utilizar DCRAW desde la línea de comandos, Manuel Llorens, Fernando Ariznavarreta, Egon y yo (mucho más ellos que yo) estamos diseñando nuestro propio revelador RAW basado en DCRAW pero con un potente interface gráfico que facilite su uso: Perfect RAW.

La filosofía es diferente a la de otros interfaces existentes para DCRAW como por ejemplo UFRAW, ya que nuestra prioridad absoluta es la precisión y el control del revelado de modo que ninguna de las facilidades nativas de DCRAW quede oculta al usuario, aunque ello convierta a Perfect RAW en un revelador no tan fácil de usar ni rápido como otros.

Además contará con funcionalidades añadidas ajenas a DCRAW tales como histogramas de gran precisión (incluyendo histogramas por pasos de diafragma), control de exposición con posibilidad de preservar las altas luces, nuevos algoritmos para mejorar la calidad de la imagen,...

Para tener más información del desarrollo puede acudirse al siguiente enlace: Perfect RAW.

NOTA: desafortunadamente, el líder del proyecto Perfect RAW, Manuel Llorens, a fecha 24 de febrero de 2010 ha dado el desarrollo del programa suspendido de forma indefinida. Para saber más sobre la situación y viabilidad del proyecto puede contactársele directamente en su propia página RAWness. Digital Photography Science.


~~~


Si este contenido te ha resultado útil, considera realizar una contribución para asegurar la continuidad de esta web. Mantenerla supone un importante esfuerzo, así como un espacio y ancho de banda considerables en el servidor. Es una operación sencilla y totalmente segura.



gluijk@hotmail.com
  TUTORIALES

HOME