颜色图是如何工作的

How does colormap work

我不明白 colormap 是如何工作的以及它是如何使用的。

我正在完成一项编程任务,其中提供了一些代码,其中使用了 colormap,但我不明白它到底完成了什么。

这里是一个压缩代码:

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

此处display_array包含灰度图像的像素强度。

我读了this篇文章,略微了解到colormap是一个任意行数和3列的矩阵,其值在0和[=17=之间].

我检查了灰度图像中的像素强度值,发现值介于 -12 之间。现在我无法理解 mapping 是如何出现在这张图片和上面文章中提到的 colormap 之间的。只要对这种情况如何发生有一个高层次的了解就会有所帮助。

显示图像时,需要在数据 和屏幕上对应于这些值的像素颜色之间建立关系。这就是颜色图的目的。它从字面上 映射 一个数据值到 color.

此映射如何发生取决于坐标区的颜色限制。颜色限制指示要将数据的哪个值映射到颜色图中的第一个值以及将哪个值映射到颜色图中的最后一个值。您可以通过 CLim property or via the caxis 函数为给定的 axes 调整这些限制。

默认情况下 imagesc(缩放图像)将设置颜色限制,这样数据的最大值用作颜色上限,最小值用作颜色下限。这相当于

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

grey 颜色图的情况下,第一个值为黑色,最后一个值为白色,这意味着任何小于或等于颜色下限的值都将显示为黑色,任何大于或等于颜色下限的值都将显示为黑色大于或等于颜色上限将显示为白色,介于两者之间的所有内容将显示为与其值成比例的灰色阴影。

您可以使用 colormap 函数指定您想要的任何颜色图。 grey 只是灰度图像的 built-in 颜色图。颜色图的格式是每行包含三个元素(红色、绿色、蓝色),颜色下限映射到第一个条目,颜色上限映射到最后一个条目,数据线性映射到可能出现的所有颜色介于两者之间。

但是,在您显示的示例中,您指定了颜色限制 as the second input argument to imagesc 并手动将其强制为 [-1 1]。这意味着现在 -1 映射到颜色图中的第一个值(黑色),1 映射到最后一个值(白色)。由于您的值大于 1,所有这些值都将被强制为白色,因为颜色上限为 1。