从 XYZ 转换为 CIELAB 时,对于发射源,您是否需要用白点划分?

Do you need to divide with white point, for emissive sources, when converting from XYZ to CIELAB?

将公式从 XYZ(CIE 1931 颜色 space)转换为 L*a*b* (CIELAB) 时,您会发现例如此处 https://en.wikipedia.org/wiki/CIELAB_color_space,指定您应除以 "reference illuminant"(照亮场景的 lamp 的白点的 XYZ 值?)。

The formula

我的 XYZ 坐标来自发射源,因此场景中没有光源。所以当涉及光源时我可以理解这一点,因为用于生成 XYZ 值的 sum/integral 包含光源。但是我就是找不到除了这些以外的任何其他公式,它们都假设一个光源。

参考光源不是照亮场景的lamp。参考光源基本上就是白色的定义。虽然 "pure black" 是一种明确的颜色(没有强度),但 "pure white" 不是。例如。如果你看色度图,靠近中间的点有无穷多个,你可以称它为"white.",所以你必须选择一个"white",然后你就可以构建CIELAB space 周围。也就是说,在您定义要使用的 "white" 之前,CIELAB 并不是一个完全定义的颜色 space。 "white" 的不同选择会给你不同的 CIELAB 坐标。 (当然,只要跟踪白点,颜色仍然可以明确地转换回 XYZ。)

"white" 的一个非常常见的定义是“Illuminant D65," or "statistically ideal European noontime sun," which has tristumulus coordinates (taken from the Wikipedia link) X = 95.047, Y = 100.00, Z = 108.883 for the standard 2º observer. Also according to Wikipedia, CIELAB is often implicitly understood to use Illuminant D50 作为它的白点。将给定的 xy 坐标转回 XYZ 坐标(固定 Y = 100),我得到 X = 96.421, Y = 100, Z = 82.519 . 选择一个或什至其他东西来定义你的颜色 space。如果你要输出一个文件或包含这种颜色 space 数据的东西,你应该研究 "embedded color profiles" 用于相关格式,您可以在其中存储您选择的 "white" 以供将来使用的程序使用。如果那不可能,如果它将成为 "user-facing."[=13,您仍然应该以某种方式记录它=]

这是一个复杂的话题。简而言之(和简化的):光谱和我们感知的颜色之间没有唯一的关系。我们的眼睛和大脑具有 颜色适应能力 。一张白色 sheet 的纸将被视为白色(经过几分钟的适应),如果进入我们眼睛的光可能有更多的蓝色或更多的红色光成分。注意:但其他灯光(以及颜色)也可能会有不同的感知。在最常见的 黑体 光源上,我们倾向于(在适应后)看到同一物体具有相同的颜色。

所以在大多数颜色空间上,我们需要指定白点(或光源),以便了解我们如何看待所有其他颜色,而且大多数情况下我们希望将白色视为白色,而不是偏红,或偏蓝(重要的是:肤色在不同光源下变化很大,因此错误 "white balances" 的图像令人不安)。

您没有指定您使用的发射源。如果你是做艺术品的,所以没有选择房间的主光源,你应该问博物馆他们用什么光源,用D50是很标准的。通常屏幕以D65为标准光源(sRGB标准,也有HDTV、UHD等),所以图像设置有这样的白点,所以你应该选择这样的白点。在电影院或其他黑暗环境中,内容指定白点。您可能会从 D50 缓慢更改为 D65,但没有人会注意到更改。这在屏幕上也是如此:我们看屏幕,所以我们适应内容,所以你选择什么白点并不重要,重要的是在内容上选择了什么白点(再次:网络,电视使用 D65)

所以你应该发现什么是白点(或光源)并相应地使用它。注意:您肯定已经这样做了,因为您的工作还具有标准化亮度:您的发射源不会发射 100 [无单位] 的 。 [一起色度适应还有亮度适应]

注意:你的任务illuminantwhite point是同一个概念。光源定义了一个白点(以及白色的色度)。在您的公式中,您只需使用白色的色度(2 个数字,如果包括亮度则为 3 个)。使用光谱时,需要整个光谱曲线(由光源定义),因此 白点 数据不包含所有信息。