数字图像处理技术的众多处理方法中,图像滤波一直是研究中的重点和难点。去除图像噪声的运算在图像处理中称为图像的平滑滤波,主要是利用噪声高频、孤立、大偏差的特点进行的。目前,数字图像平滑滤波有很多种方法,如邻域平均、中值滤波等。这些方法虽然能够有效地抑制脉冲和椒盐噪声,但是这些算法都有一个共同的不足,不仅平滑噪声,而且造成图像中的细节模糊化。为了解决这个问题,保边界平滑算法的研究开始兴起。
在过去的十几年中,许多专家学者提出了多种不同的滤波方法。Czerwin ski等人提出了一种采用线形模板的多方向中值滤波器,但是由于模板都是采用线形的,因此去噪效果并不理想,而且由于该算法以中值大小来选择模板,并将其作为进行平滑的标准(选择中值最大的模板),因此,使图像中的白色线条加宽,并且会产生白色的伪像[1];Tomita和Tsuji提出了一种保边界的算法,该算法是用中心像素的5个矩形邻域模板中最平滑的1个模板的灰度平均值来替代中心像素的灰度值,但因为该方法采用的是矩形模板,所以应用于复杂图像时,并不能取得满意的效果[2];Nagao提出了一种新的保边界平滑算法,其算法采用了9个邻域模板(包括五边形、六边形和正方形的模板),然后寻找其中方差最小的1个来平滑中心像素,这种算法虽然能够有效降低噪声,并保留边界,但是图像平滑后会产生一些伪像,从而影响图像质量[3];Wang等人提出了一种采用灰度倒数权的平滑滤波器算法,即区域内部的灰度变化小于区域之间的灰度变化,但是由于其算法忽视了方向概念,因此平滑的效果也不太理想[4]。
针对上述问题,本文在Nagao滤波器的基础上,提出一种基于纹理分析的图像自适应滤波方法。该方法首先对图像进行纹理分析,然后根据纹理分析的结果决定Nagao滤波器采用何种模板(包括线形模板和矩形模板)在何种方向进行自适应滤波。采用该方法对图像进行降噪处理,不仅能有效降低噪声水平,而且几乎完全可以保留边缘和细节;同时,该算法简单、计算速度快,非常有利于计算机编程实现[5]。
1 Nagao滤波器原理
根据目前研究及应用的情况,自适应滤波是解决图像滤波比较行之有效的方法。而Nagao自适应滤波正是其中的代表,其基本原理为:以噪声像素点作为中心点,围绕这个中心像素在其周围5×5的区域内定义9个可能的模板(包括4个五边形、4个六边形和1个正方形),如图1所示。首先计算每个模板内灰度值的平均值mk和方差,然后通过比较筛选出方差最小的模板,用该模板内的均值来替换中心像素[6]。
从Nagao滤波的思想不难看出其存在的缺点,即:每次都要计算9个模板的均值和方差,计算时间长,计算量大;另外,由于有些噪声与周围像素点之间的区别并不是很大,使用Nagao滤波以后会使图像存在一些伪像,从而影响滤波效果。为了克服这些缺点,在使用时应该合理地选择模板并且进行有方向的滤波,这样不仅可以保留图像的真实原貌而且可以减少计算量提高计算机的处理速度。
2 纹理分析
目前比较成熟的纹理特征提取方法大致分为4大类:结构分析方法、统计分析方法、模型化方法以及信号处理方法,其中统计分析方法在纹理分析中担任着非常重要的角色。常用的统计纹理分析方法有:自相关函数、边界频率、空间灰度依赖矩阵等,其中空间灰度依赖矩阵方法因其给出的是图像的二阶统计量,所以在纹理描述方面取得了非常好的效果。Haralick定义了14个能从空间灰度依赖矩阵上计算出的二阶统计量,这些统计函数为:能量、对比度、相关性、方差、逆差矩、和平均、和方差、和熵、熵、差方差、差熵、相关性信息度量、另一个相关性信息度量以及最大相关性系数。在这14个纹理特征中,并不是每一个纹理特征都非常有效果,有些特征计算复杂度很高。通过实验,Conners、Harlow建议用能量、熵、相关性、逆差距和对比度共5个特征来描述纹理就能达到非常好的效果[7-8]。
结合图像自适应滤波,并且综合考虑计算机处理速度等多方面因素,本文选择能量和熵2个统计量作为特征参数:
3 基于纹理分析的Nagao滤波器
通过上述分析,本文对Nagao滤波器进行了如下改进:首先,计算噪声点周围区域的纹理,根据纹理复杂程度,在变化急剧的地方使用线性模板,在变化平缓的地方使用矩形模板;其次,从Nagao滤波器的模板不难看出,六边形模板处在正方形区域的±45°角和±135°角方向,而五边形模板处在0°角和±90°角方向,所以本文选择以正方形区域中心点为端点,每隔45°确定1个方向,共8个候选方向,如图2所示[9-11]。
在使用计算机编程实现时,本文所述算法的具体步骤如下:
(1)对图像进行黑白二值化处理。
(2)根据阈值搜寻噪声点。
(3)在以噪声点为中心点的5×5邻域内构造空间灰度矩阵。
(4)根据式(1)计算能量。
(5)根据式(2)计算熵。
(6)根据式(3)计算纹理复杂度。
(7)如果该区域内的纹理复杂度小于阈值,选择使用矩形模板作为平滑模板转步骤(10),否则使用线性模板转步骤(8)。
(8)分别计算8个线性模板灰度的均值和方差。
(9)通过比较找出方差最小的模板,并用该模板作为平滑模板。
(10)用平滑模板灰度的均值代替噪声点的灰度值。
(11)继续搜寻下一个噪声点重复步骤(3)~(10),直到将所有噪声点都滤除。
从分析可知,本文提出的改进方法有效地避免了传统Nagao滤波器每次需要计算全部9个模板的均值和方差的缺点,大大提高了计算机的处理速度,易于实现。
4 应用分析
根据本文所述算法,在处理器为Pentium D 2.80 GHz的计算机上用C++Builder6.0编程实现用于实验分析。主要进行了两个方面的对比实验:(1)在处理效果方面,首先在1幅图片中随机加入2 000点噪声,然后分别用传统Nagao滤波器和本文所提出的算法进行滤波处理,对比效果如图3所示[12]。从图3不难看出,传统Nagao滤波器处理后的图像明显带有一些伪像,处理效果不是十分令人满意,而用本文提出改进的Nagao滤波器处理后,不仅图像噪声全被滤除,而且几乎不存在伪像,图像质量与原始图像非常接近,本文提出的改进型Nagao滤波器的处理效果更好;(2)在处理速度方面,本文分别选取了大小为160×160、256×256格式为BMP和JPG的图像各10幅,共40幅,分为2组进行了处理速度测试,对比结果如表1所示[13]。从表1中可以看出,无论是处理BMP格式的图片还是JPG格式的图片,改进的Nagao滤波器的处理速度都要明显优于传统Nagao滤波器(大约为2.7倍),这对于用计算机编程实现处理纹理比较复杂、尤其是大尺寸高分辨率的图像是十分有利的。
本文详细介绍了Nagao滤波器的实现原理,并分析了其存在的缺点,针对这些缺点,结合图像纹理分析方法,提出了一种基于纹理分析的改进型Nagao滤波器。该方法以传统Nagao滤波器为基础,通过对图像进行纹理分析得到的纹理复杂度来指导平滑模板的选择,不但克服了传统Nagao滤波器在滤波处理后存在伪像的缺点,而且进一步提高了计算机的处理速度,通过应用实验比较分析,该方法可以取得比较满意的去噪效果。