如何在Matlab中绘制CIE 1931色彩空间中的颜色?

3
我试图在已绘制的 CIE 1931 色彩空间上标注几个颜色值(坐标)。我已经得到了要绘制的 XYZ 颜色值,即 [X, Y, Z],分别为: [50, 57, 10] [36, 43, 15] [28, 36, 8] [25, 32, 14] 我使用了这个函数来绘制整个 CIE 色彩空间 - http://www.mathworks.com/matlabcentral/fileexchange/40640-computational-colour-science-using-matlab-2e/content//cieplot.m。请注意保留 HTML 标记。
 cieplot();
 hold on
 x=[0.42 0.58]
 y=[0.48 0.45];
 scatter(x,y);
 hold off

我使用了下面两个公式来计算上述代码中用于绘制两种颜色示例的xy值,并生成所示的图形。其中一个颜色超出了期望的颜色范围。我不确定如何在所示的CIE色彩空间中绘制可以计算为z=1-x-yz坐标,以使所有颜色都适合于光谱中。 计算x的公式 计算y的公式 生成的图形

我不确定您正在询问什么。色度图是 x vs. y。您具体想要如何将 z 值加入其中,以及为什么这样做?实际上您想做什么? - horchler
我正在尝试在CIE 1931色彩空间上简单绘制由[X,Y,Z]定义的颜色。一个颜色不能仅用xy表示。我正在尝试使用Matlab弄清楚如何在这样的颜色空间中绘制颜色。有关更多详细信息,请参阅:http://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space - Sarthak Singhal
@horchler 我有一个颜色列表,我想根据它们在CIE色彩空间中的绘图进行相关性分析,即如果它们是n种颜色 [c1,c2,c3 ... cn],它们如何连接(如果它们在线性、循环形式增加)。 - Sarthak Singhal
但是,当我使用它们的 xy 值时,为什么我绘制的颜色会超出色谱范围?因为 [50, 57, 10][36, 43, 15] 只是绿色的不同阴影。 - Sarthak Singhal
1
使用rgb2xyz函数,我不明白你是如何得到那些特定的xy值的。请编辑您的问题以展示可运行的完整代码,并说明您是如何从RGB三元组转换为XYZ三元组再转换为xyY三元组的。 - horchler
显示剩余4条评论
1个回答

0
正如horchler所指出的那样,我的错误在于我将颜色转换(RGB到XYZ到xyY)放在MATLAB之外进行。在纠正了这个错误后,以下代码产生了期望的结果。
cieplot();
hold on
x=[0.42 0.38 0.388 0.352 0.344 0.281]
y=[0.48 0.45 0.5 0.45 0.452 0.352];
scatter(x,y,10,'filled');
i=1;
a=[1 2 3 4 5 6];
strValues = strtrim(cellstr(num2str(a(:),'(%d)')));
text(x,y,strValues,'VerticalAlignment','bottom');
hold off

图表显示了六种颜色在CIE 1931色彩空间中根据它们的x和y值绘制的情况。 结果图表

1
我以为你想要一个三维图?你的代码中的Y在哪里? - posfan12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接