本章主要讲解灰度直方图及直方图均衡化;基本灰度变化,包括点运算的定义,线性运算和非线性运算,亮度对比度调整、阈值化处理、伪彩色处理;图像的算术、逻辑运算,包括图像的加、减、乘、除,差分方法与背景模型;图像几何运算,插值,图像的仿射变换、透视变换、几何校正、图像卷绕和图像变形;空域滤波,包括相关运算和卷积运算定义,领域滤波、高斯滤波、中值滤波等。
本章要求重点掌握图像统计描述中的灰度直方图;基本灰度变换的基本原理和目的、直方图均衡化;图像算术、逻辑运算的基本原理和目的;图像几何运算的基本原理和目的;典型的插值方法;图像空域滤波的基本原理和目的;卷积运算的定义及典型的卷积运算。
本章科普内容为阈值化处理,伪彩色处理;图像的加、减、乘、除,差分方法与背景模型;图像的仿射变换,透视变换,几何校正,图像卷绕和图像变形;图像平滑的快速算法。
引言:图像增强是一类基本的图像处理技术,其目的是对图像进行加工,以得到对视觉解释来说视觉效果“更好”、或对机器感知效果来说“更有用”的图像。
直方图是图像最基本的统计特征,反映了图像灰度值的分布情况。灰度直方图是图像增强中涉及最广的基本概念之一。
灰度直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的像素数目,进而反映图像中每种灰度出现的频率。
从概率观点来理解,灰度出现的频率可看作其出现的概率,直方图就对应于概率密度函数pdf(probability density function),概率分布函数就是直方图的累积和,即概率密度函数的积分。
如下图所示,图中横坐标是灰度级,纵坐标是该灰度级出现的频率,该曲线表现了图像最基本的统计特征。
计算原理:若直接从代表每种灰度的像素数目的直方图来观察,进行如下表示,其中H(r)为对应灰度值像素数目:
概率密度函数:
概率分布函数:
在离散情况下,dr=1,则:
若记像素总数为n,灰阶为的像素为
,则:
因此概率分布为:
若大小为M×N的灰度图像f(x, y)具有L(通常L=256)级灰度,则灰度直方图hist[0, ···, L-1]计算流程为:
(1)初始化 hist[k] = 0; k = 0, ···, L-1;
(2)统计hist[f(x, y)]++; x = 0, ····, M-1; y = 0,···, N-1
(3)标准化hist[f(x, y)]/=M*N;
(1)直方图反应了图像中的灰度分布规律。它描述每个灰度级具有的像素个数,但不包含这些像素在图像中的位置信息。图像直方图不关心像素所处的空间位置,因此不受图像旋转和平移变化的影响,可作为图像的特征;
(2)任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图;
(3)如果一幅图像有两个不相连的直方图与之对应,并且每个区域的直方图已知,则整幅图像的直方图是这两个区域的直方图之和;
通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同像素点的过程,成为直方图均衡化。
假设某个瞬间灰度级是归一化到[0, 1]内的连续量,并令 代表一幅给定图像中灰度级的概率密度函数(PDF),其中下标用于区分输入图像和输出图像的概率密度函数。假设对输入灰度级进行下列变换,得到输出(处理后)灰度级s
式中,w是积分哑变量。可以看出,输出灰度级的概率密度函数是均匀的,即:
也就是说,前面的变换生成一幅图像,该图像的灰度级是等概率的,并覆盖整个区间[0,1]。灰度级均衡化处理的最终结果是一幅扩展了动态范围的图像,它具有较高的对比度。这个变换函数实际上是一个累积分布函数(CDF)。
当灰度级为离散值时,因为变量的离散特性,处理后图像的直方图是不均匀的。令,j=0, 1, 2, ····, L-1,表示一幅与给定图像的灰度级相关联的直方图。对于离散的灰度级,采用求和的方式,其均衡化变换成为:
式中,k=0, 1, 2, 3, ····, L-1,是输出图像中的灰度值,其对应于输入图像中的灰度值
。因此我们可以得到结论:使直方图均衡化的灰度变换函数是累积分布函数。
直方图均衡化通过非线性拉伸,把原始图像的灰度值直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。其输入原图与输出原图的对应关系如图所示,为原图像灰度值,
为输出图像灰度值,而s为累积分布函数。
直方图均衡化的优点是,在图像进行均衡化操作之后,可以增强图像对比度,整体上丰富细节;而且直方图均衡化操作简单,且操作可逆;从熵的角度来看,使图像信息量最大化。
直方图均衡化的缺点是,在变换后图像的灰度级减少,某些细节消失;某些图像的直方图有高峰,经过直方图均衡化之后对比度不自然地过分增强。
补充:图像信息量由信息熵(Entropy)来定义,信息熵借用了热力学定义,用于度量体系混乱程度。熵越大,系统的不确定性越大,系统越混乱,从而信息量也就越大。
基本灰度变换的典型代表是点运算,它将输入图像映射为输出图像,输出图像每个像素点的灰度值仅由对应的输入像素点的值决定。
基本灰度变换常用来改变图像的灰度范围及分布,是图像数字化及图像显示的重要工具。点运算因其作用性质有时也被称为对比度增强、对比度拉伸或灰度变换。
灰度变换函数为线性函数,可用于调整图像对比度和亮度:
(1)当a>1,输出图像对比度增大;
(2)当a<1,输出图像对比度降低;
(3)当a=1,且b≠0时,仅使输出图像的灰度值上移或者下移,其效果是使整幅图像更亮或者更暗;
特殊的线性点运算——图像反色,特别适用于嵌入图像暗色区域的白色或灰色细节。
对不同区域灰度值进行线性变换,以突出图像中某个部分会减弱某个部分特征。
非线性点运算对应于非线性映射函数,典型的映射包括平方函数、对数函数、截取(窗口函数)、阈值函数、多值量化函数等。
(1)对数变换函数:
对数变换函数的特点是“扩展低输入,压缩高输入”,即动态图像压缩。当原图动态范围太大,超出显示设备范围时,如果直接显示原图则会丢失一部分细节。此时可采取对数变换(如傅里叶频谱的显示)。
(2)幂数变换函数:
幂数变换函数特点是“压缩低输入,扩展高输入”(γ>1)。当原图动态显示范围太小,达不到显示设备范围时,如直接显示原图则一部分细节不丰富。此时可采用幂数变换(如曝光不足的修正)。
针对指数变换函数和幂数变换函数,当参数变换时会出现较大差异的结果,例如γ>1和γ<1时对像素级别的压缩扩展的效果迥异,实验中应该多次调整,观察不同结果,获得丰富的直观认识,并借助曲线深入分析非线性点运算的原理。
灰度切分分为两种情况,一种是将某段阈值的图像设为一个较高值,其它灰度指定一个较低值。另一种情况是所需范围的灰度变亮,但仍保持图像的背景和灰度色调。
(1)突出目标轮廓,消除背景细节:
(2)突出目标轮廓,消除背景细节:
阈值化处理是最常用的一种非线性运算,它的功能是选择一个阈值,将图像二值化,用于图像分割及边缘跟踪等处理。
阈值化处理的关键在于选择合适的阈值。通常阈值的选取可以根据直方图来进行。如果图像的直方图呈明显的双峰分布情况,可以将阈值取为波谷的位置。
为了直观地观察和分析图像数据,常采用将灰度图像映射到彩色空间的方法,突出兴趣区域或待分析的数据段,这种显示方法称为伪彩色。
伪彩色的根本依据是,人眼分辨不同彩色的能力比分辨不同灰度级的能力强,因此,把人眼无法区别的灰度变化,施以不同的彩色来提高识别率。
将灰度映射到彩色空间的变换可以表示成:
伪彩色技术是面向输出端(包括显示、打印等)的技术,是为了便于人的观察,其本身不会带来新的信息。
代数运算是对两幅图像进行整体处理的运算方法,包括两幅图像对应像素的和、差、积、商。
图像的代数运算在图像处理中有着广泛的应用,它除了可以实现自身所需要的算数操作,还能为许多复杂的图像处理提供准备。
(1)图像加运算:
(2)图像减运算:
(3)图像乘运算:
(4)图像除运算:
图像相加的一个重要应用是对同一场景的多副图像求平均值,可有效降低随机噪声的影响。对于一幅有噪声的图像C(x, y),可以看成是由原始无噪声的图像A(x, y)和噪声B(x, y)叠加而成,即:
若叠加在图像上的噪声B(x, y)是非相关,具有零均值的随机噪声时,那么,把针对同一目标物在相同条件下,做M次重复摄取的图像相加,取平均值作为输出图像:
进一步推导可得:
差分法(frame differencing algorithm)可应用于运动目标跟踪。它根据当前图像与参考图像的差别分析来判断序列图像中是否有运动物体。在环境亮度变化不大的情况下,如果对应像素灰度值相差很小,可认为此处景物是静止的;如果图像区域某处的灰度变化很大,则认为这是由于图像中运动物体引起的,然后求出运动目标在图像中的位置。
根据差分的参考图像不同,可以分为:
(1)基于相邻帧差的算法——前后两帧图像对应像素点的灰度值相减;
(2)基于背景图像与当前帧差的算法——当前帧和背景帧对应像素的灰度值相减;
背景差分算法中,常用平均值法和基于像素值统计信息的算法来构建背景。平均值法由于物体运动和光线变化不能得到准确的背景,且对于环境变化不能自适应调节。
背景模型:基于贝叶斯模型,运用像素值的统计信息来表示像素值分布,再根据背景和前景出现的先验概率来判断前景/背景。使用背景模型的优点是可以有效克服复杂背景的影响,但是其缺点是需要建立模型,计算复杂度高。
(1)图像的与运算:
(2)图像的或运算:
(3)图像的非运算:
(4)图像的与非运算:
(5)图像的或非运算:
(6)图像的异或运算(相同置0,不同置1):
几何运算可以改变图像中物体之间的空间关系。这种运算可以看成是图像内的各物体再图像内移动的过程。例如图像的转动、扭曲、倾斜、拉伸等,都是几何运算的结果。
平移是将图像中所有的点都按照指定的平移量,进行水平、垂直移动。
设初始坐标为 的点,经过平移
后坐标变为
,前后坐标变换关系为:
水平镜像:以原图像的垂直中轴线(或指定中轴线)为中心,将图像分为左右两个部分进行对称变换:
设图像高度为Height,宽度为Weight,原图中的 经过中心化水平镜像后,坐标将变为
,即:
以原图像的水平中轴线(或指定轴线)为中心,将图像分为上下两部分进行对称变换。
设图像高度为Height,宽度为Weight,原图中的 经过中心化垂直镜像后,坐标将变成为:
切变是指图像在水平方向上两点之间速度的变化,分为水平切变(水平方向上速度变化)和垂直切变(垂直方向上速度变化)。
补充:风切变(Wind Shear)简单定义为空间任意两点之间风向和风速的突然变化,属于气象学范畴的一种。
设图像高度为Height,宽度为Width,原图中 经过水平切变后,坐标将变为:
设图像高度为Height,宽度为Width,原图中 经过水平切变后,坐标将变为:
图像缩放是指与原图像的某点为中心,将图像进行放大和缩小。假设图像X轴方向缩放比率是kx,Y轴方向缩放比率是ky,中心点为原点,那么原图中点 对应于新图中的点
为:
当 >1且
>1时,原图像被放大。放大图像时,产生了新的像素,可通过上采样算法来近似处理。例如当
=
=2时,图像放大2倍,原图中的某1个像素,对应新图中4个像素。
当 <1且
<1时,原图像被缩小。缩小图像时,减少了原图像素,可通过下采样算法来近似处理。例如当
=
=0.5时,图像缩小一半,原图中的某4个像素
,对应新图像的1个像素
。
无论放大图像(上采样)还是缩小图像(下采样),都需要进行采样,采样方式有很多种,其中插值是最核心的方法。
图像围绕着中心点以一定角度转动,旋转后图像的尺寸一般会改变。
对图像进行点的旋转,像素点由 转到
。
坐标点旋转的极坐标公式:
几何运算的插值计算分为向前映射计算法和向后映射计算法。
(1)向前映射计算法:
向前映射计算法是从原图像坐标计算出目标图像坐标。镜像、平移变换均可使用向前映射计算法。
(2)向后映射计算法:
向后映射计算法是从结果图像的坐标计算原图像的坐标。旋转、拉伸、缩放、镜像、平移均可使用向后映射计算法。向后映射计算法解决了漏点的问题,但出现了马赛克。
输出像素通常被映射到输入图像中的非整数位置,即位于四个输入像素之间。因此,为了决定与该位置相对应的灰度值,必须进行插值运算。常用插值方法:
(1)最近邻插值(Nearest Neighbor Interpolation)
最简单的插值方法是最近邻插值,即选择离它所映射到的位置最近的输入像素的灰度值为插值结果。数学表达式为:
(2)双线性插值(Bilinear Interpolation)
双线性插值法是对最近邻法的一种改进,即用线性内插方法,根据点的四个相邻点的灰度值,分别在x和y方向上进行两次插值。最后形成的插值函数为双曲抛物面方程:
首先,在x方向作线性插值,对上端两个顶尖进行线性插值:
类似地,对于底端两个顶点进行线性插值:
最后,在y方向上作线性插值,以确定:
由此得到双线性插值公式:
(3)三次立方插值(Cubic Spline Interpolation)
三次立方插值是利用三次多项式S(x)来逼近理论上的最佳插值函数,数学表达式为:
上式中S(x)是周围像素离中心点的距离。待求像素的灰度值由其周围16个点的灰度值加权内插得到。可推到出待求像素的灰度值计算式:
在失真和相应的校正图像中的四边形区域,四边的顶点是相应的控制点。四边形区域中的几何形变过程可用双线性方程对其建模:
3.4.7 几何变换的应用举例
图像在生成过程中,由于系统本身具有非线性或拍摄角度不同,会使生成的图像产生几何失真。几何失真一般分为系统失真和非系统失真。系统失真是有规律的、能预测的;非系统失真则是随机的。
对图像作定量分析时,就要对失真图像进行几何校正(即将存在几何失真的图像校正成无几何失真的图像),以免影响分析精度。基本方法是先建立几何校正的数学模型,然后利用已知条件确定模型参数,最后根据模型对图像进行几何校正。通常分为两步:
(1)图像空间的坐标变换;
(2)确定校正空间各像素的灰度值。
图像卷绕:通过指定一系列控制点的位移来定义空间变换的图像变形处理。非控制点的位移根据控制点进行插值来确定。有时利用多项式函数来拟合控制点之间的对应关系,称为多项式卷绕(Polynomial Warping)。
一般情况下,由控制点将图像分成许多变形区域,对每个变形区域使用双线性插值函数来填充非控制点。
鱼眼图像由鱼眼镜头(一种极端的广角镜头)拍摄而成,鱼眼镜头是一种焦距极短且视角接近或等于180°的镜头。16mm或焦距更短的镜头通常即可认为是鱼眼镜头。为使镜头达到最大的摄影视角,前镜头直径且呈抛物状向镜头前部突出,与鱼的眼睛颇为相似。鱼眼镜头属于超广角镜头中的一种特殊镜头,视角力求达到或超出人眼视角范围。
鱼眼镜头矫正:相对于普通图像来说具有更宽广的视域,但变形严重。因此对语言镜头进行坐标变换。
变形是使图像中的一个物体逐渐变形为另一个物体的过程。从一起始图像出发,利用渐隐(dissolve)技术,使起始图像逐渐“淡出(fade out)”,而目标图像则逐渐“淡入(fade in)”,同时以对应物体为转换控制对象,通过选择控制点及控制线来建立插值过程,让物体上的点从他们的起始位置逐渐移向对应的终止位置。
图像变形可为一系列图像卷绕的集合。
领域运算是指当输出图像中每个像素是由对应的输入像素及其一个领域内的像素共同决定时的图像运算。通常领域是远比图像尺寸小的一规则形状,如正方形2×2,3×3或用来近似表示圆及椭圆等形状的多边形。
信号与系统分析中的基本运算相关与卷积,在实际图像处理中都表现为领域运算。
以围绕模板(filter mask, template)的相关与卷积运算为例,给定图像f(x, y)大小N×N,模板大小为m×m(m为奇数),常用的相关运算定义为:使模板中心T((m-1)/2, (m-1)/2)与f(x, y)对应:
以围绕模板(filter mask, template)的卷积运算为例,给定图像f(x,y)大小N×N,模板T(i,j)大小m×m(m为奇数),常用的卷积运算定义为:通过两个函数f和g生成第三个函数的一种数学算子,表征函数f与经过翻转和平移的T的重叠部分的累计。
相关运算是将模板当权重矩阵作加权平均,而卷积与相关的不同在于卷积需要将模板沿中心反叠(先沿纵轴翻转,再沿横轴翻转;即沿次对角翻转)后再加权平均。如果模板对称,相关与卷积运算结果完全相同。
实际上常用的模板如平滑模板、边缘检测模板等都是对称的,因而这种领域运算实际上就是卷积运算。
用信号系统分析的观点来说,就是滤波,对应于平滑滤波或低通滤波、高通滤波等情况。
图像平滑的目的是消除或尽量减少噪声的影响,改善图像质量。假定加性噪声是随机独立分布的条件下,利用邻域的平均或加权平均可以有效地抑制噪声干扰。
图像平滑实际上是低通滤波,让图像的低频成分通过,阻截属于高频部分的噪声信号。在减少随机噪声点影响的同时,由于图像边缘部分也处在高频部分,平滑过程会导致边缘模糊化。
邻域平均是指每一像素点的灰度值由其邻域同等决定。分为矩形邻域和圆形邻域。
邻域高斯平均是一种高斯滤波,利用正态分布函数作为加权函数。
若σ²=1/2,则
由于连续高斯分布求离散模板需要采样、量化,并使模板归一化,模板尺寸越大,图像越模糊,图像细节丢失更多。
与加权平均方式的平滑滤波不同,中值滤波是将邻域中的像素按灰度级排序,取中间值为输出像素。
中值滤波的效果依赖于两个要素:邻域的空间范围和中值计算中涉及的像素数(当空间范围较大时,一般只取若干稀疏分布的像素作中值计算)。
中值滤波能在抑制随机噪声的同时不使边缘模糊,因而受到欢迎。下图为常用中值滤波窗口:
中值滤波特点:
(1)对离散阶跃信号和斜升(或斜降)信号不产生影响;
(2)连续个数小于窗口一半的离散脉冲将被滤除;
(3)三角形信号的顶部被削平
中值滤波适合于滤除椒盐噪声和干扰脉冲,尤其适合于目标物形状是块状时的图像滤波;
具有丰富尖角几何结构的图像,一般采用十字形滤波窗,且窗口大小最好不要超过图像中最小目标物的尺寸,否则会丢失目标物的细小几何特征;
需要保持细线状及尖顶目标物细节时,最好不要采用中值滤波;
当图像尺寸很大时,模板选择过大,邻域运算量就很大。因此在编程实现时需要改进算法。一种常用的方法就是将二维模板运算转换为一维模板运算。