改进Canny算子的边缘检测算法
2020-09-03李长有陈国玺丁云晋
李长有,陈国玺,丁云晋
(河南理工大学 机械与动力工程学院,河南 焦作 454000)E-mail:377247295@qq.com
1 引 言
图像目标区域识别过程中,对目标区域边缘信息的获取是至关重要的,边缘检测在图像处理、图像三维测量、图像分析和图像识别领域有着重要的作用.传统边缘检测算子有Sobel、Prewitt、Roberts、Laplacian、LOG等[1],它们都是图像局部区域窗口的梯度算子,在进行边缘检测时对噪声非常敏感,处理图像的效果不理想.在1986年,John Canny[2]提出一种最优的阶梯型边缘检测算子-Canny算子,它有三个最优的表现:好的信噪比;好的定位精度;好的边缘响应.Canny算子在边缘检测方面有很好的检测效果,但对含有椒盐噪声的图像处理效果不太好.近年来,很多学者都提出了对Canny算子的改进方法,Pawar等[3]提出了利用形态学滤波器消除噪声,把图像分为块,根据块的类型进行阈值选择,提高阈值的准确性.刘丽霞等[4]提出了利用引导滤波器代替高斯滤波器对图像进行滤波,结合Otsu算法自适应地选择阈值提高算法的自适应性.Ma Q D Y等[5]提出了利用自适应平滑滤波器滤除椒盐噪声,结合边缘噪声的几何特征来区分真假边缘,更好地去除伪边缘的存在.X.Liu等[6]提出了在图像的灰度直方图上利用"弓弦方法"自适应地搜索具有过渡特征的两个切点来实现双阈值计算,提高了边缘检测的准确性.Agaian等[7]提出了利用自定义的卷积核对图像进行平滑滤波,结合一种广义核集的梯度算子对图像进行边缘检测.宋人杰等[8]提出了利用几何均值滤波器和中值滤波器混合而成的滤波器代替高斯滤波器对图像进行平滑滤波,对图像进行边缘检测.Nikolic等[9]提出了利用改进的中值滤波器结合动态加权平滑滤波器代替高斯滤波器对图像进行去噪,人工设定阈值进行边缘检测.Gong S等[10]提出了利用双边滤波器对图像进行去噪,自适应地选取高低阈值对边缘进行检测.Xuan L等[11]提出了利用改进的中值滤波器和双边滤波器对图像进行去噪,对幅度梯度直方图进行微分运算,得到两个自适应的阈值对图像进行边缘检测.Zhao M等[12]提出了利用DCT系数进行线性收缩对图像进行去噪,人工选择高低阈值对图像进行边缘处理.Y.Gong等[13]提出了利用自适应二维Otsu算法和Newton迭代法自适应地选择最优的高低阈值,从而对图像进行边缘检测.但上述方法对大量椒盐噪声滤除过程中,会造成边缘连接不平滑和伪边缘出现,甚至会丢失一些重要的局部细节特征,影响目标区域的识别精度,因此消除椒盐噪声的干扰对图像边缘检测至关重要.
为了更好地滤除椒盐噪声,改善边缘轮廓连接程度以及减少伪边缘的出现,本文提出了一种改进Canny算子的边缘检测算法,该算法首先利用混合滤波器代替高斯滤波器滤除噪声,然后利用四个方向的梯度算子对图像边缘进行检测,改善边缘轮廓的连接程度,最后利用最大类间方差法(Otsu)自适应地确定高低阈值,提高算法的自适应程度.与传统的边缘检测算子和其它改进的Canny算子相比,本文算法在椒盐噪声滤除方面达到了很好的效果,同时改善了边缘的连接程度,减少伪边缘的出现,保留了图像的局部边缘细节特征.
2 改进Canny算子原理
2.1 混合滤波器设计
传统的Canny算子在进行边缘检测时,运用的是高斯滤波器对图像进行平滑滤波,而高斯滤波器不能很好的消除椒盐噪声.为了更进一步减少椒盐噪声对图像边缘信息的干扰,提出了一种混合滤波器滤除椒盐噪声,混合滤波器采用一种新颖的滤波器和改进的均值滤波器对图像进行噪声的滤除,新颖滤波器是用n×n的相同元素矩阵A和模板覆盖下的原图像f(x,y)像素值运算得到子图像f1(i,j),中心像素为E(i,j),然后子图像与单位矩阵I的列向量运算可以得到新的图像f2(i,j),f2(i,j)与单位矩阵I的列向量再运算得到去掉最大最小像素值的图像f3(i,j),用E(i,j)和此时的图像f3(i,j)比较选取合适的中心像素达到滤波降噪的目的.数学模型为:
f1(i,j)=f(i,j)·*A=
(1)
β1=f1(i,j)*i1=
(2)
(3)
由公式(2)可以算出剩余的图像矩阵.则不含中心元素的图像f2(i,j)为:
(4)
f3(i,j)={sort[f2(i,j)]}*I(i2,…,in×n-2)=[f2max(i,j),f2(i,j+1)…,f2min(i,j+(n×n)-1)]*[i2,…,in×n-2]=[f2(i,j+1),…,f2(i,j+(n×n)-2)]
(5)
(6)
其中,(i1,i2,…,in)表示单位矩阵I的列向量,A表示3×3模板矩阵,sort表示排序函数.
均值滤波器是一种简单有效的局部空间域处理算法,其改进原理是利用m×m的模板S和其覆盖下原图f(x,y)图像矩阵进行运算得到子图像f1(i,j),然后用图像f1(i,j)与单位矩阵I的列向量运算得到图像f(i,j),用图像f(i,j)与单位矩阵I的列向量运算去掉最大最小值,用此时图像平均值代替原来图像中心像素.由公式(1)、公式(2)可以得到数学模型为:
(7)
得到新的图像f(i,j)为:
(8)
(9)
其中,S表示3×3模板矩阵,E(i,j)为图像的中心点像素值.
相比于传统的高斯滤波,混合滤波器在平滑图像的同时保留了边缘的细节,滤除了大量椒盐噪声,从而提高了图像边缘检测的精度.对含有10%椒盐噪声图像的滤除结果如图1所示.从对比图中可以看出,高斯滤波器对含有大量椒盐噪声的图像滤除效果不太好,会导致图像的模糊.而混合滤波器对椒盐噪声的消除效果较好,图像边缘轮廓比较清晰.
图1 混合滤波和高斯滤波的比较
图2是加入了σ=0.01的高斯噪声对比图,可以看出本文提出的混合滤波器对含有高斯噪声的图像有一定的平滑作用.
图2 混合滤波和高斯滤波的比较
2.2 改进的梯度幅值计算方法
传统的Canny算子在进行边缘检测时采用2×2邻域一阶偏导的有限差分来计算,这种方法对噪声比较敏感.为了减少噪声的干扰,在进行梯度幅值计算时,采用四个方向的梯度
模板作为边缘梯度算子对图像边缘进行检测,在像素8邻域内计算x方向、y方向、45°方向和135°方向的梯度幅值,该方法有良好的边缘定位和抑制噪声的优点[14].x方向偏导数数学表达式如下:
hx[i,j]=(H[i-1,j+1]+2H[i,j+1]+2H[i+1,j+1]-H[i-1,j-1]-2H[i,j-1]-2H[i+1,j-1])
(10)
hy[i,j]=(H[i+1,j-1]+2H[i+1,j]+2H[i+1,j+1]-H[i-1,j-1]-2H[i-1,j]-2H[i-1,j+1])
(11)
h45°[i,j]=(H[i+1,j]+2H[i,j+1]+2H[i+1,j+1]-H[i,j-1]-2H[i-1,j]-2H[i-1,j-1])
(12)
h135°[i,j]=(H[i,j-1]+2H[i+1,j-1]+2H[i+1,j]-H[i-1,j]-2H[i-1,j+1]-2H[i,j+1])
(13)
四个方向的梯度计算模板如图3所示.
图3 各个方向的梯度模板
梯度幅值为:
(14)
梯度方向为:
θ[i,j]=arctan(hy[i,j]/hx[i,j])
(15)
2.3 利用Otsu算法确定高低阈值
传统的Canny算子在边缘连接时的高、低阈值选取要通过实验人工选取设定,虽然这样尽可能多的保留了图像边缘信息,但降低了算法的自适应性.本文利用Otsu算法自适应地选择边缘连接时的高、低阈值.
Otsu算法,即最大类间方差法[15]可以根据图像的灰度直方图信息自动地确定高低阈值.该算法原理是:设待检测图像大小为M×N,图像灰度级范围为[0,L-1],ni为图像灰度级i的像素点数,灰度级i出现的概率为:pi=ni/(M×N);假设图像中灰度级低于t的像素点构成C0类,即灰度级为[0,t]的像素点归为C0类,灰度级为[t+1,L-1]的像素点为C1类.若P0(t)、P1(t)表示C0类和C1类出现的概率;u0(t)、u1(t)表示C0类和C1类的平均灰度级.则有:
(16)
(17)
(18)
(19)
图像的类间方差σ(t)可以表示为:
(20)
当类间方差值最大时为最优阈值,即高阈值Th:
(21)
其中低阈值为Tl=Th/2,本文运用Otsu算法选出合适的高、低阈值对图像的背景和目标进行分割,有效提高了算法的自适应性.
本文算法的流程图如图4所示.
图4 算法流程图
3 实验结果及分析
改进Canny算子的边缘检测算法在操作方便的可视化平台MatlabR2016a下,选择加入10%椒盐噪声干扰的四幅图像进行算法有效性分析,本文从人眼主观观察和客观评价两个角度验证算法的有效性.
实验1.为了更进一步说明本文中混合滤波器的有效性,与σ=0.8的高斯滤波器进行对比,对比图如图5所示.从实验对比图可以看出,高斯滤波器对图像中大量椒盐噪声的滤除效果比较差,图像的边缘比较模糊,而本文中的混合滤波器对椒盐噪声的滤除效果比较好,图像的边缘信息比较清晰.虽然主观上能看出算法的滤波效果,但本文还通过严格的图像质量评价指标,对滤波后的图像进行客观评价,本文采用文献[16]中信噪比(Signal Noise Ratio, SNR)、峰值信噪比(Peak Signal to Noise Ratio, PSNR)等图像质量评价指标佐证本文中混合滤波器的有效性,对比结果如表1所示.
图5 实验1的结果图
SNR和PSNR用来衡量滤波器滤除噪声的能力,SNR和PSNR的值越大,表明图像的质量越好,滤波器滤除噪声的能力越强;表1表明本文中混合滤波器对椒盐噪声的滤除能力优于高斯滤波器.
表1 图像质量评价对比结果
实验2.为了验证算法对图像边缘检测的有效性和边缘连接的平滑程度,通过与传统边缘检测算法及其它改进Canny算法进行对比来说明本文方法的有效性.其中Roberts算子使用传统的中值滤波器,传统Canny算子的高阈值设置为0.4,低阈值为0.16,使用σ=0.8的高斯滤波器滤除图像中的噪声.从主观上能看出本文算法的检测效果优于其它边缘检测算法的效果,本文还通过边缘连接的客观评价佐证算法的有效性.
通过对含有大量椒盐噪声不同背景下的图像进行对比,比较本文方法和传统Canny算法、LOG算法、Roberts算子、文献[8]算法的检测效果.图6可以看到,第一列表示在噪声环境下不同背景的待检测图像;第二列表示传统Canny算子的处理效果图,虽然基本消除了较多噪声点,但图像处理后出现一定的伪边缘,边缘连接程度相对较差;第三列表示传统的LOG边缘检测算子对图像处理后的效果图,图像中含有大量的噪声点,图像的边缘轮廓比较模糊,边缘连接程度差;第四列表示Roberts算子对图像处理后的效果图,虽然中值滤波器能很好的滤除图像中椒盐噪声,但图像的边缘连接程度差,局部细节特征丢失;第五列表示文献[8]算法对图像处理后的效果图,虽然滤除了图像中大量的椒盐噪声,边缘轮廓比较清晰,但没有很好地保留图像的边缘局部细节特征,图像边缘轮廓出现间断,丢失了一些重要的边缘轮廓信息;第六列表示本文算法对图像处理后的效果图,图像边缘轮廓清晰,图像中含有的椒盐噪声很少,边缘连接程度好,能够很好的保留边缘细节特征,且边缘连接比较平滑.
图6 算法有效性检测结果
根据边缘连接的客观评价方法统计实验结果边缘点数,统计边缘点的4邻域(F)、8邻域(E)和边缘总点数(T),结果如图7所示,其中E/F和E/T的结果进一步证明了本文方法的有效性.E/F的数值越小,表明边缘检测结果中所属八连通性质的单像素所占比例越大,图像中冗余的边缘点越小,边缘连接越平滑;E/T的数值越小,表明检测的边缘轮廓间断少,边缘连接程度好.由图7可以看出,本文算法的优越性要高于其它改进的Canny算法,能更好的保留图像边缘局部细节特征,与传统Canny算法相比,E/F和E/T的结果相差比较小,表明本文算法能够保持传统Canny算法的优良性能.
图7 边缘连接程度的参数对比
4 结束语
改进的Canny算法在对椒盐噪声干扰的图像检测效果较为明显,传统的Canny算法、LOG算法和文献[8]算法适合检测椒盐噪声污染比较小的图像边缘.如果图像中椒盐噪声较强的话,传统方法处理后的图像边缘会出现间断和伪边缘,甚至会丢失一些重要的局部边缘细节特征.而本文改进的Canny算法能更好地去除大量椒盐噪声,同时也能更好地保留图像的边缘细节特征,有效减少图像的伪边缘,使图像边缘连接趋于平滑,因此本文算法可以弥补传统Canny算法、LOG算法和文献[8]算法的不足,提高了算法的精度和有效性,可为目标识别、缺陷检测和工业应用提供一定的参考价值.