jueves, 27 de enero de 2011

RAW

QUÉ ES UN ARCHIVO RAW?

Como su propio nombre indica, son los datos brutos (raw) capturados por el sensor digital de nuestra cámara. No es un formato de imagen, de hecho, no existe un consenso entre las principales marcas fabricantes de cámaras, sobre el formato de estos archivos, por eso existen tantos tipos como modelos de cámaras fotográficas y todos ellos con enormes limitaciones por derechos de propiedad. En este sentido, hay que señalar la gran labor de OpenRAW para conseguir unificar a todas estas empresas en un único sistema abierto de archivos RAW.

La posibilidad de almacenar estos archivos son exclusivos de cámaras fotográficas avanzadas como las compactas de gama alta y reflex. Además el tamaño de los archivos RAW suele ser proporcional a su resolución de píxel, a la profundidad tonal del sensor (bits), además de unos pocos kilobytes que corresponden a la cabecera con los datos de cómo se tomo la fotografía; algunas marcas usan una tasa de compresión (ej 30% archivos.NEF) que disminuye el tamaño de archivo sin pérdida de información.

En muchas ocasiones he leído comentarios, en los que se recomienda la utilización de archivos RAW como sinónimo de calidad fotográfica. Esta afirmación es una verdad a medias. En realidad un archivo RAW es interesante para aquellos usuarios que quieren tener el control total sobre el tratamiento que van a recibir sus fotografías; esto quiere decir que hay que retocar digitalmente (“revelar”) todos los archivos para convertirlos a un formato de imagen. A estas imágenes les faltan los ajustes que aplica la cámara de forma automática como son: el balance de blancos, tono, la saturación de color, el brillo, el contraste y el enfoque principalmente. Por estos motivos hay fotógrafos(as) que debido a las características de su trabajo, no pueden emplear el tiempo necesario para revelar todas las fotografías que hacen; o por ejemplo, volver de vacaciones con 2000 fotografías en formato RAW de 5 Mpixel (20 Gb de información), de las cuales la mayoría son instantáneas de recuerdo, y que deberemos revelar una por una para convertirlas a un formato de imagen, para poderlas imprimir o para que tus acompañantes de viaje las puedan ver (pido perdón).

Por el contrario, cuando se quiere acceder a la totalidad de la información que el sensor de nuestra cámara capturó, se buscan efectos concretos, o se quiere dar un toque personal a las imágenes, lo mejor es utilizar los archivos RAW y editar digitalmente estos archivos para tener un control total del proceso fotográfico. Por estos motivos, se suele equiparar los archivos RAW, con los negativos de película en fotografía clásica y el tratamiento posterior con el cuarto oscuro. Quizás lo difícil sea diferenciar entre: cuando se trata de una fotografía instantánea de recuerdo, o la mejor fotografía de nuestra vida.
LA CAPTURA DIGITAL

Para saber que es lo que contiene un archivo RAW es preciso tener unas mínimas nociones del proceso de digitalización que se da en la cámara cada vez que tomamos una fotografía y el tratamiento necesario para la formación de una primera imagen en color. Intentaré explicarlo de forma muy simplificada, porque la digitalización de imagen e interpolación del color podrían dar para una vida dedicada a cada uno de ellos, sin embargo si entendemos lo básico de estos procesos, nos será más fácil comprender la estructura de UFRaw y los pasos que tenemos que realizar para la conversión de un archivo RAW en una imagen final, porque son los mismos que realiza la cámara pero en nuestro ordenador, más o menos.

diagrama camara digital

Esta imagen muestra un diagrama de flujo bastante resumido, de los procesos que se dan en una cámara. Visto así de primeras puede resultar algo confuso, pero conforme avance el texto iremos comprendiendo mejor su significado, además de dar una visión de conjunto que espero todos consigamos tener antes de afrontar como se revela un archivo RAW con UFRaw. Puede ser interesante que lo abras en una pestaña adyacente para consultarlo, al tiempo que lees esl texto.
DIGITALIZACIÓN

Independientemente del sensor que usemos, cada píxel del mismo, se encarga de convertir la luz incidente en cargas eléctricas (voltios) proporcionales a la luminancia recibida, y esta señal todavía analógica es transferida a un circuito conversor analógico digital donde se transforma la señal analógica en información digital binaria. De una forma simplificada, el número de combinaciones de 0 y 1 que emplea el conversor analógico digital como resultado de la digitalización del valor de voltaje procedente de cada píxel del sensor esta determinado por el número de bits que emplea. ¿Qué tal?, ¿Todavía no lo entiendes?. Voy a poner un ejemplo, pero te va doler: Imagina que te dan una bofetada que duele un huevo (unidad de dolor en la Península Ibérica), ¿sí?. Ahora te dan otra bofetada más fuerte todavía ¿cuanto duele?, podríamos decir que te ha dolido como dos huevos, y así sucesivamente. Para digitalizar el dolor de tus bofetadas, podríamos usar hueveras como las del supermercado de 8 huevos (bits), de forma que podrías ordenar los huevos de cada bofetada, dentro de una huevera distinta; esto permite describir 28= 256 combinaciones de huevos dentro de cada huevera (recuerda que los huevos pueden ser blancos o morenos, por eso la base de la potencia es 2), o sea, que podrías describir 256 intensidades de dolor. Esto es lo que hace un conversor analógico-digital, recibe valores de voltaje analógico que vienen de cada píxel del sensor (bofetadas) y dispone de hueveras de 12 bits (es el caso más frecuente, aunque ya existen de 14 bits y de más) para describir 212= 4096 voltajes diferentes (en este caso la base es dos porque los valores binarios son 0 y 1), como estos voltajes los producen las diferentes luminancias que llegan al sensor, en realidad lo que estoy diciendo es que la cámara dispone de 4096 valores de luminancia para describir el estímulo de cada píxel. Otros símiles que no duelan tanto podrían ser 4096 niveles de sabor, 4096 niveles de tono audible,... Son las fracciones en las que puedes dividir el continuo de la luz para considerarlos como valores fijos, esto se llama discretizar y es lo que hace circuito conversor analógico digital de la cámara con la señal del sensor.
codificación del color

El primer proceso que la cámara hace en caso de guardar el RAW como JPG; o que hace UFRaw en caso de revelar el RAW con nuestro ordenador; es la codificación del color, porque la imagen que el sensor capta es de luminancia, por tanto, es una imagen en escala de grises a la cual, es necesario hacer un tratamiento para "sacar" la información del color. El sensor matricial de la cámara (ccd y cmos principalmente) capta la información de color gracias a un filtro de mosaico en el que se intercalan filtros del mismo tamaño que un pixel: dos verdes, uno rojo y uno azul. Por tanto, la forma de recuperar el valor real RGB o RVA (canales primarios para componer el color: Rojo, Verde y Azul) de cada uno de los píxeles de la imagen debe de ser calculado posteriormente mediante interpolación a partir de los valores recogidos por los píxeles adyacentes. En esta primera interpolación de la imagen se determina el equilibrio de blancos según el peso que se le de a cada uno de los canales. UFRaw, contiene en la primera pestaña del programa con todo lo necesario para este primer proceso de la imagen, como se verá después.

filtro bayer

La primera deducción que se desprende de las implicaciones del filtro de matriz de Bayer, es que la resolución del sensor no es igual para el color que para la luminancia, pero esta diferencia también se da en el ojo humano, mucho más sensible a luminancias que a cambios de color, así que, no influye de manera apreciable en la imagen final. Además se intercalan más filtros verdes, porque la visión humana es más sensible a estas longitudes de onda y menos a las del rojo y azul. Por estos motivos no apreciaremos diferencia en la imagen final; sin embargo existen situaciones excepcionales, como la fotografía submarina en la que la luz roja se queda a pocos metros de la superficie y un sensor más sensible al rojo permitiría recomponer en parte, este canal. Otro ejemplo, es cuando usamos los canales rojo y azul para convertir las imágenes a blanco y negro, puede apreciarse la aparición de ruido más rápidamente; o el ruido en los cielos, etc...


La reconstrucción del color a partir de la interpolación de la información que proviene de patrones de Bayer es actualmente, una de las partes más importantes en el proceso de conversión de archivos RAW, menos en los sensores FOEVON que poseen tres capas sensibles una para cada color.


Las dos figuras anteriores muestran la información que es captada por el sensor. La imagen de la izquierda en escala de grises, muestra realmente, cómo ve el sensor de la cámara, lo que registra son niveles de luminancia que son diferentes dependiendo de que filtro de la matriz de Bayer tengan delante, esto es, cada píxel en el sensor de imagen es la salida en valor de luminancia de un filtro rojo, verde o azul como se ve en la figura de la derecha. Para reconstruir el color de la imagen, debemos crear una imagen que tenga los tres canales el rojo, verde y azul en cada píxel. Hacemos esto por interpolación de los valores del sensor que faltan.

Existen muchos métodos de interpolación a partir de matrices de bayer y entre la comunidad matemática se ha puesto de moda la investigación del procesamiento de señal digital. La literatura que describe algoritmos de interpolación con este fin es muy extensa, pero básicamente se podría agrupar en tres categorías: en el extremo inferior, los simples (algoritmos de relleno); en el centro son los algoritmos de interpolación lineal; y en el extremo superior existen algoritmos que usan reglas de interpolación basadas en el contenido de la imagen, son los adaptativos y que en UFRaw se corresponden con los métodos VNG y AHD.
CORRECCIÓN GAMMA

Lo primero es agradecer a Guillermo Luijk, su ayuda en la mejor comprensión de esta corrección que se aplica a los archivos RAW para poder ver las imágenes los más aproximado a la realidad posible. La comprensión del parámetro gamma, permitirá después entender qué estamos haciendo al variar los ajustes de gamma y linealidad en UFRaw.

Este parámetro se introdujo en origen, por la necesidad de corregir la respuesta no lineal de los tubos de rayos catódicos que se empleaban en televisiones o monitores CRT. La respuesta no lineal quiere decir simplemente que un valor de luminosidad, por ejemplo de 0,5 (ver gráfica de curvas gamma de la izquierda. Fuente Wikimedia commons) cuando se representa en un monitor CRT se corresponde con un valor de luminosidad de 0,218 (se ve más oscura), si se calcula esto para todos los valores de luminancia se observa que la curva de respuesta del CRT se asemeja a una curva de una función exponencial, cuyo exponente es gamma y tiene el valor de 2,2. Para conseguir que un valor de 0,5 se represente en el monitor (o en cualquier otro dispositivo de la misma gamma) con un valor igual, es necesario aplicar a la entrada del dispositivo una curva de iguales características que la gamma, pero inversa, esto es 1/gamma= 1/2,2= 0,45 (¿os suena este dato de UFRaw?), de esta forma las luminancias que observamos cuando estábamos inmersos en la imagen que queríamos fotografiar se representarán con valores similares en un medio de respuesta no lineal (monitor, impresora, cañón,...)

Como se observa en el histograma de datos de RAW, se aplica una curva gamma invertida sobre estos datos para que el resultado de la conversión de los datos RAW sea una imagen corregida de gamma capaz de representarse correctamente en cualquier dispositivo no lineal, como por ejemplo los monitores, impresoras, etc. En reaidad esta corrección que hace UFRaw no es un número sencillo de (0,45) es otra función la que determina la curva gamma de UFRAw y esta otra función depende de dos valores, el gamma y la linealidad.

* Ajuste de gamma: Se podría entender después de la explicación que el ajuste de valor gamma, debe ser constante e igual a 0,45, ya que se va representar en dispositivos de gamma igual a 2,2, pero en realidad esto no es así, depende de cada cámara. El ajuste del gamma provoca que la curva exponencial cambie y se haga más lineal conforme se acerca a 1 (recta) o más exponencial conforme se acerca a 0,1 su valor mínimo. Este ajuste afecta a los tonos medios y bajos, conforme la gamma es menor se están estirando más los valores de los bajos tonos y se comprimen las altas luces, esto puede provocar la aparición de ruido en las sombras.
* Linealidad: Este parámetro afecta a la pendiente de la porción "vertical" de la curva de gamma. Esto es, afecta a la parte de la curva que está estirando los datos de los medios y bajos tonos, por tanto afectará al modo en que se reparten los tonos en la primera parte de la curva gamma.





Histograma de la información RAW - RGB

Ahora bien, existe una consecuencia indirecta de la utilización de una curva de estas características y que me trae de cabeza ultimamente. Si observamos la curva gamma, ésta tiene una pendiente muy pronunciada al principio, correspondiendo con las zonas de sombra del histograma. Esto quiere decir que unos pocos valores de luminancia en las sombras, tienen que cubrir una amplia zona de la imagen resultante, sin embargo, los valores medios y altos ocupan la parte de "meseta" de la curva, donde es casi horizontal, esto quiere decir justo lo contrario que la mayoría de los valores de luminancia captados por el sensor, representarán una parte muy pequeña de la imagen de salida. Este efecto indeseable es el causante de la aparición de ruido en la zona de sombras o en imágenes subexpuestas. Una forma de evitar en parte este efecto indeseable, sería sobreexponer la imagen de tal manera que no lleguen a perderse la información de las altas luces; y otra forma que es la que ahora me tiene ocupado sería el tratamiento de la imagen sin aplicar la curva gamma, lo que se conoce como el revelado RAW lineal, pero que en Linux todavía tiene difícil aplicación.
http://babel.senabre.myphotos.cc/articulos/imagenes_articulos/2006_08_30_cuarto_oscuro_digital_I_flujo_trabajo_UFRaw/camara_digital.png


Para concluir con el apartado de la información RAW, debería de quedar clara la idea que el tratamiento que reciven los datos del sensor almacenados en archivo RAW, son básicamente una interpolación para la composición del color a partir de los datos parciales que se obtienen de la matriz de Bayer; una corrección gamma para la correcta visualización de la imagen en dispositivos como la pantalla del ordenador o la impresora; y además que la cantidad de valores de tonos depende de los bits del conversor analógico digital que suele ser 12bits, o sea, 4096 valores de luminancia que se interpolarán a 8 bits (menos valores = perdemos datos) por canal si exportamos a Gimp y 16 bits (más valores= inventamos datos) por canal si exportamos a otro software que soporte esta profundidad de color. Échale un vistazo al diagrama de flujo de una cámara digital y espero que se entienda mejor su significado.



Escrito por Tomás Senabre