Search code examples
algorithmcolor-spacesystemcolorscolor-conversion

Is there a way to convert between D65/2 to C/2 observer/illuminant?


I am attempting to recreate color conversion that we can find from https://www.easyrgb.com on an excel using VBA to set up the calculation. My aim is converting from HunterLAB (C/2) to XYZ (C/2) to sRGB (C/2). However, there's a discrepancy going from XYZ to sRGB because of the default observer/illumant used in the formula is D65/2 like shown XYZ to sRGB formula. This is somewhat similar to this question: Adapt a CIE-XYZ color from an Observer/Illuminant to another one The responses from this question stated that it is not possible to convert between different observers. However, what if the observer is the same, is there a way to convert between the different illuminants?

I am looking for the math behind this conversion if such things exist. The image here showed that it is possble to convert from one illuminant to another online conversion.


Solution

  • It is possible to convert between illuminants under a given observer, this is the process known as chromatic adaptation. There are many algorithms available for that. One of the most common ones is the Von Kries chromatic adaptation. Bruce Lindbloom has the maths for it here.

    We have a reference Python implementations for VonKries and more in Colour:

    • CIE 1994
    • CMCCAT2000
    • Fairchild (1990)
    • Von Kries
    • Zhai et al. (2018)