Mark Schmelzenbach
Homework #2
CS684
The following images demonstrate different mapping strategies from the CIE tristimulous XYZ space to RGB space. To construct these images, an ideal spectral image was described as follows:
This ideal image than was mapped to XYZ space using the following standard method:
Finally, the XYZ space was mapped to RGB space. For an in depth description of this method, refer to Glassnar's "Principals of Digital Image Synthesis" pp 101-105. I for the first 12 pictures I used the matrix developed for the "standard" NTSC monitor, with the following specs:
| x | y | |
| r | 0.67 | 0.33 |
| g | 0.21 | 0.71 |
| b | 0.14 | 0.329 |
| white point | 0.313 | 0.329 |
After mapping into RGB space, channels varied from as high as 1200 to as low as -268. The trick is to map these values into a range [0..1], this is called gamut mapping.
The first mapping is a simple uniform mapping function. All channels are increaed by the smallest value and then divided by the sum of the largest value and the absolute value of the smallest value. Click here.
The second mapping is similar to the first, but the min/max values are indepenatly calculated for each channel. Click here.
The third mapping is similar to the second, but all negative values are clamped to zero, and each channel is divided by its max value. Click here.
The fourth mapping is a simple clamp function. If the value falls between 0 and 1, it is left alone, otherwise it is clamped into this range. This is real ulgy, but click here.
The next three images are very similar. Negative values are clamped to zero, remaining values are scaled by a percentage of the maximum value for that chanell, and if the value is still above 1, it is clamped to 1. 75%, 50%, 25%.
The remaining pictures all use global averages in some manner. Image 8 increases all channels by their average, then divides by 3 times the average. By doing this, the black background is now grey. Click here.
The ninth image simply divides each channel by 4 times its average. Click here.
The tenth image divides each channel by 2 times its average. Click here.
This increases every channel by its average ONLY if the value is greater than zero, then the value is divided by 5 times its average. Click here.
The image maps values greater than the channel average to the channel average plus the value divided by 4. Then all values are scaled by 4 times the average. This lends a neon glow to the image. Click here.
The final image is similar to the previous image, except that the mapping function eliminates the 'edge' that causes the neon glow, as a reslult is gives a much softer feel. Click here.