一种基于极值检测与自适应滤波的图像去噪算法

作者:陈超;周绍光 刊名:测绘工程 上传者:程林江

【摘要】标准中值滤波及其一些改进算法对于被低密度脉冲噪声污染图像的处理可取得令人满意的效果,图像被严重污染时,这些算法得到的结果均不理想。针对这一缺陷,基于文献[1]提出的一种滤波算法进行改进。首先,利用极值法对图像进行检测,判断出噪声及非噪声点;其次,设置滤波模板的最小及最大尺寸,对噪声点进行窗口逐渐增大的滤波处理。计算机模拟实验结果及对SAR图像滤波结果表明:该滤波算法在噪声去除及边缘和图像细节保持上优于标准中值滤波及其一些改进算法。

全文阅读

图像在形成、传输、接收和处理的过程中会受到噪声的干扰[2],其中以高斯噪声和脉冲噪声为主。噪声使得图像质量下降,给后处理工作带来障碍。对于脉冲噪声的去除,传统的方法是采用中值滤波器(MF,medianfilter)[3],即将某一窗口内的像素进行排序,取其中值取代窗口中心像素。对于低密度的脉冲噪声,中值滤波器可以基本去除噪声,然而其对所有像素均进行滤波处理,使得未被噪声污染的像素灰度值也发生改变,精度受到影响,且不适用于被脉冲噪声严重污染的图像。为解决上述问题,国内外学者提出了很多改进算法[4-6],算法思路基本一致:首先检测出图像中的噪声点,然后对噪声点进行一定的滤波处理,对非噪声点则保留其灰度值。本文基于王红梅[1]提出的滤波算法,对噪声点进行窗口可逐渐增大的滤波处理,并且将该算法用于SAR图像去噪。本文在Matlab平台上进行编程实现该算法,然后对两幅实验图像及一幅SAR图像分别进行实验,并与其他几种滤波算法结果进行比较,从视觉效果及客观数据2方面证明文中算法的可行性。1基于极值检测的滤波算法1.1噪声检测噪声检测是关键步骤,为滤波处理打下基础,有多种噪声检测方法:文献[7]通过使用33的窗口进行检测,将窗口中所有像素的平均值与中心像素灰度值进行比较,若差值大于阈值,则认为中心像素为噪声点;文献[8]首先求出33窗口内的最大值与最小值,然后求出窗口内所有不等于最大值及最小值的像素点的均值,若窗口中心像素与最大值或者最小值相等,且与均值的差值大于阈值,则认为该点为噪声点。本文采用极值法进行噪声点的检测,f(i,j)为待检测像素的灰度值,以该点为中心形成检测窗口,窗口内像素集合为Maski,j=f(i+s,j+t)s,t[-1,1].(1)min为集合内像素最小值,max为集合内像素最大值,若中心像素灰度值f(i,j)等于最大值max或最小值min,即认为该点为噪声点,标记为flag(i,j)=1,否则flag(i,j)=0。即flag(i,j)=1,f(i,j)=maxf(i,j)=min,0,else.(2)依次对图像中每一点进行上述检测,得到标记数组flag。至此已完成噪声点的检测,标记数组flag中所有标记为1的像素认为是噪声点,标记为0的像素则认为是非噪声点。1.2滤波处理标准中值滤波及一些改进算法在滤波处理前未将噪声点和非噪声点进行区分,因而是对图像中所有像素进行滤波处理,改变了那些非噪声点的灰度值,不仅降低精度,也增加了运算时间。本文利用极值法检测出噪声点后,只对噪声点进行滤波处理,非噪声点保留原灰度值;并且在对噪声点进行滤波处理时,通过自适应改变窗口大小,只利用邻域中非噪声点的灰度值对噪声点进行赋值。具体步骤为:1)采用最小尺寸模板,将模板中心套在检测出的噪声点上,即flag(i,j)=1的点上。统计窗口内非噪声点的个数num,非噪声点原灰度值组成集合win;2)若num>0,则对集合win中的像素进行中值滤波处理,得到中值med,将其赋给噪声点,即g(i,j)=med;若num=0,则扩大窗口尺寸后返回步骤1);3)若窗口已扩大至最大尺寸,num>0时,g(i,j)=med;num=0时,说明该点周围均为噪声点,将邻域点均值赋给该噪声点,由于此时邻域点均已经滤波处理,避免噪声点参与赋值,提高精度。2计算机实验及结果分析2.1模拟图像实验分析为验证本文所采用滤波算法的可行性与有效性,在Matlab7.1平台上编写各种算法程序加以实现。首先采用测试图像Mandrill的一部分作为原始图像,通过添加不同程度噪声干扰,比较采用标准中值

参考文献

引证文献

问答

我要提问