一、图像的预处理技术图像处理按输入结果可以分为两类,即输入输出都是一副图像和输入一张图像输出不再是图像的数据。
图像处理是个很广泛的概念,有时候我们仅仅需要对一幅图像做一些简单的处理,即按照我们的需求将它加工称我们想要得效果的图像,比如图像的降噪和增强、灰度变换等等。
更多时候我们想要从一幅图像中获取更高级的结果,比如图像中的目标检测与识别。
如果我们将输出图像中更高级的结果视为目的的话,那么我们可以把输入输出都是一幅图像看作是整个处理流程中的预处理。
下面我们将谈到一些重要的预处理技术。
(一)图像增强与去噪图像的增强是一个主观的结果,原来的图像按照我们的需求被处理成我们想要的效果,比如说模糊、锐化、灰度变换等等。
图像的去噪则是尽可能让图像恢复到被噪声污染前的样子。
衡量标准是可以度量的。
不管是图像的增强与去噪,都是基于滤波操作的。
1.滤波器的设计方法滤波操作是图像处理的一个基本操作,滤波又可分为空间滤波和频域滤波。
空间滤波是用一个空间模板在图像每个像素点处进行卷积,卷积的结果就是滤波后的图像。
频域滤波则是在频率域看待一幅图像,使用快速傅里叶变换将图像变换到频域,得到图像的频谱。
我们可以在频域用函数来保留或减弱/去除相应频率分量,再变换回空间域,得到频域滤波的结果。
而空间滤波和频域滤波有着一定的联系。
频域滤波也可以指导空间模板的设计,卷积定理是二者连接的桥梁。
(1)频域滤波使用二维离散傅里叶变换(DFT )变换到频域:∑∑-=+--==10)//(210),(),(N y N vy M ux i M x e y x f v u F π使用二维离散傅里叶反变换(IDFT )变换到空间域:∑∑-=-=+=1010)//(2),(1),(M u N v N vy M ux i e v u F MN y x f π在实际应用中,由于该过程时间复杂度过高,会使用快速傅里叶变换(FFT )来加速这个过程。
现在我们可以在频域的角度看待这些图像了。
必须了解的是,图像中的细节即灰度变化剧烈的地方对应着高频分量,图像中平坦变化较少的地方对应着低频分量。
图像中的周期性图案/噪声对应着某一个频率区域,那么在频域使用合适的滤波器就能去除相应的频率分量,再使用傅里叶反变换就能看到实际想要的结果。
不同的是,在频域的滤波器不再是做卷积,而是做乘积,因为做乘法的目的在于控制频率分量。
比较有代表性的有如下几个滤波器:高斯低通滤波器222/),(),(σv u D e v u H -=D 是距离频率矩形中心的距离。
该滤波器能保留低频分量,逐渐减小高频分量,对原图像具有模糊作用。
高斯高通滤波器2022/),(1),(D v u D e v u H --=可以看出高斯高通滤波器就是高斯低通滤波器的一个上下对称的函数,同理,该滤波器可以保留高频分量,减小低频分量,对图像有锐化的效果。
陷波滤波器),(),(),(1v u H v u H v u H k Qk k -=∏=陷波滤波器就是这样的一些高通滤波器的乘积。
每个高通滤波器的中心都被移至希望抑制的频率处,达到选择性滤波的目的。
这只是几种典型的滤波器,为了实际需求还有很多不同效果的,不管哪种滤波器,都是为了滤除我们不希望存在的频率分量。
(2)空间滤波空间滤波的基础是卷积,用一个滤波的模板对图像做卷积。
卷积的离散定义如下:∑∑-=-=--=⊗a a s bb t t y s x f t s w y x f y x w ),(),(),(),( 所以,空间滤波就是使用设计好的模板滑过图像,对每一处都进行卷积操作,计算结果就是滤波后的图像。
一些简单的空间滤波器,比如均值滤波器、统计排序滤波器、锐化滤波器等等。
关于空间滤波器的设计,我们须知道,有些滤波器的设计有着很明显的意义。
有些则没有那么不容易理解。
有直接意义的比如均值滤波器、统计排序滤波器,这类的都很好理解,均值滤波器就是对某个像素的邻域内像素取均值,很容易知道取完均值就能将该像素与邻域像素处灰度接近,也就达到了平滑图像的目的。
统计排序滤波器的作用是将一个邻域内的灰度排序后的中值替代中心像素值。
可以想象,脉冲噪声可以被轻易的去除。
那么在空间滤波器没那么容易直接设计的时候,其实它的设计是和频域滤波密切相关的。
下面我们介绍其原理。
首先我们介绍一下卷积定理:),(),(),(),(v u H v u F y x h y x f ⇔⊗双箭头代表傅里叶变换对,即两个函数在空间里的卷积的傅里叶变换等价于它们各自傅里叶变换的乘积。
由卷积定理可以知道,在频域进行滤波的时候,滤波的结果等于频域滤波器的傅里叶反变换在空间域对图像进行卷积。
也就是说我们可以通过频域的滤波器得到相应的空间滤波器。
在这个对应的过程中,需要对相应的空间函数进行取样,并保证模板中的系数之和为零。
一旦找到了适用于某个应用的滤波器,可以使用硬件设备直接在空间域实现该滤波器。
2.图像去噪(1)均值滤波均值滤波即求某个像素点邻域内像素值的均值,然后赋给该中心点像素。
求均值的时候,并不是一定要严格的算术平均值,邻域内像素点可以有不同的权值,但要系数之和为1。
均值滤波可以去除由扫描得到的颗粒噪声。
但是缺点是会模糊图像。
(2)中值滤波算法的原理是将某个像素邻域内的像素值排序,取中值替代中心像素值。
是一种非线性平滑滤波器,能将与周围差别过大的像素值替代成为与周围像素值相似的值,可以有效去除椒盐噪声。
(3)维纳滤波计算局部方差,局部方差越强,平滑作用越强,可以使得恢复的图像与原始图像的均方误差最小。
相对于均值滤波来说,这种方法对保留图像细节即高频分量有不错的效果,不过计算量大,对于白噪声有不错的抑制效果[1]。
(4)小波阈值去噪法这种方法的原理如下,将带噪图像进行小波分解将图像信号分解到各个尺度中,然后把每一尺度中属于噪声的小波系数去掉,保留并增强属于图像信号的系数。
最后使用小波逆变换重构出图像。
在去掉属于噪声的系数的时候,要预先设定一个阈值,若小波系数小于阈值,则认为该系数主要由噪声引起,则去除这部分系数。
反之若大于阈值,则保留。
阈值的选取方法如下。
全局阈值:N ln 2αλ=α为噪声标准方差,N 为信号长度。
除了全局阈值还有局部适应阈值,阈值的选取直接影响到去噪的效果[2]。
(5)双边滤波双边滤波器和经典的高斯滤波器一样运用了局部加权平均,不同之处在于双边滤波器的权值由两部分因子的乘积组成,一部分由像素间的空间距离决定,称之为空间临近度因子;另一部分由像素间的亮度差决定,成为亮度像似度因子。
双边滤波器比较于经典的低通滤波器来说,具有保持边缘细节的最大优点,同时有不错的去噪能力。
二、目标识别(一)传统方法1.图像特征提取的方法在数字图像处理中,要想对一幅图像做更高级的处理,即不再是输入输出都是图像的话,就需要对图像转换成利于计算机处理的形式。
最基本的思想是将图像的特征提取出来,这一个个特征值组合成一个特征向量,用以标识一幅图像,这样就把图像的分类问题转化成了向量的分类问题。
值得注意的是,传统方法中的特征提取方法很大程度上是基于问题的。
比如汽车车型的识别可以通过识别长宽比与顶棚与车长的比;指纹识别中,脊线上的分叉点和端点又成了我们所关注的特征点;人脸识别中,一种简单的办法是选取鼻尖,嘴角,眼珠这些特征点;识别一个物体是不是苹果,那么可以选取圆度率,形状数,纹理的一致性和平均熵度,颜色等等特征。
总的来说,传统方法在解决一系列图像识别问题的时候,要具体问题具体分析。
(1)图像分割所谓图像分割是根据灰度、色彩、纹理和几何形状等特征把图像划分成若干个互不相交的区域,使得在同一区域内的特征具有相似性,而在不同区域间表现得不同[3]。
灰度图像有两个基本性质:不连续性和相似性。
关注图像的不连续性的话,则以灰度突变为基础来分割一幅图像;如果关注相似性的话,则根据预定义的准则将图像分割为相似的区域,这类方法有阈值处理,区域生长,区域分类和聚合等,最实用的是阈值处理技术。
①基于灰度突变的边缘检测图像的大部分信息都存在于图像的边缘中,主要表现为图像局部特征的不连续性,即图像中会的变化较为剧烈的地方。
因此我们把边缘定义为图像中灰度发生急剧变化的区域边界[4]。
目前几种常用的边缘检测算法有基于梯度的边缘检测、高斯拉普拉斯(LoG)算子、坎尼边缘检测算法。
1)基于梯度的边缘检测Sobel算子是一种一阶微分算子,通过计算临近像素与中心像素的插值来近似该点的一阶导数。
这个过程可以通过一个Sobel卷积模板来实现。
该模板形式如下。
算法过程为:对图像进行预处理即平滑操作,通过Sobel 模板来计算出每个像素点的梯度,再根据预设的阈值来对梯度值进行取舍。
2)高斯拉普拉斯(LoG )算子由于噪声点对边缘检测影响较大,所以由高斯滤波和拉普拉斯算子结合,形成高斯拉普拉斯算子。
由高斯函数根据拉普拉斯算子的公式求导可得。
22222224211),(σσπσy x e y x y x LoG +-⎥⎦⎤⎢⎣⎡+--=用LoG 滤波器对图像进行滤波这个过程实际上是该滤波函数与图像进行卷积。
由于高斯拉普拉斯两个操作是线性的,所以这个过程可以变换为先对图像进行高斯低通滤波,再计算其拉普拉斯。
σ是二维高斯函数的标准差,也称空间常数。
在实际应用中,通常用一个二维空间模板来近似LoG ,对该函数的值进行取样,并保证模板中各个系数之和为零。
下图为一个5⨯5模板。
这个模板可以是n ⨯n 的,在做完这一步后,需要寻找零交叉,方法是在每个像素点的3⨯3领域内,测试左右、上下、两个对角这四对像素值,要求至少有两对满足以下要求:两值符号不同,且两者差的绝对值要大于某个预设的阈值。
这时就找到了一个零交叉像素。
使用零交叉可以检测出大部分主要的边缘,而滤掉了一些弱的边缘信息。
比如粗糙的纹理也会产生的一些“无关”的边缘。
3)坎尼边缘检测算法这个算法的主要步骤为:用高斯滤波器平滑输入图像;计算梯度幅度和方向;对梯度幅值图像采用非最大抑制,此举是为了细化边缘;最后使用双阈值处理和连接分析来检测并连接边缘。
这个算法的有点事输出的边缘质量很高,保留了主要的边缘,消除了非主要的“伪边缘”,但是算法实现起来更为复杂,运行速度偏慢,可能会满足不了一些应用中的实时性要求。
②阈值处理基于阈值法的分割图像是一种十分简单却又有效的分割算法。
这种算法根据图像中不同区域具有不同的灰度级这一特性,按照灰度级来对图像进行划分,灰度级相近的被视为同一个区域。
在一些注重效率的场合,这种方法得到了广泛的应用[5]。
这里介绍一种最经典的方法,即otsu 法,现今的很多新的方法都是在此基础上进行了改进。
Otsu 法的算法流程如下:∑==k i ip k P 01)(1.计算图像的直方图,并标记各个分量。