如何在 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
我使用下面的两个公式来计算上面代码中使用的 x
和 y
值,以绘制 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
该图显示了根据 x
和 y
值以 CIE 1931 颜色 space 绘制的六种颜色。
我正在尝试在已经绘制的 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
我使用下面的两个公式来计算上面代码中使用的 x
和 y
值,以绘制 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
该图显示了根据 x
和 y
值以 CIE 1931 颜色 space 绘制的六种颜色。