如何在 Matlab 中绘制 CIE 1931 Color Space 上的颜色?

How to plot colors on CIE 1931 Color Space in Matlab?

我正在尝试在已经绘制的 CIE 1931 颜色 space 上绘制一些颜色值(坐标)。我已经导出了我想要绘制的 XYZ 颜色值,表示为 [X, Y, Z]-

[50, 57, 10] [36, 43, 15] [28, 36, 8] [25, 32, 14]

我使用这个绘制整个 CIE 颜色的函数 space - http://www.mathworks.com/matlabcentral/fileexchange/40640-computational-colour-science-using-matlab-2e/content//cieplot.m

 cieplot();
 hold on
 x=[0.42 0.58]
 y=[0.48 0.45];
 scatter(x,y);
 hold off

我使用下面的两个公式来计算上面代码中使用的 xy 值,以绘制 2 种颜色为例,它生成了显示的 figure/graph .两种颜色中的一种超出了所需的色谱范围。我对如何在显示的 CIE 颜色 space 上绘制 z 坐标感到困惑,该坐标可以计算为 z=1-x-y,以便所有颜色都在光谱范围内。

正如 horchler 所指出的,错误出在我在 MATLAB 外部完成的颜色转换(RGB 到 XYZ 到 xyY)中。更正错误后,以下代码产生了预期的结果。

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

该图显示了根据 xy 值以 CIE 1931 颜色 space 绘制的六种颜色。