在计算机中,依照颜色和灰度的多少能够将图像分为灰度图像、二值图像、索引图像和RGB图像四种基本类型。在计算机中,一般是以数组(或矩阵)的形式储存图像的。
灰度图像:
- 灰度图像矩阵元素的取值范围通常为[0,255]。
因此其数据类型一般为8位无符号整数的【uint8】,这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色。中间的数字从小到大表示由黑到白的过渡色。
- 然而。在某些领域(比如医学成像),要求提供超出【uint8】的动态范围。会採用【uint16】和【int16】数据类型。
- 针对计算灰度的操作(比如傅里叶变换)。会使用 【double】
和【single】类型;假设图像是【double】或【single】数据类型。灰度图像的值通常被归一化标定位【0-1】范围内,0代表黑色,1代表白色。0到1之间的小数表示不同的灰度等级。
二值图像能够看成是灰度图像的一个特例。
(注意:图像的类型。和图像的数据类型是全然不同的概念,前者代表图像的本身。后者仅仅是图像在计算机上的存储方式而已)
二值图像:
- 一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。
因为每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。
- 在MATLAB中,二值图像具有很特殊的意义。仅仅有逻辑数据类型【logical】才被觉得是二值图像,就算是仅仅包括0和1的数据类的数组(比如【uint8】),在MATLAB中都不觉得是二值图像。
能够使用logical将其它类型的数组转换为二值图像:B = logical(A)
索引图像:
- 索引图像包括一个数据矩阵X。一个颜色映像矩阵Map。当中Map是一个包括三列、若干行的数据阵列。当中每个元素的值均为[0, 1]之间的双精度浮点型数据。
Map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在MATLAB中,索引图像是从像素值到颜色映射表值的“直接映射”。像素颜色由数据矩阵X作为索引指向矩阵Map进行索引,比如,值1指向矩阵Map中的第一行。值2指向第二行,以此类推。
- 一般索引图像仅仅能显示256种颜色(由数据矩阵X的取值范围决定),与灰度图像不同的是,灰度图像的颜色表的值是从0到255连续的值,所以灰度图像的数据我们即能够看成是实际的像素值。也能够看成是索引值。
- 索引图的长处是存储所需容量小。且索引图像一般用于存放色彩要求比較简单的图像,如Windows中色彩构成比較简单的壁纸多採用索引图像存放,假设图像的色彩比較复杂,就要用到RGB真彩色图像。
RBG图像:
- RGB图像与索引图像一样都能够用来表示彩色图像。与索引图像一样。它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中。
- 因为每一像素的颜色需由R、G、B三个分量来表示,一副大小为M*N的RGB图像须要3个M*N大小的矩阵表示。每个矩阵代表一个颜色通道。
RGB图像的数据类型一般为【uint】数据类型(也能够是【double】)。通经常使用于表示和存放真彩色图像(有2^24种颜色),当然也能够存放灰度图像(假设3个通道的值都是一样的。则为灰度图像)。
- 在MATLAB中用cat操作将3通道合成彩色图像:rab_image = cat(3, R, G, B);
- 用以下这些命令能够提取出三个通道的图像:
- R = rgb_image(:。:。1);
- G = rgb_image(:。:,2);
- B = rgb_image(:,:,3);