基于MATLAB的带噪图像的中值滤波
2016-10-24陆军通信训练基地赵海龙曹海丽易晓蓉
陆军通信训练基地 袁 赛 赵海龙 曹海丽 易晓蓉
基于MATLAB的带噪图像的中值滤波
陆军通信训练基地袁赛赵海龙曹海丽易晓蓉
图像常常被随机信号所污染,滤波就是为了消除噪声干扰。中值滤波是图像处理中比较常用的非线性滤波方法,它对滤除脉冲干扰噪声效果很好。文章首先介绍了关于图像滤波的基本概念,然后阐述了中值滤波去噪的基本原理和特性,最后将中值滤波算法经典算法在MATLAB中予以实现。
MATLAB语言;图像处理;图像滤波;中值滤波
0 引言
提到图像,自然会联想到照片、绘画以及电视机荧光屏上的图像等等。图像不仅供观赏或娱乐,还有具体形象地说明某事物的作用及直观地表达某种概念的用途。然而图像在其形成、传输、记录、处理过程中会失真,不能完全反映场景的真实内容,即图像退化。在图像记录过程中产生的退化常被称为噪声[1]。 噪声往往造成亮、暗点干扰,极大降低了图像质量,使图像模糊,甚至淹没和改变特征,影响图像复原、分割、特征提取、图识别等后继工作的进行。去除噪声的方法很多,从大的方面说有统计滤波技术、频域滤波技术和空域处理技术,它们各有优缺点。前两种方法运算量大,比较复杂,精度较高;第三种方法运算简单,但精度低。本文介绍的中值滤波是一种典型的空域滤波处理技术,它属于非线性滤波的范畴,其应用于多维信号处理时,对窄脉冲信号具有良好的抑制能力。
1 中值滤波的基本原理
中值滤波(Median filtering)是一种典型的空域低通滤波器,所谓空域噪声滤波器是指直接在图像中滤除噪声的滤波器。中值滤波是一种非线性滤波,它的目的是保护图像边缘的同时去除噪声,它对脉冲干扰及椒盐噪声(表现为黑图像上的白点,白图像上的黑点)抑制效果较好,在抑制随机噪声的同时能有效防止边缘模糊。但它对点、线等细节较多的图像却不太合适[2]。
中值滤波是把局部区域中灰度的中央值(中值)作为输出灰度的。其首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。所谓中值滤波,是指将一某点(x,y)为中心的小窗口内所有像素的灰度按从大到小的顺序排列,并以中间值作为(x,y)处的灰度值(若窗口中有偶数个像素,则去两个中间值的平均)。即用一个滑动窗对该窗口内的诸像素灰度值排序,用其中值代替窗口中心像素的灰度值的滤波方法。
在一维形式下,中值滤波器是一个有奇数个像素的滑动窗口,经排序后,窗口像素序列为{Fi-v,…,Fi-1,Fi,Fi+1,…,Fi+v}。其中,v=(L-1)/2,L为窗口长度,Fi即为窗口像素的中值滤波输出,记为:
Gi=Med{Fi-v,…Fi,…,Fi+v}
式中,Med{F}表示取窗口中值。例如一窗口长度为5,像素灰度分别为{20,10,30,15,25},则:
Gi=Med{20,10,30,15,25}=20
若灰度级为30的像素为椒盐噪声,则经过中值滤波后即被消除。
一维中值滤波的概念很容易推广到二维。这时,取某种形式的二维窗口,将窗口内像素排序,生成单调二维数据序列{Fjk}。类似于一维,二维中值滤波输出G{j,k}为:
G{j,k}= Med{Fjk}
在二维中值滤波器的窗口对滤波的效果和滤波速度的影响很大。所以应根据图像的内容和要求,采取合适的形状和大小。可以是线状、圆形、十字形、圆环形等。不同形状的窗口产生不同的滤波效果,使用时必须根据图像的内容和不同的要求加以选择。但需要注意的是在标准中值滤波中,窗口尺寸选定后不变,因此导致输出滤波图像模糊,当噪声密集时,滤波效果较差。
2 中值滤波的主要特性
中值滤波具有许多重要特性,主要有:(1)中值滤波容易去除孤立点和线的噪声,并且能够保持图像的边缘。(2)对离散阶跃信号、斜升信号不产生影响,连续个数小于窗口长度一半的离散脉冲信号将被平滑,三角函数的顶部将被平坦化。(3)信号经中值滤波后,频谱基本不变。(4)中值滤波能很好地去除二值噪声,但不能去除高斯噪声。
需要注意,当窗口内噪声的个数大于窗口宽度的一半时,中值滤波的效果不佳[3]。
3 中值滤波的算法实现和应用
中值滤波的数学模型非常简单,其算法步骤可总结如下:(1)根据图像的内容和要求选择合适的滑动滤波模板。(2)将滤波模板中心对准图像中某个像素,读取模板窗口内各对应像素的灰度值,并按从大到小的顺序排列。(3)将排序后的各灰度值的中间值给对应模板中心位置的像素。
下面通过加有椒盐噪声的二维图像的中值滤波来理解中值滤波的去噪过程。中值滤波的去噪过程如下:(1)将原始的彩色图像通过MATLAB中函数imread()读入。(2)由于MATLAB中值滤波器不能处理彩色图像,因此只能对灰度图像进行适当处理,具体操作方法是调用rgb2gray()函数将其转化为灰度图像。(3)为了检验去噪效果,在灰度图像中加入椒盐噪声(这里调用MATLAB函数库中的imnoise()函数)。(4)进行中值滤波,检验去噪效果。
添加椒盐噪声后滤波效果图
4 结语
本文在对经典中值滤波原理研究的基础上,利用MATLAB软件进行仿真实践。通过本文的分析和实例可见,MATLAB语言是功能强大的仿真,建模语言。MATLAB语言提供图像处理工具箱和功能函数功能非常强大,为我们在图像处理工作提供了巨大方便和实用工具。同时我们可以发现中值滤波是一种常用的去噪方法,对于滤除图像的“椒盐”噪声非常有效,且能保护图像的边缘,获得较满意的复原效果。
[1]于殿泓.图像检测与处理技术[M].西安电子科技大学出版社,2006.
[2]章毓晋.图像处理和分析技术(第3版)[M].高等教育出版社,2014.
[3]田村秀行(日).计算机图像处理[M].科学出版社,2004
[4]高浩军,杜宇人.中值滤波在图像处理中的应用[J].电子工程师,2004,30(8):35.18-28
[5]孙宏琦,施维颖,巨永峰.利用中值滤波进行图像处理《长安大学学报(自然科学版)》[J].2003(2).