我不明白colormap
是如何工作的,它是如何使用的。
我正在完成一个编程任务,在那里我得到了一些使用colormap
的代码,但是我不知道它到底完成了什么。
下面是一个压缩代码:
colormap(gray);
h = imagesc(display_array, [-1 1]);
这里
display_array
包含灰度图像的像素强度。我读了this一文,稍微理解了
colormap
是一个具有任意行数和3
列数的矩阵,其值介于0
和1
之间。我检查了灰度图像中像素强度的值,发现值介于
-1
和2
之间现在我无法理解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。