唐义杰,胡超,张倚玮,董卓昊,刘津铭,刘思源

(1.西南大学,重庆,400715;2.重庆大学,重庆,400044;3.广西大学,广西南宁,530004)

0 引言

图像在制作、传输、获取和处理的过程中可能会受到一些干扰,从而产生图像噪声。这些噪声严重扰乱了图像信息,降低了图像画质,损毁了一些细节特征,给图像的使用和分析带来了很大的困难,所以如何滤除这些图像噪声,尽可能的还原图像特征,这是一个非常具有现实意义的问题。

图像中最常见的几种噪声分别为脉冲噪声、高斯噪声、泊松噪声、伽马噪声和瑞利噪声等。本文研究的是脉冲噪声,又称椒盐噪声,这是图像中很常见的一种噪声,它的特征是其灰度以等概率取最小灰度值或最大灰度值随机出现在图像中,在图像上呈现出在亮的区域内有黑色像素点(胡椒点)或者在暗的区域内有白色像素点(盐点)产生。椒盐噪声产生的原因有很多,最常见的是由于图像切割所引起的干扰,也可能是因为影像讯号突然受到强烈的电磁干扰,或者传感器内部出现时序错误等,这是对图像造成干扰严重最严重的噪声之一[1]。

去除椒盐噪声的常规方法是使用传统的中值滤波算法,这是一种基于排序统计的滤波算法,其将像素点的灰度值用其邻域内所有像素点灰度值的中值来替代,算法原理简单,运行速度快,易于实际使用。这种算法的滤波性能主要取决于它的滤波窗口大小,然而矛盾的是滤波窗口过小时无法有效地滤除噪声,而滤波窗口过大时又会使图像变得模糊。在椒盐噪声密度不大的情况下,传统的中值滤波算法对椒盐噪声的滤波效果不错,但伴随椒盐噪声密度的增加,其滤波性能会快速下降。

许多学者在传统中值滤波算法的基础上做了改进,提出了一些可以高效滤除椒盐噪声的改进算法,例如:迭代中值滤波算法[2],二次中值滤波算法[3],对称中值滤波算法[4],高速自适应中值滤波算法[5],非线性滤波算法[6]等。这些算法的滤波性能相对于传统的中值滤波算法有了大幅提升,对被椒盐噪声干扰的图像有很好的还原效果,但当椒盐噪声的密度过大时,还是难以保全图像细节,产生毛边导致图像模糊。对此又有学者提出了针对高强度椒盐噪声的滤波算法[7],其在高密度椒盐噪声环境下的滤波性能有了显着提升,但这种方法结构复杂,实行难度高,运算速度慢。

本文基于传统中值滤波算法做出改进,结合了图像模糊边缘检测的方法,提出了一种适用于强椒盐噪声环境下的模糊边缘自适应中值滤波算法,这种算法可以很好地滤除高强度椒盐噪声,还原被椒盐噪声干扰的图像,滤波还原效果要优于文献[7],并且该算法具有自适应的特点,通用性强,结构简单,运行速度快。

1 算法的思想和实现过程

本文算法的实现主要分为三个过程,第一个过程是对图像进行噪声点检测[8],将具有最小灰度值或最大灰度值的像素点全部标记为疑似噪声点,其他像素点列为信号点,通过这一过程可检索出疑似噪声点,再将疑似噪声点和信号点区分开然后分别进行处理。第二个过程是对噪声点进行自适应滤波处理[9],找到每个像素点所对应的最佳滤波窗口大小且分别对其进行滤波处理,保留所有信号点的灰度值。第三个过程是对滤波处理后的图像进行模糊边缘检测,通过比对所有像素点之间的灰度值差异,找出模糊边缘像素点,并对这些像素点进行二次自适应中值滤波处理,像素点进行第二次中值滤波时采用与第一次中值滤波相对应的滤波窗口大小。

1.1 噪声点检验

本文用S(i,j)来表示图像中位于第i行第j列的像素点灰度值,用Smax和Smin表示图像中所有像素点的最大灰度值和最小灰度值,本文选取的八位灰度图中Smax和Smin的值分别为255和0。对图像中所有像素点的灰度值逐个检索比对,将灰度值与Smax或Smin相同的点标记为疑似椒盐噪声点,其他像素点标记为信号点,用N(i,j)表示疑似椒盐噪声点矩阵。

1.2 自适应中值滤波处理

在进行噪声点检验之后,保留所有信号像素点的灰度值不变,只对检索出的疑似噪声点进行滤波处理,具体处理方法如下:

逐个计算出所有疑似噪声点到图像边界的最短距离dmin,将其作为适用于该点进行自适应中值滤波时可以使用的最大滤波窗口的指标,数值上该点能接受最大滤波窗口的边长为dmin的两倍。

对所有疑似噪声点逐一进行自适应中值滤波处理,将疑似噪声点作为滤波窗口的中心点,其灰度用滤波窗口内所有像素点灰度的中值进行替代。滤波过程应遵守最小滤波窗口原则,每个疑似噪声点的滤波窗口按[3 3][5 5][7 7]的排列方式逐步增大逐次对疑似噪声点进行中值滤波,直到该点的灰度与Smax或者Smin不相同时,认为这个疑似噪声点被滤除,结束对该点的处理,滤波窗口复位为最小边长,继续对下一个疑似噪声点进行中值滤波处理。该方法可以找到适用于不同疑似噪声点的最佳滤波窗口大小并对其进行滤波处理,体现了自适应的滤波功能,对不同图像具有通用性。

1.3 模糊边缘检测

经过自适应中值滤波处理之后,图像已经可以达到很好的还原效果,但当噪声密度过大(>70%)时,图像中的物体边缘会产生毛边使整体图像模糊。本文算法对于这种情况下的还原图像进行模糊边缘检测,提取出模糊边缘像素点并对其进行二次自适应中值滤波处理。模糊边缘检测的基本原理如下:

物体边缘可以看作两个均匀区域之间的边界,我们可以通过比较邻近像素的强度来检测模糊边缘像素点。如果把整个图像看成一个二维离散函数,那幺图像的梯度在数值上就是这个二维离散函数的求导,令两个方向上的导数矩阵为dx和dy,令两个矩阵之和为G:

然后,利用梯度滤波器Gx=[-1 1]和Gy(等于Gx的转置)与图像S分别进行卷积,可以获得图像沿水平方向和竖直方向的梯度矩阵Sx和Sy,梯度的值在[-1 1]之间变化。如果水平方向梯度(Sx)相差很小并且竖直方向梯度(Sy)相差也很小,那幺该像素点用白色表示,如果水平方向梯度或者竖直方向梯度相差较大,用黑色表示。用黑色表示的像素点则被认为是模糊边界点,之后对这些像素点进行二次自适应中值滤波处理,这些像素点进行二次中值滤波时采用的窗口大小与其第一次中值滤波窗口大小相同。

2 实验结果及分析

为验证本文算法的先进性和实际可行性,本为了验证本文算法的先进性和实际可行性,本文选择了Matlab软件对本文算法进行了实际仿真运算并进行了对比分析。以图像“lena”(512×512)和图像“rice”(256×256)作为实验对象,分别对两张原图像加入噪声密度为5%~95%的椒盐噪声,再分别使用传统的中值滤波算法,文献[7]中针对强密度椒盐噪声的滤波算法以及本文算法进行滤波处理,以峰值信噪比PSNR(Peak Signal to Noise Ratio)来作为不同算法滤波性能的客观评价指标,对不同算法在不同密度椒盐噪声下的滤波性能进行对比。

PSNR是图像领域中一种常用的评价指标,其通过图像均方差(MSE)进行定义[10]。MSE和PSNR数值的计算公式如下:

其中m和n分别代表图像宽度和高度,Smax表示图像中所有像素的最大灰度值,S代表原图,J代表滤波后的图像。

图1 是不同算法在不同密度的椒盐噪声下对“lena”图像的滤波性能的对比,图2是对“rice”图像的滤波性能的对比。从图1和图2中可以看出,传统的中值滤波算法在椒盐噪声密度不大时,滤波效果不错,还原图像的峰值信噪比和其他两种算法结果差距不大,但随着椒盐噪声密度的增加,以椒盐噪声密度为30%为结点,当噪声密度超过这个结点时,其滤波性能快速下降。文献[7]提出的算法相对于传统中值滤波算法的滤波性能有很大提升,但是对于强椒盐噪声,尤其是噪声密度大于85%的的超强密度噪声,这种算法的滤波性能也会快速下降。本文算法是这几种算法中实验结果最好的一种,虽然其滤波性能也会随着噪声密度的增加而下降,但相对于另外两种算法,噪声密度的增加对其滤波性能的影响大大降低,表现出了良好的滤波性能。

图1 不同算法对“lena”图像的滤波性能比较

图2 不同算法对“rice”图像的滤波性能比较

特别地,本文对图像“lena”和图像“rice”分别加入密度为95%的椒盐噪声,然后用不同算法对被干扰的图像进行滤波还原,将其作为在高密度椒盐噪声环境下不同算法的滤波性能的特例,进行视觉效果对比。对两张干扰图像应用不同滤波算法后分别得出还原图像,如图3和图4所示,不同算法的滤波图像对比直观地表明了本文算法具有出良好的图像去噪和还原效果,相对于其他两种算法具有先进性,很好地弥补了传统的中值滤波算法和文献[7]中滤波算法的缺陷。

图3 95%噪声密度下“lena”图像滤波效果对比

图4 95%噪声密度下“rice”图像滤波效果对比

3 结语

本文针对图像中的高强度椒盐噪声难以滤除的问题,在传统中值滤波算法的基础上做出了改进,提出了一种模糊边缘自适应中值滤波算法。该算法首先进行噪声点检测,通过逐一检索每个像素点的灰度值,提取出所有的疑似噪声点,然后对图像中信号点的灰度值进行保留,只对疑似噪声点进行自适应中值滤波处理,找到每个像素点的最佳滤波窗口大小并对其进行滤波处理,尽可能地还原图像原始特征,最后对处理后的还原图像进行模糊边缘检测,提取出模糊像素点,对这些像素点进行二次滤波,最终得出高质量的还原图像。

该算法在高密度的椒盐噪声环境下具有良好的滤波还原性能。因为对每个像素点采用不同的滤波窗口大小进行中值滤波处理,因此具有自适应的特点,可对不同的图像进行处理,通过对提取出的所有模糊边缘像素点进行二次滤波,实现了图像的细节还原。该算法结构简单,运行速度快,可以很好地滤除椒盐噪声,保留图像细节,还原图像信息。通过与传统的中值滤波算法和文献[7]中提出的改进滤波算法进行实验结果对比,证明了本文算法的有效性和先进性。