Modify program 1 to have more sensible filter functions based on XYZ and RGB profiles.
I decided to work on my CRT montior for this project. First thing I did was to go through the Adobe Gamma tool in the Control Panel and adjust the gamma value for the Red, Green and Blue components. Since after the adjustments I ended up with a new ICC profile, there was no pre-defined XYZ-to-RGB conversion matrix. Instead I used this generic conversion matrix which was provided to the class and it seemed to produce good results.
r = 2.5623 * x + (-1.1661) * y + (-0.3962) * z
g = (-1.0215) * x + 1.9778 * y + 0.0437 * z
b = 0.0752 * x + (-0.2562) * y + 1.1810 * z
For normalization, I divided each pixel by the maximum of X,Y,Z value in the entire image. Gamma correction was later applied and I used a value of 0.4.
I also did some testing on a different machine. This time it was a LCD screen and the color space used was the sRGB. From the Bruce Lindbloom site, I used the following conversion:
r = 3.24071 * x + (-1.53726) * y + (-0.498571) * z
g =(-0.969258) * x + 1.87599 * y + 0.0415557 * z
b = 0.0556352 * x + (-0.203996) * y + 1.05707 * z
and here are the results below. The images seemed to have more of a red hue which I'm not able to explain. Also it was interesting that the bottom-right most square which is supposed to be the black square actually appears to be dark grey. I tried different values of gamma but it always turns out grey or if it does seem black then all the other colored squares are affected in turn.
|2000SPP - no gamma correction|
|2000SPP - with gamma correction|