我不明白colormap是如何工作的,它是如何使用的。
我正在完成一个编程任务,在那里我得到了一些使用colormap的代码,但是我不知道它到底完成了什么。
下面是一个压缩代码:

colormap(gray);
h = imagesc(display_array, [-1 1]);

这里display_array包含灰度图像的像素强度。
我读了this一文,稍微理解了colormap是一个具有任意行数和3列数的矩阵,其值介于01之间。
我检查了灰度图像中像素强度的值,发现值介于-12之间现在我无法理解mapping是如何在这个图像和上面文章中提到的colormap之间发生的对这种情况有一个高层次的了解会有帮助。

最佳答案

显示图像时,需要在数据值和屏幕上与这些值相对应的像素的颜色之间建立关系这就是彩色地图的目的它将数据值逐字映射到颜色。
如何进行映射取决于轴的颜色限制颜色限制指示要映射到颜色映射中第一个值的数据值以及要映射到颜色映射中最后一个值的数据值您可以通过axes属性或CLim函数为给定的caxis调整这些限制。
默认情况下,imagesc(缩放图像)将设置颜色限制,以便数据的最大值用于颜色上限,最小值用于颜色下限这相当于

set(gca, 'CLim', [min(display_array(:)), max(display_array(:))])

grey颜色映射的情况下,第一个值是黑色,最后一个值是白色,这意味着任何小于或等于颜色下限的值都将显示为黑色,任何大于或等于颜色上限的值都将显示为白色,两者之间的所有值都将是与它们的值成比例的灰色阴影。
可以使用colormap函数指定所需的任何颜色映射grey只是灰度图像的内置颜色映射颜色映射的格式是,每行包含三个元素(红色、绿色、蓝色),颜色下限映射到第一个条目,颜色上限映射到最后一个条目,数据线性映射到两个条目之间可能出现的所有颜色。
但是,在您所显示的示例中,您已经指定了颜色限制as the second input argument to imagesc,并手动将其强制为[-1 1]这意味着现在-1映射到colormap中的第一个值(黑色),而1映射到最后一个值(白色)由于值大于1,所有这些值都将强制为白色,因为颜色上限为1。

09-18 13:48