Experiments with color spaces and new color matching functions

The CIE 1931 color matching functions are used as the basis of color management, but newer, more accurate functions have been developed. I wanted to find a way to use the new functions (CMFs) to compare them and to convert the new XYZ values to well known color spaces like sRGB. I have covered the details of my process in my blog post.

I used the CVRL new 2012 CMFs.

I realized that if a color space is defined spectrally or by monochromatic wavelengths, it could be used with both versions of XYZ. I used this idea of monochromatic primaries as a way to convert the primaries of sRGB to the new XYZ values.

The resulting rgb values are very similar to the 1931 version.

The left side of each color patch is the 1931 color space, the right is the new one.


I have put the new primary and white point xy coordinates in my blog post.

I found that the channel luminance (Y) values of the RGB>XYZ color matrix in particular are different between the two versions. The new ones seem to be a better estimate of perceived luminance.

I’m not yet sure how these new color matching functions will be used in photography and color management once they become official, but maybe this is a step toward a potential use.


I downloaded the example and extracted Y’ in the GIMP.

Each patch was homogenous with no difference between it’s left and right.

Please clarify …

The new RGB>XYZ color matrix has different values than the standard one. If luminance is calculated with the new one the values will be different.

I did wonder why the colors don’t look different, but it’s because the 1931 Y function underestimates the luminance of both the blue colors and the display blue primary. Your eyes see the display blue as brighter than predicted so the low luminance gets canceled out.

I actually expected there to be a bigger difference between the two, but it seems the 1931 color space is still pretty accurate.

(I edited the original post for clarity)

1 Like

I put together a comparison of colors with constant luminance with different methods.

x and y axis is Oklab a and b. First is uniform Oklab L, then 1931 Y, and new Y.

oklab l

.213R + .715G + .072B

.223R+ .686G + .091B

I think the new one looks more uniform.

Comparing to oklab isn’t entirely fair since it compensates for perceived brightness related to saturation.