12 votos

Calculando RGB más Ámbar

Actualmente estoy trabajando en una fuente de luz de amplio espectro usando emisores LED rojos, verdes y azules. A partir de una representación interna xyY (o CIE XYZ), puedo alcanzar cualquier color o temperatura de color a través de una matriz de transformación de 3x3. La matriz se calcula a partir de las coordenadas de cromaticidad y la luminancia relativa de los emisores RGB reales. Esto funciona bien tanto en la teoría como en la práctica.

Sin embargo, los LEDs RGB emiten un espectro discontinuo con muy poca energía entre el rojo y el verde. Quiero añadir un LED naranja o ámbar para mejorar el espectro y el índice de reproducción de color. Empezando por el CIE xyY, ¿cómo calculo el RGB más el ámbar? Todo el modelo CIE está basado en triestímulos y no veo cómo puedo usarlo para calcular un cuarto color.

Lo ideal sería probablemente un modelo que pudiera aceptar cualquier número de colores.


Añadido en base a la discusión:

CIE xy diagram with RGB emitters

Arriba hay una ilustración de cómo imagino que funcionan las matemáticas RGB.

Mido las coordenadas de cromaticidad (x,y) de cada uno de los emisores Rojo, Verde y Azul, y su brillo relativo (Y).

A partir de xyY calculo la CIE XYZ. Esto es necesario porque xy más Y es una proyección, XYZ es el espacio de color tridimensional real. Pongo los valores XYZ de los tres emisores en una matriz y calculo el inverso de esa matriz. Esta matriz inversa representa la diferencia entre lo "real" (la visión humana) y las propiedades de estos emisores en particular. Si quiero mostrar un color en particular, digamos el blanco que se muestra arriba a la derecha, puedo tomar las coordenadas deseadas, enviarlas a través de la matriz y obtener la fuerza requerida para cada emisor (mostrada como flechas).

Ahora RGBA: CIE xy diagram with RGBA emitters

Originalmente pensé que las matemáticas para un emisor más (RGBA) eran similares a las matemáticas para RGB. Que podría usar una matriz de 3*4 para calcular RGBA, de la misma manera que uso una matriz de 3*3 para calcular RGB. Sin embargo, parece que hay problemas para calcular el inverso de una matriz no cuadrada. Algunas fuentes dicen que no se puede hacer, otras dicen que si se puede hacer, pero que la matriz resultante carece de algún aspecto. ¡Esto está más allá de mi comprensión! :-)

@percusse sugiere que se puede utilizar una matriz de 3*4. Si es así, ¿cómo puedo calcular la matriz inversa? (Tengo un presupuesto muy reducido, un software como MATLAB está fuera de alcance).


Segunda edición:

Basándome en la información de @joriki y @percusse he intentado resolver esto en papel. He pasado mucho de papel, pero parece que no puedo encontrar una forma de hacerlo que pueda ser implementada como código de computadora, - o incluso produce la respuesta correcta! Probablemente estoy cometiendo errores en la solución práctica, pero eso no es realmente crítico. La computación tendrá que ser hecha por una implementación C de un algoritmo de resolución (¿eliminación gaussiana?) que se sabe que es bueno.

Estos serían valores tipo XYZ para los cuatro emisores calculados a partir de las coordenadas xyY medidas (los valores reales tendrán una mayor precisión):

$$ \left [ \begin {array}{ccc} 0.47 & 0.11 & 0.19 & 0.34 \\\ 0.20 & 0.43 & 0.11 & 0.26 \\\ 0.00 & 0.06 & 1.12 & 0.01 \end {array} \right ] \left [ \begin {array}{ccc} R \\\ G \\\ B \\\ A \end {array} \right ] = \left [ \begin {array}{ccc} X \\\ Y \\\ Z \end {array} \right ] $$

He estado pensando en la optimización y hay una serie de parámetros que afectan a la mezcla óptima, principalmente el espectro, la eficacia y el calor. Para un sistema pequeño, probablemente basta con preocuparse por los extremos del emisor de ámbar (evitar el máximo de ámbar cuando se emite luz naranja, evitar el mínimo de ámbar cuando se emite cualquier otro color). Una solución ya está sugerida por @joriki ["Esto selecciona la solución que cubre el espectro más uniformemente"] pero no entiendo las matemáticas :-)

Así que tengo que conseguir este sistema de ecuaciones en una forma que genere una respuesta única dentro de 500us de tiempo de computación en un pequeño procesador incorporado :-) ¡Cualquier orientación sobre cómo acercarse un paso más a una implementación práctica sería muy apreciada!


Tercera edición: He preparado una prueba que puede manejar 4 emisores, y un espectrómetro para medir la salida. Las intensidades relativas de los emisores están ajustadas para dar una temperatura de color correlacionada de aproximadamente 6000 Kelvin (luz del mediodía).

RGB en ca. 6000K:

RGB at ca. 6000K

RGB + Amber en ca. 6000K:

RGB + Amber at ca. 6000K

RGB + Blanco en ca. 6000K:

RGB + White at ca. 6000K

La primera imagen muestra el espectro de 3 emisores, Rojo, Verde y Azul. Hay muy poca luz entre 560 y 610 nm. La siguiente imagen muestra el espectro cuando se añade el ámbar al RGB. El ámbar mejora la situación significativamente. (El amarillo podría ser mejor, pero no se pueden encontrar LEDs amarillos de alto brillo adecuados). La última imagen muestra el espectro cuando se añade el Blanco a RGB. Los LEDs blancos son en realidad azules convertidos en fósforo. El fósforo puede ser hecho para retransmitirse en un espectro bastante amplio. Esto parece dar el mejor resultado en términos de espectro uniforme.

I Piensa en Tengo el código de trabajo para la Eliminación Gaussiana. La pregunta ahora es ¿cómo añado la minimización del cuadrado medio a las ecuaciones de tal manera que termine con una sola respuesta? Probablemente necesito algunas pistas sobre cómo resolver esto en la práctica. ¡Lo siento!)


Cuarta y quinta edición:

Así que he medido los espectros de 380 a 780 nm con una resolución de 1 nm. La salida se mide a igual valor de entrada. Equal input R, G, B, A and W emitters

Calculé el área bajo la curva por trigonometría. Calculé el tamaño promedio de los 400 trapecios entre 380 y 780 nm para R, G, B y A (los valores están escalados para mí más manejables):

$ \langle R \rangle = 19.8719507$
$ \langle G \rangle = 13.39000051$
$ \langle B \rangle = 29.30636046$
$ \langle A \rangle = 8.165754589$

Y también el promedio del producto de las seis (más cuatro) combinaciones de pares de emisores. Luego me esforcé en ensamblar esto en una matriz de covarianza:

$$ \left [ \begin {array}{cccc} 43.74282392 & -2.642812728 & -5.823745503 & -0.26554119 \\\ -2.642812728 & 8.563382072 & -0.969894212 & -0.946563019 \\\ -5.823745503 & -0.969894212 & 62.81754221 & -2.393057209 \\\ -0.26554119 & -0.946563019 & -2.393057209 & 8.136438369 \end {array} \right ] $$

La matriz está ensamblada así: $$ \left [ \begin {array}{ccc} \langle RR \rangle - \langle R \rangle\langle R \rangle & \langle RG \rangle - \langle R \rangle\langle G \rangle & \langle RB \rangle - \langle R \rangle\langle B \rangle & \langle RA \rangle - \langle R \rangle\langle A \rangle\\\ \langle RG \rangle - \langle R \rangle\langle G \rangle & ... & ... & ... \\\ ... & ... & ... & ... \\\ ... & ... & ... & ... \end {array} \right ] $$

Aquí están las coordenadas de color medidas de los emisores RGBA, y los valores de muestra para XYZ:

$$ \left [ \begin {array}{cccc|c} 0.490449254 & 0.100440581 & 0.221653947 & 0.343906601 & 0.75 \\\ 0.204678363 & 0.421052632 & 0.16374269 & 0.210526316 & 1.00 \\\ -0.011955512 & 0.07388664 & 1.464803251 & -0.012677086 & 0.75 \end {array} \right ] $$

He tratado de poner la matriz anterior en forma de escalón (?) por eliminación gaussiana, y luego obtener los valores RGB en la forma $u + Av$ por sustitución.

$R: 0.97921341 + A * -0.701207308$
$G: 1.730718699 + A * -0.1767291$
$B: 0.43 + A * 0.012215723$

El siguiente paso parece ser calcular $Q$ . Esto ha sido contestado por @joriki, pero no estoy acostumbrado a la notación y no estoy nada seguro de cómo traducir la taquigrafía griega a una forma en la que pueda calcular los valores. Si esto se vuelve demasiado básico para este foro, hágamelo saber y lo desconectaré.

Tengo problemas para entender este cálculo:

$$ \begin {eqnarray} \mu &=& - \frac { \sum_ { \alpha , \beta }M_{ \alpha\beta }x_ \alpha y_ \beta }{ \sum_ { \alpha , \beta }M_{ \alpha\beta }y_ \alpha y_ \beta } \;. \end {eqnarray} $$

No estoy completamente seguro de lo que el $x$ y $y$ los valores son Un puntero a un ejemplo de lo que este $M_{ \alpha\beta }x_ \alpha y_ \beta $ que en forma no algebraica sería de gran ayuda.


Sexta edición:

Así que déjame intentar explicarte cómo entiendo lo que hay que hacer: Con un conjunto de coordenadas de color de los emisores RGBA medidos y un valor ZYX (el color que queremos que generen los emisores) como entrada calculamos dos valores para cada emisor. Los valores son

$R = u_{RED} + Av_{RED}$
$G = u_{GREEN} + Av_{GREEN}$
$B = u_{BLUE} + Av_{BLUE}$
$A = A$

El cálculo implica la eliminación y sustitución gaussiana, y he escrito un código que realiza esos cálculos.

El valor de A debería ser preferentemente el que, junto con el RGB, produzca el espectro más uniforme. Este parece ser el cálculo de A:

$$ \begin {eqnarray} A &=& - \frac { \sum_ { \alpha , \beta }M_{ \alpha\beta }x_ \alpha y_ \beta }{ \sum_ { \alpha , \beta }M_{ \alpha\beta }y_ \alpha y_ \beta } \;. \end {eqnarray} $$

Un elemento de esta ecuación es $M_{ \alpha\beta }$ que es una matriz de covarianza de 4 * 4 que hemos precalculado a partir de los espectros de los emisores.

Esto es lo más lejos que estoy ahora mismo. No entiendo de la anotación anterior cómo funcionan las matemáticas. ¿Paso todas las combinaciones posibles de colores de los emisores por la matriz y las sumo todas? Tengo que admitir que estoy completamente perdido! :-)

10voto

JiminyCricket Puntos 143

Como ha señalado percusse (aunque utilizando la matriz de transformación equivocada), el problema está infradeterminado. Ahora tienes cuatro variables para tres restricciones que cumplir.

Supongo que cuando dices que "puedes alcanzar cualquier color", te refieres a que puedes especificar cualquier valor triestímulo dentro de alguna parte deseada del espectro y calcular las amplitudes necesarias para tus emisores R, G y B con el fin de alcanzar esos valores triestímulos. Como ya eres capaz de hacer esto sin ámbar, ya conoces una solución a las ecuaciones subdeterminadas, a saber, la que tiene cero ámbar.

Para convertir esto en un problema bien definido, se necesita una cuarta condición que coincida con la cuarta variable recién introducida. Dado que estás introduciendo el ámbar para cubrir el espectro de forma más uniforme, una de esas condiciones podría ser minimizar la variación cuadrática media de la intensidad en el espectro.

Para ello, puedes escribir el espectro de tu salida así:

$$I(\lambda)=\sum_\alpha c_\alpha I_\alpha(\lambda)\;,$$

donde $\alpha$ corre sobre sus cuatro emisores, $c_\alpha$ es la amplitud del emisor $\alpha$ y $I_\alpha(\lambda)$ es el espectro emitido por el emisor $\alpha$ . Entonces la variación cuadrática media es

$$ \def\ave#1{\left\langle#1\right\rangle} \begin{eqnarray} Q &=& \ave{I^2}-\ave{I}^2 \\ &=& \ave{\left(\sum_\alpha c_\alpha I_\alpha\right)^2}-\ave{\sum_\alpha c_\alpha I_\alpha}^2 \\ &=& \sum_{\alpha,\beta}M_{\alpha\beta}c_\alpha c_\beta\;, \end{eqnarray} $$

donde

$$\ave f=\frac{\int f(\lambda)\mathrm d\lambda}{\int \mathrm d\lambda}$$

promedia sobre el espectro y y la matriz de covarianza $M_{\alpha\beta}$ viene dada por

$$M_{\alpha\beta}=\ave{I_\alpha I_\beta}-\ave{I_\alpha}\ave{I_\beta}\;.$$

Así, a partir de los espectros medidos de los emisores, puedes calcular la matriz de covarianza, y esto te da una forma cuadrática que mide cómo de uniforme has cubierto el espectro.

También tienes una matriz de transformación que transforma las amplitudes de los emisores en valores triestímulos, algo así como

$$d_\gamma=\sum_\alpha T_{\gamma\alpha}c_\alpha\;,$$

donde $\gamma$ recorre X, Y, Z y $\alpha$ sobre los emisores como antes. Al resolver este sistema de ecuaciones lineales se obtiene un espacio de solución unidimensional $c_\alpha=x_\alpha+\mu y_\alpha$ . Las restricciones de positividad en las amplitudes seleccionan algún intervalo de admisibilidad $\mu$ valores. (Como dice que ya puede producir todos los colores deseados sin ámbar, este intervalo no está vacío). Puede sustituir esta solución en la medida de calidad $Q$ y minimizar:

$$ \begin{eqnarray} Q &=& \sum_{\alpha,\beta}M_{\alpha\beta}c_\alpha c_\beta \\ &=& \sum_{\alpha,\beta}M_{\alpha\beta}(x_\alpha+\mu y_\alpha)(x_\beta+\mu y_\beta)\;, \\ \frac{\mathrm d Q}{\mathrm d\mu} &=& 2\mu\sum_{\alpha,\beta}M_{\alpha\beta}y_\alpha y_\beta + 2\sum_{\alpha,\beta}M_{\alpha\beta}x_\alpha y_\beta \\ &=&0\;, \\ \mu &=& -\frac{\sum_{\alpha,\beta}M_{\alpha\beta}x_\alpha y_\beta}{\sum_{\alpha,\beta}M_{\alpha\beta}y_\alpha y_\beta} \;. \end{eqnarray} $$

Esto selecciona la solución que cubre el espectro de manera más uniforme, pero puede no satisfacer las restricciones de positividad en las amplitudes. Si no lo hace, hay que calcular $Q$ en los límites del intervalo para $\mu$ y utilizar el límite que da el valor más bajo.

[ Actualización en respuesta a la pregunta editada: ]

Parece que mi respuesta asumió demasiado y por lo tanto no respondió realmente a su pregunta. Intentaré aclarar por qué esto es una solución a tu problema.

Como ya ha señalado percusse en los comentarios, una buena manera de pensar en esto es en términos de número de restricciones y número de variables. Al añadir un cuarto emisor, has añadido una cuarta variable: Ahora puedes elegir cómo llamar a la fuerza de ese emisor, además de las tres fuerzas RGB que podías elegir antes, y esto te da más opciones de las que necesitas para conseguir todos los colores.

Supongamos que tienes una cerveza con un 4% de alcohol y un ron con un 40% de alcohol. Si te pido que me prepares un trago de $X$ ml que contienen $Y$ ml de alcohol, puede hacerlo mezclando cantidades adecuadas de los dos líquidos, siempre que $.04X\le Y\le.4 X$ (su "gama de alcohol"), y para un determinado $X$ y $Y$ hay exactamente un par de cantidades que puedes mezclar para cumplir esa especificación. Puede determinar esas cantidades estableciendo una matriz

$$\pmatrix{1&1\\.04&.4}$$

que transforma de contenido de cerveza y contenido de ron a contenido total y contenido de alcohol, e invirtiendo esa matriz para transformar en la dirección opuesta.

Ahora decides que mezclar las bebidas de la cerveza y el ron solo es aburrido y consigues un vino con 12% de alcohol. Ahora tu matriz de transformación es

$$\pmatrix{1&1&1\\.04&.4&0.12}\;.$$

Creo que en ese caso está claro que ya no hay una solución única. Por ejemplo, si le pido una bebida de 100 ml con 12 ml de alcohol, puede darme simplemente 100 ml de vino, o la mezcla de cerveza y ron que me hubiera dado antes. Es más, puedes mezclar dos soluciones cualesquiera y obtener una nueva solución; por ejemplo, puedes mezclar 60 ml de vino con 40 ml de la mezcla de cerveza y ron al 12% que me habrías dado antes, y también serán 100 ml de una bebida al 12%. Esto está relacionado con la linealidad del problema: como el problema es lineal, las soluciones pueden superponerse linealmente.

Ahora, el hecho de que la solución ya no sea única está directamente relacionado con el hecho de que un $2\times3$ no tiene una matriz inversa. Si la tuviera, podrías utilizar la inversa para encontrar la solución única. Así que no se puede encontrar el conjunto de soluciones invirtiendo la matriz; pero sí se puede encontrar, por ejemplo, utilizando la eliminación gaussiana. En el caso de la cerveza, el vino y el ron, por ejemplo, si te doy una especificación de $X$ ml con $Y$ ml de alcohol, tienes un sistema lineal de ecuaciones:

$$\pmatrix{1&1&1\\.04&.4&0.12}\pmatrix{B\\R\\W}=\pmatrix{X\\Y}\;,$$

donde $B$ , $R$ y $W$ son las cantidades de cerveza, ron y vino, respectivamente, que hay que mezclar. Restando $.04$ multiplicando la ecuación superior por la inferior se obtiene

$$\pmatrix{1&1&1\\0&.36&0.08}\pmatrix{B\\R\\W}=\pmatrix{X\\Y-.04X}\;.$$

Ahora puedes elegir arbitrariamente una de las variables, por ejemplo $W$ y expresar los otros en términos de ella:

$$.36R+.08W=Y-.04X\;,$$

$$R=\frac{25}9Y-\frac19X-\frac29W\;,$$

$$B+R+W=X\;,$$

$$B=X-R-W=\frac{10}9X-\frac{25}9Y-\frac79W\;.$$

Podemos resumir este resultado como

$$\pmatrix{B\\R\\W}=\pmatrix{\frac{10}9X-\frac{25}9Y\\\frac{25}9Y-\frac19X\\0}+W\pmatrix{-\frac79\\-\frac29\\1}\;.$$

Esto pone de manifiesto la estructura lineal de la solución: Se puede elegir cualquier valor de $W$ para obtener una solución correspondiente para $B$ , $R$ y $W$ que cumple con la especificación de $X$ y $Y$ . Sin embargo, en general no todos los $B$ , $R$ y $W$ serán positivos, y si no lo son obviamente no se pueden utilizar como componentes de una mezcla. Esto es exactamente análogo al triángulo de tu diagrama, que muestra los colores que puedes mezclar utilizando tus emisores; para producir colores fuera de ese triángulo, tendrías que poder hacer funcionar tus emisores con potencias negativas.

Así que, para resumir, añadir un cuarto emisor te ha dado un grado más de libertad; ya no hay una solución única, sino toda una familia de soluciones que depende linealmente de algún parámetro. Por lo tanto, necesitas un criterio para elegir una de estas respuestas.

El pensamiento detrás de mi respuesta fue: Este criterio debe tener algo que ver con la razón por la que decidió introducir el emisor ámbar en primer lugar - de lo contrario, podría seguir con la solución que tenía antes, que, por supuesto, sigue siendo una solución, ya que siempre se puede elegir la fuerza $0$ para el emisor ámbar. Como has dicho que has añadido el emisor ámbar porque los emisores existentes producían un espectro discontinuo, he pensado que un criterio útil podría ser minimizar la variación del espectro.

Un punto más: en tu edición sólo hablas de las mediciones XYZ, que te dan la matriz de transformación. Pero supongo que también habrás hecho mediciones del espectro completo, ya que de lo contrario no sabrías que el espectro no es suave. Vas a necesitar esas mediciones para aplicar la solución que propuse, o de hecho cualquier solución que utilice un criterio relacionado con la suavidad del espectro para fijar el parámetro extra.

[ Segunda edición ]

Tu descripción de cómo te gustaría elegir una de las posibles soluciones no es lo suficientemente concreta como para ofrecer una solución concreta, pero como primer paso aquí tienes cómo encontrar el conjunto de soluciones en tu caso por eliminación gaussiana. Me quedo con la precisión de dos dígitos (aunque conduce a errores de redondeo significativos en este caso).

$$ \pmatrix{ 0.47 & 0.11 & 0.19 & 0.34\\ 0.20 & 0.43 & 0.11 & 0.26\\ 0.00 & 0.06 & 1.12 & 0.01 } \pmatrix{ R \\ G \\ B \\ A } = \pmatrix{ X \\ Y \\ Z } $$

Resta $0.20/0.47$ veces la primera fila de la segunda:

$$ \pmatrix{ 0.47 & 0.11 & 0.19 & 0.34\\ 0.00 & 0.38 & 0.03 & 0.12\\ 0.00 & 0.06 & 1.12 & 0.01 } \pmatrix{ R \\ G \\ B \\ A } = \pmatrix{ X \\ Y-0.43X \\ Z } $$

Resta $0.06/0.38$ veces la segunda fila de la tercera:

$$ \pmatrix{ 0.47 & 0.11 & 0.19 & 0.34\\ 0.00 & 0.38 & 0.03 & 0.12\\ 0.00 & 0.00 & 1.12 & -0.01 } \pmatrix{ R \\ G \\ B \\ A } = \pmatrix{ X \\ Y-0.43X \\ Z-0.07X-0.16Y } $$

Ahora podemos elegir libremente $A$ y expresar las otras variables en términos de $A$ . Resuelve la tercera fila para $B$ :

$$1.12B-0.01A=Z-0.07X-0.16Y\;,$$ $$B=\frac{Z-0.07X-0.16Y+0.01A}{1.12}\;.$$

Resuelva análogamente la segunda fila para $G$ y la primera fila para $R$ . A continuación, recoge los términos independientes de $A$ y los términos proporcionales a $A$ en vectores separados:

$$\pmatrix{R\\G\\B\\A}=\pmatrix{\ldots\\\ldots\\(Z-0.07X-0.16Y)/1.12\\0}+A\pmatrix{\ldots\\\ldots\\0.01/1.12\\1}\;,$$

donde las elipses representan los resultados que se obtienen al resolver la primera y la segunda fila. Para un determinado $X$ , $Y$ y $Z$ , ésta es de la forma $u+Av$ con vectores constantes $u$ y $v$ . Se puede encontrar el intervalo de admisibilidad $A$ que hacen que todas las potencias de los emisores sean no negativas, y luego puedes aplicar el criterio que decidas para seleccionar $A$ dentro de ese intervalo.

[ Tercera edición ]

Hola Morten -- tu edición me hizo darme cuenta de que olvidé responder a tu correo electrónico con el código -- ¡lo siento! Esto es lo que tienes que hacer ahora:

Para calcular la matriz $M_{\alpha\beta}$ , hay que calcular las integrales sobre el espectro. $\ave{I_\alpha}$ es la media del espectro para el emisor $\alpha$ y $\ave{I_\alpha I_\beta}$ es la media del producto de los espectros de los emisores $\alpha$ y $\beta$ . Cuando hayas calculado esto, puedes montar $M_{\alpha\beta}$ de ellos, y luego junto con los vectores $x_\alpha$ y $y_\alpha$ se sale de la eliminación gaussiana se tienen todos los ingredientes para la fórmula del parámetro óptimo $\mu$ . Una vez que tengas eso, tienes que comprobar si da lugar a intensidades de emisor no negativas. Si lo hace, ya está hecho; si no lo hace, hay que encontrar los límites del intervalo de valores que lo hacen, y elegir el que lleva a la menor $Q$ valor.

Soy consciente de que puede haber detalles en algunos de esos pasos con los que necesitarás más ayuda, pero lo dejaré en ese esbozo por ahora y podrás decir específicamente dónde quieres que complete más detalles.

4voto

Si he entendido bien, su problema puede modelarse de la siguiente manera:

Existe una transformación lineal biyectiva entre el espacio CIE XYZ y el espacio RGB a través de (robando a esta página wiki , heh) $$ \begin{bmatrix}X\\Y\\Z\end{bmatrix}=\frac{1}{0.17697}\begin{bmatrix}0.49&0.31&0.20\\0.17697&0.81240&0.01063\\0.00&0.01&0.99\end{bmatrix}\begin{bmatrix}R\\G\\B\end{bmatrix} $$ Esto es lo común $Ar=x$ con un caso invertible $A$ . La inversa es simplemente $A^{-1}x=r$

Lo que se quiere conseguir es, resolver la siguiente ecuación.

Dado $XYZ$ datos y el mapeo $M$ , me calcula el vector de 4 entradas incluyendo los valores RGBAm. Escribiendo, $$ \underbrace{\pmatrix{\cdot&\cdot&\cdot&a\\\cdot&\cdot&\cdot&b\\\cdot&\cdot&\cdot&c}}_{M}\begin{bmatrix}R\\G\\B\\Am\end{bmatrix} = \begin{bmatrix}X\\Y\\Z\end{bmatrix} $$

Aquí tenemos el $Am$ blues, en otras palabras, debe proporcionar información adicional. La pieza que falta son los valores numéricos de $a,b,c$ . En términos físicos hay que cuantificar el efecto del ámbar en cada $X,Y,Z$ .

Ahora bien, mis ínfimos conocimientos sobre la luz me dicen que el ámbar debe ser una combinación de RGB de todos modos. Así que el efecto ámbar se puede cuantificar como $Am = aR+bG+cB$ . Y esta información puede ser obtenida por las especificaciones de Amber led que está utilizando.

El paso restante es el conocido problema de mínimos cuadrados indeterminados, intensamente estudiado y también bien establecido. Obsérvese que ahora tenemos infinitas (bueno, teóricamente) $R,G,B,Am$ cuartetos que llevarían a la misma $XYZ$ . En otras palabras, el mapa ya no es uno-a-uno (biyectivo) sino onto (suryectivo). La solución es el código MATLAB linsolve(M,x) para que lo pruebes.

Asumir esto como un prueba de concepto tipo de respuesta. Por favor, corrija mi malentendido y siéntase libre de editar hasta que lleguemos a un problema concreto. También mi más sincera felicitación por su proyecto. Es una iniciativa fantástica.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X