The diagrams described in the previous section are two-dimensional and do not contain information about a color's luminance, only its chromaticity coordinates. The tristimulus values are needed to fully describe a color. Thus we have a three-dimensional coordinate system:
Color space and coordinate system
Note that the colors on any straight line through the origin differ only in luminance.
Colors can be added like vectors from the origin.
We can transform one color space A into another color space B by multiplying the color values by a matrix:
This works as long as the deterimant
is not zero.
The inverse of the matrix will transform colors in color space B back into color space A.
The RGB system described in the previous section has two shortcomings. The first is that the intensity of one of the primaries will often be negative. The second is that no particular set of primaries is more basic than any other.
These were resolved with the XYZ system created by CIE (the Commission International de l’Eclairage, or International Commission on Illumination) in 1931. The XYZ system uses “imaginary” primaries (X), (Y), and (Z) that are always positive. Also, for convenience, the (Y) primary is defined so that it corresponds to luminance.
The system is defined as follows. We take as primaries (R) of wavelength 700nm, (G) of wavelength 546.1nm, and (B) of wavelength 435.8nm. Then the transformation matrix from the RGB system to the XYZ system is as follows:
This means that given an RGB color (C) = L1(R) + L2(G) + L3 (B), its coordinates in the XYZ system are:
X = 2.7689*L1 + 0.38159*L2 + 18.801*L3
This particular transformation was chosen so that the XYZ system would have several convenient properties. One is that there are no negative tristimulus values, which reduces the possibility of error. Another is that the color triangle enclose the spectrum locus as closely as possible.
Figure 6.2 illustrates a chromaticity diagram for the XYZ system:
CIE-XYZ chromaticity diagram (generated by the ppmcie program for Linux)