Colors xyY颜色轨迹看起来不正确

Colors xyY颜色轨迹看起来不正确,colors,rgb,color-space,srgb,gamut,Colors,Rgb,Color Space,Srgb,Gamut,我刚刚完成了将xyY颜色转换为RGB的任务。我使用的是sRGB颜色空间 当我通过x和y坐标循环时,这是我得到的输出: 白点(D65)用黑色像素标记 然而,这是我应该得到的: 我尽了最大的努力来剪裁色域(我生成了边界线,然后使用Photoshop删除这些边界以外的区域),但很明显,白色区域太大,红色区域太小,等等 我测试了几种不同的XYZ颜色,并用我的程序将它们转换为RGB,它们在误差范围内匹配(您应该显示代码,但我可能猜得到 颜色是三维的。对于CIE xy图形,人们只在图形上添加一些颜色。它

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

当我通过x和y坐标循环时,这是我得到的输出:

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

然而,这是我应该得到的:

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


我测试了几种不同的XYZ颜色,并用我的程序将它们转换为RGB,它们在误差范围内匹配(
您应该显示代码,但我可能猜得到

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

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

对于减法颜色,您只需将数字相乘(颜色的规格从0到1)。加法(如您所愿):添加组件,然后将值的规格设置为Y=1(可能仅当Y>1时),然后进一步缩放。因此,您将保持色调,但颜色不会被剪裁(注:缩放时,应考虑Y中R、G、B的不同重量)


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

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

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

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

对于减法颜色,您只需将数字相乘(颜色的规格从0到1)。加法(如您所愿):添加组件,然后将值的规格设置为Y=1(可能仅当Y>1时),然后进一步缩放。因此,您将保持色调,但颜色不会被剪裁(注:缩放时,应考虑Y中R、G、B的不同重量)


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

是的,我只是简单地夹紧R、G、B,这可能就是问题所在。所以我应该更改色调?使用HSL?不,您检查错误通道上的错误程度,并缩放其他通道(使用不同通道的Y颜色权重)啊,所以我缩放所有的值,使范围外的值变成范围内的值。我现在试试看。是的,我只是夹紧R,G,B,这可能是错误的。所以我应该改变色调?使用HSL?不,你检查你在错误通道上的错误程度,并缩放其他通道(使用不同通道的Y颜色权重)啊,所以我缩放了所有的值,使超出范围的值变成了范围内的值?我现在就尝试一下。你能在某个地方共享你的最终代码吗?我正在努力解决一个类似的问题。@Learningstatsbyexample我不确定我现在能找到它,但我的问题是我只是将r、g、b值钳制到[0,1]但正确的方法是将其规范化为向量。希望这有助于您在某处共享最终代码?我正在努力解决一个类似的问题。@Learningstatsbyexample不确定我现在是否可以找到它,但我的问题是我只是将r、g、b值钳制为[0,1]但正确的方法是将其规范化为向量。希望这能有所帮助