APP下载

基于二次检测和极值修剪的自适应滤波算法

2019-09-16陈家益熊刚强战荫伟曹会英

关键词:中值极值灰度

陈家益,熊刚强,战荫伟,曹会英*

(1.广东医科大学 信息工程学院,广东 湛江 524023;2.广东工业大学 计算机学院,广东 广州 510006)

图像在获取、处理、存储和传输的过程中,由于外部环境的干扰和硬件条件的限制,往往会被噪声污染,而脉冲噪声是主要的噪声.脉冲噪声主要有两种类型:固定的灰度噪声即椒盐噪声,以及随机的灰度噪声.如果是椒盐噪声,被污染的像素要么是最小的灰度值,要么是最大的灰度值[1].如果是随机的灰度噪声,被污染的像素的灰度值可以是介于最小灰度值和最大灰度值之间的任何值.根据是否进行噪声检测,现行的滤波方案总体上分为两大类:无噪声检测的滤波和基于噪声检测的滤波[2].所有的滤波方案的目标是在滤除噪声的同时,保持图像的边缘和细节部分.但噪声在图像上表现出与图像的边缘和细节部分有很大的相似性,在滤除噪声的同时,往往也将部分边缘和细节部分误当作噪声滤除掉,结果使得滤波图像变得模糊.为了改善图像滤波的效果,学者们不断地提出了各种改进的中值滤波算法,在不同程度上提高了图像滤波的性能.

1 现行的中值滤波算法

中值滤波是基于排序统计理论的一种非线性图像滤波技术.将当前像素对应的滤波窗口的像素按灰度大小进行排序,然后选择中间位置的灰度作为当前像素的灰度.中值滤波的主要功能是使拥有不同灰度的点看起来更接近于它的相邻点.中值滤波在滤除噪声的同时,在一定程度上保持了图像的边缘和细节信息[3].

1.1 常规的中值滤波算法

常规的中值滤波算法有标准的中值滤波算法和自适应中值滤波算法.

标准的中值滤波算法[4](standard median filter algorithm,简称SMF)采用固定大小的滤波窗口,对每个像素对应的滤波窗口内的像素按灰度大小进行排序,取灰度中值取代当前像素.标准的中值滤波算法是无区分的滤波,并且算法采用固定大小的滤波窗口,缺乏自适应性.针对标准的中值滤波算法存在的局限性,提出了自适应的中值滤波算法.

自适应中值滤波算法[4-5](adaptive median filtering algorithm,简称AMF)分为两个步骤:噪声检测与噪声滤除.将当前像素与其对应的滤波窗口的灰度极值进行比较,如果不等于极值,则当前像素为信号点,否则为噪声点.对于信号点,保持不变,而对于噪声点,将滤波窗口中的像素按灰度大小进行排序,取中值代替噪声点.在滤波过程中,滤波窗口会根据一定的设定条件自适应地改变大小.

在图像的噪声密度不大时,自适应中值滤波算法对椒盐噪声具有较好的滤波效果.但是,当图像噪声密度较大时,自适应中值滤波算法的滤波效果递减,同时在保持图像边缘和细节方面的性能大大下降.算法根据滤波窗口中的灰度极值进行噪声检测,但是滤波窗口中的灰度极值像素不一定是噪声.算法所用的灰度中值,是包含所有噪声点在内的排序中值,有可能依然是噪声点.

为了实现在滤除噪声的同时保持图像的边缘和细节部分,很多学者从各个方面做出了深入的研究,并提出了多种改进的中值滤波算法,包括开关中值滤波算法[6]、中心加权中值滤波算法[7]、基于决策的中值滤波算法[8-9]等.

1.2 改进的中值滤波算法

开关中值滤波算法[6]计算当前像素的灰度与滤波窗口的灰度中值的绝对差,如果绝对差超过了指定的阈值,确定为噪声点,否则为信号点.对于噪声点,用其对应的滤波窗口的灰度中值取代.噪声检测的最优阈值不好选取,需依赖于预先多次的实验,提高了算法的时间复杂度和空间复杂度.另外,滤除噪声所用的灰度中值依然是包含噪声在内的排序中值.文献[10]提出了一种基于模糊噪声检测的简单开关中值滤波算法.算法从噪声图像的直方图中找出偏向于最小灰度与最大灰度的双峰,以此进行噪声检测.对可疑噪声,根据其与邻域像素在灰度上的差异,做进一步的噪声检测.对噪声点,用当前像素的灰度与滤波窗口的灰度中值两者的加权和代替.其实这种方法很难实现,特别是噪声密度低的图像.文献[11]提出一种动态的自适应中值滤波算法.算法是由一组最大滤波窗口不断增大的自适应中值滤波算法进行简单迭代而成.最大滤波窗口的尺寸作为循环变量,常规的自适应中值滤波算法作为循环体,明显提高了算法的时间复杂度.对图像迭代运用中值滤波,必然会导致图像丢失更多的边缘和细节部分.文献[12]提出一种基于均值和中值的改进自适应滤波算法(improved adaptive filtering algorithm based on mean and median,简称IAFMM).该算法中原信号像素与滤波窗口的灰度均值之间的相关性不高,算法根据滤波窗口的灰度均值进行噪声检测,实际的检测准确率不高.另外算法涉及阈值太多,最优阈值难以选取,难以控制滤波的效果.

常规的中值滤波算法在噪声检测和噪声滤除方面存在诸多局限性,随着噪声密度的增大,算法的滤波性能递减.针对现行的中值滤波算法的局限性,作者提出一种基于二次检测和极值修剪的自适应滤波算法(adaptive filtering algorithm based on two detection and extremum trimmed,简称AFTDET).

2 基于二次检测和极值修剪的自适应滤波算法

基于二次检测和极值修剪的自适应滤波算法对噪声检测和噪声滤除两方面分别进行改进.为了提高噪声检测的准确率,分别用不同方法、从不同角度对噪声进行前后两次检测.对检测出来的噪声,用修剪灰度极值后的滤波窗口的灰度中值进行滤除,在滤波过程中根据一定的设定条件自适应地改变滤波窗口的大小.

2.1 噪声检测与滤除

常规的自适应中值滤波算法,根据当前像素对应的滤波窗口的灰度极值进行噪声检测.如果当前像素的灰度等于灰度极值,确认为噪声.经过实验验证,这样会将一部分灰度等于灰度极值的信号像素确认为噪声.因此,根据当前像素对应的滤波窗口的灰度极值进行噪声检测,窗口的尺寸太小.

基于以上分析,论文算法扩大了噪声检测的滤波窗口.如果噪声检测的滤波窗口过大,虽然可以减少将部分信号像素确认为噪声的概率,但是会增大将噪声确认为信号像素的概率.因为滤波窗口过大,窗口中的其他像素与当前像素的相关性减小.经过充分的实验,算法本身预先指定的允许最大滤波窗口是进行噪声检测的最优窗口尺寸.如果当前像素的灰度等于最大滤波窗口的灰度极值,则初步认定为噪声点,否则确认为信号点.根据最大滤波窗口的灰度极值进行噪声检测,将当前像素的灰度与独立的、离散的灰度极值进行比较,只是在像素灰度的大小方面进行噪声检测,缺乏像素之间的相关性与统计特性的比较,检测出来的噪声有可能依然包含部分信号像素,是可疑的噪声.为了提高噪声检测的准确率,根据像素的相关性与统计特性,对可疑噪声做进一步的检测.统计修剪掉灰度极值像素后的最大滤波窗口的灰度中值,然后计算灰度中值与可疑噪声点的灰度值两者之间的绝对差,如果绝对差小于预先设定的阈值T,则确认可疑噪声点为信号点,否则确认为噪声点.

现行的滤波算法直接将滤波窗口中包括噪声在内的灰度中值取代噪声,综合了信号和噪声的灰度中值,必然降低中值与当前像素的相关性,使得中值偏离了原本的信号像素,导致图像丢失更多的边缘和细节部分.

基于以上分析,对于噪声点,论文算法用修剪掉灰度极值后的滤波窗口的灰度中值取代;对信号点,保持不变.此处所用的极值,是用作噪声检测的最大滤波窗口的灰度极值.对滤波窗口修剪掉极值,是为了排除噪声对中值的影响,提高中值与当前像素的相关性.如果当前滤波窗口修剪掉极值后已经没有像素,说明噪声密度较大,则增大滤波窗口,以包含信号像素进来,如此进行迭代以取得修剪极值后的中值.如果滤波窗口增大到允许的最大尺寸,滤波窗口修剪掉灰度极值后依然没有像素,说明噪声密度非常大,则取一个灰度极小值和一个灰度极大值的算术均值作为中值,取代噪声点.

2.2 算法的具体步骤

设Wij为正被处理的、中心在(i,j)处的滤波窗口,S0为默认的初始窗口大小,Smax为允许的最大窗口大小,f(i,j)为(i,j)处的灰度,T为一个预先设置的阈值.基于二次检测和极值修剪的自适应滤波算法的具体步骤如下:

(1) 取(i,j)处大小为Smax的滤波窗口Wij,统计Wij的灰度极小值fmin和灰度极大值fmax,如果fmin

(2) 统计Wij中修剪掉极值fmin和fmax后的灰度中值fmed_ridminmax.如果Wij修剪掉极值后已没有像素,即Wij中所有的像素都是灰度极值,输出 (fmin+fmax)/2;否则转(3).

(3) 如果abs(f(i,j)-fmed_ridminmax)

(4) 统计Wij中修剪掉极值fmin和fmax后的灰度中值fmed_ridminmax,输出fmed_ridminmax,如果Wij修剪掉极值后已没有像素,则增大滤波窗口Wij,转(5).

(5) 如果Wij的尺寸≤Smax,转(4);否则,输出(fmin+fmax)/2.

经过多次实验阈值T取3或4为最优阈值.对于允许的最大滤波窗口大小Smax,经过算法的迭代实验,认定Smax取11或13为最优尺寸.

3 仿真实验与结果分析

根据作者提出的AFTDET算法,编写程序进行实现.对于常规的中值滤波算法,文献[4]提出的AMF算法的滤波性能最好;对于改进的中值滤波算法,文献[12]提出的IAFMM算法的滤波性能较好.为了证明AFTDET算法的性能,同时也实现AMF算法和IAFMM算法,以进行滤波性能的比较分析.将3种算法分别同时应用于含不同密度椒盐噪声的512*512、256级灰度的标准图像Lenna,允许的最大滤波窗口大小Smax设置为11,阈值T设置为3.

3.1 主观视觉的比较

3种算法的滤波效果比较如图1所示.

图1 3种算法的滤波效果比较

从图1可知,当噪声密度比较小时(如0.1或0.5),在滤波效果上,IAFMM算法比AMF算法好一点,从图像的边缘轮廓可以看得出来,但是不明显.AFTDET算法的滤波效果相对前两者较好.对图像的细节部分进行比较,如美女的眼睫毛以及左右两侧的头发,AFTDET算法的滤波效果明显比前两种算法清晰明朗.

当噪声密度比较大时(如0.9),3种算法的滤波效果的差异更加显著.用AMF算法进行滤波后,原图像的部分像素信号得以恢复,但是出现明显的失真,并且出现雪花状的噪声斑点.用IAFMM算法进行滤波后,虽然滤除了噪声,但是图像出现明显的失真,图像的边缘轮廓以及细节部分出现严重的模糊.用AFTDET算法进行滤波后,除了眼睫毛和头发细节部分出现一些微小的模糊,绝大部分的图像信号得以恢复.根据对噪声图像的滤波效果的比较,相对于AMF和IAFMM两种算法,AFTDET算法在滤波效果上有着显著的优越性.

3.2 客观数据的比较

为了客观而准确地说明AFTDET算法的滤波性能,对3种算法的滤波性能进行量化比较,采用峰值信噪比(PSNR)作为客观评价的标准.PSNR定义为

其中:m,n为图像的大小,f(i,j)为原图像的灰度,g(i,j)为滤波图像的灰度.

3种算法分别同时对含不同密度椒盐噪声的图像进行滤波后的PSNR如图2所示.

图2 3种算法滤波的峰值信噪比的比较

从图2中3种算法的PSNR走势看,IAFMM算法的PSNR总体上比AMF算法高,更为重要的是,AFTDET算法的PSNR明显高于另外两种算法.不管是对低密度噪声图像,还是对高密度噪声图像,AFTDET算法的PSNR与另外两种算法始终保持一定的差距.

对照图2,对含不同密度椒盐噪声的图像进行滤波后的具体PSNR如表1所示.

表1 3种算法滤波的峰值信噪比的比较

对3种算法进行滤波后的具体PSNR进行统计和比较分析,显而易见,不管是对低密度噪声图像还是对高密度噪声图像,相对于AMF和IAFMM算法,AFTDET算法的PSNR较高.

滤波实验主客观两方面的结果证明,相对于现行的中值滤波算法,基于二次检测和极值修剪的自适应滤波算法有着更加良好的滤波性能.

4 结束语

作者提出的基于二次检测和极值修剪的自适应滤波算法,对噪声检测和噪声滤除两方面分别进行改进,对噪声进行二次检测,然后运用修剪灰度极值后的滤波窗口的灰度中值恢复被噪声污染的像素,以实现对不同噪声密度和多细节的图像进行有效的噪声滤波.特别是图像的噪声密度较高时,算法的滤波性能依然良好.在滤除噪声的同时,很好地保持图像的边缘和细节部分.滤波实验的结果证明,相对于现行的中值滤波算法,基于二次检测和极值修剪的自适应滤波算法有着更加良好的滤波性能.

猜你喜欢

中值极值灰度
采用改进导重法的拓扑结构灰度单元过滤技术
极值点带你去“漂移”
基于灰度拉伸的图像水位识别方法研究
极值点偏移拦路,三法可取
一类“极值点偏移”问题的解法与反思
Lagrange中值定理的巧妙应用
基于最大加权投影求解的彩色图像灰度化对比度保留算法
微分中值定理教法研讨
基于灰度线性建模的亚像素图像抖动量计算
后中值波电流脉冲MIG焊工艺