15 votos

¿Qué valores {R,G,B} representarían un color de fuente de luz monocromática de 445 nm en un monitor de ordenador?

¿Es posible responder definitivamente a mi pregunta (suponiendo que el monitor sea perfecto)? ¿Cuál sería la fórmula para calcular los valores RGB para una luz visible monocromática con una longitud de onda determinada?

0 votos

Un buen artículo sobre el tema, que demuestra cómo no todos los colores visibles pueden representarse ni reproducirse como {R, G, B}: jamie-wong.com/post/color

15voto

DMKing Puntos 1352

Primero se consulta un Observador colorimétrico estándar suplementario CIE 1964 y busque el Función de coincidencia de colores CIE para la longitud de onda que desee:

enter image description here

Para su longitud de onda deseada:

     CIE color matching functions    Chromacity coordinates     
 nm       X         Y        Z        x        y        z    

 455  0.342957  0.106256  1.90070  0.14594  0.04522  0.80884 

Nota: Las coordenadas de cromatismo se calculan simplemente a partir de las funciones de correspondencia de colores CIE:

x = X / (X+Y+Z)
y = Y / (X+Y+Z)
z = Z / (Z+Y+Z)

Dado que:

(X+Y+Z) = 0.342257+0.106256+1.90070 = 2.349913

Podemos calcular:

x = 0.342257 / 2.349913 = 0.145945
y = 0.106256 / 2.349913 = 0.045217
z = 1.900700 / 2.349913 = 0.808838

Tiene un color especificado utilizando dos espacios de color diferentes:

  • XYZ = (0,342957, 0,106256, 1,900700)
  • xyz = (0,145945, 0,045217, 0,808838) (que coincide con lo que ya teníamos en la tabla)

También podemos añadir un tercer espacio de color: xyY

x = x = 0.145945
y = y = 0.045217
Y = y = 0.106256

Ahora tenemos el color especificado en 3 espacios de color diferentes:

  • XYZ = (0,342957, 0,106256, 1,900700)
  • xyz = (0,145945, 0,045217, 0,808838)
  • xyY = (0,145945, 0,045217, 0,106256)

Así que has convertido una longitud de onda de luz monocromática pura emitida en un color XYZ. Ahora queremos convertirlo en RGB.

¿Cómo convertir XYZ en RGB?

XYZ, xyz y xyY son espacios de color absolutos que describen los colores utilizando la física absoluta.

Mientras tanto, todos los espacios de color prácticos que la gente utiliza:

  • Laboratorio
  • Luv
  • HSV
  • HSL
  • RGB

depende de algunos punto blanco . Los colores se describen entonces como relativa a ese punto blanco.

Por ejemplo,

  • El blanco RGB (255,255,255) significa "blanco"
  • Blanco de laboratorio (100, 0, 0) significa "blanco"

Pero no existe el color blanco. ¿Cómo se define el blanco? ¿El color de la luz del sol?

  • ¿a qué hora del día?
  • ¿con cuánta nubosidad?
  • ¿a qué latitud?
  • en la Tierra?

Algunas personas utilizan el blanco de sus bombillas incandescentes (horriblemente anaranjadas) para referirse al blanco. Algunos utilizan el color de sus luces fluorescentes. No existe una definición física absoluta del blanco: el blanco está en nuestro cerebro.

Así que tenemos que elegir un blanco

Tenemos que elige un blanco. Realmente es usted que tiene que elegir un blanco. Y hay muchos blancos para elegir:

Elegiré un blanco para ti. El mismo blanco que usa sRGB:

  • D65 - iluminación diurna de un día claro de verano en el norte de Europa

D65 (que tiene un color cercano a 6500K, pero no del todo debido a la atmósfera de la Tierra), tiene un color de:

  • XYZ_D65: (0.95047, 1.00000, 1.08883)

Con eso, puedes convertir tu XYZ en Lab (o Luv ) - un espacio de color igualmente capaz de expresar todos los colores teóricos. Y ahora tenemos una cuarta representación del espacio de color de nuestra emisión monocromática de luz de 445 nm:

  • XYZ: (0.342957, 0.106256, 1.900700)
  • xyz: (0.145945, 0.045217, 0.808838)
  • xyY: (0.145945, 0.045217, 0.106256)
  • Laboratorio: (38.94259, 119.14058, -146.08508) (D65)

Pero quieres RGB

Lab (y Luv ) son espacios de color relativos a algunos punto blanco. Aunque te hayas visto obligado a elegir un punto blanco arbitrario, puedes representar todos los colores posibles.

El RGB no es así. Con RGB:

  • no sólo es el color relativo a algún punto blanco
  • pero también es relativo a tres colores primarias : rojo, verde, azul

Si especifica un color RGB de (255, 0, 0), está diciendo que quiere "sólo rojo". Pero no hay ninguna definición de rojo. No existe tal cosa como "rojo", "verde" o "azul". El arco iris es continuo, y no viene con una flecha diciendo:

Esto es rojo

Y de nuevo esto significa que tenemos que elige tres eligen tres colores primarios. Tienes que elegir tus tres colores primarios para decir qué son el "rojo", el "verde" y el "azul". Y de nuevo tienes muchas definiciones diferentes de rojo, verde y azul para elegir:

  • CIE 1931
  • ROMM RGB
  • Adobe Wide Gamut RGB
  • DCI-P3
  • NTSC (1953)
  • Apple RGB
  • sRGB
  • Japón NTSC
  • PAL/SECAM
  • Adobe RGB 98
  • scRGB

Yo elegiré por ti. Elegiré estos tres colores:

  • Rojo : xyY = (0,6400, 0,3300, 0,2126)
  • Verde : xyY = (0,3000, 0,6000, 0,7152)
  • Azul: xyY = (0.1500, 0.0600, 0.0722)

Esas fueron también las primarias elegidas por un comité internacional en 1996.

Crearon una norma que decía que todo el mundo debía utilizar:

  • Whitepoint : D65 luz del día (0,95047, 1,00000, 1,08883)
  • Rojo : (0.6400, 0.3300, 0.2126)
  • Verde : (0.3000, 0.6000, 0.7152)
  • Azul: (0.1500, 0.0600, 0.0722)

Y llamaron a esa norma sRGB - y puede ver estos cuatro puntos trazados en un diagrama de cromacidad :

Diagrama de cromaticidad sRGB (D65 y rojo, verde, azul primarios)

enter image description here

El impulso final

Ahora que hemos elegido nuestro

  • punto blanco
  • tres primarias

ahora podemos convertir el color XYZ en RGB utilizando las opciones sRGB para "rojo", "verde", "azul" y "blanco":

/*
    The matix values in the next step depend on location of RGB in the XYZ color space.
    These constants are for
            Observer:          2°
            Illuminant:        D65
            RGB Working Space: sRGB
*/
r = X *  3.2404542 + Y * -1.5371385 + Z * -0.4985314;
g = X * -0.9692660 + Y *  1.8760108 + Z *  0.0415560;
b = X *  0.0556434 + Y * -0.2040259 + Z *  1.0572252;

Dándole su RGB de:

  • RGB = (1.47450, -65.7629, 345.59392)

Desgraciadamente:

  • su monitor no puede mostrar negativo verde (-65). Significa que es un color fuera de lo que su monitor puede mostrar (es decir, fuera de su color gama )
  • su monitor no puede mostrar más azul que 255 (345). También significa que es un color fuera de la gama de tu monitor.

Así que tenemos que redondear:

  • XYZ = (0,342957, 0,106256, 1,900700)
  • xyz = (0,145945, 0,045217, 0,808838)
  • xyY = (0,145945, 0,045217, 0,106256)
  • Lab = (38.94259, 119.14058, -146.08508) (Punto blanco: D65)
  • RGB - (1, 0, 255) (sRGB)

enter image description here

Bonificación - Dónde está tu color

Quería señalar que casi todo el mundo utiliza sRGB como norma. Es un estándar general para todas las cámaras digitales, para los JPEG en Internet y los monitores de ordenador. El objetivo es que todos estos dispositivos estén de acuerdo:

  • el color del rojo principal
  • el color del verde principal
  • el color del azul principal
  • el color que usaremos como blanco

Y esos lugares fuera del triángulo en el diagrama de cromaticidad sRGB siguen siendo todos los colores válidos; su monitor simplemente no puede mostrarlos.

Y el borde exterior de la curva (llamado locus ) es la localización de las diferentes frecuencias puras de la luz monocromática. Ahí es donde estaría su fuente de luz monocromática pura de 445 nm:

enter image description here

0 votos

Todo este buen rollo (asumo) lleva básicamente al "intuitivo" "sólo azul", quizás podrías añadir eso como un TL;DR al principio.

0 votos

Si te gustan las respuestas sencillas: Un monitor de ordenador no puede producen una luz monocromática de 445nm. También es la esencia de lo anterior, pero también hay "metameres" (parecidos de color).

0 votos

@Ian Boyd ¿Por qué es importante el punto blanco para los emisores de luz (como lo es un monitor)? ¿Adaptación del ojo? Pero eso probablemente se aplicaría también a la longitud de onda original...

12voto

user37548 Puntos 109

Puede utilizar http://rohanhill.com/tools/WaveToRGB/index.asp para convertir una longitud de onda en rgb.

Si su interés radica más en lo que la fórmula realmente es Esto lo ilustraría A graph of the rgd values as function of wavelength
(fuente: <a href="http://www.physics.sfasu.edu/astro/color/rgb.gif" rel="noreferrer">sfasu.edu </a>)

Como ves, no hay realmente una fórmula exacta, sino que utilizan la aproximación de esa imagen.

0 votos

En realidad no veo la fórmula en ese segundo enlace, ¿podrías ser más específico?

0 votos

Actualizado con algo más de información - quería enlazar con los ejemplos de código

0 votos

Pues bien, se puede colocar cualquier longitud de onda en un gráfico tristumular (véase Wikipedia para ver ejemplos y enlaces), y hay una serie de algoritmos derivados para convertir entre RGB, HSV, lambda, etc.

10voto

Fernando Briano Puntos 275

No hay manera de mostrar una luz monocromática en un monitor RGB: El valor RGB es una mezcla de tres fuentes de luz, no puede ser monocromático por definición aunque los componentes R, G y B sean monocromáticos por sí mismos.

Mira el famoso diagrama de cromaticidad CIE 1931 que muestra el espacio de todos los colores que podemos ver comparado con un gama de un monitor típico. La luz monocromática es el límite del espacio de color y la herramienta de la respuesta de Bruno calcula el color más cercano dentro del triángulo de valores RGB. Puedes ver que para 455 nm esta aproximación es bastante cercana, mientras que la luz verde (como 510 nm) está realmente lejos de lo que el monitor RGB puede mostrar.

CIE 1931 diagram

Editar: como señaló MSalters, la distancia en el diagrama CIE 1931 no debe interpretarse como diferencia de dos colores, ya que el diagrama exagera mucho los tonos verdes. Se han diseñado otros espacios de color en los que la distancia entre dos puntos corresponde a la diferencia de color percibida. Uno de ellos es CIELUV (L* u* v*) y en este espacio no parece que los colores verdes se muestren peor que los rojos o los azules.

CIELUV sRGB

0 votos

Lo que pregunto es qué color RGB recrea el color percibido de una determinada luz monocromática. Pero gracias por la imagen, no sabía que la gama de un monitor es que pequeño.

0 votos

@VioletGiraffe: No te dejes engañar. Fíjate en los números del borde. En la parte inferior, 10 nm son aproximadamente 1 unidad de escala, pero entre 490 y 500 nm son 5 unidades de escala. Y la zona "más grande" no representada se encuentra cerca de la marca de 500 nm. La causa de esto es una elección particular de coordenadas {x,y}.

0 votos

@MSalters: gracias, se me pasó este punto y actualizaré mi respuesta.

1voto

Aman Agarwal Puntos 15

Los humanos tenemos tres tipos de conos, que son células fotorreceptoras, para la visión del color en nuestra retina. Pueden caracterizarse por su sensibilidad espectral, que da una intensidad de respuesta relativa en función de la longitud de onda, y que es aproximadamente la misma para cada individuo. La siguiente imagen ofrece una forma media para cada tipo de cono:

spectral cone responses

La respuesta a la luz de una distribución espectral dada está totalmente determinada por el triple de valores obtenidos al integrar el producto de la distribución espectral con la respuesta del cono. Si se hace esto para el espectro de la luz monocromática de 445 nm de longitud de onda, que es un múltiplo de una función delta, se obtiene un triple $(s,m,l)$ , donde $s$ será mucho mayor que los otros dos (en este caso).

Si haces lo mismo con los tres tipos de puntos de los que se compone tu pantalla, obtienes también tres valores para cada uno de ellos. Mediante el álgebra lineal, se obtiene una combinación lineal única que debería reproducir la fuente monocromática en lo que respecta a la percepción humana. Sin embargo, es muy posible que obtengas coeficientes negativos. En este caso el valor está fuera de la gama del monitor.

Por último, los valores que tienes que enviar al monitor no son directamente estos coeficientes. Desde su entrada hasta las intensidades de luz hay todo tipo de transformaciones implicadas. En el mejor de los casos puedes especificar los valores en algún espacio de color estandarizado, como La b XYZ o sRGB. La transformación entre estos espacios de color y el espacio de respuestas cónicas del observador medio está normalizada (aunque no de forma única), véase, por ejemplo wikipedia .

0voto

artistoex Puntos 2525

Pues los valores R y G serían ambos cero, y tendrías que tener un fósforo azul de longitud de onda dominante de 445nm o una fuente de luz trasera (LED).

Pues eso no lo encontrarás en el monitor de tu ordenador, ya que los LEDs azules son más bien de 460-470 nm.

Así que no hay solución.

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