2

当我们查看 1931 CIE 色度图时,它表示在 xyY 空间的 xy 平面内,它在亮度点处呈现白色(或接近白色),例如此处用E突出显示的 D65 点。

1931 cie色度图

但是为什么会这样呢?D65 的点应该表示为x = 0.33, y = 0.33。给定公式Y = 1 - x - y,这不是意味着 Y 是 0.34 吗?

sRGB 相关或 xyY 取决于我找到0.33,0.33,0.34每个转换器158.4182, 155.5676, 176.8565。这是浅棕色,而不是在 1931 年的每个色度图中看到的近白色。

似乎我需要缩放 Y 以获得每个通道的正确亮度值。

使用Y = 1 - x - y公式,我的图表看起来像这样,一个无声的图表:

色度图错误

我不明白什么?

编辑

设置 Y = 1,图表如下所示,效果更好。

在此处输入图像描述

编辑

现在看起来像下面这样。

在此处输入图像描述

4

2 回答 2

1

色度图的解释有些不精确。

CIE xyY 是一个 3D 数字。通常我们只看到一个投影(通常不是相交平面,只是一个投影)。

一种常见的投影是“加法”xy 色度图。你可能会注意到它,因为它的边界是黄色的,而靠近中心的地方是白色的。在这样的投影中,您将显示给定色度 x,y 的最大 Y。

常见的也是“减法”图,就像你的第二个一样。没有黄色,没有白色。该图只有原色的减色混合,因此颜色较亮的是原色,而它们之间的颜色会变暗。

注意:通常色度图也会延伸到色域之外,所以原色不再是真正的原色,白色不可能是白色,黄色可以被切断,就像你的图表一样。您可以先尝试只使用原色之间的三角形,然后再展开。更容易调试。

白色将位于 3D 图形的顶部。在第一种情况下,你取色域的外表面,所以你得到白色。在第二种情况下,你在图中得到了一个平面,所以你永远不会变白。但它仍然是xy色度图。

在您的情况下,我认为您剪裁了颜色值(注 1),这是错误的:通过剪裁,您将无法获得正确的色度(通过剪裁,一个颜色的某个值被移除,因此通道之间的比率不是保持)。在规范化之前,应该使用浮点数或更大的数字进行计算(通道值在 0 到 255 范围内)。[标准化(在这种情况下):保持色度,但调整 Y 以使最终颜色处于色域中]。R在实践中:您得到, ,之间的最大值GB然后将每个通道乘以255/max(R,G,B)

注意:这并不完全正确/精确。上述归一化应该在线性空间中进行(线性混光),并且只有在归一化之后,才应该应用 gamma 函数。另一方面,在上面的图中,我们没有每个点 x,y 的正确颜色。我们只能在(色域的)三角形上正确地做到这一点。通过将屏幕上的可用颜色扩展到全 xz 色度,我们会产生错误/不精确。因此,伽马校正之前或之后的归一化并不那么重要(它只是稍微改变了颜色)。

注1:来自评论:这(剪辑)不是真的,OTOH蓝色(深蓝色)的极小部分,以及太多的洋红色和青色,让我想到一些数字问题)

于 2019-06-20T14:47:22.650 回答
1

CIE 1931 的白点不在x=1/3,中y=1/3,白色不是x=1/3, y=1/3, Y = 1/3

根据维基百科

D65的CIE 1931色彩空间色度坐标为
x=0.31271
y=0.32902

由于 D65 代表白光,它的坐标也是一个白点,对应于 6504 K 的相关色温。709,用于 HDTV 系统,将 CIE 1931 坐标截断为 x=0.3127,y=0.329。

x=1/3,y=1/3的含义不同:

在波长方面具有平坦功率谱的光(每 1 nm 间隔中的功率相等)对应于点 (x, y) = (1/3, 1/3)。

重要提示:D65 不是“平坦功率谱”

计算机系统 (PC) 使用sRGB颜色格式。
在 sRGB 中,颜色分量在伽马之后(与应用线性曲线的 CIE 1931 相比)。

在 xyY 颜色空间中,x,y 是色度,Y 是亮度。
x=0.31271,y=0.32902是没有亮度的色度并应用灰度色度。
用于白色Y = 1


推荐。709,用于 HDTV 系统,将 CIE 1931 坐标截断为 x=0.3127,y=0.329

让我们计算x=0.3127, y=0.329,的 sRGB Y = 1

X = (Y/y)*x = 0.95046
Y = 1
Z = Y/y*(1-x-y) = 1.0891

Rlinear 3.240600 -1.537200 -0.498600 X 0.99984
Glinear = -0.968900 1.875800 0.041500 * Y = 1.00010
Blinear 0.055700 -0.204000 1.057000 Z 1.00007

假设结果是1, 1, 1

最后阶段是应用伽玛将“线性 sRGB”转换为 sRGB。
由于所有值均为 1,因此结果为 sRGB = 1, 1, 1


我们可以对 重复计算Y = 0.2,结果是 Linear sRGB = 0.2, 0.2, 0.2

应用伽玛:
gamma(u) = 1.055*u^(1/2.4) - 0.055对于u > 0.0031308

1.055*0.2^(1/2.4) - 0.055 = 0.48453
所以 sRGB = 0.48453, 0.48453, 0.48453.

为了转换为 [0, 255] 的标准范围(每个颜色通道一个字节),我们需要缩放 255 并对结果进行四舍五入:RGB888 = 124, 124, 124.

于 2019-06-19T14:55:12.953 回答