Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

图像类型

索引图像

索引图像由数据矩阵 X 和颜色图矩阵 map 组成。map 是一个 double 类的 m×3 数组,由 [0, 1] 范围内的浮点值组成。map 的每一行指定单一颜色的红、绿和蓝分量。索引图像使用像素值到颜色图值的“直接映射”。每个图像像素的颜色是以 X 中的对应值为索引求得的 map 中的值。因此 X 值必须是整数。值 1 指向 map 中第一行,值 2 指向第二行,以此类推。使用以下语句显示索引图像

image(X); colormap(map)

颜色图通常与索引图像一起存储,而且当您使用 imread 函数时,颜色图会随着索引图像一起加载。但您不仅限于使用默认的颜色图,您可以根据意愿选择任何一个颜色图。属性 CDataMapping 的说明描述了如何修改所使用映射的类型。

下一幅图展示了索引图像的结构。图像中的像素以整数表示,该整数是颜色图中存储的颜色值的指针(索引)。

Indexed image and inset showing the pixel index values for a selected region and the mapping of one index to a color in the colormap

图像矩阵和颜色图中值的关系取决于图像矩阵的类。如果图像矩阵是 double 类,那么值 1 指向颜色图中的第一行,值 2 指向第二行,以此类推。如果图像矩阵是 uint8uint16 类,那么有个偏移 - 值 0 指向颜色图中的第一行,值 1 指向第二行,以此类推。在图形文件格式中使用偏移是为了使可支持的颜色数目达到最大。在上面的图像中,图像矩阵是 double 类。由于没有偏移,值 5 指向颜色图的第五行。

灰度(强度)图像

灰度图像有时也称为强度图像,它是一个数据矩阵 I,其中的值表示某一范围内的强度。灰度图像表示为单个矩阵,矩阵的每个元素对应一个图像像素。矩阵可能是 doubleuint8uint16 类。尽管灰度图像很少与颜色图一起保存,但它仍需要用颜色图来显示。实际上,灰度图像被当做索引图像处理。

此图窗描绘了一幅 double 类的灰度图像。

Grayscale image and inset showing the pixel values for a selected region

要显示灰度图像,使请用 imagesc(“图像缩放”)函数,它允许设置强度图像的范围。imagesc 会调整图像数据以使用整个颜色图。使用 imagesc 的双输入形式显示灰度图像,例如:

imagesc(I,[0 1]); colormap(gray);

imagesc 的第二个输入参数指定了所需的强度范围。imagesc 函数通过将范围内的第一个值(通常是 0)映射到第一个颜色图条目,第二个值(通常是 1)映射到最后一个颜色图条目来显示 I。这两者之间的颜色值在余下的颜色图颜色中呈线性分布。

尽管常规的做法是使用灰度颜色图显示灰度图像,但您也可以使用其他颜色图。例如,以下语句以不同深浅的蓝色和绿色显示灰度图像 I

imagesc(I,[0 1]); colormap(winter);

要将具有任意值范围的矩阵 A 显示为灰度图像,请使用 imagesc 的单参数形式。使用一个输入参数,imagesc 会将数据矩阵的最小值映射为第一个颜色图条目,最大值映射为最后一个颜色图条目。例如:这两个线条是等价的:

imagesc(A); colormap(gray)
imagesc(A,[min(A(:)) max(A(:))]); colormap(gray)

RGB(真彩色)图像

RGB 图像,有时称为真彩色图像,以 m×n×3 数据数组形式存储,该数组定义了对应图像每个像素的红色、绿色和蓝色分量。RGB 图像不使用调色板。每个像素的颜色由存储在每个像素位置的颜色平面的红色、绿色和蓝色强度决定。图形文件格式将 RGB 图像存储为 24 位图像,其中红色、绿色和蓝色分量各占 8 位。这样便可能产生 1600 万种颜色。这种可复制现实中图像的精度由此被称为“真彩色图像”。

RGB MATLAB® 数组可以是 doubleuint8uint16 类。在 double 类的 RGB 数组中,每个颜色分量都是 0 到 1 之间的值。颜色分量为 (0,0,0) 的像素显示为黑色,颜色分量为 (1,1,1) 的像素显示为白色。每个像素的三个颜色分量沿数据数组的第三个维度存储。例如像素 (10,5) 的红色、绿色和蓝色分量分别存储在 RGB(10,5,1)RGB(10,5,2)RGB(10,5,3) 中。

要显示真彩色图像 RGB,请使用 image 函数:

image(RGB)

下一幅图显示 double 类的 RGB 图像。

RGB color image and inset showing the red, green, and blue pixel values for a selected region

要确定 (2,3) 处像素的颜色,请查看存储在 (2,3,1:3) 的 RGB 三元组:假设 (2,3,1) 包含值 0.5176,(2,3,2) 包含 0.1608,(2,3,3) 包含 0.0627。则 (2,3) 处的像素颜色是

0.5176 0.1608 0.0627