- Un experimento que muestra paso a paso cómo se registran los datos RAW del sensor de una cámara digital
- Los datos iniciales tienen forma de escala de grises al mapear simplemente la salida ADC de 14 bits a RGB 0–255, con un rango de brillo real limitado
- Se aplica el filtro Bayer para reflejar la información del filtro de color de cada píxel y luego se realiza demosaicing promediando los píxeles adyacentes
- Se corrigen las diferencias entre la percepción no lineal del brillo en la visión humana y en las pantallas mediante corrección gamma y ajuste de balance de blancos
- Finalmente, al compararlo con el procesamiento JPEG interno de la cámara, se muestra que el concepto de una “foto sin corregir” en la práctica no existe
Estado inicial de los datos RAW del sensor
- Los datos originales registrados por el sensor de la cámara están compuestos por valores ADC de 14 bits; si se convierten de forma simple a RGB 0–255, el resultado es una imagen en escala de grises
- El rango real de los valores ADC es de aproximadamente 2110~13600, y se reajusta el brillo tomando ese intervalo como referencia de blanco y negro
- En esta etapa la imagen casi no tiene información de color, porque el sensor solo mide la intensidad de la luz
Proceso de reconstrucción del color
- El sensor de una cámara a color detecta solo uno de los colores rojo, verde o azul en cada píxel mediante una matriz de filtro Bayer
- Si se asigna color a cada píxel según su filtro, aparece color, pero cada píxel solo contiene uno de los tres componentes RGB
- Al promediar los valores de los píxeles vecinos para realizar demosaicing, el color se reconstruye en toda la imagen
Brillo y corrección gamma
- La razón por la que la imagen resultante se ve oscura es la limitación del rango dinámico del monitor y la percepción no lineal del brillo del ojo humano
- Si los datos lineales se muestran tal cual, la imagen se ve oscura, por lo que se aplica una curva gamma no lineal para iluminar las zonas oscuras
- Sin embargo, en este proceso aparece un exceso en el canal verde, debido a la sensibilidad del sensor al verde y a la mayor proporción de verde en la matriz Bayer
Balance de blancos y corrección de color
- Se ajusta el balance de blancos modificando cada canal de color en una proporción determinada
- Se vuelve a la etapa previa a la transformación no lineal, se reduce el canal verde y luego se vuelve a aplicar la curva gamma
- Tras este proceso se obtiene una fotografía con colores naturales
Comparación con el procesamiento JPEG de la cámara
- La imagen JPEG integrada que genera la cámara a partir de los mismos datos RAW ya es el resultado de varios procesos de corrección matemática
- Ajustar contraste o balance de blancos en un software de edición es, en esencia, la misma operación que el procesamiento interno de la cámara
- El concepto de una “foto sin editar” en realidad no existe; todas las fotos son el resultado de un procesamiento matemático
- Como es difícil reproducir perfectamente la visión humana y existen límites en las pantallas, siempre existe la necesidad de ajustes manuales
1 comentarios
Comentarios de Hacker News
Me hace pensar si aplicar la misma función de transferencia a cada píxel debería considerarse “procesamiento”.
En la época de la película, si forzabas una película ISO 400 en blanco y negro a 1600, aparecía un grano áspero, pero era un “ruido” uniforme en toda la foto.
Hoy la reducción de ruido ha avanzado de forma sorprendente, pero en ese proceso a veces la imagen misma se altera.
Por ejemplo, en mi cámara IP, cuando entro en bicicleta, a veces desaparece parte de la rueda. El algoritmo confunde la textura del asfalto con ruido y la borra.
En smartphones o cámaras digitales, si haces zoom o miras fotos con poca luz, los rostros se ven “como pintura”.
Yo preferiría ruido honesto, o un algoritmo de reducción de ruido ajustable desde “ninguno” hasta el valor predeterminado actual.
Me gustan los textos que le quitan capas de abstracción a la “imagen”. Al final, la fotografía moderna no es más que procesamiento de señal con marketing encima.
La razón por la que el patrón Bayer es RGGB (50% verde) no es solo el equilibrio de color, sino también la resolución espacial.
El ojo humano es más sensible al verde, así que el canal verde se encarga de la mayor parte de la luminancia (el detalle).
Los algoritmos avanzados de demosaicing construyen un mapa de luminancia de alta resolución a partir del canal verde y luego interpolan rojo y azul como capas de diferencia de color.
Gracias a este principio también son posibles compresiones de video como el submuestreo de crominancia 4:2:0.
Si quieres profundizar más, recomiendo ver el código fuente de dcraw o libraw. Hay muchísimos casos especiales para interpretar los “voltajes raw” de cada fabricante de sensores.
g = .299r + .587g + .114bEsa proporción determina el brillo de la imagen en escala de grises.
Y me impresionó el verso citado ahí: describe un mundo del que desapareció el color, y al final satiriza que aquello que decidimos que es “correcto” no es más que error de cuantización.
Se habría resuelto con solo agregar un flag de conversión RGB→luminancia a la llamada de FFmpeg.
Claro, es porque el ojo humano es sensible al verde, pero aun así se siente de alguna forma arbitrario (⩺_⩹).
El JPEG que produce la cámara ya es, de por sí, un resultado fuertemente procesado.
Crear otro JPEG aplicando curvas, mapeos y ajustes distintos no es “manipulación”, sino simplemente otra interpretación.
Trabajo con sensores de cámara, y creo que este texto es muy bueno para capacitar gente nueva.
Si muestras el proceso desde los datos RAW hasta una salida familiar, se entiende rápido.
Solo una observación menor: debería decir “than” en lugar de “then”.
En la universidad estudié teledetección (remote sensing), y ahí fue cuando realmente entendí bien los sensores y el procesamiento de señal.
Lo que veo no es la “verdad”, sino una vista parcial de los datos.
El ojo humano, el ojo de un gato y una cámara recopilan y representan subconjuntos distintos de datos.
Se vuelve todavía más interesante si ves el espacio y el tiempo como dimensiones adicionales de la señal.
Al final, uno termina pensando que todos somos simplemente sistemas de sensores que observan una parte del universo.
En fotografía digital, la compresión de rango dinámico y el debayering son inevitables,
pero otra cosa muy distinta es que la IA reconozca objetos y reconstruya fantasiosamente la imagen según cómo “debería ser”.
Los fabricantes están empujando en esa dirección, y eso genera problemas como la confiabilidad de las fotos como evidencia.
Toda imagen es una interpretación de los datos y el resultado de muchísimas decisiones.
Si uno quisiera distinguir, podría hablar de edición global (global) y edición local (local), y la edición local podría verse como más cercana a lo “falso”.
Pero al final lo importante es la intención (intent).
Si hay intención de engañar, incluso una foto salida directamente de la cámara puede ser “falsa”.
La mayoría de la gente considera “falso” aplicar filtros, pero en realidad todas las fotos llevan filtros.
Llamar “falso” a ese proceso en sí no tiene sentido.
Me acordé de una cita de la película Tim’s Vermeer.
Como dice eso de que “la idea moderna de que el arte y la tecnología deben separarse es errónea”,
la fusión entre arte y tecnología fue precisamente una característica de la edad dorada.
También recomiendo The Science of Photography, de John Lind y
la explicación sobre sensores de Bob Atkins.
En especial, me impresionó la parte que explica por qué importa tanto el tamaño del pozo de píxel.
Creo que si los datos lineales se ven oscuros al mostrarlos, eso se debe a las limitaciones del monitor.
Si la profundidad de bits fuera lo bastante grande, quizá se podrían mostrar en luz lineal sin corrección gamma.
Como la percepción humana del brillo no es lineal, en alguna etapa hace falta una no linealización.
Lo ideal es hacer los cálculos en un espacio de color lineal de 16 bits o más y aplicar gamma justo antes de mostrar.
Antes, a veces se hacían mezclas en RGB no lineal y aparecía banding oscuro.
Los CRT usaban gamma para corregir la respuesta no lineal del cañón de electrones, y la película o los sensores CMOS también tienen una sensibilidad a la luz de tipo logarítmico, así que se aplica un tratamiento parecido.
Una “foto sin procesar” en realidad no existe.
RAW no es más que un conjunto de valores de píxeles RGGB, y el proceso de descartar estratégicamente datos para ajustarlos al estrecho rango dinámico de la pantalla
y definir un punto gris medio pertenece justamente al terreno de la interpretación creativa.
Me deja la sensación de que los ejemplos del texto son demasiado artificiales y tienen una iluminación demasiado colorida, así que cuesta entender cuál sería la “verdad de referencia”.
Basta con comparar las dos últimas imágenes y juzgar el “resultado” según la preferencia de cada quien.