【问题标题】:xyY color locus does not look correctxyY 颜色轨迹看起来不正确
【发布时间】:2018-09-01 02:07:03
【问题描述】:

我刚刚完成了将 xyY 颜色转换为 RGB 的任务。我正在使用 sRGB 颜色空间。

当我遍历 x 和 y 坐标时,这是我得到的输出:

白点 (D65) 用黑色像素标记。

但是,这是我应该得到的:

我尽力剪裁了色域(我生成了边界线,然后使用 Photoshop 删除了这些边界之外),但很明显白色区域太大,红色区域太小等等。

我测试了几种不同的 XYZ 颜色,并使用我的程序和this website 将它们转换为 RGB,它们在误差范围内匹配 (<0.1)。

关于什么可能导致这些问题的任何想法?

编辑

看来我的输出和How to tell if an xyY color lies within the CIE 1931 gamut?完全一样。

(如果我不剪掉它)

这让我相信也许我没有做错任何事,但仍然没有解释为什么 Wikipedia 的色域不同。

【问题讨论】:

  • 您能在某处分享您的最终代码吗?我正在为类似的问题而苦苦挣扎。
  • @Learningstatsbyexample 不确定我现在能找到它,但我的问题是我只是将 r,g,b 值限制为 [0,1] 但正确的方法是像向量。希望这会有所帮助

标签: colors rgb color-space srgb gamut


【解决方案1】:

你应该显示代码,但我可能猜到了。

颜色是三维的。使用 CIE xy 图形,只需在图形上添加一些颜色。通常它们不仅仅是投影,而是陌生的表面。

根据如何添加原色,您通常会看到两种:加法和减法。有时你的情况是错误的。

在减色法上,您只需将数字相乘(从 0 到 1 的颜色)。加法(如您所愿):您添加组件,然后将值标准化为 Y=1(可能仅当 Y>1 时),然后进一步缩放。所以你会保持色调,但颜色不会被剪裁(注意:缩放时,你应该考虑到R,G,B在Y中的不同权重)。

你的情况似乎是错误的:你添加了颜色,只是你剪辑 R 或 G 或 B 不超过最大值(1、100 或 255)。但这:改变色调,使颜色暗淡。 (也许你只是做了减色,所以乘法,但在视觉上有些不对劲)。

【讨论】:

  • 是的,我只是在夹住 R、G、B,那可能就是问题所在。所以我应该改变色调?使用 HSL?
  • 不,您检查错误通道上的错误程度并缩放其他通道(使用不同通道的 Y 颜色权重)
  • 啊,所以我缩放了所有的值,所以最超出范围的值变成了范围内的值?我现在试试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2019-06-26
相关资源
最近更新 更多