¿Por qué el software puede corregir el balance de blancos con mayor precisión para archivos RAW que con los archivos JPEG?

11

¿Por qué las correcciones de balance de blancos JPEG posteriores al procesamiento no son tan precisas como el balance de blancos con Raw?

Según tengo entendido, cuando se graba jpeg, la cámara realiza internamente los siguientes pasos:

  1. Convierta los datos sin procesar del sensor utilizando el algoritmo (demoaicing / debayering).
  2. Convertir a espacio lineal

    a. Uso del valor sin procesar del mapa de tabla de búsqueda en el espacio lineal

    si. El nivel de negro para cada píxel se calcula y se resta.

    C. El valor de cada píxel se redimensiona a 0.0 a 1.0 usando Whitelevel

    re. Los valores reescalados se recortan a un rango lógico de 0.0 a 1.0.

  3. Asignación del espacio de color de la cámara al espacio CIE XYZ con ajuste de balance de blancos

    a. Convierta a XYZ (D50) usando CameraToXYZ_D50 = Chromatic_adapatation_matrix * CameraToXYZ_matrix

  4. Convertir CIE XYZ a sRGB

    a. Calcule RGB lineal usando CIE XYZ para matriz RGB lineal

    si. Calcule Rec709 sRGB utilizando la transformación de curva gamma en RGB lineal

  5. Convierte sRGB a 8 bits y comprime usando JPEG

Si esto es correcto, no entiendo por qué Jpeg no pudo corregir el balance de blancos de la misma manera que Raw.

¿Es simplemente debido a la compresión con pérdida de JPEG y el archivo tiff de 32 bits no tendría este problema?

ingrese la descripción de la imagen aquí

skyde
fuente
1
¿Qué te hace pensar que JPEG WB no es tan preciso como crudo? ¿Qué quieres decir con exacto ? ¿Quiere decir que la cámara no suele adivinar tan bien como una persona experta que utiliza una aplicación de conversión sin formato? ¿O algo mas?
Michael C
Quiero decir que si le digo a mi cámara que guarde una copia en bruto y jpeg de la misma imagen y luego los abra en la sala de luz e intente corregir el balance de blancos con el selector de color, haga clic en la misma ubicación exacta en la imagen. perfecto mientras que el jpeg todavía tiene un color extraño.
skyde
2
Esa es una pregunta muy diferente. Voy a editar el título para reflejar lo que creo que realmente estás preguntando ...
Por favor, lee mi perfil el
55
La primera imagen NO es "EL archivo RAW original". Es una de las infinitas posibles interpretaciones de los datos sin procesar que su aplicación de conversión sin procesar produjo y mostró en su pantalla en 8 bits.
Michael C
2
Probablemente no sea el punto más importante, pero su paso 2 son en realidad dos pasos distintos, y es posible que no se realicen en el orden en que los presenta (lo que sería una forma adicional de "hornear" el WB en el JPEG final) color).
junkyardsparkle

Respuestas:

9

¿Por qué el software puede corregir el balance de blancos con mayor precisión para archivos RAW que con los archivos JPEG?

Hay una diferencia fundamental entre trabajar con los datos sin procesar reales para producir una interpretación diferente de los datos sin procesar que la interpretación inicial de 8 bits del archivo sin procesar que ve en su pantalla en comparación con trabajar con un archivo jpeg de 8 bits donde se encuentra toda la información el archivo es lo que ves en tu pantalla.

Cuando usa el clicker blanco en un archivo "en bruto", no está corrigiendo la imagen que se muestra en su pantalla (que es una representación de 8 bits tipo jpeg que es una de las muchas interpretaciones posibles de los datos en un archivo de imagen en bruto ) Le está diciendo a la aplicación de conversión sin formato que regrese y reconvierta los datos en el archivo sin formato en una imagen visualizable utilizando un conjunto diferente de multiplicadores de canales de color.

Está creando otra imagen a partir de los mismos datos sin procesar que se utilizaron para crear la primera versión que ve en su pantalla. Pero la aplicación se remonta al principio y utiliza todos los datos en el archivo sin procesar para crear una segunda interpretación diferente de los datos sin procesar según sus diferentes instrucciones sobre cómo se deben procesar esos datos. No comienza con la información limitada que se muestra en la pantalla y la corrige. Si lo hiciera, obtendría el mismo resultado que al trabajar con el JPEG. ¹

El archivo sin formato contiene mucha más información de la que se muestra en su monitor cuando 'abre' un archivo sin formato. Los archivos de imagen sin procesar contienen suficientes datos para crear un número casi infinito de interpretaciones diferentes de esos datos que caben en un archivo jpeg de 8 bits.²

Cada vez que abre un archivo sin formato y lo mira en la pantalla, no está viendo "EL archivo sin formato". ³ Está viendo una de las innumerables interpretaciones posibles de los datos en el archivo sin formato. Los datos sin procesar en sí contienen una sola medida de valor de brillo (monocromo) por cada pozo de píxeles. Con los sensores de cámara enmascarados de Bayer (la gran mayoría de las cámaras digitales en color usan filtros Bayer) cada pozo de píxeles tiene un filtro de color en frente que es 'rojo', 'verde' o 'azul' (los 'colores' reales de los filtros en la mayoría de las máscaras de Bayer son desde un verde ligeramente amarillento a un amarillo anaranjado para 'rojo', un verde ligeramente azulado para 'verde' y un violeta ligeramente azulado para 'azul' -estos colores corresponden más o menos al centro de sensibilidad para los tres tipos de conos en nuestras retinas ). Para una discusión más completa de cómo obtenemos información del color de los valores de brillo individuales medidos en cada pozo de píxeles, vea que los archivos RAW almacenan 3 colores por píxel, o solo uno.

Cuando cambia el balance de blancos de un archivo sin formato, no está realizando cambios en la interpretación de 8 bits del archivo sin formato que ve en la pantalla, está realizando cambios en la forma en que se interpretan los datos en bruto monocromáticos lineales de 14 bits y luego se muestra en la pantalla con el balance de blancos actualizado.Es decir, está utilizando la ventaja completa de esos 16,384 pasos lineales monocromáticos discretos que contiene el archivo sin procesar para cada píxel, no los 256 pasos discretos corregidos con rayos gamma en tres canales de color para cada píxel que ve en su pantalla de 8 bits como una representación de ese archivo sin formato. También está aprovechando toda la otra información contenida en los datos de imagen en bruto, incluidos elementos como píxeles enmascarados y otra información que se descarta cuando el archivo se convierte a un formato de 8 bits para que se muestre en su pantalla.

La forma en que se verá la imagen que ve en su monitor cuando abra un archivo sin procesar depende de cómo la aplicación que utilizó para abrir el archivo interpreta los datos sin procesar en el archivo para producir una imagen visible. Pero esa no es la "única" forma de mostrar "EL archivo RAW original". Es solo la forma en que su aplicación, o la cámara que produjo la vista previa jpeg adjunta al archivo sin procesar, ha procesado la información en el archivo sin procesar para mostrarla en su pantalla.

Cada aplicación tiene su propio conjunto de parámetros predeterminados que determinan cómo se procesan los datos sin procesar. Uno de los parámetros más significativos es cómo se selecciona el balance de blancos que se utiliza para convertir los datos sin procesar. La mayoría de las aplicaciones tienen muchos conjuntos diferentes de parámetros que pueden ser seleccionados por el usuario, quien luego es libre de modificar las configuraciones individuales dentro del conjunto de instrucciones utilizadas para interpretar inicialmente los datos en el archivo sin procesar. Muchas aplicaciones usarán los multiplicadores de canales de balance de color / balance de blancos estimados por la cámara (cuando se usa AWB en la cámara) o ingresados ​​por el usuario (cuando se usa la corrección CT + WB en la cámara) en el momento en que se tomó la foto. Pero ese no es el único balance de blancos legítimo que se puede utilizar para interpretar los datos sin procesar.

Con un archivo sin formato de 14 bits, hay 16.384 valores discretos entre 0 (negro puro) y 1 (blanco puro). Eso permite pasos muy pequeños entre cada valor. Pero estos son valores de luminancia monocromáticos . Cuando los datos se muestran, se aplican curvas gamma y se realiza la conversión a un espacio de color específico, los multiplicadores de conversión WB generalmente se aplican a estos valores de 14 bits. El paso final en el proceso es reasignar los valores resultantes a 8 bits antes de realizar la compresión de archivos con pérdida. 8 bits solo permite 256 valores discretos entre 0 (negro puro) y 1 (blanco puro). Por lo tanto, cada paso entre valores es 64 veces mayor que con 14 bits.

Si luego intentamos cambiar el WB con estas gradaciones de curso mucho más, las áreas que intentamos expandir empujan cada uno de los pasos en los datos que estamos usando más allá de un solo paso en el archivo resultante. Entonces las gradaciones en esas áreas se vuelven aún más gruesas. Las áreas que reducimos empujan cada uno de esos pasos a un espacio más pequeño que un solo paso en el archivo resultante. Pero luego, todos esos pasos se realinean para ajustarse a la gradación de 256 pasos entre '0' y '1'. Esto a menudo resulta en bandas o posterización en lugar de transiciones suaves.

¹ Para ser más rápido y menos intensivo en recursos, algunas aplicaciones de procesamiento sin procesar tendrán un modo "rápido" que en realidad modifica la representación existente de 8 bits en su pantalla cuando mueve un control deslizante de configuración. Esto a menudo resulta en bandas u otros artefactos indeseables, como el tinte púrpura que ves en el jpeg de color cambiado en la pregunta. Sin embargo, esto solo se aplica a la vista previa que está viendo. Cuando el archivo se convierte y se guarda (exporta), las mismas instrucciones se aplican realmente a los datos sin procesar a medida que se reprocesan y las bandas u otros artefactos no se ven (o no son tan graves).

² Claro, puede tomar una fotografía que contenga un solo color puro en todo el campo de visión. pero la mayoría de las fotos contienen una amplia variación de matices, matices y niveles de brillo.

³ Por favor, vea: ¿ Por qué mis imágenes RAW ya están en color si todavía no se ha realizado el desbarbado?

Esto explicaría las bandas o la posterización en la imagen causada por una precisión reducida, pero aún debería ser posible mover el punto blanco en la posición correcta, ¿no?

Puede cambiar el color de un JPEG a un grado, pero la mayor parte de la información necesaria para producir todos los colores que puede producir con los datos sin procesar ya no está allí. Se descartó durante la conversión a RGB y la reducción a 8 bits antes de la compresión. Lo único que le queda para trabajar son los valores de cada píxel en esos tres canales de color. Las curvas de respuesta para cada uno de esos canales pueden redibujarse, pero todo lo que hace es aumentar o disminuir el valor de ese canal de color en cada uno de los píxeles de las imágenes. No retrocede y rehace demostraciones basadas en nuevos multiplicadores de canales, porque esa información no se conserva en el JPEG.

Es vital comprender que en la imagen de ejemplo agregada a la pregunta, la segunda imagen no se deriva de la primera imagen. Tanto la primera como la segunda imagen son dos interpretaciones diferentes de exactamente los mismos datos sin procesar.Ninguno de los dos es más original que el otro. Ninguno de los dos es más "correcto" que el otro en términos de ser una representación válida de los datos contenidos en el archivo sin formato. Ambas son formas perfectamente legítimas de utilizar los datos en el archivo sin formato para producir una imagen de 8 bits. La primera es la forma en que su aplicación de conversión sin formato y / o la vista previa de JPEG generada en su cámara eligieron interpretar los datos. La segunda es la forma en que su aplicación de conversión sin formato interpretó los datos después de decirle qué valores de sensor sin formato deseaba traducir como gris / blanco. Cuando hizo clic en la misma parte de la imagen jpeg, gran parte de la información de color necesaria para corregir la imagen para que pareciera que la segunda versión del archivo sin formato ya no estaba allí y, por lo tanto, no se pudo utilizar.

¿Es simplemente debido a la compresión con pérdida de JPEG y el archivo tiff de 32 bits no tendría este problema?

No, aunque la compresión con pérdida es una gran parte de ella. También lo es la reducción a 8 bits, lo que hace que cada paso entre '0' (negro puro) y '1' (saturación total) 64X sea tan grande como con un archivo sin procesar de 14 bits. Pero va más allá de la compresión JPEG.

Un par de párrafos de esta respuesta a RAW a TIFF o PSD de 16 bits pierde profundidad de color :

Una vez que los datos en el archivo sin procesar se han transformado en un archivo TIFF corregido con gamma, el proceso es irreversible.

Los archivos TIFF tienen todos esos pasos de procesamiento "incorporados" a la información que contienen. Aunque un archivo TIFF de 16 bits sin comprimir es mucho más grande que un archivo sin procesar típico del que se deriva debido a la forma en que cada uno almacena los datos, no contiene toda la información necesaria para revertir la transformación y reproducir los mismos datos exactos contenido en el archivo sin formato. Hay un número casi infinito de valores diferentes en los datos de nivel de píxel de un archivo sin formato que podrían haberse utilizado para producir un TIFF particular. Del mismo modo, hay un número casi infinito de archivos TIFF que se pueden producir a partir de los datos en un archivo de imagen sin formato, dependiendo de las decisiones tomadas sobre cómo se procesan los datos sin formato para producir el TIFF.

La ventaja de los TIFF de 16 bits frente a los TIFF de 8 bits es el número de pasos entre los valores más oscuros y más brillantes para cada canal de color en la imagen. Estos pasos más finos permiten una mayor manipulación adicional antes de convertir finalmente a un formato de 8 bits sin crear artefactos como bandas en áreas de gradación tonal.

Pero solo porque un TIFF de 16 bits tenga más pasos entre "0" y "65,535" que un archivo sin formato de 12 bits (0-4095) o 14 bits (0-16383), no significa que el archivo TIFF muestre el mismo o mayor rango de brillo. Cuando los datos en un archivo sin formato de 14 bits se transformaron en un archivo TIFF, el punto negro podría haberse seleccionado en un valor como 2048. Cualquier píxel en el archivo sin formato con un valor inferior a 2048 se le asignaría un valor de 0 en el TIFF. Del mismo modo, si el punto blanco se estableciera en, digamos, 8.191, entonces cualquier valor en el archivo sin procesar superior a 8191 se establecería en 65.535 y la parada más brillante de la luz en el archivo sin procesar se perdería irrevocablemente. Todo lo más brillante en el archivo sin formato que el punto blanco seleccionado tiene el mismo valor en el TIFF, por lo que no se conserva ningún detalle.

Hay una gran cantidad de preguntas existentes aquí que cubren gran parte del mismo terreno. Aquí hay algunos de ellos que pueden serle útiles:

¿Los archivos RAW almacenan 3 colores por píxel, o solo uno?
RAW a TIFF o PSD 16 bits pierde profundidad de color
¿Cómo comienzo con la configuración de JPEG en la cámara en Lightroom?
¿Por qué cambia la apariencia de los archivos RAW al cambiar de "mesa de luz" a "cuarto oscuro" en Darktable?
nikon d810 manual WB no es lo mismo que "As Shot" en Lightroom
¿Por qué las imágenes RAW se ven peor que las JPEG en los programas de edición? Haga
coincidir los colores en Lightroom con otras herramientas de edición
Mientras filma en RAW, ¿tiene que procesarlo posteriormente para que la imagen se vea bien?

¿Por qué hay una pérdida de calidad de la cámara a la pantalla de la computadora
? ¿Por qué mis fotos se ven diferentes en Photoshop / Lightroom vs Canon EOS utility / in camera?
¿Por qué mis imágenes se ven diferentes en mi cámara que cuando se importan a mi computadora portátil?
¿Cómo emular el procesamiento en la cámara en Lightroom?
Conversión jpg in-camera vs lightroom de Nikon ¿Por qué cambia
mi vista previa de Lightroom / Photoshop después de cargar?

Michael C
fuente
2
Esto explicaría las bandas o la posterización en la imagen causada por una precisión reducida, pero aún debería ser posible mover el punto blanco en la posición correcta, ¿no?
skyde
2
Sí, esto tiene sentido, esto significa que es posible que el color de la materia prima se recorte al convertirlo a la gama de colores TIFF. Y debido a esto, todavía perdimos información que podría ser necesaria para la corrección del balance de color.
skyde
1
Estoy con skyde: solo hay pasos menos discretos en la resolución de color, no significa que el balance de blancos resulte en buenos resultados visibles diferentes. Especialmente si la versión JPEG tiene un tono púrpura intenso. Una teoría más adecuada sería que los posibles valores de corrección interna están sujetos a un rango más estrecho en jpeg que en raw, lo que se suma al hecho de que un raw se interpreta a partir de datos de sensor sin procesar y jpeg son valores de color discretos.
Horitsu
1
Me uno a Skyde aquí también. Esta es una historia larga e irrelevante sobre las diferencias entre los formatos sin formato y JPEG. No hay nada aquí, que realmente responda a la pregunta original.
jarnbjo
1
@jarnbjo La mayor parte de la respuesta se gasta explicando la diferencia entre los datos en bruto reales en el archivo de imagen y lo que uno ve en su pantalla cuando uno "ve" uno entre muchas posibles interpretaciones de los datos en bruto. Según mi experiencia, la mayoría de estos tipos de preguntas surgen debido a una falta fundamental de comprensión de que lo que uno ve en la pantalla nunca es "EL" archivo sin formato. También ha sido mi experiencia que afirmarlo de diferentes maneras aumenta las posibilidades de que la bombilla finalmente se encienda para el interrogador. YMMV.
Michael C
3

La respuesta simple es porque su cámara y su procesador RAW (LR, Darktable, por nombrar algunos) usan diferentes algoritmos para procesar archivos RAW. Las razones son muchas, y no podemos evaluar esos algoritmos porque muchos son secretos comerciales. Por ejemplo, la temperatura de color de la luz del día de Canon (EOS 700D) es de alrededor de 5200 K, mientras que la de Lightroom es de 5500 K. En algunas situaciones esto hace la diferencia.

Para ser precisos, los archivos RAW no tienen una temperatura de color predefinida. Se incluye como metainformación. Los procesadores RAW aplican un WB particular cuando realizan las operaciones que usted describe.

Editar: y según su comentario: no puede cambiar mucho la temperatura de color en el archivo JPEG porque ya está "cocido". La temperatura de color ya está aplicada y no tiene suficiente profundidad de color para "cambiar" los colores.

Romeo Ninov
fuente
Los algoritmos de Darktable no son secretos comerciales.
Lea mi perfil el
@mattdm, cierto. Pero los de LR, ON1, CaptureOne, otros procesadores RAW no de fuente son ...
Romeo Ninov
¿Pero algo de eso es realmente relevante para la pregunta? Los conceptos básicos de la corrección del balance de blancos son ampliamente conocidos e implementados en software abierto.
Lea mi perfil el
Lo básico sí. Pero la implementación puede ser diferente. Y exactamente esos detalles generalmente se mantienen en secreto (para el software no fuente)
Romeo Ninov
1

Que es posible JPEG de balance de blancos, pero las herramientas de edición utilizado para operar en RAW vs otras imágenes tienden a comportarse de manera diferente (diferentes algoritmos). Más lejos:

  • La herramienta cuentagotas es imprecisa, lo que dificulta la replicación de resultados.

  • La profundidad de bits de los archivos JPEG limita la cantidad de colores que se pueden cambiar frente a RAW.

  • La curva gamma ensucia todo.

  • Los cálculos sobre datos lineales vs datos logarítmicos se comportan de manera diferente.

Esto no es exactamente cómo funciona, sino para ilustrar:

  • Suponga que desea multiplicar algunos datos (1, 4, 8) por 2. El resultado es (2, 8, 16). Con datos lineales, el resultado máximo, 16, es cuatro veces el resultado mínimo, 2.

  • Pero con representaciones logarítmicas, la brecha entre los valores adyacentes, como 2 5 y 2 6 , es mucho mayor que la diferencia entre los valores lineales, 5 y 6. Además, el resultado máximo, 2 16 , no es solo 32768 veces mayor que el resultado mínimo, 2 2 , también es 256 veces el valor original, 2 8 .

xiota
fuente