NAME: cie2rgb PURPOSE: (one line only) Convert from CIE Chromaticity coordinates to RGB color-space values DESCRIPTION: Conversion from CIE Chromaticity (D65) to sRGB according to IEC 61966-2-1:1999. Note that I'm calling RGB the same as sRGB, after converting to 0-255 byte range instead of (0.0,1.0) Also, since I really don't care for gamma (contrast) I have implemented a simpler form than found in the IEC standard so that I can change gamma to any value and the calculation is easy to perform. The standard formula includes a piecewise continuous function that is logrithmic everywhere except for very low brightness. At low brightness it uses a linear ramp down to zero. Instead, I just use the following for gamma: out = in^(1.0/gamma) when converting from bigy (Y) to RGB (before converting from 0-1 to 0-255) The default in this program is a gamma=1.0 and this formula is bypassed. The standard gamma in the CIE prescription is "approximately 2.2". The difference between my implementation and the prescription is unlikely to be seen in the midst of large variations in monitors and printers at the very low intensity range (bottom few percent). CATEGORY: Image display CALLING SEQUENCE: cie2rgb,x,y,bigy,r,g,b INPUTS: x,y - scalar, vector, or arrays of Chromaticity (see spec2xyz) must all be the same length bigy - intensity Note: white is x=0.3127, y=0.3290, bigy=Y=1.0 (z=0.3583 because x+y+z=1) OPTIONAL INPUT PARAMETERS: GAMMA - default=1 KEYWORD INPUT PARAMETERS: D65 - Flag, if set the output will be based on the D65 illuminant Otherwise, it will be corrected for Illuminant C NORMALIZED - Flag, if set the output will be normalized floating point values (0-1) for RGB rather than byte values OUTPUTS: r,g,b - same size and rank as input, RGB byte values KEYWORD OUTPUT PARAMETERS: COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: MODIFICATION HISTORY: Written by Marc W. Buie, Southwest Research Institute, 2009/01/05 2009/01/15, MWB, added NORMALIZED keyword 2009/01/16, MWB, added D65 keyword