awpaeth@watcgl.waterloo.edu (Alan Wm Paeth) (06/28/89)
What is required is an electronic transcription of the CIE's table of color-
matching functions -- perhaps their best-known publication (excerpted below).
Note that all table values are non-negative and all columns sum (integrate) to
the same value, which can serve as a normalization constant (eg, make the
brightest white in the scene map to [255 255 255]).
Conversion using a 3x3 matrix multiply to/from broadcast RGB is also given.
(RGB can mean anything to anyone -- no two monitors are alike; I've chosen
the NTSC chromaticities of commercial color broadcasting as they are well-
defined). Most of this technique is over a half-century old; the lengthy
posting is offered in part to help better acquaint and encourage "graphicists"
with known technique from the field of color science.
/Alan Paeth
Computer Graphics Laboratory
University of Waterloo
-------------------
# Excerpted Tristimulus values for spectral colors (L = wavelength in nm)
# for the CIE 1931 Standard Colorimetric Observer (2 degree field of view)
# L X Y Z x' y' u' v'
380 0.0014 0.0000 0.0065 0.1772 0.0000 0.2679 0.0000
390 0.0042 0.0001 0.0201 0.1721 0.0041 0.2545 0.0136
400 0.0143 0.0004 0.0679 0.1731 0.0048 0.2554 0.0161
410 0.0435 0.0012 0.2074 0.1726 0.0048 0.2545 0.0158
420 0.1344 0.0040 0.6456 0.1714 0.0051 0.2523 0.0169
430 0.2839 0.0116 1.3856 0.1689 0.0069 0.2461 0.0226
440 0.3483 0.0230 1.7471 0.1644 0.0109 0.2348 0.0349
450 0.3362 0.0380 1.7721 0.1566 0.0177 0.2161 0.0550
460 0.2908 0.0600 1.6692 0.1440 0.0297 0.1877 0.0871
470 0.1954 0.0910 1.2876 0.1241 0.0578 0.1441 0.1510
480 0.0956 0.1390 0.8130 0.0913 0.1327 0.0828 0.2708
490 0.0320 0.2080 0.4652 0.0454 0.2950 0.0281 0.4116
500 0.0049 0.3230 0.2720 0.0082 0.5384 0.0035 0.5131
510 0.0093 0.5030 0.1582 0.0139 0.7502 0.0046 0.5638
520 0.0633 0.7100 0.0782 0.0743 0.8338 0.0231 0.5837
530 0.1655 0.8620 0.0422 0.1547 0.8058 0.0501 0.5867
540 0.2904 0.9540 0.0203 0.2296 0.7543 0.0792 0.5856
550 0.4334 0.9950 0.0087 0.3016 0.6924 0.1127 0.5821
560 0.5945 0.9950 0.0039 0.3731 0.6245 0.1531 0.5766
570 0.7621 0.9520 0.0021 0.4441 0.5547 0.2026 0.5694
580 0.9163 0.8700 0.0017 0.5125 0.4866 0.2623 0.5604
590 1.0263 0.7570 0.0011 0.5752 0.4242 0.3315 0.5501
600 1.0622 0.6310 0.0008 0.6270 0.3725 0.4031 0.5393
610 1.0026 0.5030 0.0003 0.6658 0.3340 0.4691 0.5296
620 0.8544 0.3810 0.0002 0.6915 0.3084 0.5202 0.5219
630 0.6424 0.2650 0.0000 0.7080 0.2920 0.5565 0.5165
640 0.4479 0.1750 0.0000 0.7191 0.2809 0.5830 0.5125
650 0.2835 0.1070 0.0000 0.7260 0.2740 0.6005 0.5099
660 0.1649 0.0620 0.0000 0.7268 0.2732 0.6024 0.5096
670 0.0874 0.0320 0.0000 0.7320 0.2680 0.6161 0.5076
680 0.0468 0.0170 0.0000 0.7335 0.2665 0.6203 0.5070
690 0.0227 0.0082 0.0000 0.7346 0.2654 0.6232 0.5065
700 0.0114 0.0041 0.0000 0.7355 0.2645 0.6255 0.5062
-----------
CIE-XYZ to NTSC-RGB
| R | | 1.73 -.48 -.26 | | X | # inverse of matrix below, all
| G | = | -.81 1.65 -.02 | * | Y | # columns sum to 1.0
| B | | .08 -.17 1.28 | | Z | # neg results are out of gamut
NTSC-RGB to CIE-XYZ
| X | | .67 .21 .14 | | R | # inverse of matrix above, all
| Y | = | .33 .71 .08 | * | G | # columns sum to 1.0
| Z | | 0.0 .08 .78 | | B | # Red phosphor (u',v') = .67,.33, etc.