第3章数字图像的基本运算

图像处理的实质是通过对图像的某种运算处理,使处理后的图像满足人的视觉或机器识别的应用需求。从严格的意义上来说,各种图像处理方法都是一种图像运算方法。但从一般意义上来说,图像运算仅指对一幅图像中的所有像素实施了相同处理,或对两幅输入图像进行像素对像素的灰度值运算的那些运算,比如图像的点运算、直方图运算、代数运算、几何运算等。
图像的点运算是指按照某种灰度变换关系,逐像素地对图像中的每个像素的灰度值进行变换的方法,本章介绍图像的灰度反转和对数变换,图像点运算的其他内容详见4.1节。
图像直方图本身就是逐个地对图像中各像素的灰度值出现的频数进行统计的结果,在此基础上形成的图像直方图又引出了一系列的运算和处理方法,最具有代表性的基于直方图的图像增强方法有直方图均衡和直方图规定化(详见4.2.2节)。从表面上看,直方图均衡和直方图规定化是用于改变图像的直方图分布,但实质上也是一种对图像中的所有像素实施了相同处理的运算,因此也可以称为直方图运算。但由于直方图均衡和直方图规定化的直接目的是进行图像增强,所以一般把该部分内容都放在图像增强一章介绍。
图像的代数运算是指对两幅(分辨率大小相同的)输入图像进行的点对点的灰度值运算,包括两幅图像的相加运算和两幅图像的相减运算。图像处理中的那些属于模板运算(详见4.3.1节)类的处理方法,比如4.3节的基于空间平滑滤波的图像增强方法和4.4节的基于空间锐化滤波的图像增强方法等,由于其不属于“两幅输入图像进行的像素对像素的灰度值运算”,所以本书未把这类运算中涉及的相乘运算列入图像的代数运算中。
图像的几何运算也称为图像的几何变换,主要包括图像的平移变换、图像的旋转变换、图像镜像、图像的转置、图像的缩小与放大等。
本章首先介绍图像的灰度反转和对数变换,然后介绍图像直方图及其有关运算方法,接着介绍图像的代数运算方法,最后介绍图像的几何运算方法。
3.1灰 度 反 转
黑白图像的反转就是使灰度值为1的像素值变成0,使灰度值为0的像素值变成1。
对于256灰度级图像来说,图像的灰度反转值就是用255分别减去原图像f(x,y)的各像素的灰度值。一般地,设图像的灰度级为L,则图像的灰度反转可表示为

g(x,y)=L-1-f(x,y)(3.1)


256灰度级图像的灰度反转原理如图3.1(a)所示,灰度图像反转示例如图3.1(b)和图3.1(c)所示。


图3.1灰度图像反转原理及示例


3.2对 数 变 换
对原图像f(x,y)进行对数变换的解析式可表示为

g(x,y)=clg(1+f(x,y))(3.2)





其中,c是一个常数。
对数变换的作用是对原图像的灰度值动态范围进行压缩,主要用于调高输入图像的低灰度值。比如对于傅里叶频谱来说,要显示的值的范围往往比较大,而傅里叶频谱要显示的重点是突出最亮的像素(对应于低频成分),而这在一个8比特的显示系统中会损失频谱图像中的低灰度值部分(对应于高频成分)。在这种情况下,就可依据式(3.2)对频谱进行变换(这时c=1),调高频谱图像的低灰度值而对高灰度值又尽可能地影响最小。傅里叶频谱的显示一般是通过这种方式的调整来进行显示的,如图3.2所示。


图3.2利用对数变换对图像的傅里叶频谱进行调整示例


3.3灰度直方图
在数字图像处理中,灰度图像的直方图(简称为灰度直方图)是一种描述一幅灰度图像中灰度级内容的最简单且最有用的工具,也是对灰度图像进行多种处理的基础。
3.3.1灰度直方图与灰度图像的对比度
1.  灰度直方图
灰度图像的直方图是一种表示数字图像中灰度级分布的函数,即表示灰度图像中各灰度级及其出现频率(个数)的
关系的函数。直方图的横坐标表示图像中像素的灰度级别(即亮度级别),取值范围为0~255;直方图的纵坐标表示图像中各灰度级别的像素数量(即统计的各灰度级别像素的个数)。

设一幅数字图像的灰度级范围为[0,L-1],则该图像的灰度直方图可定义为

H(P)=[h(r1),h(r2),…,h(rL-1)](3.3a)

h(rk)=nk(k=0,1,…,L-1)(3.3b)

其中,rk表示第k级灰度值; nk表示图像中灰度值为rk的像素的个数; H(P)是灰度图像的直方图函数。在有些文献中提及的一维直方图即是本节所讲的灰度图像的直方图。
理解和观看直方图的规则一是“左黑右白”或“左暗右亮”; 二是横轴上各(亮度值)点对应的柱状高度就是分布在该亮度的像素个数; 三是当柱状接近分布在整个横轴上,且至少有一个峰值时,图像的对比度较好。
2. 灰度图像的对比度
灰度图像的对比度是指一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,可以用图像画面中最大的灰度值与最小的灰度值的比值来表示。一般来说,对比度越大,灰度图像越清晰、醒目; 对比度越小,灰度图像的整个画面就会越显得灰蒙蒙的。显然,高对比度对于图像的清晰度、细节表现、灰度层次表现都有很大帮助。
对比度直观地反映了图像中目标之内或目标与周围背景之间的亮度差别。如果成像系统在物体成像过程中对比度值选取得比较低,那么该物体所成的像(目标)看起来就比实际物体要暗一些; 如果对比度降至0,则物体将会从图像中消失。
3. 图像直方图的分布特征及其与图像对比度的关系
下面用一组图像及其直方图的实例说明图像直方图的分布特征及其与图像对比度的关系。图3.3是具有四种基本图像类型(暗并低对比度、亮并低对比度、低对比度、高对比度)的图像及其灰度直方图。


图3.3四种基本图像类型(暗、亮、低对比度、高对比度)的图像及其灰度直方图




图3.3(续)

图3.3说明了四种基本图像类型的图像直方图分布特征: 当图像比较暗时,图像中的各像素的灰度值都比较小,所以直方图中的灰度分布主要集中在低像素级一端(左端); 由于图像中最大“白像素”和最小“黑像素”的比值较小,所以该类直方图的图像的对比度也比较低。当图像比较亮时,图像中的各像素的灰度值都比较大,所以直方图中的灰度分布主要集中在高像素级一端(右端); 同理由于图像中最大“白像素”和最小“黑像素”的比值较小,所以该类直方图的图像的对比度也比较低。当图像的对比度比较低时,说明图像中多数较亮的那些像素的灰度值与图像中多数较暗的那些像素的灰度值的差别比较小,所以图像的直方图中的灰度分布就比较集中地分布在某个灰度值差较小的范围内,即图像直方图就会聚集在某些灰度值范围内。当图像的对比度比较高时,图像的直方图中的灰度就会相对比较均匀地分布在整个灰度级范围内。
3.3.2灰度直方图的特征
灰度直方图具有如下一些特征。
(1) 灰度直方图仅能反映灰度图像中具有不同灰度值的像素出现的次数(或频率),不能反映出灰度图像中各像素所在的(空间)位置信息。
(2) 灰度图像与灰度直方图之间存在着多对一的映射关系,即任一特定的灰度图像都有唯一对应的直方图,但不同的灰度图像可能有相同的直方图。
(3) 对于空间分辨率为M×N且灰度级范围为[0,L-1]的图像,有关系

∑L-1j=0h(j)=M×N(3.4)


(4) 如果一幅图像由两个不连接的区域组成,则整幅图像的直方图等于两个不连接的区域的直方图之和。
3.3.3归一化灰度直方图
由于式(3.3)所定义的灰度直方图反映的是图像中各灰度的实际出现频数(计数值),这样当某个灰度值的频数远远大于其他灰度值的频数时,根据图像的某个或某些像素出现的最大频数来确定直方图的纵坐标的最大尺度既不方便也不太现实。也就是说,可能会出现由于直方图的纵坐标与横坐标尺寸过于悬殊而难于直观显示完整直方图的情况。为了能完整地显示任何形式的图像的直方图,通常采用归一化形式的直方图,即将直方图的横坐标取值变换到区间[0,1],将直方图的纵坐标取值也变换到区间[0,1]。通常,如不加特殊说明,人们提到的直方图都是指归一化的直方图。
设rk为图像f(x,y)的第k级灰度值,nk是图像f(x,y)中具有灰度值rk的像素的个数,n是图像f(x,y)的像素总数,则图像f(x,y)的(归一化)灰度直方图定义为

H(P)=[h(r1),h(r2),…,h(rL-1)](3.5a)

P(rk)=nkn(0≤rk≤1; k=0,1,…,L-1)(3.5b)


显然,P(rk)给出的是rk出现概率的估计,提供的是图像的灰度值分布情况。
有关直方图的应用将会在后续相关的章节中介绍。
3.4图像的代数运算
图像的代数运算包括两幅图像的相加运算和相减运算。
3.4.1图像的相加运算
图像相加是通过对两幅大小相同的图像对应位置像素的相加运算,以产生一幅新的含有两幅图像信息的图像的方法。图像相加也称为图像合成。设f1(x,y)和f2(x,y)分别表示大小为M×N的两幅输入图像,图像f1(x,y)和图像f2(x,y)相加后得到的结果输出图像为g(x,y),且x∈[0,M-1],y∈[0,N-1],则两幅图像的相加运算可表示为

g(x,y)=f1(x,y)+f2(x,y)(3.6)


图像相加运算的主要应用有两类。
1. 两幅图像内容的叠加/合成
两幅256灰度级图像对应坐标位置像素值的相加,其结果必然会超过其最大的灰度表示范围255。最常用的处理方法是将两幅图像的灰度值折半相加,如式(3.7)所示; 其实质就是将两幅图像像素灰度值相加后的平均值作为相加结果。

g(x,y)=IntegerRound12f1(x,y)+12f2(x,y)(3.7)

其中,IntegerRound为四舍五入取整函数,即要将相加运算的结果置为整数值。由于数字图像的灰度值都是整数,所以严格来说有关图像的任何相加、相减、相乘和相除运算,对其运算结果都应用函数IntegerRound进行四舍五入的取整处理。但为了简化起见,本书后续有关图像灰度值的运算公式均略去了IntegerRound函数。
图3.4给出了一个两幅灰度图像按式(3.7)相加的示例。图3.4(a)和图3.4(b)是两幅不同的输入图像,图3.4(c)是由两幅输入图像进行相加运算后合成的图像。


图3.4图像的相加运算示例


式(3.7)可以推广到两幅灰度图像按不同比例灰度值的叠加/合成,如式(3.8)所示。

g(x,y)=αf1(x,y)+βf2(x,y)(3.8)

其中,α+β=1。
两幅灰度图像相加的另一种典型方式是,根据两幅图像所有像素灰度值相加结果的最小值和最大值情况,将其等比例缩小到结果图像灰度值符合0~255的灰度值范围。这样做的结果是使图像的亮度分布到整个256灰度区间。
两幅灰度图像及彩色图像的相加/合成运算,也可以推广到多幅图像的相加/合成。
2.  多幅图像的叠加去加性噪声
利用多幅灰度图像的叠加运算可以去除加性(additive)随机噪声。
图像的加性噪声可以简单地理解为在图像的背景中,与其相邻像素的灰度值相比,那些有明显差异的一些随机的、离散的和孤立的像素,最容易理解的是黑区域上叠加的白点或白区域上叠加的黑点。
由于噪声产生的随机性,从同一场景获取的多幅图像中的噪声不可能完全相同。因此,就可以通过对同一场景的多幅图像的灰度值求平均值,实现消除图像叠加噪声的目的。
当噪声为互不相关且均值为零时,利用式(3.9)的N幅灰度图像的均值定义式可降低噪声的影响。

g(x,y)=1N∑Ni=1fi(x,y)(3.9)


图3.5(a)是由于闪电、雷击、大气中的电暴等而产生加性噪声的天文图像,图3.5(b)是类似于图3.5(a)的两幅图像叠加的去加性噪声的结果,图3.5(c)是类似于图3.5(a)的4幅图像叠加的去加性噪声的结果,图3.5(d)是类似于图3.5(a)的16幅图像叠加的去加性噪声的结果。可见,叠加的图像幅数越多,去除加性噪声的效果越明显。


图3.5利用图像叠加运算去加性噪声的效果示例


3.4.2图像的相减运算
设f1(x,y)和f2(x,y)表示大小为M×N的两幅输入图像,从图像f1(x,y)中的各位置的像素值中减去图像f2(x,y)的相应位置的像素值后,得到的结果输出图像为g(x,y),且x∈[0,M-1],y∈[0,N-1],则两幅图像的相减运算可表示为

g(x,y)=f1(x,y)-f2(x,y)(3.10)


当两幅256灰度级图像对应坐标位置像素值相减的结果大于或等于零时,则取其为结果图像中对应位置像素的灰度值; 当相减结果小于零时,一般都是取零为结果值。当然,对于某些特殊的应用目的,也可以取其绝对值为结果值。
图像相减运算的典型应用是图像的变化检测。比如目前得到广泛应用的图像监控系统,通过定时地将图像监控系统拍摄的现场图像与该现场初始情况下的图像进行相减运算,就可以判定被监控场景是否有异样情况出现。如图3.6所示,图3.6(a)是监控系统某时刻拍摄的现场监控图像,图3.6(b)是被监控现场的初始图像,图3.6(c)是从图3.6(a)中减去图3.6(b)后的结果图像。


图3.6图像的相减运算示例


这里需要注意的是,图像的灰度级是一个已有约定的有限大小的整数。以256的灰度级图像为例,图像代数运算的结果理应要求像素值不能大于255,也不能为负数。所以在有关的应用中一般都有对运算结果中不符合要求的像素值的处理约定。比如,运算结果为负时取0值或取其绝对值,对运算结果大于255的像素值取255或取关于256的模运算(MOD)结果等。
3.5图像的几何运算
图像的几何运算又称为图像的几何变换,用于使原图像产生大小、形状和位置等变化效果。图像的几何运算包括图像的平移变换、图像的旋转变换、图像镜像、图像转置、图像的缩放等。
3.5.1图像平移变换
图像平移(image translation)变换是指将一幅图像或一幅图像中的子图像块(以下简称为图像块)中的所有像素,都按指定的x方向和y方向的偏移量Δx和Δy进行移动。
设初始坐标为(x0,y0)的像素平移(Δx,Δy)后的坐标为(x1,y1),如图3.7所示,则有

x1=x0+Δx


y1=y0+Δy(3.11)



图3.7平移原理图


图像平移变换式(3.11)的矩阵形式为

x1
y1
1=10Δx

01Δy

001x0
y0
1(3.12)


图像的平移一般分为两种情况。
(1) 图像块平移。即将一幅图像中的某个子图像块平移到另一处。例如在图3.8中,Lena眼部的一个子图像块被平移到了该图像的右下角,该子图像块同时覆盖掉了新位置上原来的图像内容。
(2) 整幅图像平移。整幅图像平移后,相对于原来图像(位置)来说,如果完整保持被平移的原图像内容,形成的新结果图像的幅面就被放大了; 如果平移后的结果图像仍保持原来图像的幅面大小,被移出的部分就要被截掉。图3.9给出了整幅图像平移后不放大而将移出的部分截断的例子。


图3.8图像(子图像块)平移示例




图3.9整幅图像平移后截断移出部分的结果示例


3.5.2图像旋转变换
图像旋转(image rotation)变换是指以图像的中心为原点,将图像中的所有像素(即整幅图像)旋转一个相同的角度。
与图像平移变换类似,图像旋转变换的结果图像也分为两种情况: 一是旋转后的图像幅面被放大,如图3.10所示; 二是保持图像旋转前后的幅面大小,把旋转后图像被转出原幅面大小的那部分截断。


图3.10整幅图像旋转后图像幅面放大示例


下面仅介绍图像旋转后图像幅面被放大情况下的图像旋转变换和逆变换方法; 对图像旋转前后幅面大小保持不变,而把旋转后超出原幅面大小的那部分图像截断的图像旋转变换和逆变换内容感兴趣的读者,请参阅有关文献。
由于图像旋转变换的实现实质上是以图像的屏幕坐标中心为原点,将图像中的所有像素(即整幅图像)旋转一个相同的角度; 因此图像旋转变换公式的推导分为两步,第一步先以图像屏幕中心为xOy平面数学坐标系原点,并基于该坐标系推导出图像上像素旋转变换公式和逆变换公式; 第二步再把第一步推导的变换公式和逆变换公式映射到图像的显示坐标,即映射到以屏幕左上角为坐标系原点的图像显示坐标系统,最终得出在显示坐标下的图像旋转变换公式及逆变换公式。
1.  基于xOy平面坐标系的点旋转变换
在图3.11的原点位于显示屏幕中心的xOy平面坐标系中(设图中的矩形框为屏幕显示区),设位于(x0,y0)处的点到坐标原点的直线r与x轴的夹角为α,直线r顺时针旋转β角度后使位于(x0,y0)处的点被旋转至(x1,y1)处。


图3.11基于xOy平面坐标系的

点旋转原理示意图

显然,在旋转前

x0=rcosα


y0=rsinα(3.13)


旋转后

x1=rcos(α-β)=rcosαcosβ+rsinαsinβ


y1=rsin(α-β)=rsinαcosβ-rcosαsinβ(3.14)


将式(3.13)代入式(3.14),得

x1=x0cosβ+y0sinβ


y1=-x0sinβ+y0cosβ(3.15)


由式(3.15)即可得到基于xOy平面坐标系的点旋转变换的矩阵表示形式为

x1
y1
1=cosβsinβ0

-sinβcosβ0

001x0
y0
1(3.16)

2.  图像像素的旋转变换
前面介绍的是基于xOy平面坐标系的点旋转变换。由于图像像素的旋转变换是基于图像的显示坐标的,所以还需将式(3.16)的变换结果映射到图像的显示坐标中。图3.12给出了图像的像素与图像的显示坐标和xOy平面坐标的关系。


图3.12图像的像素与图像的显示坐标和xOy平面坐标的关系示例


假设图像的宽度width用w表示,图像的高度high用h表示,则由图3.12可知: 在原点O′在左上角,x′轴方向朝下,y′轴方向朝右的图像显示坐标x′O′y′中,如果用(x′0,y′0)表示(x0,y0)在图像显示坐标x′O′y′中位置,用(x′1,y′1)表示(x1,y1)在图像显示坐标x′O′y′中位置,则有

x′0=0.5h-y0


y′0=0.5w+x0(3.17)
x′1=0.5h-y1


y′1=0.5w+x1(3.18)


式(3.17)和式(3.18)的矩阵表示形式分别为

x′0
y′0
1=0-10.5h

100.5w

001x0
y0
1(3.19)
x′1
y′1
1=0-10.5h

100.5w

001x1
y1
1(3.20)


将式(3.16)代入式(3.20),可得图像像素的旋转变换公式为

x′1
y′1
1=0-10.5h

100.5w

001cosβsinβ0

-sinβcosβ0

001x0
y0
1(3.21)


在利用式(3.21)进行图像(块)旋转变换时,需要注意以下问题。
(1) 图像的高度h的值和宽度w的值取自于图像矩阵的大小。比如,若图像的像素矩阵为640×480,含义是该图像的行数为640,列数为480。所以图像的高度h的值为640,图像的宽度w的值为480。
(2) 关于式(3.21)中(x0,y0)的取值问题。因为假设位于(x0,y0)处的点是相对于xOy平面坐标系的,所以当位于图像显示坐标x′O′y′中的图像要旋转时,可取图像的高度h和宽度w的中值处为xOy平面坐标系的原点,然后按照图像中不同位置的像素在该xOy平面坐标系中的四个不同象限的取值特点(为正或为负),就可取得相应的x0的值和y0的值。
(3) 由式(3.21)可知,计算得到的坐标值x′1和y′1一般不会是整数,但数字图像旋转后的坐标值必须是整数,因此应尽可能地取与x′1和y′1最接近的整数值。也正是由于这种近似,所以图像旋转后会有一定的改变,但这种改变肯定不会明显。
有关保持旋转前后图像幅面大小不变,把旋转后图像被转出原幅面大小的那部分截断的图像旋转变换公式和逆变换公式及其推导过程,由于涉及过多的图像像素阵列的截断细节,本文不再赘述,感兴趣的读者请参阅有关文献。
3.5.3图像镜像变换
图像镜像(image mirror)变换分为图像水平镜像变换和图像垂直镜像变换两种。
1.  图像水平镜像
图像水平镜像是指以原图像为参照,使原图像和水平镜像结果图像与虚拟的垂直轴成对称关系,如图3.13(a)和图3.13(b)所示。


图3.13图像水平镜像结果示例


设图像的高度为h,宽度为w。在显示坐标中,原图像中位于(x0,y0)处的像素,经水平镜像后在水平镜像结果图像上的对应像素为(x1,y1)。根据图3.14,则图像水平镜像变换可表示为

x1=x0


y1=w-y0(3.22)


式(3.22)的矩阵表示形式为

x1

y1

1=100

0-1w

001x0

y0

1(3.23)



图3.14图像水平镜像映射关系


2.  图像垂直镜像
图像垂直镜像是指以原图像为参照,使原图像和垂直镜像结果图像与虚拟的水平轴成对称关系,如图3.15所示。
设图像的高度为h,宽度为w。在显示坐标中,原图像中位于(x0,y0)处的像素,经垂直镜像后在垂直镜像结果图像上的对应像素为(x1,y1)。根据图3.16,则图像垂直镜像变换可表示为

x1=h-x0


y1=y0(3.24)




图3.15图像垂直镜像结果示例




图3.16图像垂直镜像映射关系


式(3.24)的矩阵表示形式为

x1

y1

1=-10h

010

001x0

y0

1(3.25)

3.5.4图像转置变换
图像转置(image transpose)变换是指将图像显示坐标的x轴与y轴对换,显示效果示例如图3.17所示。


图3.17图像转置变换示例


设原图像位于(x0,y0)处的像素经图像转置变换后在转置变换结果图像上的对应像素为(x1,y1)。根据图3.18,则图像转置变换可表示为

x1=y0


y1=x0(3.26)


式(3.26)的矩阵表示形式为

x1
y1
1=010

100

001x0
y0
1(3.27)



图3.18图像转置映射关系



需要特别注意的是,图像的转置变换与图像的旋转变换是不一样的。原图像不论是顺时针旋转90°,还是逆时针旋转90°,都不会得到图像转置后的结果。
3.5.5图像缩放
图像缩放(image scaling)是指对图像进行缩小或放大,即对数字图像的大小进行调整的过程。图像缩放是一种非平凡的过程,需要在处理效率以及结果的平滑度(smoothness)和清晰度(sharpness)上做权衡。
设原图像中位于(x0,y0)处的像素经对原图像的行和列按相同比例r缩放后,在缩放后的结果图像上的对应像素为(x1,y1),则图像缩放前后像素的坐标可表示为

x1=rx0


y1=ry0(3.28)


图像缩放的矩阵表示形式为

x1
y1
1=r00

0r0

001x0
y0
1(3.29)

其中,当0<r<1时为缩小原图像; 当r>1时为放大原图像。
1.  缩小图像
缩小图像的目的一般有两个: 一是为了使缩小后的图像符合显示区域的大小要求; 二是为了生成被缩小图像(原图像)的缩略图。缩小后的图像的平滑度和清晰度相对于原图像都有所增强。
缩小图像也称为下采样(subsampled)或降采样(downsampled)。对于一般的行数和列数都为偶数的图像来说,一种方法是只取原图像偶数行和偶数列交叉处的像素,如图3.19所示; 另一种方法是只取原图像奇数行和奇数列交叉处的像素,如图3.20所示。这种缩小图像方法的结果从整体上看,就是将原图像缩小到原来大小的1/4。


图3.19仅取偶数行和偶数列像素以缩小原图像




图3.20仅取奇数行和奇数列像素以缩小原图像


如果要再将缩小后的图像缩小为原来的1/4,只要在前述缩小的图像的基础上,采用原来方法进行即可。当然还有其他一些不按整数比例缩小图像的方法,鉴于篇幅所限,此处不再赘述。
2.  最近邻域插值放大图像方法
放大图像的目的一般是为了使放大后的图像更好地显示在更高分辨率的显示设备上。放大图像的方法相对比较多,也相对复杂,从了解图像放大原理的角度,下面介绍最基本也是最典型的最近邻域插值图像放大方法。
1) 按整数倍数放大图像的最近邻域插值法
按整数倍数放大图像(如将图像放大两倍)的最近邻域插值法的基本思想是: 将原图像中的每一原像素原封不动地复制映射到放大后的新图像中的4像素中,其原理如图3.21所示。


图3.21按最近领域插值法将图像放大4倍示例



2) 按非整数倍数放大图像的最近邻域插值法
设放大前的图像称为原图像,其在显示坐标的x方向和y方向的坐标值分别用xold和yold表示,图像高度(x方向)用hold表示,图像宽度(y方向)用wold表示。放大后的图像称为目标(新)图像,其在显示坐标的x方向和y方向的坐标值分别用xnew和ynew表示,图像高度(x方向)用hnew表示,图像宽度(y方向)用wnew表示。则按非整数倍数放大图像的最近邻域插值法的原图像和目标图像的坐标关系可表示为

xold=xnew(hold/hnew)


yold=ynew(wold/wnew)(3.30)


下面用一个例子来说明按非整数倍数放大图像的最近邻域插值法的应用方法。
【例3.1】设已知有一个3×3的灰度图像,如图3.22(a)所示。利用按非整数倍放大图像的最近邻域插值法将该图像放大为 4×4的图像。
234 38  22234  38  22  22
6744  126744  12  12
8965  638965  63  63
8965  63  63
(a)原图像(b)放大后的图像


图3.22按非整数倍放大图像的最近邻域插值法的放大结果示例


解: 对图3.22(a)根据式(3.30)逐个地计算插值放大后的目标图像中从(0,0)至(3,3)的每像素的值。
对于目标图像中坐标为(0,0)处的像素,因为有

xold=xnew(hold/hnew)=0×(3/4)=0
yold=ynew(wold/wnew)=0×(3/4)=0

所以目标图像中位于(0,0)处的像素值应是原图像中位于(0,0)处的像素值,即234。
对于目标图像中坐标为(0,1)处的像素,因为有

xold=xnew(hold/hnew)=0×(3/4)=0
yold=ynew(wold/wnew)=1×(3/4)=0.75≈1

所以目标图像中位于(0,1)处的像素值应是原图像中位于(0,1)处的像素值,即38。
同理,可得目标图像中位于(0,2)处和(0,3)处的像素值都是22; 位于(1,0)处、(1,1)处、(1,2)处和(1,3)处的像素值分别是67、44、12和12; 位于(2,0)处、(2,1)处、(2,2)处和(2,3)处的像素值分别是89、65、63和63; 位于(3,0)处、(3,1)处、(3,2)处和(3,3)处的像素值分别是89、65、63和63。放大后的结果图像如图3.22(b)所示。
最近邻域插值法放大的图像可保留图像中所有的原始信息,但是会产生锯齿现象和马赛克现象。为了克服最近邻域插值法的不足,人们进一步提出了双线性插值法、三次样条插值和基于边缘的图像插值方法等,下面介绍双线性插值法,对其余方法感兴趣的读者可以参阅有关文献。

3.  双线性插值放大图像方法
双线性插值法通过输入图像到输出图像的映射,即通过计算输出像素被映射到输入图像中4像素之间的非整数位置的那一像素的灰度值,并将具有该灰度值的像素插入该位置,来实现对输入图像的放大。
已知像素(0,0)、(0,1)、(1,0)和(1,1)如图3.23(a)所示,要插值的点为(x,y)。双线性插值的基本思路是: 首先在x方向上线性插值,在(0,0)和(1,0)两个点之间插入点(x,0),在(0,1)和(1,1)两个点之间插入点(x,1); 然后在y方向线性插值,即通过计算出的点(x,0)和(x,1),在y方向上插值计算出点(x,y)。也就是说,在单位正方形顶点的值已知的情况下,正方形内任意点f(x,y)的值可由如下的双线性方程得到

f(x,y)=ax+by+cxy+d(3.31)

其中,a、b、c和d是待定常数,其值由正方形四个顶点的值确定。


图3.23双线性插值运算图示


双线性插值运算如图3.23(b)所示。首先,在x方向上进行线性插值,对上端的两个点(0,0)和(1,0)进行线性插值可得

f(x,0)=f(0,0)+x[f(1,0)-f(0,0)](3.32)


同理,对下端的两个点(0,1)和(1,1)进行线性插值可得

f(x,1)=f(0,1)+x[f(1,1)-f(0,1)](3.33)


然后,在y方向上进行线性插值,有

f(x,y)=f(x,0)+y[f(x,1)-f(x,0)](3.34)


将式(3.32)和式(3.33)代入式(3.34),有

f(x,y)=f(0,0)+x[f(1,0)-f(0,0)]+

y[f(0,1)+x[f(1,1)-f(0,1)]-
f(0,0)-x[f(1,0)-f(0,0)]]


整理上式,即可得双线性插值公式为 

f(x,y)=[f(1,0)-f(0,0)]x+[f(0,1)-f(0,0)]y+

[f(1,1)+f(0,0)-f(0,1)-f(1,0)]xy+f(0,0)(3.35)


基于上述算法原理,在一幅输入图像上依次根据点的4个相邻点的灰度值,分别在x和y方向上进行线性插值,得到结果图像的过程示意如图3.24所示。


图3.24利用双线性插值算法对图像进行插值过程示意


习题3
3.1解释下列术语。
(1) 灰度反转(2) 灰度图像的对比度
(3) 归一化直方图(4) 变化检测
(5) 图像平移(6) 图像旋转
(7) 图像镜像(8) 图像转置
3.2在某些图像处理系统中,为什么要对输入图像的像素亮度进行对数运算处理?
3.3何谓图像直方图?灰度直方图有哪些性质?
3.4设有一个灰度图像的直方图,请回答以下问题,并简述灰度直方图在图像处理中有哪些用途。
(1) 当该直方图偏左时,该图像的亮度和对比度有什么特征?
(2) 当该直方图偏右时,该图像的亮度和对比度有什么特征?
(3) 当该直方图挤在某个狭小区域时,该图像的对比度有什么特征?
3.5简述图像变化检测的原理及应用领域。
3.6假设要把一幅图像放大为原来大小的2倍,请简述其放大原理或实现方法。
3.7编写一个实现灰度图像灰度反转功能的MATLAB程序,并显示灰度反转的原图像和结果图像。
3.8编写一个实现图像水平镜像功能的MATLAB程序,并显示原图像和镜像结果图像。
3.9编写一个实现图像转置功能的MATLAB程序,并显示原图像和转置结果图像。