APP下载

一种新型Canny边缘检测算法研究

2020-01-09段志达魏利胜

牡丹江大学学报 2020年1期
关键词:梯度灰度滤波

段志达 魏利胜 丁 坤

(安徽工程大学电气工程学院, 安徽 芜湖 241000)

1 引言

图像的显著特征之一是图像的边缘信息,边缘检测是提取图像特征的一种基本方法,在图像处理中起到重要的作用。图像的边缘检测直接影响到后期图像的分析和识别,因此进行边缘检测研究具有十分重要的意义。[1-2]

常见的图像边缘检测算法有Sobel、Log、Roberts等微分算子,由于微分运算对噪声较为敏感,导致边缘检测精度不是很高。1986年John F.Canny提出了Canny边缘检测算法,通过信噪比、定位精度和单边响应三个最优准则以提高边缘检测精度。传统的Canny算法易受光照、噪声等影响,需要根据经验人为地设置高、低阈值。如何进一步提高图像边缘检测算法精度,国内外诸多学者相继进行了研究。[3-5]张月圆等[6]针对经典边缘检测算法抗椒盐噪声性能较差及阈值选取自适应差等问题,提出了基于大津法和最大熵法的改进边缘检测算法,自适应地获取高低阈值,对于背景复杂的图像具有更好的检测结果;段军等[7]针对经典边缘检测算法出现的伪边缘和边缘丢失的问题,提出了一种采用统计滤波去噪和基于灰度的迭代法计算阈值的边缘检测算法,减少了伪边缘和信息丢失的情况;Gunawan等[8]提出了一种改进的边缘检测算法,用于检测道路中的裂缝,实验结果表明,在Canny算法中使用阈值函数可以检测到更好的道路损伤;钱红莹[9]针对传统Canny算子在高斯滤波去噪时会滤除一些边缘信息,且需要人为设定高斯滤波方差及高低阈值,缺乏自适应性的问题,提出一种改进的Canny检测算法,更准确地检测到了边缘信息;刘丽霞等[10]针对Canny算子人为设定高、低阈值的局限性问题,采用大律法自适应地根据图像灰度选取高、低阈值,在进行边缘检测时采用波段分解,逐波段进行处理,提高了检测精度;Hu等[11]针对图像过度平滑和缺陷的缺点,提出了一种改进的Canny算法来检测叶片弦涡轮发电机的长度。实验结果表明改进的Canny边缘检测算法可以准确检测刀片的真实边缘,并具有很强的自适应性;Ranita等[12]针对照明不良引起图像中的区域边界模糊现象,在梯度图像中产生不确定性的问题,提出了一种基于类型2模糊集概念的算法来处理不确定性,该不确定性使用经典的Canny边缘检测算法自动选择分割梯度图像所需的阈值。结果表明,改进算法在不同的基准图像和医学图像上检测结果与传统Canny算法相比更准确。

以上研究成果,均围绕提高图像边缘检测精度展开的,但还存在一些边缘漏检情况。为了进一步提高图像边缘检测精度,本文提出一种新型Canny算法,将结合小波变换的同态滤波算法代替高斯滤波算法对图像进行滤波处理,增强了图像的对比度的同时还保留了图像的细节信息,并采用迭代阈值分割法和改进Ostu算法分别推导Canny算法的高、低阈值,能够自适应地选取高地阈值。实验结果表明,本文算法减少了传统Canny算法检测的虚假边缘,使边缘信息更加完整,检测的边缘精度更高。

2 改进的Canny算法

传统的Canny算子选择高、低阈值的方法需要人为设置,需要依赖经验知识。因此,本文引入迭代阈值分割法和改进的Ostu阈值分割法求取高低阈值。改进的Canny算法原理实现如下图所示:

2.1 基于小波变换的同态滤波

同态滤波是一种把频率过滤和灰度变换结合起来的图像处理方法,通过选择合适的滤波函数,使图像灰度动态范围压缩又能使感兴趣的物体图像灰度级扩展,以改善图像的质量。一幅图像可以表示成反射分量和照射分量的乘积,即:

式(1)中,i(x , y)是照射分量,r(x , y)是反射分量,并且两者都是正值。

图像的照射分量频谱一般集中在低频段,而反射分量频谱集中在高频段,主要体现在图像的边缘部分。可以通过抑制照射分量增强反射分量的操作来保留图像细节信息和去除噪声,一般先对式(1)中的公式两边取对数,再进行傅里叶变换。公式如下:

式(4)中,F(x , y)是lnf(x,y)的傅里叶变换,I(x , y)和R(x , y)是lni(x , y)和lnr(x ,y)的傅里叶变换。对式(4)中的F(x , y)利用滤波传递函数H(x , y)进行滤波处理,可得:

式(5)中,Z(x , y)代表滤波后的频谱,对其进行傅里叶逆变换,即:

最后再对式(6)中公式两边进行指数变换,如下所示:

使用传统同态滤波器进行滤波处理可能会使滤波后的图像失去一些细节部分,因此采用一种结合小波变换的同态滤波方法,[13]-[14]用于增强图像的细节信息,同时提高图像的对比度。

本文采用Mallat算法来实现三级小波的快速分解,在此基础上,运用高通滤波函数调整小波分解后的高频区域,并利用线性函数调整小波分解后的低频区域。三级小波分解塔形图如下图所示:

图2 三级小波分解示意图

对于高频区域小波系数,使用一种改进的巴特沃斯滤波器对LHi、HHi、HLi高频区域的小波系数进行调整,巴特沃斯滤波器实现公式如下:

式(8)中,系数p用来调节图像的亮度不均匀性,且当~k=0,~v=1时,滤波函数H ( j ,~k,~)实现对LHi区域的小波系数的调整;当~k=1,~v=1时,滤波函数H ( j ,~k,~)实现对HHi区域的小波系数的调整;当~k=0,~v=0时,滤波函数H ( j ,~k,~)实现对HLi区域的小波系数的调整。

对于低频区域的小波系数,采用线性函数调整对低频区域的小波系数进行调整,线性函数公式选择如下:

式(9)中,TLLn表示调整低频小波系数的线性函数,m表示低频区域LLn小波系数的均值,且满足0≤k≤1,且当时k=0时,图像的细节部分能够很好地保留下来,但是无法改善光照不均匀性;当k=1时,图像的光照不均匀性可以得到很大程度的改善,但同时也会带来图像细节的损失。本文结合熵最大化的原理来自适应地选取p和k,通过实验发现,当p值处于0.5到1之间,k值处于0到1之间,且都以步长0.1进行遍历时,输出的滤波图像效果最好。

2.2 梯度计算

本文采用Sobel算子的水平方向模板和竖直方向模板对同态滤波后的图像进行卷积操作,从而计算出同态滤波后的图像的水平和竖直方向的梯度值。Sobel算子水平方向模板和竖直方向模板如下:

图3 水平和竖直方向的梯度计算模板

水平方向的梯度计算公式如下:

式(10)中,Gradx(x , y)是经过同态滤波后的图像的水平方向的梯度值,Dx是水平方向的梯度计算模板,g(x , y)是同态滤波后的图像,‘*’代表卷积操作。

竖直方向的梯度计算公式如下:

式(11)中,Gradv(x , y)是经过同态滤波后的图像的竖直方向的梯度值,Dv是竖直方向的梯度值计算所用的模板。

梯度幅值的计算公式如下:

式(12)中,Grad(x,y)表示经过同态滤波后的图像的梯度幅值。梯度的方向计算公式如下:

式(13)中,i(x , y)表示经过同态滤波后的图像的梯度方向。

2.3 Canny算子高、低阈值选取

本文利用迭代阈值分割法计算出经过非极大值抑制后的图像(以下简称为NMs(x,y))的最佳阈值TH,并将其作为Canny算子的高阈值,然后在NMs(x,y)的灰度范围0到TH之间,基于改进的Ostu法计算出最佳阈值TL,并将其作为Canny算子的低阈值。通过结合迭代阈值分割法和基于改进的Ostu法来自适应地选取Canny算子的最佳高、低阈值,可以解决单纯使用Ostu算法或者迭代法设置高、低阈值时存在的虚假边缘问题。

1)基于迭代阈值分割算法的高阈值选取

迭代阈值分割是一种基于逼近的分割算法,通过不断迭代来寻找合适的阈值来将图像分为两类。具体算法原理如下:

首先,进行阈值初始化:

式中T为分割图像前景和背景的阈值,Tmax和Tmin分别为输入图像最大和最小灰度值。

其次,用阈值T将图像NMs(x,y)灰度级分为A和B两类,其中A、B两类的平均灰度值分别为ηA和ηB。

在此基础上,根据以下公式计算新的阈值T:

最后,判断第3步和第2步求得的阈值之差DTT=T'-T是否满足要求,如果满足,则结束迭代过程,并将T作为Canny算法中的高阈值TH,否则,转到第2步,并令T=T',继续执行迭代过程,直至结束。

2)基于改进Ostu算法的低阈值选取

本文利用Ostu阈值分割算法在NMs(x,y)的灰度范围0到TH之间计算最大类间方差,并将满足最大类间方差的最佳阈值作为Canny算法中的低阈值。算法原理如下:

假设非极大值抑制后的图像NMs(x,y)大小为M×N,且图像中像素的灰度级大于阈值T的为前景,小于阈值T的为背景,则前景或背景像素总数占整幅图像总像素数的比例的计算公式如下所示:

式(16)中,C0代表图像NMs(x,y)前景的像素总数,λ0代表图像NMs(x,y)前景像素总数占整幅图像总像素数的比例,C1代表图像NMs(x,y)背景的像素总数,λ1代表图像NMs(x,y)背景像素总数占整幅图像总像素数的比例。

图像NMs(x,y)前景和背景的平均灰度值的计算公式如下所示:

式(17)中,L代表图像NMs(x,y)图像灰度级上限,ni代表灰度级为i的所有灰度值的和,μ0代表图像NMs(x,y)前景的平均灰度值,μ1代表图像NMs(x,y)背景的平均灰度值。

图像NMs(x,y)的整体灰度平均值计算如下:

式(18)中,μ代表整幅图像NMs(x,y)的整体灰度平均值。

图像NMs(x,y)前景和背景的方差为:

式(19)中,S(T)代表两类间的方差。

为了减少计算量,式(19)中的S(T)可以等价为:

由于传统的Ostu算法需要遍历每一个像素级求最大类间方差,计算量较大,耗时较长,因此本文采用模拟退火粒子群算法[15]代替传统的Ostu算法中的遍历操作来加速类间方差S(T)的最大值的计算过程。具体算法流程如下所示:

1)初始化粒子群算法的种群个数为N,自我学习因子为c1和c2,惯性权重为w,粒子速度和位置为V和X,个体和种群最佳历史位置为Xm和Ym,个体和种群历史最优值S1(Xm)和S1(Ym)等参数。

2)设置模拟退火算法中的初始温度为T,降温系数为a,终止温度为Tf。

3)更新粒子速度和位置为V1和X1,并计算粒子新的适应度值S1(X1)。

4)令DS =S1(X1) -S1 (X),当DS<0时,则更新粒子位置为X=X1,然后进行降温,令T=a*T,当DS>0时,在此基础上判断是否满足exp ( - DS1 /T) > rand (0,1),如果满足,则更新粒子位置为X=X1,然后进行降温,T=a*T;否则保留当前的粒子速度和位置。

5)更新粒子当前的全局和局部最优。

6)如果满足T<Tf的条件时,结束循环并根据种群历史最优值S1(Xm)输出最优解对应的灰度值,并将其作为Canny算法中的低阈值TL,否则继续从步骤3)开始。

2.4 边缘确定

通过迭代阈值分割算法和改进的Ostu算法可以计算出Canny算法所需的最佳高阈值TH和低阈值TL,在此基础上,利用高阈值TH对图像NMs(x,y)进行粗分割,并将NMs(x,y)中大于TH的像素值置为1,小于TH的像素值置为0,从而得到一个强边缘图像。但是由于迭代法计算出的阈值较TH大,会使得粗分割产生的边缘图像不闭合,需要进一步在强边缘图像各断点处的8邻域内寻找像素值大于低阈值TL的像素点,并将该像素点与对应的断点进行连接,直到该强边缘图像形成一个闭合的轮廓。

3 实验验证

本文基于中值滤波、高斯滤波和结合小波板换的同态滤波算法设计实验进行比较,以说明本文结合小波变换的同态滤波算法的有效性和可行性。实验利用MATLABR2016软件进行仿真,仿真结果如图4所示:

可以发现图4(b)中值滤波能更好地过滤掉椒盐噪声,但是对于高斯噪声的抑制效果不是很好,图4(c)高斯滤波使图像变得模糊,丢失了图像的一些细节信息,而图4(d)结合小波变换的同态滤波方法滤波后的图像在保留细节信息的同时提高了图像的对比度,实验参数如下表1所示。

图4 轴承图滤波增强结果

表1 本文滤波算法和其它算法滤波效果对比表

由表1可知,结合小波变换的同态滤波后的图像的信息熵比中值滤波和高斯滤波后的图像的值高,图像的细节信息保存的更加完整;而经本文算法滤波后的图像的对比度比中值滤波和高斯滤波后的图像的值高,有利提高下一步边缘检测的精度。

为了验证本文边缘检测算法的有效性和可行性,分别基于Canny算法、Sobel算法、文献[6]的Ostu-Canny算法和本文改进的Canny边缘检测算法,分别对图4(a)进行边缘检测,实验结果如图5所示:

图5 轴承图像边缘检测结果

从图5(a)可以发现,Canny算法对噪声比较敏感,并且容易受到光照因素的影响,因此保留了噪声产生的边缘。而图5(b)Sobel算法检测出了大部分的边缘,但仍然有一些细节部分并未检测出来。图5(c)Ostu—Canny算法检测结果较为精准,但是保留了一些噪声产生的边缘。图5(d)本文算法去除了噪声的干扰,同时,检测的边缘更完整,具体实验参数如下表2所示。

表2 本文边缘检测算法和其它边缘检测算法对比表

表2中,四种算法的峰值信噪比的值和结构相似度的值由人工标注边缘的图像为基准计算所得。从表2可以发现,与Canny算法、Sobel算法和Ostu-Canny算法相比,本文方法检测结果结构相似度的值较高,因此边缘检测结果更加准确;与Canny算法、Sobel算法和Ostu-Canny算法相比,本文法检测结果峰值信噪比的值较高,说明本文算法的抗噪声能力更强。且由实验结果可知,没有结合模拟退火粒子群算法时,算法运行时间为2.62s,结合模拟退火粒子群算法时,本文算法运行时间为0.72s,由此可以看出,本文算法结合了模拟退火粒子群算法,进而加快了边缘检测的速度。

4 结论

针对Canny算法容易受到光照影响,且需要根据经验人为地设置高、低阈值,存在自适应性差等问题,本文算法利用结合小波变换的同态滤波代替高斯滤波对图像进行预处理,以改善光照不均匀的影响,提高对比度,同时降低噪声的影响,并基于迭代阈值分割法和改进的Ostu算法自适应计算出Canny算法所需的最佳高、低阈值,以解决人工选取高地阈值时存在虚假边缘问题,同时,使检测到的图像的边缘信息更加完整,提高了边缘检测精度。

猜你喜欢

梯度灰度滤波
航空滤光片阵列多光谱图像条带灰度调整算法
基于应变梯度的微尺度金属塑性行为研究
采用改进导重法的拓扑结构灰度单元过滤技术
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
一种考虑GPS信号中断的导航滤波算法
一个具梯度项的p-Laplace 方程弱解的存在性
高效LCL滤波电路的分析与设计
内容、形式与表达——有梯度的语言教学策略研究
航磁梯度数据实测与计算对比研究