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 numéricamente maximice la relación S/N, y además lo haga de forma adaptativa en cada región de la imagen.

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.

Tras el siguiente desarrollo:


Resumimos las relaciones finales:



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 la siguiente imagen puede verse la comparación del algoritmo óptimo de conversión a blanco y negro partiendo del archivo RAW original, con el 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 comparación puede verse a mayor tamaño en haciendo clic sobre la imagen anterior.

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. Como decíamos el algoritmo es adaptativo, ajustándose a las proporciones RGB locales para maximizar la relación S/N en cada zona.



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.

~~~

Repositorio con el código R y archivos auxiliares: GitHub.
Archivo RAW original: mazingerz.dng.

3 comentarios:

  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
  2. Muy buen articulo, ahora lo que estaria bueno seria un plugin para Lightroom o una aplicacion que lea y convierta DNGs...

    Como se comporta una imagen en color a la que se le han tocado los canales (imitando filtros para BN) ? supongo que igual en cuanto a la efectividad para reducir ruido verdad ?

    ResponderEliminar
    Respuestas
    1. En una fotografía en color no puedes tocar a voluntad los canales, sería algo como ir alterando el balance de blancos en cada zona de la imagen. La foto se percibiría menos ruidosa pero sería un festival en cuanto a la reproducción del color.

      Salu2!

      Eliminar

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.