原文地址:Tiiktak的博客

部分内容引用 CSDN爬金字塔的人

计算机中, 通常以矩阵形式存储图像,根据颜色和灰度多少可以分为灰度图像、二值图像、索引图像和RGB图像

灰度图像

  • 矩阵元素取值范围为[0, 255] (0-黑,255-白),数据类型一般为8位无符号整数【unit8】

  • 某些领域(如医学成像)采用【unit16】和【int16】数据类型

  • 对于计算灰度的操作(如**傅里叶变换**),使用【double】和【single】类型;若图像是【double】或【single】,灰度图像的值通常被归一化标定位【0-1】范围内,0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。

  • 二值图像可以看成是灰度图像的一个特例。

二值图像

  • 一幅二值图像的二维矩阵仅由0、1两个值构成,计算机中二值图像的数据类型通常为1个二进制位

  • 在MATLAB中,二值图像具有非常特殊的意义,只有逻辑数据类型【logical】才被认为是二值图像,就算是只包含0和1的数据类的数组(例如【uint8】),在MATLAB中都不认为是二值图像。可以使用logical将其他类型的数组转换为二值图像:B = logical(A)

索引图像

  • 包括一个数据矩阵X,一个颜色映像矩阵Map。Map是一个包含三列,若干行的数据阵列,其中每个元素的值均为[0,1]之间的双精度浮点型数据。每一行分别表示红, 绿,蓝的颜色值。

  • 在MATLAB中,索引图像是从像素值到颜色映射表值的“直接映射”。像素颜色由数据矩阵X作为索引指向矩阵Map进行索引,例如,值1指向矩阵Map中的第一行,值2指向第二行,以此类推。

  • 一般索引图像只能显示256种颜色(由数据矩阵X的取值范围决定),与灰度图像不同的是,灰度图像的颜色表的值是从0到255连续的值,所以灰度图像的数据我们即可以看成是实际的像素值,也可以看成是索引值。

  • 索引图的优点是存储所需容量小,且索引图像一般用于存放色彩要求比较简单的图像,如Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。

RGB图像

  • RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中

  • 一副大小为MN的RGB图像需要3个MN大小的矩阵表示,每一个矩阵代表一个颜色通道。RGB图像的数据类型一般为【unit】(或【double】),通常用于表示和存放真彩色图像(2^24种颜色),也可存灰度图像(三个通道的值都一样)

  • 在MATLAB中用cat操作将3通道合成彩色图像:rab_image = cat(3, R, G, B);

  • MATLAB中用下面这些命令可以提取出三个通道的图像:

R = rgb_image(:,:,1;
G = rgb_image(:,:,2;
B = rgb_image(:,:,3;