初识数字图像处理与机器视觉 数字图像 什么是数字图像
简单地说,数字图像就是能够在计算机上显示和处理的图像,可根据其特性分为两大类——位图和矢量图。位图通常使用数字阵列来表示,常见格式有BMP、JPG、GIF等;矢量图由矢量数据库表示,接触最多的就是PNG图形。
本书只涉及数字图像中位图图像的处理与识别,如无特别说明,后文提到的“图像”和“数字图像”都仅仅是指位图图像。一般而言,使用数字摄像机或数字照相机得到的图像都是位图图像。
将一幅图像视为一个二维函数f (x , y ),其中x 和y 是空间坐标,而在x – y 平面中的任意一对空间坐标(x , y )上的幅值 f 称为该点图像的灰度 、亮度 或强度 。此时,如果f 、x 、y 均为非负有限离散,则称该图像为数字图像 (位图 )。
一个大小为M ×N 数字图像是由M 行N 列的有限元素组成的,每个元素都有特定的位置和幅值,代表了其所在行列位置上的图像物理信息,如灰度和色彩等。这些元素称为图像元素 或像素 。
数字图像的显示不论是CRT显示器还是LCD显示器,都是由许多点构成的,显示图像时这些点对应着图像的像素,称显示器为位映像设备。所谓位映像,就是一个二维的像素矩阵,而位图也就是采用位映像方法显示和存储的图像。当一幅数字图像被放大后就可以明显地看出图像是由很多方格形状的像素构成的。
数字图像的分类根据每个像素所代表信息的不同,可将图像分为二值图像、灰度图像、RGB图像以及索引图像等。
1.二值图像
每个像素只有黑、白两种颜色的图像称为二值图像 。在二值图像中,像素只有0和1两种取值,一般用0来表示黑色,用1表示白色。
2.灰度图像
在二值图像中进一步加入许多介于黑色与白色之间的颜色深度,就构成了灰度图像 。这类图像通常显示为从最暗黑色到最亮的白色的灰度,每种灰度(颜色深度)称为一个灰度级 ,通常用L 表示。在灰度图像中,像素可以取0~L -1之间的整数值,根据保存灰度数值所使用的数据类型不同,可能有256种取值或者说2 k 种取值,当k =1时即退化为二值图像。
3.RGB图像
众所周知,自然界中几乎所有颜色都可以由红(Red, R)、绿(Green, G)、蓝(Blue, B)3种颜色组合而成,通常称它们为RGB三原色。计算机显示彩色图像时采用最多的就是RGB模型,对于每个像素,通过控制R、G、B三原色的合成比例决定该像素的最终显示颜色。
对于三原色RGB中的每一种颜色,可以像灰度图那样使用L 个等级来表示含有这种颜色成分的多少。例如对于含有256个等级的红色,0表示不含红色成分,255表示含有100%的红色成分。同样,绿色和蓝色也可以划分为256个等级。这样每种原色可以用8位二进制据表示,于是3原色总共需要24位二进制数,这样能够表示出的颜色种类数目为256×256××256=224 ,大约有1600万种,已经远远超过普通人所能分辨出的颜色数目。
RGB颜色代码可以使用十六进制数减少书写长度,按照两位一组的方式依次书写R、G、B三种颜色的级别。例如:0xFF0000代表纯红色,0x00FF00代表纯绿色,而0x00FFFF是青色(这是绿色和蓝色的加和)。当RGB三种颜色的浓度一致时,所表示的颜色就退化为灰度,比如0 x808080就是50%的灰色,0x000000为黑色,而0xFFFFFF为白色。
未经压缩的原始BMP文件就是使用RGB标准给出的3个数值来存储图像数据的,称为RGB图像 。在RGB图像中每个像素都是用24位二进制数表示,故也称为24位真彩色图像。
4.索引图像
如果对每个像素都直接使用24位二进制数表示,图像文件的体积将变得十分庞大。来看一个例子,对一个长、宽各为200像素,颜色数为16的彩色图像,每个像素都用RGB三个分量表示。这样每个像素由3个字节表示,整个图像就是200×200×3=120kB。这种完全未经压缩的表示方式,浪费了大量的存储空间,下面简单介绍另一种更节省空间的存储方式:索引图像 。
同样还是对200×200像素的16色图像,由于这张图片中最多只有16种颜色,那么可以用一张颜色表(16×3的二维数组)保存这16种颜色对应的RGB值,在表示图像的矩阵中使用那16种颜色在颜色表中的索引(偏移量)作为数据写入相应的行列位置。例如,颜色表中第3个元素为0xAA1111,那么在图像中所有颜色为0xAA1111的像素均可以由3-1=2表示(颜色表索引下标从0开始)。这样一来,每一个像素所需要使用的二进制数就仅仅为4位(0.5字节),从而整个图像只需要200×200×0.5=20kB就可以存储,而不会影响显示质量。