基于×字形窗口的自适应中值滤波算法
中值滤波是当前应用最广泛的滤波方法之一,然而,中值滤波的去噪效果和处理速度依赖于滤波窗口的大小及参与中值计算的像素点数目。当脉冲噪声概率小于0.2时,中值滤波是很有效的方法,当脉冲噪声概率超过0.2时,则使用自适应中值滤波方法。
×字形窗口的自适应中值滤波算法是对中值滤波的一种改进。相对于中值滤波而言,它能够处理空间密度更大的冲激噪声,并且在平滑非冲激噪声时,还可保存更多的图像细节;效率方面也较一般的自适应中值滤波有所改善。常见窗口及本文提出窗口如图2所示。

基本原理如下:
首先,采用3×3的×字形窗口进行计算,计算图像的中值滤波值Zmed、最大值滤波值Zmax和最小值滤波值Zmin,并判断噪声敏感度,即:如果Zmec,不在Zmax和Zmin之间就自动增加×字形窗口的大小,然后重复以上的过程;对于Zmed在Zmax和Zmin之间的点先用原像素值与最大滤波值和最小滤波值进行判断,如果在其间,原值不做修改,反之就用Zmed取代原值。这一过程有如下的作用:
(1)使得未受脉冲噪声污染的点不用修改,很好地保护了图像的点、线等细节及边界信息;
(2)当检测到的噪声很强时,自动增大窗口,提高了去噪能力;
(3)当检测到的噪声不是很强时,就不用增加窗口的大小,既体现出自适应性,又减少了时间开销,提高了速度。
其中,×字形窗口的实现方法如下:
(1)先得到一个对角矩阵A;
(2)将对角矩阵A从左向右翻转,得到一个矩阵B;
(3)将矩阵A与矩阵B取或运算,得到X字形矩阵C。
3基于×字形窗口自适应中值滤波算法的Matlab实现
中值滤波是数字图像处理中一个很重要的部分,Matlab工具箱中有该函数,用到中值滤波算法时可直接调用。因此,用Matlab编程具有简单、方便、快捷等优点。另外,还可以对其内部函数进行改进。本文的算法就是通过另外编程修改中值滤波有关的内部函数实现的。下面就是自适应中值滤波算法的实现流程,添加新的库函数――adpmedianXzi对图像处理工具箱进行扩展,以实现数字图像自适应中值滤波(部分伪代码)。

4实验结果及其分析
在实验中,选择了大小为256×256像素、灰度为256级的Lena图像。实验环境为IBM R52,Matlab7.0软件。实验结果如图3、图4所示。
评论