colormap如何工作

时间:2017-01-30 17:47:30

标签: matlab octave matlab-figure colormap

我无法理解colormap如何运作以及如何使用它。

我正在完成编程任务,我在其中提供了一些使用colormap的代码,但是我无法理解它究竟完成了什么。

以下是精简代码:

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

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

我阅读了this文章,并略微了解colormap是一个矩阵,其中包含任意数量的行和3列,其值介于01之间。

我检查了灰度图像中像素强度的值,找到了-12之间的值。现在我无法理解这张图片与上面文章中提到的mapping之间的colormap如何发生。只是高度了解这种情况会有所帮助。

1 个答案:

答案 0 :(得分:6)

显示图像时,需要在数据与屏幕上与这些值对应的像素颜色之间建立关系。这是colormap的目的。它实际上数据值映射到颜色

此映射的发生方式取决于轴的颜色限制。颜色限制指示要映射到色彩映射中第一个值以及映射到色彩映射中最后一个值的数据值。您可以通过CLim属性或caxis函数调整给定axes的这些限制。

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

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

对于grey色彩映射,第一个值为黑色,最后一个值为白色,这意味着小于或等于下限色彩的任何值都将显示为黑色,任何大于或等于的值等于上限颜色将显示为白色,其间的所有内容都将是与其值成比例的灰色阴影。

您可以使用colormap功能指定所需的任何色彩映射表。 grey只是灰度图像的内置色彩图。色图的格式是每行包含三个元素(红色,绿色,蓝色),下限色彩映射到第一个条目,上限色彩映射到最后一个,数据线性映射到所有颜色出现在两者之间。

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