一种低对比度背景下的工件边缘检测方法

2022-09-13 10:09吴云飞柏受军徐印赟
安徽工程大学学报 2022年4期
关键词:高斯工件滤波

吴云飞,柏受军*,江 明,徐印赟

(1.安徽工程大学 高端装备先进感知与智能控制教育部重点实验室,安徽 芜湖 241000;2.安徽工程大学 电气工程学院,安徽 芜湖 241000)

在机器视觉系统中,对目标图像进行预处理是必不可少的关键步骤。其中对图像中目标区域边缘信息的有效获取是图像识别过程中至关重要的一环,即边缘检测。顾名思义,边缘检测技术是运用于图像视觉识别领域中的一个至关重要的技术。在视觉系统的目标识别步骤中,有效准确地提取出目标工件或者目标物体的边缘信息,是直接影响下一步目标识别的重要前提和条件。目前,边缘检测算法种类繁多,如何选择合适的算法进行边缘检测以及对其做出合适的改进是机器视觉中应用边缘检测的关键。

针对传统边缘检测算法的各种缺陷,近年来国内外学者都想方设法对边缘检测技术进行创新,同时,如何有效保护图像的边缘信息也一直是研究热点。为了增加边缘检测的准确率,文献[1-4]将数学形态开闭运算与混合滤波器、二进小波变换算法、自适应中值滤波、双边滤波相结合;文献[5-8]在Canny算法的基础上结合多尺度增强、几何特征、同态滤波、Zernike矩等算法提高了算法的保边性,提高了缺陷检测的精度。上述几种方法虽然增加了边缘检测的准确率,但是增加了算法的复杂性,并且或多或少地受到被检测目标的影响。

为了提高边缘检测算法的滤波性能,文献[9]提出将MMTF与边缘检测算法相结合;文献[10-11]提出新的混合滤波方法来代替Canny边缘检测算法中的高斯滤波;文献[12-13]将Canny算法与Hough变换相结合,以此来提高边缘检测算法性能;文献[14-15]将边缘检测与实际应用场景相结合并改进;但上述几种方法虽然能在一定程度上提高边缘检测的准确率,但是对于低对比度背景图片,准确率以及算法的自适应性有所下降;文献[16-18]针对低对比度背景图像做出改进,用于边缘、缺陷检测和特征提取,因此,文章针对低对比度背景图像提出一种新的边缘检测算法,为边缘检测方面提供了一定的新思路。

综上所述,在传统的几种边缘检测算法中,Canny算法被应用得最多,其被广泛应用于视觉系统中。但是,传统Canny算法自身也存在着缺陷,实际使用中会在滤波时对需要的重要边缘部分造成边缘模糊,最终导致边缘部分信息丢失,造成提取效果不佳,更不用说在低对比度背景下的工件边缘检测效果了。如何在低对比度背景下对工件进行边缘检测时,既能有效去除噪声,又可以有效保护边缘信息,使边缘不模糊,不丢失重要的边缘信息,这对边缘检测来说是急需解决的一个问题。

1 传统的Canny边缘检测算法

1.1 基本原理

Canny边缘检测算法早在1986年就被提出,是目前为止边缘检测算法中应用最广泛、最经典的边缘检测算法之一。Canny边缘检测算法属于先平滑后求导的方法,算法需要满足两个条件:第一,要能有效地抑制噪声;第二,要能尽量精确地检测并确定边缘的位置信息。然后,对信噪比与定位乘积进行测度,得到最优化逼近算法,这就是Canny边缘检测算法的基本原理。

(1)信噪比。边缘检测中要求非边缘点误判为边缘点或边缘点误判为非边缘点的概率要尽可能低。信噪比(SNR)的数学表达式为

(1)

式中,h(x)为边界滤波器的脉冲响应;G(-x)为边缘函数;σ为高斯噪声的标准差。信噪比(SNR)越大,正确率越高,提取的边缘质量越高。

(2)定位精度。边缘检测中要求检出的边缘点与实际边缘点距离最小。定位精度的数学表达式为

(2)

式中,G′(-x)和h′(x)分别为G(-x)和h(x)的1阶导数。定位精度值L越大,定位精度越高。

1.2 基本步骤

传统的Canny边缘检测算法的步骤如图1所示。Canny算法是先平滑后求导的边缘检测算法。传统的Canny边缘检测算法的基本步骤:首先,通过高斯函数对图像进行滤波处理以去除噪声;其次,计算被检测像素点的梯度幅值和方向,然后利用梯度的方向抑制非极大值,从而确定边缘。Canny算法去噪能力强,但在处理时会造成一些边缘信息也被平滑模糊掉,会造成边缘缺失导致边缘不连续。

(1)高斯滤波。高斯滤波是建立在高斯函数基础上的线性滤波算法,基本思想是将被检测的中心像素赋予邻域像素的平均值,所以滤波处理后的图像整体会有一个平滑效果,图像会变得模糊。

下面是一维和二维高斯分布函数的公式:

一维高斯分布函数公式:

(3)

二维高斯分布函数公式:

(4)

式中,σ为高斯噪声的标准差,它控制着平滑程度。σ越小,图像平滑程度越小;反之,σ越大,图像平滑程度越大。

(2)计算梯度幅值和方向。用式(5)~(6)分别计算图像上的各像素点的梯度幅值和梯度方向。

(5)

(6)

其中,P[i,j]为任一像素点[i,j]沿x方向的偏导数,Q[i,j]为[i,j]沿y方向的偏导数。

(3)非极大值抑制。对图像的像素梯度幅值进行非极大值抑制。具体方法是,若沿某像素梯度方向相邻的两个像素存在比该像素梯度幅值大的情况,则排除被判断点,反之保留该点。

(4)双阈值。与其他边缘检测算法不同的是Canny算法设有双阈值即高阈值和低阈值,当被检测像素点梯度幅值大于高阈值时,识别为边缘点并保留。反之,当被检测像素点梯度幅值小于低阈值时,识别为非边缘点并删除。当幅值处于双阈值之间时,则计算该像素点的邻域内是否有边缘点,若有则保留,无则删除。传统Canny边缘检测中的高低阈值需要人为的根据经验进行设置,自适应性较差且经验性较强。

实际上,传统的Canny算法实际应用时在滤波的同时无法分辨边缘信息,会对图像整体进行平滑处理,从而导致目标边缘也被平滑掉,最终导致边缘提取效果不佳。

2 改进的边缘检测算法

传统Canny算法采用高斯滤波去降噪,但高斯滤波在去噪的同时将造成边缘模糊,丢失大量细节信息,并且在去除噪声方面效果不佳。特别是在处理低对比度背景下的工件图片时会无法辨别工件的边缘,从而将工件的边缘和背景一起平滑掉。针对以上问题,本文提出用一种选择性滤波与均值滤波相结合的混合滤波算法,该算法代替传统Canny算法中的高斯滤波算法来对图片进行平滑处理。新的混合滤波算法有选择性地对图像的边缘区域和非边缘区域进行滤波运算,能在大量降低噪声的同时保留边缘的信息,最后进行边缘提取。

2.1 混合滤波

针对传统的Canny算法的缺陷,即高斯滤波在去除高斯噪声时会使图像整体模糊,使图像丢失很多边缘信息,并且高斯滤波在去除图像中的椒盐噪声时效果不佳,所以提出用改进的高斯滤波与中值滤波相结合的混合滤波来代替高斯滤波,这样不仅能有效去除高斯噪声和椒盐噪声,而且能在去除噪声的同时保护边缘信息。

(1)改进的高斯滤波。高斯滤波与常见的线性滤波算法一样,原理都是计算出被检测的某一个目标像素点周边的邻域中其他相关像素的位置,分配权重,然后得到结果值。但是,由于高斯模糊的权重和像素与到中心点的距离成高斯分布,所以在应用这种计算方法时,无法辨别边缘像素,这样就会导致目标图像在滤波处理完之后一些重要的边缘信息丢失。针对这一问题,参考高低阈值原理,在高斯模糊的基础上设置一个阈值;当邻域像素和中心点像素的值差距小于阈值时,则对原本高斯模糊算法设置的权重不做任何改变;但当邻域像素和中心点像素的值的差距大于阈值时,就将其权重设为定值;最后在权重项目中与系数相乘,从而实现有选择性的高斯滤波效果。

以上算法原理对于本身比较平滑无明显像素值变化的区域,即对于不含有明显的边缘信息的区域而言,能达到和传统的高斯滤波算法一样的有效去除高斯噪声的效果;而对于含有边缘像素的区域,为其邻域像素的权重人为分配一个合适值,从而实现对图像有效去除噪声的同时又能保留边缘信息。

(2)中值滤波。图像的中值滤波是一种非线性图像处理方法。与高斯滤波不同,中值滤波是通过邻域内像素的值决定中心像素的值。原理是对目标中心点的像素值用邻域内的各像素值计算得出的中值来代替。举一个示例如图2所示,在一个3×3的矩阵里有9个像素点,计算得出这9个点的中值,然后将这个矩阵的中心点赋值为这9个像素值的中值。

改进的高斯滤波可以有效去除高斯噪声,中值滤波可以有效去除椒盐噪声,将改进的高斯滤波作为输入,中值滤波作为输出,结合成混合滤波,进而实现对目标图像中高斯椒盐噪声的有效去除,流程如图3所示。

2.2 Sobel算法计算梯度幅值

在对图像进行平滑处理后,需要使用卷积模板算法对图像的某个像素点实现卷积操作,确定梯度幅值。传统的Canny的卷积为2×2的模板,分为两种:一个沿着水平方向,一个沿着垂直方向。传统Canny卷积的模板如式(7)所示:

(7)

不同于Canny的卷积,Sobel算法的卷积为3×3的模板,一般也分为水平与垂直两种方向,本文引用改进的Sobel算法卷积模板来计算图像在0°、90°、45°和135°这4个方向的梯度幅值。Sobel算法卷积的模板公式如下:

(8)

梯度幅值:

(9)

梯度方向:

(10)

式中,g0°[i,j]、g90°[i,j]、g45°[i,j]、g135°[i,j]分别为点g[i,j]在0°、90°、45°和135°这4个方向的偏导数;M[i,j]为梯度幅值;θ为梯度方向。

改进的Sobel算法卷积模板相比较Canny算法而言,不仅尺度增加,方向也由原来的水平垂直增加到了4个方向,对4个方向进行梯度计算,能够更全面地检测边缘信息,所以使用改进Sobel算法卷积计算梯度幅值的精度和准确率都更好。

2.3 Otsu自适应阈值算法

传统的Canny算法采用双阈值的方法来分辨边缘信息,双阈值的大小需要人为地选取设定,这不仅需要一定的经验,而且意味着算法的自适应性很低,于是本文使用Otsu自适应阈值算法来克服传统算法的这一缺点[19-21]。Otsu自适应阈值算法可以通过被检测目标图像的前景和背景各个部分不同的分界值来计算对应的前景和背景的类内方差,类内方差取极大值所对应的分界值就是Otsu计算得出的自适应阈值。计算公式如式(11)~(17)所示:

(11)

(12)

A+B=M×N,

(13)

ω0+ω1=1,

(14)

μ=ω0×μ0+ω1×μ1,

(15)

g=ω0(μ0-μ)2+ω1(μ1-μ)2,

(16)

将式(15)代入式(16),得到等价公式:

g=ω0ω1(μ0-μ1)2,

(17)

由式(17)可得类间方差g最大的阈值T,T为前景背景的分割阈值;式(11)~(17)中,ω0为前景中像素点的数量占整幅图像的比例,μ0为其像素点的平均灰度;同理,ω1为背景部分像素点的比例,μ1为其平均灰度;μ为图像的总平均灰度;g为类间方差;M×N为图像大小尺寸;A为图像中灰度值小于阈值T的像素个数;B为灰度值大于阈值T的像素个数。

本文提出的针对低对比度背景下带划痕工件的边缘检测算法步骤如图4所示。与图1传统的边缘检测算法步骤相比较,改进后的边缘检测算法在图像去噪滤波方面、梯度方面以及双阈值选取的算法自适应性上均有所增强。

3 实验结果验证及分析

3.1 实验环境

本文边缘检测实验是在VS 2010环境下,配置开源计算机视觉函数库Open CV 3.3.0进行测试。

3.2 实验结果验证

(1)滤波器去噪效果对比。为了对比传统的滤波方法与改进的滤波方法对低对比度背景下的工件图片的滤波效果,设计了以下实验:

①目标工件图片背景对比度。工件边缘两侧区域RGB值对比如图5所示。由图5可知,目标图片背景部分与工件部分的RGB值差距很小,即色域相似度很高,对比度很低,且工件表面有非常明显的划痕。对于这种低对比度背景下的带划痕的工件图片,传统方法难以准确地进行边缘检测。

②不添加噪声工件图片处理结果对比。首先对不含噪声的目标工件图片进行滤波效果实验对比,结果如图6所示,实验对象是无添加噪声的低对比度背景下的有划痕工件图片,方框内是工件上明显的划痕。由图6b、6c可以看出,用不同标准差的高斯滤波器对目标图片进行滤波处理时,当标准差σ太小时,划痕还是明显存在,就算增大标准差的值至牺牲工件的边缘细节来对图片进行平滑滤波,也无法有效地去除划痕;而用本文提出的算法来对目标图片进行处理时(见图6d),可以很好地解决这个问题。本文算法不仅能有效地保留边缘部分的细节信息,还能对非边缘部分进行有效地平滑处理,从而在保留图片细节的同时,还能有效地去除工件表面的划痕带来的干扰。

③添加噪声工件图片处理结果对比。添加了高斯椒盐噪声的不同工件图片,通过不同标准差大小的高斯滤波处理效果与本文提出的混合滤波效果对比如图7所示。由图7可以看出,高斯滤波会对目标图片进行整体平滑处理,导致目标图片在滤波后整体变得模糊,丧失了大量边缘信息,而本文提出的混合滤波在对高斯椒盐噪声滤波处理后,不仅能有效地去除噪声,还能有效地保护边缘不被平滑处理掉,效果较高斯滤波而言更好。由图7实验图片对比可知,在对添加了高斯椒盐噪声的工件图片进行滤波处理时,高斯滤波在标准差σ较小的情况下滤波效果不是很好,虽然能保留图像细节,但是去除噪声的效果不够理想(见图7b、7f),在σ较大的情况下滤波效果稍好,但是模糊掉了图像边缘细节(见图7c、7g);混合滤波相比较传统的高斯滤波,在有效去除高斯椒盐噪声的同时能选择性地平滑掉一些非边缘部分,能更有效地去除噪声且保护好边缘信息(见图7d、7h)。

④滤波处理图像质量保真结果对比。为了进一步说明本文提出的混合滤波器的去噪保真效果,本文通过比较psnr(峰值信噪比)以及ssim(结构相似度)指标来比较滤波去噪图像质量。ssim取值范围为[0,1],在[0,1]范围内,值越大,表示图像失真越小,质量越高;反之,值越小,则表示图像质量失真越大,图像质量越差。psnr值越大表示图像失真越小。不添加噪声图片psnr、ssim值对比如表1所示,添加噪声图片psnr、ssim值对比如表2所示。由表1、2中数据可知,本文提出的滤波算法在对目标图片处理时,psnr以及ssim的值都是最大,说明本文提出的混合滤波在有效去除噪声的同时也很好地保证了图像质量。

表1 不添加噪声图片psnr、ssim值对比

表2 添加噪声图片psnr、ssim值对比

(2)边缘检测算法结果对比。为了验证本文边缘检测算法的有效性,采用边缘清晰度指标来比较各边缘检测算法的保边性,图像清晰度比较结果如图8所示。从左到右的算法顺序是Sobel、Laplace、Log、传统Canny算法以及本文算法,由图8可知,文章提出的改进边缘检测算法边缘清晰度最高,保边性最好。

由以上边缘检测算法的滤波效果实验数据对比可知,本文的边缘检测算法相较于传统的Canny算法而言,其滤波效果、图片保边性以及保真性更好,于是进一步对比边缘检测效果如图9所示。由图9图像处理结果可知,针对工件与背景灰度变化小的目标图片,传统的Canny算法在处理带噪声图片时,会失去较多细节,并且边缘连续性较差,实验结果并不理想;Laplace、Log、Sobel算法在处理带有噪声的目标图片时,对噪声较敏感,虽然能有效保留边缘,但是噪声的干扰性太大,实验结果也不理想;而本文改进的边缘检测算法相比较于Laplace、Log、Sobel能有效地去除噪声,相比较于传统的Canny算法能更多保留边缘信息,得到的边缘检测结果边缘更加连续,伪边缘和误检的边缘都更少,有效的边缘数量也更多,边缘也更加连续。

3.3 实验结果分析

通过实验结果对比可知,在低对比度背景下处理表面有划痕的工件图片时,在消除噪声和去划痕影响方面,本文提出的混合滤波去除高斯噪声和椒盐噪声的效果明显优于传统的几种算法,不仅能有效去除工件表面划痕的影响还能有效去除高斯椒盐噪声;在图像质量保真方面,由表1中的psnr和ssim指标可以看出,本文滤波算法得到的去噪图像质量最好。在边缘检测方面,本文算法检测到的有效边缘更多,边缘更加连续,明显优于传统的边缘检测算法。本文算法不仅能有效去除噪声,还能有效保护边缘信息的完整性和连续性。

4 总结

本文针对几种传统边缘检测算法在低对比度背景下处理表面有划痕的工件图片时的不足,提出将高斯滤波进行改进,并将改进的高斯滤波与中值滤波相结合的混合滤波器算法来代替高斯滤波器,然后增加了梯度幅值的计算方向实现梯度增强,最后用自适应阈值的方法提高了算法的自适应性。改进的边缘检测算法克服了传统边缘检测算法提取边缘的信息丢失问题,在低对比度背景下表面对有划痕的工件图片的图像边缘检测中保留边缘信息的效果较为明显。相比较于传统的Canny算法、Laplace、Log以及Sobel算法而言,本文改进的边缘检测算法在消除大量的高斯噪声以及椒盐噪声的情况下,能更有效地保护图像的边缘特征信息。因此本文算法可以弥补传统Canny等边缘检测算法的不足,提高了算法的精度和有效性,具有良好的应用前景。

猜你喜欢
高斯工件滤波
带服务器的具有固定序列的平行专用机排序
带冲突约束两台平行专用机排序的一个改进算法
工业机器人视觉引导抓取工件的研究
两台等级平行机上部分处理时间已知的半在线调度∗
一种考虑GPS信号中断的导航滤波算法
数学王子高斯
天才数学家——高斯
高效LCL滤波电路的分析与设计
基于多窗口中值滤波和迭代高斯滤波的去除图像椒盐噪声的方法
从自卑到自信 瑞恩·高斯林