domingo, 9 de abril de 2017

Combinación óptima de señales para minimizar ruido con R (II). Aplicación

En el artículo Combinación óptima de señales para minimizar ruido con R (I). Teoría, calculamos la forma de combinar linealmente dos señales para obtener la máxima relación S/N de salida. Ahora aplicaremos la teoría en la obtención de fotografías digitales en blanco y negro con mínimo ruido.

Una fotografía monocroma se obtiene aplicando sobre la imagen en color un modelo de luminosidad, implementado generalmente como combinación lineal de los tres canales RGB (rojo, verde y azul) capturados por el sensor de la cámara.

Y = α · R + β · G + γ · B    donde    α + β + γ = 1

La ponderación de canales en una aplicación fotográfica típica dependerá del balance de blancos usado (escalado previo de dichos canales que en realidad solo tiene sentido en la fotografía en color), más una ponderación adicional que permita enfatizar determinados colores (por ejemplo en paisajes a menudo es deseable que el azul del cielo se traduzca en un tono gris oscuro para que las nubes destaquen).

En este ejercicio vamos a ignorar la forma habitual de proceder, buscando como único objetivo la combinación que maximice la relación S/N numéricamente.

Como paso previo requerimos extender el modelo de combinación óptima de dos a tres señales, que serán los canales RGB de la imagen en color de partida. Para lograrlo nos apoyamos en el desarrollo ya hecho, y dadas tres señales X1, X2 y X3 hacemos la combinación óptima de X1 y X2, y la resultante la combinamos de forma óptima con X3.

El desarrollo puede encontrarse aquí y se resume en las siguientes relaciones:



La formulación para dos señales es un caso particular de tres señales donde X3 tuviera muy baja relación S/N (k'=0). Del mismo modo podría generalizarse el método para cualquier número de señales.

Tomamos a continuación una captura especialmente ruidosa por haber sido obtenida a ISO12800 con una Sony A7 II:




Para poder aplicar el algoritmo nos falta un dato: los valores k y k' que relacionan los niveles de relación S/N de los tres canales. Para estimarlos acudimos a la naturaleza del ruido en un sensor digital de imagen, que puede considerarse en términos absolutos prácticamente constante para cada valor de ISO (estamos considerando solo el ruido electrónico e ignorando el ruido fotónico, menos dañino y que sigue una estadística diferente).

Siendo lo anterior así, la relación S/N solo depende del valor de señal útil, y éste lo podemos aproximar por su valor medio en un área circundante. Así si el canal R en una región de la imagen tuviera un valor medio normalizado entre 0 y 1 de 0,4, y en esa misma zona el canal G tuviese un valor medio de 0,7, calcularíamos k = 0,7/0,4 = 1,75, es decir el canal G tendría una relación S/N de valor 1,75 veces la del canal R.

Este valor medio se obtiene fácilmente con un promediado sobre la extracción RAW original, sin aplicar balance de blancos ni conversión a un perfil de salida. Como no he encontrado un paquete R que permita hacer filtrados de manera sencilla en un array, para no complicarme con bucles he aplicado un desenfoque gaussiano en Photoshop.

En las siguientes dos imágenes puede verse el resultado de emplear el algoritmo óptimo de conversión a blanco y negro partiendo del archivo RAW original, enfrentado al resultado que se obtiene con la habitual capa de ajuste 'Black & White...' de Photoshop (usando parámetros por defecto) aplicada sobre un revelado también neutro del RAW original, lo que puede considerarse un procedimiento estándar de obtención de blanco y negro.




El algoritmo óptimo proporciona una imagen bastante más limpia que la conversión con Photoshop. Por contra, debido a su naturaleza genera tonos de gris que no siempre serán tan fieles a un modelo perceptual de luminosidad. La diferencia de ruido queda más patente en este enlace en forma de animación.

Un dato interesante es obtener el mapa de fusión empleado, una imagen virtual con la que representamos el peso que ha tenido cada canal RGB en la combinación lineal óptima.



Puede verse como el canal verde, por su mayor exposición generalizada, es el que más pondera en casi toda la imagen. El canal azul solo tiene una aportación considerable en la cabina del planeador de Koji Kabuto y contadas zonas de sombras, y el canal rojo en el pecho de Mazinger Z y fuselaje del planeador, aunque también adquiere importancia en amplias áreas de tonos cálidos.

Es precisamente de esperar que en áreas con este predominio atípico de los canales rojo y azul sobre el verde en el archivo RAW, el algoritmo propuesto supere con más diferencia a los procedimientos habituales de obtención de fotografía en blanco y negro. En fotografía IR y UV la mejora puede ser radical.

Una vez más la notación vectorial de R ha permitido ejecutar todas las operaciones de procesado de imágenes con gran economía de líneas. En el archivo bwalgorithm.R puede encontrarse el código.

1 comentario:

  1. Gracias por el ejemplo, además con reminiscencias de mi niñez.

    "La maldad, el temor, Koji puede controlar.
    Y con él su robot ..."

    Salud

    ResponderEliminar

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.