将 CCT(相关色温)转换为 x, y 色度

pet*_*e19 3 colors scientific-computing cct

我正在尝试将 6504K 的 CCT 转换为 1931 2deg 色彩空间中的 x、y 色度。遵循此维基百科页面上“计算- 在 Python 3.6 中执行此操作”部分下的方程式。

D65(6504K)被指定为 0.31271、0.32902(请参阅下面相同的维基百科页面)

我得到的结果 x, y 坐标是: [0.31271405688264753, 0.329 11 90991371872]

正如你所看到的,我的 x 值是正确的,但 y 值是关闭的 - 在等式中,它是根据 x 计算 y 的。我现在已经检查了20次了,找不到错误......

知道为什么 y 坐标不正确吗?

谢谢。

Kel*_*aar 5

您的值对于 6504k 是正确的,这里它是用Color计算的:

>>> import colour
>>> colour.temperature.CCT_to_xy_CIE_D(6504)
array([ 0.31271406,  0.3291191 ])
Run Code Online (Sandbox Code Playgroud)

请注意,从技术上讲,对于 D65,您应该按如下方式计算:

>>> import colour
>>> colour.temperature.CCT_to_xy_CIE_D(6500 * 1.4388 / 1.4380)
array([ 0.31272027,  0.32912528])
Run Code Online (Sandbox Code Playgroud)

这是为了正确考虑 1968 年普朗克定律中辐射常数的修改C_2,导致色温等于 6503.616133518777。从这里您应该开始看到差异可能涉及舍入问题。

现在,从CIE 015:2018 比色法,第四版中给出的 D65 中获取 CIE XYZ 三刺激值。https://doi.org/10.25039/TR.015.2018

>>> import colour
>>> colour.XYZ_to_xy([95.04, 100, 108.88])
array([ 0.31271387,  0.32903396])
Run Code Online (Sandbox Code Playgroud)

他们在 D65 色度坐标标准中给出的值是:[0.31272, 0.32903]

不幸的是,没有单一的正确答案,但是,一个常用且以某种方式达成一致的答案是[0.3127, 0.3290],大多数使用 D65 的 RGB 颜色空间都使用它。