在计算机中,按照颜色和灰度的多少可以将图像分为灰度图像、二值图像、索引图像和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);
【数字图像处理之(二)】图像的分类
时间: 2024-11-09 14:59:23