1.2 数字图像基础
1.2.1 数字图像基础概述
随着计算机的发展,人们开始利用计算机来处理图形和图像信息,随后数字图像处理在20世纪60年代初期正式成为一门学科。早期图像处理的目的是改善图像的质量,如美国喷气推进实验室(JPL)对航天探测器徘徊者7号于1964年发回的几千张月球照片使用了图像处理技术,包括几何校正、灰度变换、去除噪声等,成功地绘制了月球表面地图,获得了巨大的成功。最近半个多世纪以来,数字图像处理技术发展迅猛,如今已经深入人们生活的各个方面。
1.数字图像的起源
图像是什么?可以说图像是一门“语言”,是人类文明进化的象征,人类起源时没有图像记录信息。
据《易·系辞下》记录,“上古结绳而治,后世圣人易之书契,百官以治,万民以查。”也就是说,最开始文字并不存在,大家采用结绳的方法来记录信息。中国在商朝后才有了自己的文字——甲骨文,这也是我们现在使用的汉字的起源。再后来,随着西方文明的发展,有了照片,从此我们进入了多媒体记录信息的时代。
如今,图片视频已经成了人们日常生活中非常重要的记忆载体。
英文image来源于拉丁文imāgō,它的含义很多,如reflection、visible form等,表示一种语言的表达。
图像包括图和像两个维度的含义,其中,图是一直客观存在的光的分布,而像是图在人大脑中的印象。
真正物理意义上的图像是1826年前后法国科学家Joseph Nicéphore Niépce发明的第一张可永久保存的照片,它属于模拟图像。模拟图像又称连续图像,它通过某种物理量(如光、电等)的强弱变化来记录图像的亮度信息,所以信息是连续变换的。模拟图像的缺点是容易受干扰,如今已经基本被数字图像替代。
在第一次世界大战后,1921年,美国科学家发明了Bartlane System,并用这个系统从伦敦向纽约传输了第一幅数字图像(其亮度用离散数值表示)。这是一种电缆图片传输系统,它将图片编码成5个灰度级(1929年发展成15个灰度级),通过海底电缆完成传输过程。在发送端,图片被编码并被打孔带记录,通过系统传输后,接收方使用特殊的打印机将图片恢复。
第二次世界大战时,世界各国报纸上的图像都是采用Bartlane System进行传输的。
1950年左右,随着计算机被发明和应用,数字图像处理学科正式诞生。
2.灰度量化与对比度
计算机是采用0/1编码的系统,数字图像也是利用0/1来记录信息的,人们平常接触的图像都是二进制的8位数图像,包含0~255灰度,其中,0代表最黑,255代表最白,亮度从0到255逐渐递增,图1.3所示为数字图像离散后的16阶灰度示意,从左到右、从上到下灰度依次递增。
图1.3 数字图像离散后的16阶灰度示意
其实人眼对亮度对比的敏感度远远超过亮度本身,这也是计算机视觉分层理论的体现。19世纪,著名的奥地利物理学家马赫在观察一个亮度渐变的边缘时,发现主观感觉在亮的一端呈现一个特别亮的亮带,在暗的一端呈现一个特别暗的暗带,这就是马赫带现象,如图1.4所示。
图1.4 马赫带现象
图1.4从左到右包含了若干个不同的灰度级,灰度在边缘其实是阶跃变换的,人眼在亮的一侧感受到的亮度比它实际的灰度更亮,在暗的一侧感受到的亮度比它实际的灰度更暗,这就产生了伪边缘效应,主观地增强了边缘对比度。马赫带现象进一步验证了人眼对于边缘的敏感性。
3.分辨率
数字图像有两个分辨率,即图像分辨率与输出分辨率。
图像分辨率(Pixels Per Inch,PPI)是指每英寸的像素数。人们平常说一张图片大小,如2400万像素,使用的就是图像分辨率。其也常用“水平像素数×垂直像素数”表示,如一张图片的分辨率是6000×4000,其中,6000是水平像素数,4000是垂直像素数,两者相乘等于2400万像素。
输出分辨率(Dots Per Inch,DPI)是指设备输出图像时每英寸可产生的点数。
这两个分辨率的区别就在于Dot和Pixel。Dot指显示器上的物理点,它是物理设备可以解析的最小单位,而Pixel指屏幕分辨率中的最小单位。印刷、摄影等行业常用的分辨率是DPI,常常要求DPI不低于300,而日常生活和数字图像处理中多采用PPI。
相同的PPI,更高的DPI表现为物理尺寸更小,因为此时每英寸点更多,每英寸像素更多。
如图1.5所示,两幅子图的PPI是相等的,都是1920像素×1328像素,但左图的DPI=72,物理尺寸为高46.85cm、宽67.73cm;右图的DPI=150,物理尺寸为高22.47cm、宽32.49cm,左图尺寸更大。
图1.5 相同的PPI,不同的DPI
DPI相同,PPI较低表现为较低的分辨率,此时每英寸的像素变少。如图1.6所示的两幅子图,其DPI相等,但右图分辨率较低,像素数较少,清晰度明显有所下降。
图1.6 相同的DPI,不同的PPI
4.彩色空间
根据图像的通道数,常见的图像分为灰度图和彩色图两种,灰度图只包含亮度信息,而彩色图不仅包含亮度信息,还包含颜色信息,如图1.7所示。
图1.7 灰度图与彩色图
人们平常接触最多的是RGB彩色图,其由红(Red)、绿(Green)、蓝(Blue)3个通道组成,一幅图像的每个像素都由矢量(R,G,B)表示。
这是在消费市场最广泛使用的颜色空间,如计算机、电视机等显示器系统都采用RGB颜色空间来显示图像。RGB颜色空间背后的生物学原理是,人眼有3种辨别颜色的视锥细胞,而这些细胞分别对红、绿、蓝这3种颜色的光最敏感。在自然界中,肉眼所能看到的任何色彩都可以由这3种色彩叠加而成,这也被称为加色原理。例如,黄色可以通过红色和绿色相加得到,全红色为(255,0,0),全绿色为(0,255,0),全黄色为(255,255,0)。
除了RGB颜色空间,常用的颜色空间还有HSV/HSB、HSL、CMYK、YUV、Lab等。
HSV由色相(Hue,H)、饱和度(Saturation,S)、明度(Value,V)组成,是一种将RGB颜色空间中的点在六角锥体中进行表示的方法。色相(H)是色彩的基本属性,也就是颜色名称,如红色、绿色等;饱和度(S)是指色彩的纯度,饱和度越高,色彩纯度越高,它也可以理解为掺入白光的分量,白光分量越大,饱和度越低,S取值为0~100%;明度(V)表示颜色明亮的程度,取值为0~1,取值从0到1,表示从黑到白的过渡。
HSB由色相(Hue)、饱和度(Saturation)、亮度(Brightness)组成,与HSV一样,只不过叫法不同。
HSL由色相(Hue)、饱和度(Saturation)、明度(Lightness)组成。HSL和HSV中的H(色相)完全一致,但是饱和度不一样,明度也不一样。HSL和HSV两种表示方法在目的上类似,但在方法上有区别。在数学表示上,两者都是圆柱,HSL表示了一个双圆锥体和圆球体(白色在上顶点,黑色在下顶点),而HSV表示了一个倒圆锥体(黑色在下顶点,白色在上底面圆心)。
CMYK是彩色印刷时采用的一种套色模式。采用青色(Cyan,C)、洋红色(Magenta,M)、黄色(Yellow,Y)、黑色(Black,K)4种颜色进行混色,可以实现“全彩印刷”。CMY 3种颜色在理论上可以等同于RGB三色光的补色,但现实中的彩色印刷材料不纯,用CMY 3种颜色进行叠加后得到的黑色不纯,而且不易干燥,因此黑色成为彩色印刷的色彩之一。
YUV是被欧洲电视系统所采用的一种颜色编码方法。在YUV颜色空间中,每种颜色都有一个亮度信号Y和两个色度信号U和V。如果只有Y信号分量而没有U、V信号分量,那么对应的图像就是黑白灰度图像。彩色电视信号采用YUV颜色空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的相容问题,使黑白电视机也能接收彩色电视信号。
Lab即颜色-对立空间(Lab Color Space),其中,L表示亮度,a和b表示颜色对立维度,a通道的数值变化使最终的颜色在红色和绿色之间变化,b通道的数值变化使最终的颜色在黄色和蓝色之间变化。Lab颜色空间接近人类视觉,它致力于感知均匀性,其中,L分量密切匹配人类亮度感知,而a和b分量则用于控制颜色过渡。这些变换在RGB或CMYK中是不可能的,因为RGB和CMYK基于物理设备的输出来建模,没有与人类视觉感知相似的特性。当然Lab颜色空间中的很多“颜色”超出了人类视觉的范围,因此是非真实色彩。
1.2.2 数字图像处理基础
本书关注的是深度学习在计算机视觉领域的应用,因此下面对数字图像处理的基础知识进行简单阐述。
1.直方图
图像中的直方图用来表示数字图像中的亮度分布,对像素灰度值进行统计就能得到直方图,研究者可以观察直方图来了解图像的整体灰度值分布。在直方图中,左侧为较暗的区域,右侧为较亮的区域。
图1.8所示的两幅子图分别是图1.7中灰度图和彩色图对应的直方图。
我们可以看到,灰度图直方图包含两个很明显的分布,彩色图直方图的红色通道[见图1.8(b)中实线]也包含左右两个很明显的分布,它们分别对应“前景”和“背景”。
图1.9所示中框出来的就是我们感兴趣的“柿子”,它就是前景,灰度比较高,对应直方图中的灰度高峰。
图1.8 灰度图的直方图与彩色图的直方图
图1.9 图像前景主体
2.边缘
视觉机制和马赫带现象都表明,人眼对不连续的东西是最敏感的,而图像中最常见的不连续的东西就是图像边缘。
边缘检测在计算机视觉与图像处理中较基础且应用广泛。可以通过提取目标的轮廓来识别不同的物体,并且将其作为图像的特征表示。传统的边缘检测方法有很多,可以将它们划分为两类:基于一阶导数的方法和基于二阶导数的方法。
边缘检测主要有以下几种代表性的方法。
(1)Roberts算子:这是一种最简单的算子,它采用对角线方向相邻两像素之差作为梯度幅值来检测边缘;Roberts算子对垂直边缘的检测效果好于斜向边缘,定位精度高,对噪声敏感,无法抑制噪声的影响。
(2)Prewitt算子:这是一种一阶微分算子,它利用像素点上下、左右邻点的灰度差进行检测,可去掉部分伪边缘,对噪声具有一定的平滑作用,但容易出现多像素宽度。
(3)Sobel算子:它是基于一阶导数的边缘检测算子,该算子中引入了类似局部平均的运算,因此对噪声具有一定的抑制能力;Sobel算子对像素位置的影响做了加权,相比之下比Prewitt算子、Roberts算子效果更好。
(4)Laplacian算子:这是一种二阶微分算子,二阶微分在图像亮的一侧是负的,在暗的一侧是正的,所以边缘点就是过零点;Laplacian算子对噪声比较敏感,因此只适用于无噪声图像;它容易丢失部分边缘方向信息,造成一些不连续的检测边缘;在存在噪声的情况下,使用Laplacian算子检测边缘之前需要先进行低通滤波。
(5)Canny算子:其效果比以上的算子效果更好,但实现起来步骤最复杂,一般首先要经过降噪处理,将原始图像和高斯平滑模板做卷积,得到一个比较模糊的图像,这个操作平滑了像素噪声;然后使用4个掩模分别检测每个点的水平、垂直和对角线的梯度,获取每个点的亮度梯度图和梯度方向;最后根据上一步获取的梯度图,使用双阈值方法跟踪连续的曲线边缘;Canny算子的优点是对噪声不敏感,缺点是在用高斯函数对图像进行平滑处理的过程中会使高频边缘被平滑掉,从而造成边缘丢失。
图1.10所示为Sobel算子和Canny算子对图1.7中柿子的边缘检测结果,Canny算子的高、低阈值分别是300、100。
图1.10 Sobel算子和Canny算子边缘检测结果
3.对比度
图像有高亮度也有低亮度,对应的就是白与黑,目前多数显示系统利用8字节进行存储,即灰度值0代表最黑,灰度值255代表最亮,不过大部分图像上的亮度范围通常都小于灰度最大值与最小值之差。这里的最大值与最小值之差就是对比度,从视觉上来看就是画面的明暗反差程度。
对比度有全局对比度和局部对比度之分。增加对比度,画面中亮的地方会更亮,暗的地方会更暗,明暗反差会增强。图1.11所示为对比度变化示例,可以看到,降低对比度后明处和暗处的反差减小,增加对比度后,明处和暗处的反差增大。
图1.11 对比度变化示例
常用的对比度调整方法有线性拉伸变换、伽马变换、直方图均衡化等。
1)线性拉伸变换
线性拉伸变换采用线性函数对图像的灰度值进行变换,将灰度值拉伸到0~255的整个区间,通常采用的函数是,其中,xmin、xmax分别是原始图像的极小灰度值和极大灰度值。
2)伽马变换(Gamma Transform)
伽马变换采用非线性函数(指数函数)对图像的灰度值进行变换,使输出图像灰度值与输入图像灰度值呈现指数关系。输入图像灰度值r和输出图像灰度值s之间的关系为s=crγ。
不同的伽马系数γ变换效果不同,如图1.12所示。当γ<1时,伽马变换可以实现原始较暗图像的灰度值提升,如图1.13所示。
图1.12 伽马变换在不同伽马系数下的变换曲线
图1.13 当γ小于等于1时,不同γ系数下的变换结果
通过伽马变换本质上是对感兴趣的图像灰度进行展宽,对不感兴趣的图像灰度进行压缩,从而实现图像增强的效果。
3)直方图均衡化
直方图均衡化通常用来增加图像的全局对比度,尤其是当图像中主体和背景对比度相当接近时。直方图均衡化的效果就是让直方图更均衡地分布,这种方法对于背景和前景都太亮或太暗的图像(通常是曝光过度或曝光不足的图片)非常有用。
直方图均衡化还是可逆操作,如果已知均衡化函数,还可以恢复原始的直方图,并且计算量不大。这种方法的一个缺点是它对处理的数据不加选择,可能会增加背景噪声的对比度并降低有用信号的对比度。比全局直方图均衡算法更好的是局部直方图均衡算法,它可以更好地增强图像的局部细节,局部直方图均衡算法依据选取子块的不同有所不同。
4.清晰度
清晰度是指边缘附近的灰度对比。如果增加清晰度,边缘较暗的一侧会变得更暗,边缘较亮的一侧会变得更亮,物体轮廓会更加清晰,不过如果清晰度调节过度,会使边缘附近出现晕影。可以通过锐化来增加清晰度;可以通过降低图像分辨率、增加模糊等方法来降低清晰度。图1.14所示分别为高清晰度图和低清晰度图。
图1.14 高清晰度图和低清晰度图
5.数字图像处理与计算机视觉的联系
计算机视觉与数字图像处理的学科基础理论相似,在技术和应用领域也有很大一部分重叠。
数字图像处理系统的输入是图像,输出也是图像。它是针对像素级的操作,如提高图像对比度、边缘提取、去噪声和几何变换等。数字图像处理实现的是图像的某种增强和变换,并没有产生更高层次的理解。计算机视觉系统的输入是图像,输出则是模式识别的结果,它是对图像内容的抽象层级的理解。因此,两者对图像的理解层次不同,数字图像处理注重底层图像变换,而计算机视觉注重高层感知。