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

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

Tengo entendido que cuando se dispara jpeg, la cámara internamente realiza los siguientes pasos:

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

    una. Usando el valor bruto del mapa de la tabla de búsqueda para el espacio lineal

    b. A continuación, se calcula y se resta el nivel de negro de cada píxel.

    C. El valor de cada píxel luego se vuelve a escalar de 0.0 a 1.0 usando Whitelevel

    d. Los valores se reescalan y 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

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

  4. Convertir CIE XYZ a sRGB

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

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

  5. Convierta sRGB a 8 bits y comprima 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í

¿Qué te hace pensar que JPEG WB no es tan preciso como RAW? ¿A qué te refieres con exacto ? ¿Quiere decir que la cámara no suele adivinar tan bien como una persona capacitada que usa una aplicación de conversión sin procesar? ¿O algo mas?
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 abro en Lightroom y trato de hacer el balance de blancos correcto usando el selector de color haciendo clic exactamente en la misma ubicación en la imagen, el resultado en bruto perfecto mientras que el jpeg todavía tiene un color extraño.
Esa es una pregunta muy diferente. Voy a editar el título para reflejar lo que creo que realmente estás preguntando...
La primera imagen NO es "EL archivo sin procesar original". Es una de las infinitas interpretaciones posibles de los datos sin procesar que su aplicación de conversión sin procesar produjo y mostró en su pantalla en 8 bits.
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 (que sería una forma adicional en la que el WB se "hornea" en el JPEG final color).
Su lista editada del proceso es significativamente diferente de la original, lo que puede invalidar muchas de las respuestas. ¿Tal vez sea mejor hacer una nueva pregunta basada en su comprensión actualizada?
mattdm: ya acepté una respuesta, solo edité la pregunta para incluir el detalle correcto real de cómo Raw se convierte a JPEG para que el futuro lector comprenda mejor dónde calcula el balance de blancos el software de procesamiento Raw

Respuestas (3)

¿Por qué el software puede corregir el balance de blancos con mayor precisión para los archivos RAW que para 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 jpeg de 8 bits donde toda la información en el archivo es lo que ves en tu pantalla.

Cuando usa el botón de clic blanco en un archivo "sin procesar", no está corrigiendo la imagen que se muestra en su pantalla (que es una representación de 8 bits similar a jpeg que es una de las muchas interpretaciones posibles de los datos en un archivo de imagen sin procesar ). Le está diciendo a la aplicación de conversión sin formato que retroceda y vuelva a convertir los datos del archivo sin formato en una imagen visualizable utilizando un conjunto diferente de multiplicadores de canal de color.

Está creando otra imagen a partir de los mismos datos sin procesar que se usaron para crear la primera versión que ve en su pantalla. Pero la aplicación va desde el principio y utiliza todos los datos del archivo sin procesar para crear una segunda interpretación diferente de los datos sin procesar en función de sus diferentes instrucciones sobre cómo deben procesarse esos datos. No se trata de comenzar con la información limitada que se muestra en la pantalla y corregirla. Si hiciera eso, obtendría el mismo resultado que cuando trabajó 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 imágenes 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 su pantalla, no está viendo "EL archivo sin formato". ³ Está viendo una entre un número casi incontable de posibles interpretaciones de los datos en el archivo sin procesar. Los datos sin procesar en sí contienen una sola medida de valor de brillo (monocromática) por cada píxel. Con los sensores de cámara enmascarados de Bayer (la gran mayoría de las cámaras digitales en color usan filtros de Bayer), cada píxel tiene un filtro de color delante que es 'rojo', 'verde' o 'azul' (los 'colores' reales de los filtros en la mayoría de las máscaras de Bayer van desde un verde ligeramente amarillento hasta 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 de los tres tipos de conos en nuestras retinas ). Para obtener una discusión más completa sobre cómo obtenemos la información de color de los valores de brillo individuales medidos en cada píxel, consulte Los archivos RAW almacenan 3 colores por píxel, o solo uno.

Cuando cambia el balance de blancos de un archivo sin procesar, no está realizando cambios en la interpretación de 8 bits del archivo sin procesar que ve en su pantalla, está realizando cambios en la forma en que se interpretan los datos sin procesar monocromáticos lineales de 14 bits y luego se muestra en su pantalla con el balance de blancos actualizado.Es decir, está aprovechando al máximo esos 16 384 pasos lineales monocromáticos discretos que contiene el archivo sin formato para cada píxel, no los 256 pasos discretos con corrección de 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 en bruto. También está aprovechando toda la otra información contenida en los datos de imagen sin procesar, 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 mostrarlo en su pantalla.

El aspecto de la imagen que ve en su monitor cuando abre un archivo sin procesar está determinado por 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 sin procesar 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 el usuario puede seleccionar, quien luego tiene la libertad de modificar 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 balance de blancos/canal de color 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 usar para interpretar los datos sin procesar.

Con un archivo sin procesar 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ática . Cuando se muestran los datos, 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 tratamos de cambiar el WB con estas gradaciones mucho más gruesas, 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 encogemos 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 da como resultado bandas o posterización en lugar de transiciones suaves.

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

² Claro, podrías tomar una foto que contenga un solo color puro dentro de todo el campo de visión. pero la mayoría de las fotos contienen una amplia variedad de matices, matices y niveles de brillo.

³ Consulte: ¿Por qué mis imágenes RAW ya están en color si aún no se ha realizado el debayering?

Esto explicaría la aparición de bandas o 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 hasta cierto punto, 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 se pueden volver a dibujar, 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 la demostración en función de los 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 es más original que el otro. Ninguno 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 usar los datos en el archivo sin procesar 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 jpeg generada en su cámara eligieron interpretar los datos. La segunda es la forma en que su aplicación de conversión sin procesar interpretó los datos después de que le indicó qué valores de sensor sin procesar deseaba que se tradujeran 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 procesar ya no estaba allí y, por lo tanto, no se podía usar.

¿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 ello. También lo es la reducción a 8 bits, lo que hace que cada paso entre '0' (negro puro) y '1' (saturación completa) sea 64 veces más grande que 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 con corrección gamma y demostrado, el proceso es irreversible.

Los archivos TIFF tienen todos esos pasos de procesamiento "integrados" en 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 exactamente los mismos datos. contenido en el archivo raw. Hay una cantidad casi infinita de valores diferentes en los datos de nivel de píxel de un archivo sin formato que podría haberse utilizado para producir un TIFF en particular. Del mismo modo, hay una cantidad casi infinita de archivos TIFF que se pueden producir a partir de los datos de un archivo de imagen sin procesar, según las decisiones que se tomen sobre cómo se procesan los datos sin procesar 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 de la imagen. Estos pasos más finos permiten una 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 el hecho de que 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 de un archivo sin formato de 14 bits se transformaron en un archivo TIFF, el punto negro podría haberse seleccionado con un valor como 2048. A cualquier píxel del 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, 8191, cualquier valor en el archivo sin procesar superior a 8191 se establecería en 65,535 y la parada de luz más brillante en el archivo sin procesar se perdería irrevocablemente. Todo lo que sea 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 resultarle útiles:

Los archivos RAW almacenan 3 colores por píxel, ¿o solo uno?
RAW a TIFF o PSD de 16 bits pierde profundidad de color
¿Cómo empiezo con la configuración de JPEG en la cámara en Lightroom?
¿Por qué cambia la apariencia de los archivos RAW cuando se cambia 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
Al disparar en RAW, ¿tiene que realizar un procesamiento posterior 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 y en la utilidad EOS de Canon/en la cámara?
¿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 de jpg en la cámara vs lightroom de Nikon
¿Por qué mi vista previa de Lightroom/Photoshop cambia después de cargar?

Esto explicaría la aparición de bandas o 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?
Entonces, ¿está diciendo que es solo por la precisión de color limitada de jpeg y que con un archivo tiff de 32 bits o un archivo openEXR podríamos corregir el balance de blancos correctamente?
@skyde ¿ Esta respuesta aborda lo que está preguntando?
Sí, esto tiene sentido, esto significa que es posible que el color sin procesar se recorte cuando se convierte a la gama de colores TIFF. Y debido a esto, aún perdimos información que podría ser necesaria para la corrección del balance de color.
He incluido más información, la mayor parte de esa otra respuesta, en esta respuesta.
Estoy con skyde: el hecho de que haya pasos menos discretos en la resolución del color no significa que el balance de blancos produzca 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 Que es lo que cubre la última parte de la respuesta. Cuando se edita el "sin procesar original", se reinterpreta toda la extensión de los datos sin procesar. Cuando se edita el jpeg, solo se modifica la información limitada contenida en el jpeg, no se reconfigura a partir de los datos sin procesar.
Me uno a skyde aquí también. Esta es solo una historia larga e irrelevante sobre las diferencias entre los formatos raw y jpeg. No hay nada aquí, que en realidad responde a la pregunta original.
Sí, tonto de mí. Responder una pregunta sobre las diferencias entre raw y jpeg con información sobre las diferencias entre raw y jpeg.
@MichaelClark Sí, tonto. La pregunta es: '¿Por qué el software puede corregir el balance de blancos con mayor precisión para los archivos RAW que para los archivos JPEG?' y al menos el 95% de esta respuesta es muy larga, y para un lego probablemente confusa y muy difícil de entender es completamente irrelevante.
@jarnbjo La mayor parte de la respuesta se dedica a explicar la diferencia entre los datos sin procesar reales en el archivo de imagen y lo que uno ve en su pantalla cuando uno "ve" una de las muchas interpretaciones posibles de los datos sin procesar. Según mi experiencia, la mayoría de este tipo 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 decirlo de varias maneras diferentes aumenta las posibilidades de que la bombilla finalmente se encienda para el interrogador. YMMV.
@jarnbjo Una explicación que, por cierto, skyde eligió como la respuesta aceptada y comentó que la información adicional incluida en la respuesta después de los primeros comentarios anteriores ayudó a comprender la respuesta. Entonces, si bien la respuesta puede no ser útil para usted, aparentemente fue útil, en su forma modificada más larga, para skyde.

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 5200K, mientras que la de Lightroom es de 5500K. En algunas situaciones esto marca 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.

Los algoritmos de Darktable no son secretos comerciales.
@mattdm, cierto. Pero los de LR, ON1, CaptureOne, otros procesadores RAW que no son de código abierto son...
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.
Los básicos si. Pero la implementación puede ser diferente. Y exactamente esos detalles generalmente se mantienen en secreto (para software que no es de código abierto)

Es posible balancear los blancos de los archivos JPEG, pero las herramientas de edición utilizadas para operar en RAW frente a otras imágenes tienden a comportarse de manera diferente (diferentes algoritmos). Más:

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

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

  • La curva gamma lo estropea todo.

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

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

  • Supón que quieres 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 valores adyacentes, como 2 5 y 2 6 , es mucho mayor que la diferencia entre 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 .

La profundidad de bits de los archivos JPEG limita la cantidad de colores que se pueden cambiar. Con raw, los colores no cambian en absoluto. Se vuelven a calcular a partir de los datos originales.