skip to Main Content

Question

Using D65 illuminant and a 2° observer, what are the values of sRGB red, green, blue, cyan, magenta, and yellow in CIE L*ab color space?

Here are the coordinates of my white point:

95.047, 100, 108.883

Problem

I tried a dozen different tools (both free and paid, like Photoshop), and noticed not a single one can agree on what red (and the other colors) is in CIE Lab, even when using the same illuminant, observer, and white point.

What I tried

I made a benchmark using different tools. Here is a sample using the following online tools:

┌───┬─────────────┬────────────────────────┬───────────────────────┬─────────────────────┐
│   │ Rgb         │ Lab (aspose.app)       │ Lab (colorizer.org)   │ Lab (nixsensor.com) │
├───┼─────────────┼────────────────────────┼───────────────────────┼─────────────────────┤
│ R │ 255, 0, 0   │ 54.291, 64.644, 55.913 │ 53.23, 80.11, 67.22   │ 53.24 80.09 67.20   │
│ G │ 0, 255, 0   │ 87.819, -63.417, 64.79 │ 87.74, -86.18, 83.18  │ 87.73 -86.18 83.18  │
│ B │ 0, 0, 255   │ 29.568, 54.63, -89.624 │ 32.3, 79.2, -107.86   │ 32.30 79.19 -107.86 │
│ C │ 0, 255, 255 │ 90.666, -40.526, -11.9 │ 91.12, -48.08, -14.14 │ 91.11 -48.09 -14.13 │
│ M │ 255, 0, 255 │ 60.169, 74.832, -48.40 │ 60.32, 98.25, -60.84  │ 60.32 98.23 -60.82  │
│ Y │ 255, 255, 0 │ 97.607, -12.6, 74.715  │ 97.14, -21.56, 94.48  │ 97.14 -21.55 94.48  │
└───┴─────────────┴────────────────────────┴───────────────────────┴─────────────────────┘

These results seem somewhat similar in the L channel, but the a and b values are inconsistent from one tool to the other.

Looking at the source from cielab.io, I can see they use the exact same illuminant, observer, and white point as I do.

const STD_ILL_D65: XYZ = { x: 0.950489, y: 1, z: 1.08884 };

So what is going on here?
Why can’t I find anywhere a standard definition of red, green, blue, etc in CIE Lab using D65 illuminant and 2° observer?

2

Answers


  1. Chosen as BEST ANSWER

    According to the sRGB specification, the XYZ coordinates of the sRGB primaries are

    ┌────┬──────┬──────┐
    │ x  │ y    │ z    │
    ├────┼──────┼──────┤
    │ 64 │ 0.33 │ 0.03 │
    ├────┼──────┼──────┤
    │ 30 │ 0.6  │ 0.10 │
    ├────┼──────┼──────┤
    │ 15 │ 0.06 │ 0.79 │
    └────┴──────┴──────┘
    

    Using the equations from Bruce Lindbloom, we can interpolate these coordinates to the CIE L*a*b* color space.

    Assuming L is in range [0, 100], a is in range [-128, 127], and b is in range [-128, 127], the coordinates of sRGB red, green, and blue in CIE L*a*b* using D65 illuminant and 2° observer are

    ┌─────────────┬──────────────┬─────────────┐
    │ 53.24080499 │ 80.09229045  │ 67.20312527 │
    ├─────────────┼──────────────┼─────────────┤
    │ 87.73471268 │ -86.18270839 │ 83.17930383 │
    ├─────────────┼──────────────┼─────────────┤
    │ 32.29701093 │ 79.18725441  │ -107.860155 │
    └─────────────┴──────────────┴─────────────┘
    

  2. Your question has unfortunately an infinite amount of answers because they are an infinite amount of RGB spaces (thus the infinite quantity of primaries and secondaries).

    You need to specify which RGB space your values are encoded with, ideally which gamut, whitepoint and colour component transfer function, Then, with that, you can obtain a single answer.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search