¿Cómo cambian matemáticamente los valores de color a medida que cambia la temperatura y el tinte?

Me preguntaba qué le hace la temperatura de color a los valores RGB/LAB de tu píxel cuando lo ajustas.

Entiendo que las cosas se vuelven más amarillas o más azules en el caso de la temperatura, pero ¿qué ecuación usa Lightroom/Camera RAW? ¿Es simplemente aumentar 1 los valores del canal B para cada píxel cuando sube la temperatura un poco?

Mi otra pregunta es esta: noté que cambiar la temperatura y el tinte cambiaba significativamente los valores de gris cuando convertía mi foto a blanco y negro y trabajaba en ese espacio. Otras herramientas de color en realidad agregan color en su lugar, como la gradación de color, por lo que ya no es blanco y negro, obtiene un tono y algunas no funcionan en absoluto, como la saturación. Entonces, ¿eso significa que los valores A y B de LAB influyen en los valores de luminancia en blanco y negro? ¿Supongo que el amarillo haría las cosas más brillantes? ¿Lightroom está cambiando los valores L o los conserva y genera una vista previa en la parte superior donde los valores de color influyen en los valores de gris?

Estoy tratando de programar un software de fotografía y tal vez algún día una aplicación de cámara, así que estoy interesado en lo que está sucediendo específicamente.

¿Ha mirado el código en el software de edición de imágenes de código abierto como RawTherapee y Darktable? Para mí, este es el lugar para comenzar porque editar imágenes es un ejercicio de fotometría , no de física de ondas. Los cálculos son típicamente no lineales porque la percepción visual humana no es lineal.
@L.ScottJohnson Realmente ayuda. Esto es como encontrar un tesoro enterrado, tanto estas respuestas como las de allí. Creo que ambos son útiles.
Hice esta pregunta hace un tiempo sin una respuesta satisfactoria. ¿Qué *exactamente* es el balance de blancos?

Respuestas (3)

Esta es una pregunta más difícil de lo que podrías pensar.

Primero, el valor RGB que ve con sus ojos en la pantalla es el resultado de una operación en la salida procesada de Lightroom, que está definida por la calibración de su pantalla. Así que tenga cuidado con los valores RGB que mide.

En segundo lugar, cuando está ajustando la temperatura del color, lo que realmente está haciendo es aplicar ingeniería inversa a la forma en que su cerebro interpreta el efecto de la luz exterior en el objeto del que tomó una foto. Este es un proceso bastante complejo, dado que las luces exteriores no son simples rayos RGB, sino una mezcla de. Y encima no todos los cerebros lo hacen igual. Y no lo hacen linealmente. La mayoría de las empresas de software con más experiencia y mejor personal siguen luchando en 2021 para hacerlo bien.

Esto se estudió ampliamente por primera vez con la determinación del modelo CIE xy en 1931, que es el padrino de todos los procesamientos de color en la actualidad y tenía como objetivo definir la comprensión "promedio" del color por parte de los humanos.

Para resumir, necesitará algunas horas, o más bien días, para comprender las matemáticas subyacentes y, si no le han enseñado matrices, pueden pasar semanas o meses...

Le sugiero que si está interesado busque la teoría de la colorimetría para familiarizarse con el tema.

@Hugues Su respuesta fue realmente muy útil. Gran parte de lo que necesito es saber qué estudiar y dónde. ¿Conoces algún libro de texto o clases en línea que enseñen estas cosas? Planeo no mirar ningún código fuente GNU o CC-SF porque entonces, si es GNU, su código también tiene que serlo, por lo que entiendo sobre la ley de derechos de autor del código.
Hola Ikari, si puedo darte un consejo, antes de preguntarte sobre la codificación, debes trabajar en la teoría. Soy un hablante nativo de francés, por lo que mis fuentes están en francés. Consulte profil-couleur.com, por ejemplo, que es una fuente increíble, e intente tal vez el traductor de Google o busque en Google algunas palabras clave. Wikipedia también puede ayudar.

Adobe describe extremadamente bien su proceso de balance de blancos en la Especificación de Negativo Digital (DNG) , específicamente en el Capítulo 6 Mapeo del espacio de color de la cámara al espacio CIE XYZ .

El proceso no es súper trivial, pero el principio central es calcular una matriz que convierte desde Camera Space, es decir, el espacio en el que se encuentra la imagen capturada al momento de la captura, a valores triestímulo CIE XYZ bajo iluminante D50 para un conjunto dado de coordenadas de cromaticidad de balance de blancos xy.

Con las coordenadas de cromaticidad, es posible calcular la temperatura de color correlacionada (CCT) correspondiente, es decir, la temperatura de color y D_uv, utilizando el método de Robertson (1968).

Una vez que se calcula el CCT, la matriz de Camera Space a CIE XYZ se obtiene a través de la interpolación lineal de las matrices ColorMatrix1y ColorMatrix2que Adobe (u otros proveedores que siguen la especificación DNG) proporcionan para la cámara y, por lo general, se integran en un perfil DCP o EXIF/ metadatos XMP. Las dos matrices se dan comúnmente para una fuente de luz similar al tungsteno, por ejemplo, Iluminante A (CCT ~= 2856K) y similar a la luz del día, por ejemplo, D65 (CCT ~=6505K) y se transforman de CIE XYZ al espacio de la cámara.

Hay más detalles en la especificación, pero este es realmente el núcleo del algoritmo.

Tenemos una implementación completa de Python en color-hdri en el módulo colour_hdri.models.dng . Un ejemplo sería así:

M_color_matrix_1 = np.array(
    [[0.5309, -0.0229, -0.0336],
     [-0.6241, 1.3265, 0.3337],
     [-0.0817, 0.1215, 0.6664]])
M_color_matrix_2 = np.array(
    [[0.4716, 0.0603, -0.0830],
     [-0.7798, 1.5474, 0.2480],
     [-0.1496, 0.1937, 0.6651]])
M_camera_calibration_1 = np.identity(3)
M_camera_calibration_2 = np.identity(3)
analog_balance = np.ones(3)
XYZ_to_camera_space_matrix(  # doctest: +ELLIPSIS
    np.array([0.34510414, 0.35162252]),
    2850,
    6500,
    M_color_matrix_1,
    M_color_matrix_2,
    M_camera_calibration_1,
    M_camera_calibration_2,
    analog_balance)

array([[ 0.4854908...,  0.0408106..., -0.0714282...],
        [-0.7433278...,  1.4956549...,  0.2680749...],
        [-0.1336946...,  0.1767874...,  0.6654045...]])

Después de investigar un poco más, creo que tengo una respuesta a mi pregunta. Estoy diciendo que las otras respuestas son incorrectas, suenan muy informadas, pero esto es justo lo que descubrí sobre cómo funcionan los controles deslizantes de temperatura de color, aunque no necesariamente cómo funcionan las cámaras o el algoritmo de WB o LR/ACR automático para interpretar metadatos

Vi un video de YouTube sobre cómo ajustar la temperatura y el tinte en Photoshop sin entrar en ACR y lo que el instructor recomendó fue entrar en modo LAB y abrir las curvas y en el canal A y B, deslizar el nodo superior e inferior en hasta que toquen el pico en el histograma. Si quieres añadir más o menos temperatura o tinte, ajusta uno de los nodos para que quede asimétrico, de forma que quede un poco más a la izquierda o derecha del centro que el otro. Diría que este método es más quisquilloso que LR o ACR, como podría adivinar cualquiera que se haya metido con las curvas de LAB, pero solo demuestra que eso es probablemente lo que está sucediendo debajo del capó.

Deduje de esto que si bien XYZ, LAB y las matrices deben estar en juego al elegir colores, el trabajo del control deslizante LAB es solo crear el color opuesto del tono de color para cancelarlo, y eso se puede hacer con LAB simple mezclando

Los primarios LAB son una buena opción no solo porque el espacio de color LAB es lo suficientemente grande como para adaptarse a todos los demás espacios de color, sino también porque hace que el balance de blancos sea realmente simple para los principiantes. Cualquier cosa en el extremo cálido de la escala Kelvin se puede cancelar con azul y verde, que se deslizan hacia la izquierda. Los colores en el extremo frío de la escala Kelvin se pueden cancelar con amarillo y magenta, que están a la derecha. Agradable y fácil para el usuario final.