First you consult a CIE 1964 Supplementary Standard Colorimetric Observer chart, and look up the CIE color matching function values for the wavelength you want:
For your desired wavelength:
┌─────┬───────────────────────────────┬─────────────────────────────┐
│ λ │ 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 │
└─────┴──────────┴──────────┴─────────┴─────────┴─────────┴─────────┘
Note: The chromacity coordinates are simply calculated from the CIE color matching functions:
x = X / (X+Y+Z)
y = Y / (X+Y+Z)
z = Z / (Z+Y+Z)
Given that:
(X+Y+Z) = 0.342257+0.106256+1.90070 = 2.349913
We can calculate:
x = 0.342257 / 2.349913 = 0.145945
y = 0.106256 / 2.349913 = 0.045217
z = 1.900700 / 2.349913 = 0.808838
You have a color specified using two different color spaces:
- XYZ = (0.342957, 0.106256, 1.900700)
- xyz = (0.145945, 0.045217, 0.808838) (which matches what we already had in the table)
We can also add a third color space: xyY
x = x = 0.145945
y = y = 0.045217
Y = y = 0.106256
We now have the color specified in 3 different color spaces:
- XYZ = (0.342957, 0.106256, 1.900700)
- xyz = (0.145945, 0.045217, 0.808838)
- xyY = (0.145945, 0.045217, 0.106256)
So you've converted a wavelength of pure monochromatic emitted light into a XYZ color. Now we want to convert that to RGB.
How to convert XYZ into RGB?
XYZ, xyz, and xyY are absolute color spaces that describe colors using absolute physics.
Meanwhile, every practical color spaces that people use:
depends on some whitepoint. The colors are then described as being relative to that whitepoint.
For example,
- RGB white (255,255,255) means "white"
- Lab white (100, 0, 0) means "white"
But there is no such color as white. How do you define white? The color of sunlight?
- at what time of day?
- with how much cloud cover?
- at what latitude?
- on Earth?
Some people use the white of their (horribly orange) incandescent bulbs to mean white. Some people use the color of their florescent lights. There is no absolute physical definition of white - white is in our brains.
So we have to pick a white
We have to pick a white. Really it's you who has to pick a white. And there are plenty of whites to choose from:
I will pick a white for you. The same white that sRGB uses:
- D65 - daylight illumination of clear summer day in northern Europe
D65 (which has a color close to 6500K, but not quite because of the Earth's atmosphere), has a color of:
- XYZ_D65: (0.95047, 1.00000, 1.08883)
With that, you can convert your XYZ
into Lab
(or Luv
) - a color-space equally capable of expressing all theoretical colors. And now we have a 4th color space representation of our 445 nm monochromatic emission of light:
- 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) (D65)
But you want RGB
Lab
(and Luv
) are color spaces that are relative to some white-point. Even though you were forced to pick an arbitrary white-point, you can still represent every possible color.
RGB is not like that. With RGB:
- not only is the color relative to some white-point
- but is is also relative to three color primaries: red, green, blue
If you specify an RGB color of (255, 0, 0), you are saying you want "just red". But there is no definition of red. There is no such thing as "red", "green", or "blue". The rainbow is continuous, and doesn't come with an arrow saying:
This is red
And again this means we have to pick three pick three primary colors. You have to pick your three primary colors to say what "red", "green", and "blue" are. And again you have many different definitions of Red,Green,Blue to choose from:
- CIE 1931
- ROMM RGB
- Adobe Wide Gamut RGB
- DCI-P3
- NTSC (1953)
- Apple RGB
- sRGB
- Japanese NTSC
- PAL/SECAM
- Adobe RGB 98
- scRGB
I'll pick for you. I'll pick these three colors:
- Red: xyY = (0.6400, 0.3300, 0.2126)
- Green: xyY = (0.3000, 0.6000, 0.7152)
- Blue: xyY = (0.1500, 0.0600, 0.0722)
Those were also the primaries chosen for by an international committee in 1996.
They created a standard that said everyone should use:
- Whitepoint: D65 daylight (0.95047, 1.00000, 1.08883)
- Red: (0.6400, 0.3300, 0.2126)
- Green: (0.3000, 0.6000, 0.7152)
- Blue: (0.1500, 0.0600, 0.0722)
And they called that standard sRGB
- and you can see these four points plotted out on a chromacity diagram:
sRGB Chromacity Diagram (D65 & red,green,blue primaries)
The final push
Now that we have chosen our
- white-point
- three primaries
we can now convert you XYZ color into RGB, using the sRGB choices for "red", "green", "blue", and "white":
/*
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;
Giving you your RGB of:
- RGB = (1.47450, -65.7629, 345.59392)
Unfortunately:
- your monitor cannot display negative green (-65). It means it is a color outside what your monitor can display (i.e. outside of its color gamut)
- your monitor cannot display more blue than 255 (345). It also means that it's a color outside your monitor's gamut.
So we have to round:
- 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) (Whitepoint: D65)
- RGB - (1, 0, 255) (sRGB)
Bonus - Where you color is
I wanted to point out that nearly everyone uses sRGB as the standard. It's a general standard for all digital cameras, for JPEGs on the Internet, and computer monitors. The goal is that every one of these devices agree on:
- the color of the red primary
- the color of the green primary
- the color of the blue primary
- the color that we will use as white
And those places outside the triangle on the sRGB chromacity diagram are still all valid colors; your monitor just can't display them.
And the very outside edge of the curve (called the locus) is the location of different pure frequencies of monochromatic light. That is where your pure 445nm monochromatic light source would be:
Best Answer
The video you show is of a liquid crystal display (LCD) monitor, also known as 'TFT'. The 'trick' depends on the specific design characteristics of these monitors (described below) and will not generally work with other types of displays such as LED and PLASMA displays.
All liquid crystal displays (LCD) operate on the principle of being able to 'twist' polarized light as it passes through a 'nematic' liquid crystal. The orientation of each liquid crystal in a display is governed by an electric field applied to a transparent electrode, through an array of thin-film transistors (TFT). The liquid crystal is normally 'sandwiched' between two polarizing filters at 90 degrees to each other. Polarized light enters the back of the liquid crystal from the back-lit LED. When the nematic crystal is not energised, it 'twists' the polarized light by 90 degrees so that it passes through the second polarizing filter. Wnen an electric field is applied to the liquid crystal, the light does not get twisted so gets blocked by the second polarizing filter.
See this video for an animation of the nematic liquid crystal: https://www.youtube.com/watch?v=Bf3547WB5qs
For more detail on the internal workings, including a'tear down' of an LCD-TFT monitor see this video: http://www.engineerguy.com/videos/video-lcd.htm
By taking out the second polarizing filter and placing them on a pair of glasses, the display appears 'invisible' (white) to the naked eye because ALL the from the LED backlight that passes through the first polarizing filter gets through the TFT section to the naked eye, regardless of it's orientation (polarization) so the naked eye sees it as 'white'. It's not until the second polarizing filter is applied to 'filter' the light from specific pixels which have 'twisted' their light (with respect to the other pixels) that we can distinguish between the pixels.
Note that the 'trick' is not really very secure if intended to prevent 'evesdropping', sinces anyone with polarizing glasses (including polaroid sunglasses) will be able to read the display.