如何为图像中的颜色分配特定值

时间:2019-04-27 22:21:35

标签: matlab colors data-visualization matlab-figure colormap

在MATLAB中使用List<Student> students = new List<Student>(); Student student = new Student { Name = "Mike", Address = "Main St" }; students.Add(Student); ListOfStudents listOfStudents = new ListOfStudents { Students = students; }; 进行绘制时,我试图将矩阵的三个可能值分配给三种颜色。

我只想imagesc将0表示为白色,将1表示为黑色,将2表示为红色。

最初imagesc()这样做,但是随着for循环的进行,1和2的颜色被交换。

我尝试重新分配分配给imagesc()的颜色,但是颜色仍然可以互换。

这是我的代码:

colormap()

...到目前为止,太好了。我在拐角处有五个黑色方块。

但是随着循环的进行和2的引入,矩阵看起来像这样:

Grid = 10;
M = zeros(Grid);
M(3,1:3)=1;M(2,3)=1;M(1,2)=1;
Black = [0 0 0];
White = [1 1 1];
Red = [1 0 0];
Background = White;
colormap([Background; Red; Black])
figure()
imagesc(M)

但是现在图像显示黑色为2,红色为1。

如何保持颜色与价值的关系?

1 个答案:

答案 0 :(得分:2)

您的主要错误是使颜色图中的红色和黑色反转。您可能这样做是因为按正确的顺序放置颜色会使第一个矩阵中的像素变为红色-这是不希望的。这样做的原因是将像素值映射到颜色表颜色的方式,可以通过显示colorbar来看到。您的自定义颜色图可以正常工作,因为red用于像素值约为0.5的像素-没有像素。

您需要做的是正确设置color limits for your axes

colormap([Background; Black; Red])
set(gca, 'CLim', [0 2]);

然后,这就是初始矩阵会发生的情况(请注意,图像中没有红色像素,但是颜色图仍然可以为它们准备好了):

enter image description here