¿Qué es la interpolación de color (demosaicing)?

¿Cómo se transforma la información del sensor en una imagen que sea fiel a los colores de la escena real?

 

Interpolación cromática - Demosaicing

 

 

 

¿Cómo funciona el sensor de una cámara?

En este artículo puedes ver con más detalle cómo funciona el sensor de imagen de una cámara digital, pero resumiendo:

El sensor está formado por millones de celdas fotosensibles ordenadas en filas y columnas.

Cómo funciona el sensor de una cámara digital

Por ejemplo, un sensor de 24Mpx suele tener una matriz de 6000 x 4000 celdas fotosensibles.

Vamos a suponer inicialmente que se trata de un sensor monocromático (que sólo genera imágenes en blanco y negro).

Cada celda recoge una cantidad de luz, que se corresponde con esa pequeña zona de la escena, y la convierte en un valor numérico proporcional.

Los puntos más oscuros de la escena (llamados negros o sombras) tendrán valores o niveles bajos, más cercanos a cero.

Los puntos más brillantes o iluminados de la escena (llamadas luces o blancos) tendrán valores cercanos al máximo de la escala.

Por ejemplo, si la escala de niveles va de 0 a 255, el blanco más puro sería el valor 255. No habría nada más brillante en la imagen final.

Para un sensor monocromático la historia acabaría aquí…

Pero la mayoría de cámaras generan imágenes en color, así que vamos a ver cómo lo hacen.

 

Sensores de color

Aunque hay diferentes opciones y tecnologías, la técnica que se utiliza en la mayoría de las cámaras está basada en lo siguiente:

  • Se utiliza un único sensor
    Como hemos visto, el sensor en sí sólo detecta niveles o cantidad de luz
  • Sobre el sensor se coloca un filtro RGB
    Este filtro óptico está formado por un mosaico de celdas que se distribuyen siguiendo un determinado patrón. El más utilizado es el patrón de Bayer, pero por ejemplo Fuji utiliza su patrón X-Trans, ligeramente diferente.
  • Cada celda del mosaico deja pasar sólo una parte de la luz
    Las celdas R sólo dejan pasar los fotones de longitudes de onda en torno al rojo
    Las celdas G sólo dejan pasar la luz verde
    Las celdas B sólo dejan pasar la luz azul

 

Demosaicing - Interpolación cromática - Filtro RGB

 

Tanto en los filtros Bayer como en los X-Trans se da más predominancia a los verdes.

Realmente estos filtros son RGGB (dos celdas dedicadas al verde por cada celda dedicada al rojo y al azul)

Esto es así porque el ojo humano (la visión humana) es más sensible a la zona central del espectro visible, todo el rango de verdes.

Y también el material fotosensible utilizado en los sensores suele tener un mejor rendimiento en esa zona central del espectro. Podríamos decir que el color verde representa mejor la luminosidad de la escena.

 

Cuando la luz que viene de la escena atraviesa el filtro RGB, cada celda del sensor sólo recibirá información de la componente que le ha correspondido.

 

Demosaicing - Interpolación cromática - Filtros de color

 

Por ejemplo, una determinada celda tendrá el nivel de rojo que corresponde a ese punto de la escena. La celda adyacente tendrá el nivel de verde para ese otro punto…  y así sucesivamente.

Estamos dividiendo la escena en canales de color (el canal rojo, el canal verde y el canal azul)

Si nuestro sensor era de 24Mpx tendremos:

  • Una imagen en blanco y negro de 6 Mpx que corresponde al canal azul
  • Una imagen en blanco y negro de 6 Mpx que corresponde a los tonos rojos
  • Una imagen en blanco y negro de 12 Mpx (2 x 6 Mpx) que corresponde a los verdes

 

Estas tres imágenes están superpuestas, pero sin solaparse.

De hecho, la información que obtenemos del sensor es simplemente una matriz de niveles, sin distinción de ningún tipo, como si fuera un sensor monocromático.

 

Demosaicing - El sensor sólo ve intensidad, no colores

 

 

Información RAW de la imagen

Esa matriz de niveles o valores digitales (números) que salen del sensor son los que se conocen como valores RAW.

 

Demosaicing - Información RAW del sensor

 

Si estamos haciendo la foto en formato RAW, el procesador de la cámara simplemente empaquetaría esa información ,tal cual, en el formato RAW que utilice el fabricante, añadiría alguna información adicional como los parámetros de configuración de la cámara, etc. y lo guardaría en la tarjeta de memoria.

El fichero RAW no es un fichero de imagen como tal, es un contenedor con los valores recogidos del sensor, sin procesar.

A partir de ese fichero RAW y conociendo el patrón del mosaico RGB que utilice la cámara podríamos sacar fácilmente cada canal de color por separado.

Tendríamos tres imágenes, tres versiones de la misma escena, cada una según el punto de vista de una de las  componentes de color.

Pero nosotros no queremos eso, lo que queremos es una única imagen con la máxima resolución del sensor, en la que cada punto tengamos la información exacta de su color.

Es decir, que cada pixel tenga su tonalidad totalmente definida, sus tres componentes RGB: por ejemplo R=20, G=80, B=125

Esto es lo que se consigue con los algoritmos de interpolación cromática o interpolación de color.

 

 

Interpolación de color (demosaicing)

El proceso se suele conocer con su denominación en inglés: demosaicing

Cada punto de la imagen sólo tiene información de un color, y tenemos que hacer una estimación de los dos colores que nos faltan.

Por ejemplo, si estamos en una celda que corresponde a la componente verde, podríamos mirar los valores de las celdas azules de alrededor para hacer una estimación de la componente azul. Y lo mismo para la componente roja.

Un forma sencilla sería usar algún tipo de promediado lineal de las celdas adyacentes del color que intentamos averiguar.

Por ejemplo, para estimar la componente azul de un pixel, podemos mirar los valores de las celdas ‘azules’ adyacentes, calculamos la suma de sus niveles y dividimos entre el número de celdas para calcular la media.

 

Demosaicing - Interpolación cromática - Algoritmos demosaico

 

Piensa que no hay un único resultado posible, no hay una correspondencia directa entre los tres canales de color y la imagen final.

En cierta forma estamos ‘inventando’ el color de la imagen.

A partir de un fichero RAW podremos obtener muchas versiones diferentes de la imagen final en función del algoritmo utilizado para la interpolación.

El problema de la interpolación lineal (promediado lineal) es que en los bordes de los objetos de la escena, en las transiciones bruscas de color de la imagen, aparecen artefactos de color y pequeños patrones repetitivos (conocidos como zippers, cremalleras)

Los algoritmos modernos son bastante complejos y utilizan técnicas para minimizar ese tipo de efectos no deseados.  Algunos están optimizados para mantener el detalle en los bordes y minimizar los patrones de cremallera, otros para  preservar las luces altas, otros para preservar los colores…

Hay muchísimos algoritmos y variantes. En cualquier caso, para un fotógrafo el proceso de demosaicing suele ser totalmente transparente y es muy difícil notar esos efectos negativos con los sensores actuales (mucha resolución) y con los algoritmos habituales.

 

¿Dónde / cuándo se hace la interpolación cromática?

Si hacemos la foto en formato RAW en la cámara, la interpolación de color la realizará después el programa de revelado que utilicemos: Lightroom, Capture One, Luminar, Dark Table…

En algunos programas el proceso es transparente al usuario, en otros podemos elegir entre diferentes algoritmos para ver cuál se adapta mejor a la foto que estamos revelando.

El programa de revelado tiene que tener en su base de datos la información de cada cámara y la estructura y características específicas de la información RAW que genera dicha cámara.

 

Si hacemos la foto en JPEG directamente en cámara, es el procesador de la cámara el que se encarga internamente de hacer la interpolación cromática y todos los procesos necesarios para conseguir la imagen final.