¿Cómo estimar la temperatura de color del iluminante a partir de una fotografía de una tabla de colores estándar?

7

Estoy trabajando en una cámara digital. Necesito calcular la temperatura de color del iluminante mediante programación usando algún algoritmo (no usando una herramienta de terceros de Adobe o etc.).

En mi caso, las imágenes se capturan con mi cámara experimental / en desarrollo, y el iluminante no es un iluminante estándar con una temperatura de color conocida. Necesito esto para la corrección de color / balance de blancos. Estoy buscando estimar la temperatura de color (grados Kelvin) de un iluminante de fuente de luz en función de algunas estadísticas de los datos RGB o los datos de Bayer sin procesar de la imagen capturada, por ejemplo, una tabla de colores estándar (24 parches de color) debajo de este iluminante.

¿Cómo puedo estimar la temperatura del color a partir de estos datos de la tabla de colores?

Cualquier puntero o material de lectura o algoritmo que hable sobre esto ayudaría.

Goldenmean
fuente
Me gustaría ofrecer una respuesta, sin embargo, tengo curiosidad por una cosa antes de hacerlo. ¿Estás tratando de crear un algoritmo automático de balance de blancos o estás tratando de hacer otra cosa? El balance de blancos no necesariamente necesitaría (o incluso ser capaz de) conocer la temperatura de color de una fuente de luz arbitraria, pero es posible balancear automáticamente una imagen.
jrista
jrista: Sé que uno puede hacer el balance de blancos automático sin conocer la temperatura de color del iluminante, simplemente obteniendo los coeficientes de escala utilizados para escalar los valores RGB y realizar AWB. Estoy tratando de hacer otra cosa.
goldenmean
1
@gloldenmean: ¿Puedes explicar con más detalle lo que estás tratando de hacer? Creo que tengo una idea general, y probablemente sea posible, aunque probablemente requeriría un trabajo algorítmico sofisticado para lograrlo.
jrista

Respuestas:

4

Para simplificar las cosas, use una tarjeta gris neutral en lugar de un corrector de color. O use solo un parche neutral del corrector de color. Debe identificar en la imagen el área que corresponde al parche / tarjeta gris correspondiente, luego promediar por separado los píxeles en bruto R, G y B en esta área. Asegúrese de que ninguno de esos píxeles esté saturado, de lo contrario, comience de nuevo con una exposición más baja.

Terminas con un triplete (R, G, B) que es el color de tu iluminante en el espacio de color nativo de tu cámara. Convierta luego al espacio de color estándar CIE utilizando una fórmula como

⎛X⎞   ⎛            ⎞ ⎛R⎞
⎜Y⎟ = ⎜ 3×3 matrix ⎟ ⎜G⎟
⎝Z⎠   ⎝            ⎠ ⎝B⎠

donde la matriz es la matriz de color de su sensor Bayer, que con suerte ya sabrá. Desde aquí, puede calcular la temperatura de color correlacionada utilizando fórmulas estándar.

Edgar Bonet
fuente
2

Lo que buscas hacer puede ser un espacio problemático muy complejo. La teoría del color, la corrección del color / balance de blancos, etc. es un campo muy complejo. Para asegurarme de que entiendo, está tratando de crear un algoritmo que pueda establecer correctamente el balance de blancos de una escena en función de la fuente de luz de iluminación en la escena. Es posible hacer lo que necesita hacer, y muchos de los algoritmos que necesitaría usar deberían estar disponibles en estos días.

Algunos puntos a tener en cuenta y factor en su procesamiento:

  • Sin fuente de luz en escena
    • Por ejemplo: el sol ilumina una escena detrás del fotógrafo
    • Otro ejemplo: flash fuera de escena u otra iluminación
    • Este es probablemente el mayor problema, y ​​haría que sea prácticamente imposible hacer cualquier corrección de color basada en la fuente de luz
  • Múltiples fuentes de luz
    • Es posible que haya múltiples fuentes de luz con la misma temperatura de color.
    • De mayor importancia son las múltiples fuentes de luz con diferentes temperaturas de color.
    • Pregunta clave: ¿Qué desea que suceda si una escena se ilumina con múltiples fuentes de luz de diferentes colores?
  • Fuentes de luz ambiental versus puntual
    • Ejemplo: el sol ilumina una habitación a través de una ventana, con iluminación adicional que ilumina las partes sombreadas
    • Pregunta clave: ¿En qué fuente desea balancear blancos?
  • Fuentes de luz de color radical.
    • A veces tienes escenas iluminadas por fuentes de luz primarias de colores radicales.
    • Por ejemplo: rojo, verde, azul, morado, amarillo, etc.
    • El plano azul / amarillo / rojo puede considerarse extremos de temperatura de color normal
    • El plano verde / morado / magenta podría considerarse los extremos del tinte
    • Ningún color saturado, primario o secundario, es un buen objetivo para equilibrar el color de una escena, ya que probablemente produciría un marcado color en su imagen.
    • Pregunta clave: ¿Qué haces cuando tu escena no tiene una iluminación ambiental o primaria común, y está total o principalmente iluminada por colores radicales?

Si no excluimos la iluminación en la escena y los colores radicales del espacio problemático, probablemente sea posible identificar y medir la temperatura del color de las fuentes de luz en la escena. Hay algunos algoritmos de detección de forma bastante avanzados disponibles en estos días que, siempre que tenga una base decente o formas conocidas de fuente de luz, permitiría identificar todas las fuentes de luz en una escena. Una vez que haya identificado cada fuente de luz, probablemente podría usar algún tipo de cálculo de triestímulo para determinar la temperatura de color de la fuente de luz, tomando los valores de subpíxeles verde, rojo y azul o los valores de píxel bayer RAW con los pesos adecuados para generar sus tres luminancias. picos

Su algoritmo se vuelve particularmente complejo cuando involucra iluminación de escena no estándar o radical. Las fuentes de luz extremadamente saturadas no serán buenos objetivos de balance de blancos, ya que están lejos del rango "blanco" de una gama de colores. Es muy importante saber en qué parte de su escena es más "neutral" para que pueda elegir un "gris o blanco" adecuado para basar su balance de blancos, ya que así es fundamentalmente cómo funciona el balance de blancos . Es posible equilibrar el color de su escena en función de un color base diferente, como el rojo, sin embargo, no sé exactamente cómo necesitaría modificar las fórmulas matemáticas existentes para acomodar dicho enfoque (hay una buena cantidad de matemáticas complejas involucrado en la teoría del color.)

La situación más difícil es cuando no hay fuentes de luz en la escena. Si la escena está iluminada por una fuente de luz fuera de escena, sería prácticamente imposible calcular su temperatura de color. Si desea adoptar un enfoque bastante radical para el diseño de la cámara, puede colocar algunos sensores básicos de medición de luz en todos los lados del cuerpo de la cámara. Eso permitiría medir la luz desde todas las direcciones, sin embargo, no sería del todo exacto, y las ganancias para toda la complejidad adicional probablemente serían menores. Otro enfoque podría ser crear un dispositivo de zapata que pueda conectarse a múltiples medidores de punto que puedan proporcionar lecturas de iluminación precisas a la cámara para cualquier fuente de luz a la que apunte un medidor. Las escenas con múltiples fuentes de luz o fuentes con color radical seguirían siendo un algoritmo muy complejo.

Intentar determinar la temperatura de color de las fuentes de luz de sus escenas a partir de una simple foto de una tarjeta de corrección de color, por ejemplo, sería extremadamente difícil, si no imposible. Tendría que hacer muchas suposiciones sobre, o tendría que saber de antemano, qué tipo de luz iluminaba su escena. Generalmente, esta es la razón por la cual las correcciones de balance de color / balance de blancos se realizan generalmente configurando el balance de blancos de las escenas en función de un color neutral conocido en una escena. Fotografiar un paisaje dos veces con la misma iluminación, una vez y una vez sin una tarjeta de corrección de color, le permite elegir un color blanco neutro o puro válido durante el procesamiento posterior, lo que establecerá el equilibrio de color adecuado. Yo mismo tengo el pasaporte X-Rite ColorChecker, que incluye dos filas de muestras de corrección de color. Una fila es para paisajes y la otra para retratos, y progresan de manchas de color ligeramente frías a ligeramente cálidas. Puedo establecer el tipo de balance de color que quiero para mis escenas, que tiende a ser más cálido para la fotografía de paisajes y tonos blancos más neutros (5500k-6500k) para cosas como la vida silvestre o macro.

Si está haciendo algo considerablemente más especializado, es posible que pueda definir un espacio de problema más pequeño dentro del cual pueda crear un algoritmo que haga lo que necesita. El espacio del problema debería ser bastante estrecho, con parámetros y límites bastante bien definidos, a fin de generar suficientes datos conocidos para ayudar al algoritmo a tomar las decisiones correctas al equilibrar el blanco en una escena. Cualquier escena sin fuentes de luz primarias dentro del cuadro será muy difícil de hacer un balance de blancos automático o corrección de color.

jrista
fuente
Gracias. Pocas preguntas más si lo permite. 1] ¿Cómo generar los 3 picos de luminancia? ¿Es calculando el promedio de los datos R, G y B obtenidos después del demosaicing? 2] ¿Qué quiere decir con "promedio de muestras producirá una lectura de temperatura de color bastante precisa"? ¿Cuáles son los pasos de cálculo aquí?
goldenmean
1

¿Te entiendo correctamente que el propósito de esto es que estás construyendo una nueva cámara digital? ¿Estoy trabajando en el desarrollo de firmware y ese tipo de cosas?

Si es así, parece haber buena información en el artículo de temperatura del color de Wikipedia , específicamente en la sección de Cálculo .

Esto no es algo que haya hecho antes, por lo que mi conocimiento es limitado. Sin embargo, debería pensar que una parte clave de esto es saber de qué es la imagen. Por lo tanto, disparar una tarjeta blanca o gris neutral, con una iluminación uniforme, sería una opción obvia. Y su elección de una tabla de colores estándar también es buena, siempre que su software sepa en qué parte de la tarjeta se basa cualquier conjunto de píxeles en el que va a hacer los cálculos. Entonces, si planea hacer un montón de tomas de esa tarjeta en diferentes situaciones de iluminación, querrá hacer algún tipo de plataforma que pueda mantener la tarjeta en el mismo lugar en relación con la cámara para cada disparo, o determinar la posición de la tarjeta (tal vez con detección de bordes y / o métodos similares).

Por supuesto, también querrá verificar sus resultados con los valores conocidos ... un medidor de luz colorimétrico u otro (s) dispositivo (s) puede (n) requerirse compras para hacer esto realmente bien. Y hay diferentes tipos ... los destinados a los fotógrafos (o videógrafos o fotógrafos de películas) parecen aparecer con una búsqueda en Google , mientras que también existen otros que pueden estar más orientados al laboratorio . Conozco a alguien con un medidor, por ejemplo, que tiene una pequeña esfera (1 cm de diámetro, más o menos) en el extremo de una varilla, que luego se conecta a un puerto USB en una computadora y mide la intensidad de la luz en varias frecuencias, dando un verdadero análisis de espectro de una fuente de luz. No estoy seguro exactamente cómo se llama ese dispositivo, pero probablemente podría averiguarlo, si eso es útil.

Por supuesto, esos dispositivos también tienen que hacerlo de alguna manera, así que tal vez solo aprender la teoría y las matemáticas sea suficiente. :) Se pueden encontrar varios elementos útiles (y estoy seguro de que algunos menos útiles) con una búsqueda en Google . Me imagino que tiene una investigación seria por delante, más allá del alcance de lo que podrá obtener respuestas difíciles aquí. Sin embargo, espero que esto te dé algunos puntos de partida.

lindes
fuente
@ Sí: planeo fijar la tarjeta a un tornillo de banco sujeto a una mesa, el dispositivo de la cámara también se fija a una abrazadera y cambiar las fuentes de luz.
goldenmean