针对椒盐噪声图像的Canny边缘检测算法*
2022-09-07徐天芝杨青峰
徐天芝,杨青峰
(1.运城学院数学与信息技术学院,山西 运城 044000;2.临汾市尧都区大阳镇大阳联合学校)
0 引言
图像边缘是图像最基本的特征之一,边缘点是指图像中周围局部灰度导数极大的点。边缘检测是计算机数字图像处理中的基本问题,其目的是统计出局部灰度变化明显的点,因其具有可操作性强,易于实现等特点,一阶和二阶微分算子如Roberts 算子、Prewitts 算子、Sobel 算子、Laplace 算子、Log 算子等被广泛应用于各个行业,但这些算子存在抗噪性差,边缘定位精度不高等缺点。相比于经典算子,在抗噪性能和准确定位之间经过最佳优化的Canny边缘检测算子,具有良好的信噪比、检测精度以及单边缘响应,并成为其他边缘检测算子评价标准。但在利用Canny 算子边缘检测时,采用高斯函数对图像去噪时会对图像边缘的准确定位产生一定的影响。因此,近年来针对Canny 算子的去噪问题,国内外学者做了大量的工作,牛发发等人在Canny 算子边缘检测之前,利用鲁棒主成分分析法对图像进行预处理;王能等人利用数学形态学设计了一种自适应平滑滤波器来达到去噪的目的;李俊山等人采用小波变换替代Canny 算子中高斯滤波器进行去噪;胡志斌等人利用新构造的二进小波滤波器对图像进行边缘检测;李长有等人用混合滤波器代替Canny 算子中的高斯滤波器;刘鹏宇等人利用自适应的中值滤波器,对图像进行边缘检测。这些改进方法在一定程度上都避免了噪声,提高了算法的性能,对于大多数图像均适用,但是对于添加了椒盐噪声的图像来说效果并不是很理想。
本文针对椒盐噪声的特点,对传统Canny 算法进行改进:①根据被椒盐噪声污染像素和样本像素之间的相关性,对被污染像素利用反距离加权插值滤波器进行恢复。②在进行非极大值抑制时,对非噪声点进行优先选择。实验证明,本文算法能够有效避免椒盐噪声的干扰,即使噪声强度达到0.8 时,仍然有较强的稳定性,并保持了较高的检测精度。
1 传统Canny边缘检测步骤
从传统Canny边缘检测的基本思想是先选择一定的Gauss 滤波器对图像进行平滑滤波,然后用非极值抑制技术对图像进行处理得到最终的边缘图像。其步骤如下:
⑴用高斯滤波器平滑图像
采用一个省略系数的高斯函数(,):
其中,(,)是图像数据。
⑵用一阶偏导来计算梯度的幅度值和方向
利用一阶差分卷积模板:
得到幅度值和方向分别为:
⑶对边缘进行准确定位,得到细化的边缘保留全局梯度中的局部最大点,抑制非局部最大点。
⑷用双阈值算法检测和连接边缘
使用两个阈值和(<),从而可以得到关于的低阈值像素集合(,)和关于的高阈值像素集合(,)。因此(,)均为真实边缘点,但并不连续,(,)连续,但含有大量的为边缘点。双阈值的目的就是把(,)中不连续的端点在(,)的8 邻域中不断地搜集像素,从而可以将其连接起来。
2 传统Canny边缘检测方法缺陷分析
在对图像进行边缘检测时,首要任务是去噪。传统Canny 算法是用高斯滤波器去除噪声,而高斯滤波是一种线性滤波,其具体步骤为:用一个用户指定的模板去扫描图像中的每个像素,再用模板确定的邻域内像素的加权灰度值去替代模板中心像素点的值。该方法对线性噪声具有很好的抑制能力,但对于非线性噪声,如对椒盐噪声的抑制能力就很差。因此,本文针对Canny算法边缘检测时对椒盐噪声较为敏感的问题,利用反距离插值滤波器对传统Canny 算法的高斯滤波器进行替换,接着在非极大值抑制时采用非噪声点优先选择的原则,使改进的算法在边缘检测时对椒盐噪声具有很强的抗性。
3 改进的Canny算法
3.1 反距离加权插值滤波器
对于椒盐噪声,通常假设理想图像的灰度水平在和(<)之间变化,并且两者均是可达的,例如,在8 比特的情况下,如=0 且=2-1=255。因此,0 代表亮色“黑椒”,而255 对应亮色“盐”。除了图像域和噪声域,椒盐噪声的产生也依赖于一个二元开关的随机场,在每个像素点(,),=0或1,即
其中,为被污染图像。除此之外,噪声场也是二元的,当=255 时,对应“盐”;当=0 时,对应“黑椒”。假设,,是相互独立的随机场,并且和都是由在整个像素域上的独立同分布组成,则噪声的产生机制完全被如下两个独立于像素(,)的概率而确定:
其中,为椒盐噪声的空间密度,而揭示了椒盐混合中“盐”的百分比。
假设是一个观察到的被污染的图像样本,则定义待修复区域
K包含了所有被“黑椒”和“盐”替换掉的像素,以及少许误检的像素。因此,图像的去噪问题将被转换成误检像素的剔除和图像插值问题。
3.1.1 误检像素的剔除
若中某一像素窗口邻域整体灰度较高或较低,且其窗口内像素(,) ∉的灰度均值与该像素的差值不超过时
为对应窗口内的像素个数。因人眼视觉的极限分辨力无法区分这一差别,所以区分这一点是噪声点还是非噪声点的意义不大,因此将该点视为非噪声点从中剔除。相反,若窗口内灰度均值与该像素的差值超过,则认为该点是被“黑椒”和“盐”替换掉的像素,则不需要进行剔除处理。
3.1.2 反距离加权插值
反距离加权插值法是基于邻域相似性的原理,即认为两个像素的距离越小,它们的相似性就越高,关联度就越高,相反若两个像素的距离越大,则相似性和关联度也就越低。待插值点的修复值是以样本像素点灰度的关联度加权求和得到的,离待插值点越近的样本,像素点灰度被赋予的权重就越大,相反则越小。公式表示如下:
其中,为剔除误检像素后的集合;(,)为像素(,) ∈的修复值;样本像素点(,) ∉但(,) ∈,为像素点(,)所在窗口内所有像素的集合;为其窗口邻域内的样本像素点个数;λ为对应样本像素点的权重,其定义为:
3.1.3 噪声去除的步骤
⑴对图像进行逐点扫描,将灰度值为255 或0 的像素标记为待修复区域K。
⑵采用式⑽的方法将误检的非噪声点从中剔除,得到修复区域,这里的窗口为像素(,)的3× 3邻域。
⑶对修复区域中的每一个像素按照式⑾的方法进行修复。在该步骤中为了缩小恢复值和最真实值之间的差距,尽可能用最小的窗口完成噪声像素点的修复。因此在窗口的选择上采用窗口扩展策略,即先利用最小的窗口实现对噪声点的修复,但是至少要保证每个窗口内至少存在3 个像素不属于,否则自动选择大一号的窗口。
3.2 非极大值抑制
对于理想图像经一阶偏导到梯度,在传统Canny 算法非极大值抑制时,若像素(,)的梯度(,)小于沿梯度线方向上的两个相邻像素点的任一像素的梯度值,则认为该像素点为非边缘点,将其(,)设置为0,否则将其视为边缘候选点。上述方法对于一般图像较为适用,但对于椒盐噪声污染的图像则很容易将被噪声污染的像素视为边缘点,因为噪声点经过反距离加权插值法得到修复,其梯度值受窗口内远距离样本像素点的影响,修复值常常偏大,若沿梯度线上面的两个相邻像素点中有真实的边缘点,将被设置为0,从而将噪声点视为边缘点。为了避免这种情况,在非极大值抑制时,对于非噪声点进行优先选择,即①(,)为噪声点时,若沿梯度线方向上的两个像素点存在非噪声点,且其梯度值(,)比该非噪声点的梯度值不超过,则将其置为0,否则将视为边缘候选点;②(,)为非噪声点时,若梯度线上面的两个像素存在噪声点,且其梯度值(,)比该噪声点小于,则将(,)设置为0,否则将视为边缘候选点。
4 实验与分析
为了验证本文算法的有效性,选择像素为256×256 的不同类别并添加不同强度椒盐噪声的图片进行仿真分析。程序运行的系统环境为MATLAB 2016a和Windows10,用于实验的计算机基本配置为内存为8G,2.6GHz CPU。
4.1 不同算法在同一场景下的边缘检测结果对比分析
在同一场景同一椒盐噪声下,分别利用传统Canny算法、文献[11]的滤波器、处理椒盐噪声效果较好的中值滤波器以及本文算法对图像进行去噪预处理,比较分析各方法在椒盐噪声=0.4 时的处理效果,如图1 所示。对于添加了较高密度的椒盐噪声图像,传统Canny 算法根本无法去除噪声的干扰,图中各物体纹理完全混淆;文献[11]利用小波对图像的椒盐噪声进行去除,很显然效果也并不是很好;文献[14]利用自适应的中值滤波在一定程度上去除了椒盐噪声,但是检测结果中仍然有很多因噪声引起的环状颗粒,且对图片中的桌布以及书本等的纹理表达的并不是很清晰;而本文算法能够对衬衣、书本等纹理信息清晰的表达,在定位精度上更接近于无噪声下的传统Canny算法。
图1 不同算法在p=0.4 时的边缘检测效果图
对不同算法边缘检测的结果引入漏检率(μ)和误检率()两种评价标准进行定量评价,其定义分别为:
其中,是理想的边缘像素集合,本文将无噪声状态下传统Canny算子检测得到的边缘像素集合视为;是检测到的边缘像素集合;()代表集合中的元素个数。可以看出,μ是漏检的边缘像素数目与真实像素数目的比值,μ是检测到的错误边缘像素数目与检测到的总边缘像素数目的比值。因此,μ和μ值越小,说明边缘检测的结果精度越优。
在噪声强度由弱变强的变化过程中,各算法的漏检率和误检率分别如图2 和图3 所示,在噪声密度较低时,文献[14]的算法具有一定的抗噪声能力,但是随着噪声密度的增强,其漏检率(μ)和误检率()均不断地上升,抗噪能力明显下降;传统的Canny算法和文献[11]所述算法,即使在噪声密度较低的情况下,去噪能力也不是很明显,总体效果较差;而本文算法的漏检率和误检率在任何噪声密度下均小于其他算法,且即使噪声密度达到0.8 时,其漏检率和误检率仍然保持在较低的水平。
图2 不同算法去噪后边缘检测漏检率(μFRR)比较
图3 不同算法去噪后边缘检测误检率(μFAR)比较
4.2 在不同场景下边缘检测结果对比分析
为了验证本文算法能够避免不同场景不同强度椒盐噪声的干扰,对Peppers,Dollar,Woman,Junk 图像分别添加=0.5、=0.8 的椒盐噪声。图4 中,A1,B1,C1,D1 为原图,A2,B2,C2,D2 分别为给不同原图添加了=0.5 椒盐噪声的边缘检测图像,A3,B3,C3,D3 分别为给不同原图添加了=0.8 椒盐噪声的边缘检测图像。从图4 可以看出,无论是在不同场景同一强度椒盐噪声还是在同一场景不同强度椒盐噪声的干扰下,本文算法的检测结果中都出现了相应的伪边缘,但原始图像仍有微小的灰度变化,如Dollar图像中人物发型曲线,Woman 图像中人物的衣服纹理等。因此,针对不同场景不同椒盐噪声图像,本文算法均可以达到较高的检测精度。
图4 加入p=0.5(第2列)和p=0.8(第三列)椒盐噪声本文Canny边缘检测算法比较
5 结束语
本文针对传统Canny 算子对椒盐噪声抗性的不足,提出了一种针对椒盐噪声的Canny边缘检测方法。该方法根据像素与邻域像素之间的相关性,对被椒盐噪声污染的像素利用反距离插值法进行恢复;在进行非极大值抑制时,对非噪声点进行优先选择。大量的实验表明,与传统的Canny算子相比,本文方法能够避免椒盐噪声的干扰,是一种有效的针对椒盐噪声的Canny 边缘检测方法。接下来如何提高Canny 算子对线性噪声如Gauss噪声的抗性还需深入研究。