0.1 数字图像
自然界中的图像都是模拟量,在计算机普遍应用之前,电视、电影、照相机等图像记录与传输设备都是使用模拟信号对图像进行处理。但是,计算机只能处理数字量,而不能直接处理模拟图像。所以要在使用计算机处理图像之前进行图像数字化。
0.1.1 什么是数字图像
简单地说,数字图像就是能够在计算机上显示和处理的图像,可根据其特性分为两大类——位图和矢量图。位图通常使用数字阵列来表示,常见格式有BMP、JPG、GIF等;矢量图由矢量数据库表示,接触最多的就是PNG图形。
提示
本书只涉及数字图像中位图图像的处理与识别,如无特别说明,后文提到的“图像”和“数字图像”都仅仅是指位图图像。一般而言,使用数字摄像机或数字照相机得到的图像都是位图图像。
将一幅图像视为一个二维函数f(x, y),其中x和y是空间坐标,而在x – y平面中的任意一对空间坐标(x, y)上的幅值f称为该点图像的灰度、亮度或强度。此时,如果f、x、y均为非负有限离散,则称该图像为数字图像(位图)。
一个大小为M×N数字图像是由M行N列的有限元素组成的,每个元素都有特定的位置和幅值,代表了其所在行列位置上的图像物理信息,如灰度和色彩等。这些元素称为图像元素或像素。
图0.1 位图图像示例
0.1.2 数字图像的显示
不论是CRT显示器还是LCD显示器,都是由许多点构成的,显示图像时这些点对应着图像的像素,称显示器为位映像设备。所谓位映像,就是一个二维的像素矩阵,而位图也就是采用位映像方法显示和存储的图像。当一幅数字图像被放大后就可以明显地看出图像是由很多方格形状的像素构成的,如图0.1所示。
0.1.3 数字图像的分类
根据每个像素所代表信息的不同,可将图像分为二值图像、灰度图像、RGB图像以及索引图像等。
1.二值图像
每个像素只有黑、白两种颜色的图像称为二值图像。在二值图像中,像素只有0和1两种取值,一般用0来表示黑色,用1表示白色。
2.灰度图像
在二值图像中进一步加入许多介于黑色与白色之间的颜色深度,就构成了灰度图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,每种灰度(颜色深度)称为一个灰度级,通常用L表示。在灰度图像中,像素可以取0~L-1之间的整数值,根据保存灰度数值所使用的数据类型不同,可能有256种取值或者说2k种取值,当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为白色。常见颜色的RGB组合值如表0.1所示。
表0.1 常见颜色的RGB组合值
未经压缩的原始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就可以存储,而不会影响显示质量。
上文所指的颜色表就是常说的调色板(Palette),另一种说法叫作颜色查找表(Look Up Table, LUT)。Windows位图中应用到了调色板技术。其实不仅是Windows位图,许多其他的图像文件格式比如PCX、TIF、GIF都应用了这种技术。
在实际应用中,调色板中通常只有少于256种的颜色。在使用许多图像编辑工具生成或者编辑GIF文件的时候,常常会提示用户选择文件包含的颜色数目。当选择较低的颜色数目时,将会有效地降低图像文件的体积,但也会一定程度上降低图像的质量。
使用调色板技术可以减小图像文件体积的条件是图像的像素数目相对较多,而颜色种类相对较少。如果一个图像中用到了全部的24位真彩色,对其使用颜色查找表技术是完全没有意义的,单纯从颜色角度对其进行压缩是不可能的。
0.1.4 数字图像的实质
实际上,0.1.1小节中对于数字图像f(x, y)的定义仅适用于最为一般的情况,即静态的灰度图像。更严格地说,数字图像可以是2个变量(对于静止图像,Static Image)或3个变量(对于动态画面,Video Sequence)的离散函数。在静态图像的情况下是f (x, y),而如果是动态画面,则还需要时间参数t,即f (x, y, t)。函数值可能是一个数值(对于灰度图像),也可能是一个向量(对于彩色图像)。
提示
静态的灰度图像是本书研究的主要对象,对于函数值为向量的情况会在第9章彩色图像处理中阐述。
图像处理是一个涉及诸多研究领域的交叉学科,下面就从不同的角度来审视数字图像。
(1)从线性代数和矩阵论的角度,数字图像就是一个由图像信息组成的二维矩阵,矩阵的每个元素代表对应位置上的图像亮度和/或色彩信息。当然,这个二维矩阵在数据表示和存储上可能不是二维的,这是因为每个单位位置的图像信息可能需要不只一个数值来表示,这样可能需要一个三维矩阵来对其进行表示(参见1.2节关于Matlab中RGB图像表示的介绍)。
(2)由于随机变化和噪声的原因,图像在本质上是统计性的。因而有时将图像函数作为随机过程的实现来观察其存在的优越性。这时有关图像信息量和冗余的问题可以用概率分布和相关函数来描述和考虑。例如,如果知道概率分布,可以用熵(Entropy)H来度量图像的信息量,这是信息论中一个重要的思想。
(3)从线性系统的角度考虑,图像及其处理也可以表示为用狄拉克冲激公式表达的点展开函数的叠加,在使用这种方式对图像进行表示时,可以采用成熟的线性系统理论研究。在大多数时候,都考虑使用线性系统近似的方式对图像进行近似处理以简化算法。虽然实际的图像并不是线性的,但是图像坐标和图像函数的取值都是有限的和非连续的。
0.1.5 数字图像的表示
为了表述像素之间的相对和绝对位置,通常还需要对像素的位置进行坐标约定。本书中所使用的坐标约定如图0.2所示。但在MATLAB中坐标的约定会有变化,具体请参见1.1.5小节。
图0.2 数字图像的坐标约定
在这之后,一幅物理图像就被转化成了数字矩阵,从而成为计算机能够处理的对象了。数字图像f的矩阵表示如下所示。
有时也可以使用传统矩阵表示法来表示数字图像和像素,如下式所示。
其中行列(M行N列)必须为正整数,而离散灰度级数目L一般为2的k次幂,k为整数(因为使用二进制整数值表示灰度值),图像的动态范围为[0, L-1],那么图像存储所需的比特数为b=M×N×k。注意到在矩阵f(y, x)中,一般习惯于先行下标,后列下标的表示方法,因此这里先是纵坐标y(对应行),然后才是横坐标x(对应列)。
而有些图像矩阵中,很多像素的值都是相同的。例如在一个纯黑背景上使用不同灰度勾勒的图像,大多数像素的值都会是0。这种矩阵称为稀疏矩阵(Sparse Matrix),可以通过简单描述非零元素的值和位置来代替,大量地写入0元素。这时存储图像需要的比特数可能会大大减少。
0.1.6 图像的空间和灰度级分辨率
1.图像的空间分辨率(Spatial Resolution)
图像的空间分辨率是指图像中每单位长度所包含的像素或点的数目,常以像素/英寸(pixels per inch, ppi)为单位来表示。如72ppi表示图像中每英寸包含72个像素或点。分辨率越高,图像将越清晰,图像文件所需的磁盘空间也越大,编辑和处理所需的时间也越长。
像素越小,单位长度所包含的像素数据就越多,分辨率也就越高,但同样物理大小范围内所对应图像的尺寸也会越大,存储图像所需要的字节数也越多。因而,在图像的放大缩小算法中,放大就是对图像的过采样,缩小是对图像的欠采样,这些会在4.5节图像缩放中进一步介绍。
一般在没有必要对涉及像素的物理分辨率进行实际度量时,通常会称一幅大小为M×N的数字图像的空间分辨率为M×N像素。
图0.3给出了同一幅图像在不同的空间分辨率下呈现出的不同效果。当高分辨率下的图像以低分辨率表示时,在同等的显示或者打印输出条件下,图像的尺寸变小,细节变得不明显;而当将低分辨率下的图像放大时,则会导致图像的细节仍然模糊,只是尺寸变大。这是因为缩小的图像已经丢失了大量的信息,在放大图像时只能通过复制行列的插值的方法来确定新增像素的取值。
图0.3 图像的空间分辨率——一幅分辨率为1024×1024的图像逐次减少至32×32的分辨率
2.图像的灰度级/辐射计量分辨率(Radiometric Resolution)
在数字图像处理中,灰度级分辨率又叫色阶,是指图像中可分辨的灰度级数目,即前文提到的灰度级数目L,它与存储灰度级别所使用的数据类型有关。由于灰度级度量的是投射到传感器上光辐射值的强度,所以灰度级分辨率也叫辐射计量分辨率。
随着图像的灰度级分辨率逐渐降低,图像中包含的颜色数目变少,从而在颜色的角度造成图像信息受损,同样使图像细节表达受到了一定的影响,如图0.4所示。
图0.4 图像的灰度级分辨率——分别具有256、32、16、8、4和2个灰度级的一幅图像