domingo, 27 de febrero de 2022

Restaurando un archivo RAW

Seguimos con ejercicios de 'Generando un RAW en formato DNG a partir de un TIFF'. En esta ocasión vamos a tratar de salvar un archivo RAW que se ha visto afectado por un fallo electrónico de la cámara, una Canon 7D en la que en un momento dado han empezado a aparecer rayas verticales en todas las fotos (hacer clic para verlas al 100%):

Fuente: Cosme de Armas

Cuando analizamos la matriz de Bayer del archivo RAW enseguida vemos el problema, una de cada 8 columnas de fotositos (en particular columnas de fotositos G y B) parecen tener sus píxeles muertos o al menos generan unos niveles RAW muy por debajo de lo esperado:


Tras el revelado RAW el problema se extiende a una gran cantidad de píxeles, traduciéndose en un desaguisado que ya es irreversible:


Vamos a llevar a cabo una restauración del archivo RAW sustituyendo los valores G y B erróneos por estimaciones obtenidas de valores cercanos. En los fotositos G promediamos 4 vecinos y en los B hacemos lo propio con los 2 fotositos B más próximos:



La corrección contemplando la matriz de Bayer hace presagiar una mejora importante, aunque en el dominio Bayer es imposible saber cómo de bien funcionará:



Al revelar el RAW aparecen algunos artefactos, causados sobre todo por la lejanía de la información B usada. En zonas de fuerte gradiente horizontal (cuando la imagen cambia rápidamente de luminosidad en un desplazamiento lateral) aparecen pequeños oscurecimientos en las zonas de luz y viceversa. Aún así la imagen vuelve a ser muy utilizable (zoom 300%):



La imagen global no queda nada mal teniendo en cuenta que hemos tenido que estimar el 12,5% de la información de la misma y de una forma muy de andar por casa (hacer clic para ver a máxima resolución):


El archivo RAW original se puede descargar de rayas.CR2 y el restaurado para compararlos de rayasrestaurado.dng.

~~~

En realidad en las columnas defectuosas, que parecen prácticamente a negro, hay información y habría sido un ejercicio redondo poder rescatarla sin tener que acudir a sus alrededores. La siguiente imagen compara un canal G sano del RAW con un canal G perteneciente a las columnas defectuosas. Es por tanto información RAW pura, sin interpolación ni procesado (hacer clic para verla a tamaño real):


Por desgracia la información está muy deteriorada: son niveles muy bajos que aunque obviamente correlan con los valores esperados (se distingue perfectamente la escena) no lo hacen linealmente lo que los hace intratables.

Además la información parece sufrir una especie de blooming hacia la derecha. Esto hace pensar que la cámara dispone de 8 circuitos independientes para procesar por columnas la información capturada por el sensor, uno de los cuales ha dejado de funcionar, y que el procesado de unas columnas puede influir en las adyacentes (separadas físicamente 8 fotositos en el sensor).

~~~

Repositorio con todo el código R, script DNG, ejecutables de exiftool y dng_validate: GitHub.


No hay comentarios:

Publicar un comentario

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.