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

Convert CCT (Correlated Color Temperature) to x, y Chromaticities

我正在尝试将 6504K 的 CCT 转换为 1931 2deg 颜色的 x、y 色度 space。按照 COMPUTATION 部分下此 Wikipedia page 的等式 - 在 Python 3.6.

中执行此操作

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

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

如您所见,我的 x 值正确,但 y 值不正确 - 在等式中它根据 x 计算 y。我现在已经检查了 20 次,没有发现错误...

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

谢谢。

您的值对于 6504k 是正确的,这里是用 Colour:

计算的
>>> import colour
>>> colour.temperature.CCT_to_xy_CIE_D(6504)
array([ 0.31271406,  0.3291191 ])

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

>>> import colour
>>> colour.temperature.CCT_to_xy_CIE_D(6500 * 1.4388 / 1.4380)
array([ 0.31272027,  0.32912528])

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

现在,根据 CIE 在 CIE 015:2018 比色法,第 4 版中给出的 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])

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

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