中值滤波原理及MATLAB实现.doc

上传人:豆**** 文档编号:23989932 上传时间:2022-07-03 格式:DOC 页数:26 大小:332.50KB
返回 下载 相关 举报
中值滤波原理及MATLAB实现.doc_第1页
第1页 / 共26页
中值滤波原理及MATLAB实现.doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《中值滤波原理及MATLAB实现.doc》由会员分享,可在线阅读,更多相关《中值滤波原理及MATLAB实现.doc(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date中值滤波原理及MATLAB实现中值滤波原理及MATLAB实现 中值滤波原理及MATLAB实现摘要:图像是一种重要的信息源,通过图像处理可以帮助人们了解信息的内涵。本文将纯净的图像加入椒盐噪声,然后采用中值滤波的方法对其进行去噪。中值滤波是一种常用的非线性信号处理技术,在图像处理中,它对滤除脉冲干扰噪声最为有效。文章阐述了中值滤波的原理、算法以及在图像处理中的应用。MA

2、TLAB是一种高效的工程计算语言,在数据处理、图像处理、神经网络、小波分析等方面都有广泛的应用。关键词:图像,中值滤波,去噪,MATLAB1. 引言20世纪20年代,图像处理首次得到应用。上个世纪60年代中期,随着计算机科学的发展和计算机的普及,图像处理得到广泛的应用。60年代末期,图像处理技术不断完善,逐渐成为一个新兴的学科。图像处理中输入的是质量低的图像,输出的是改善质量后的图像。为了改善图像质量,从图像中提取有效信息,必须对图像进行去噪预处理。根据噪声频谱分布的规律和统计特征以及图像的特点,出现了多种多样的去噪方法。经典的去噪方法有:空域合成法,频域合成法和最优合成法等,与之适应的出现了

3、许多应用方法,如均值滤波器,中值滤波器,低通滤波器,维纳滤波器,最小失真法等。这些方法的广泛应用,促进数字信号处理的极大发展,显著提高了图像质量。2. 中值滤波在图像滤波中,常用的方法是线性滤波技术和非线性滤波技术,线性滤波以其完美的理论基础,数学处理简单、易于采用和硬件实现等优点,一直在图像滤波领域中占有重要的地位。线性滤波对加性高斯噪声有较好的平滑作用,但对脉冲信号和其它形式的高频分量抑制效果较差,且模糊信号边缘。非线性滤波是基于对输入信号序列的一种非线性投影关系,常把某一特定的噪声近似为零而保留信号的重要特征,一定程度上克服线性滤波器的不足,非线性滤波早期运用较多的是中值滤波器,其应用于

4、多维信号处理时,对窄脉冲信号具有良好的抑制能力,但中值滤波器对中拖尾(如均匀分布噪声)和短拖尾分布噪声(如高斯噪声),滤波性能较差,且拖尾越短,其滤波能力越差。中值滤波是一种典型的低通滤波器,属于非线性滤波技术,它的目的是保护图像边缘的同时去除噪声。所谓中值滤波,是指把以某点(x,y)为中心的小窗口内的所有象素的灰度按从大到小的顺序排列,若窗口中的象素为奇数个,则将中间值作为(x,y)处的灰度值。若窗口中的象素为偶数个,则取两个中间值的平均值作为(x,y)处的灰度值。中值滤波对去除椒盐噪声很有效。中值滤波器的缺点是对所有象素点采用一致的处理,在滤除噪声的同时有可能改变真正象素点的值,引入误差,

5、损坏图像的边缘和细节。该算法对高斯噪声和均匀分布噪声就束手无策。2.1中值滤波基本原理中值滤波是一种非线性滤波,由于它在实际运算过程中并不需要图像的统计特性,所以比较方便。中值滤波首先是被应用在一维信号处理技术中,后来被二维图像信号处理技术所应用。在一定的条件下,可以克服线性滤波器所带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声最为有效。但是对一些细节多,特别是点、线、尖顶细节多的图像不宜采用中值滤波的方法。中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替。设有一个一维序列,取窗口长度为m(m为奇数),对此序列进行中值滤波,就是从输入序列中相继抽出m个

6、数,其中为窗口的中心位置,再将这m个点按其数值大小排列,取其序号为正中间的那作为输出。用数学公式表示为: (2-2)例如:有一个序列为0,3,4,0,7,则中值滤波为重新排序后的序列0,0,3,4,7中间的值为3。此例若用平均滤波,窗口也是取5,那么平均滤波输出为。因此平均滤波的一般输出为: (2-3) 对于二维序列进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为: (2-4)在实际使用窗口时,窗口的尺寸一般先用再取逐渐增大,直到其滤波效果满意为止。对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜

7、,对于包含尖顶角物体的图像,适宜用十字形窗口。使用二维中值滤波最值得注意的是保持图像中有效的细线状物体。与平均滤波器相比,中值滤波器从总体上来说,能够较好地保留原图像中的跃变部分。2.2 中值滤波的去噪过程本文给定的图像为二维信号,在信号中加入指定的椒盐噪声,然后利用中值滤波进行去噪。虽然有关中值滤波的函数是在matlab函数库中已经提供,但在图像处理中利用中值滤波去除图像中的椒盐噪声噪声却是一种有效的方法,利用中值滤波函数去除图像中的噪声过程如下:(1)使用imread()读入原始的彩色图像。(2)因为使用中值滤波器只能对灰度图像进行处理,所以利用rgb2gray()将彩色图像转化为灰度图像

8、。(3)用imnoise()在灰度图像中加入椒盐噪声。(4)利用medfilt2()函数进行中值滤波,并在matlab环境下运行。相应的MATLAB主程序如下:clc; clear all;close all;img=imread(3_1.bmp);img_0=rgb2gray(img);img_1=imnoise(img_0,salt & pepper,0.02);img_2=medfilt2(img_1);subplot(2,2,1);imshow(img);title(原始图像);subplot(2,2,2);imshow(img_0);title(灰度图像);subplot(2,2,3

9、);imshow(img_1);title(加入噪声后图像);subplot(2,2,4);imshow(img_2);title(中值滤波后图像);MatLab自编的均值滤波、中值滤波、高斯滤波 图像处理函数。%自编的均值滤波函数。x是需要滤波的图像,n是模板大小(即nn)function d=avefilt(x,n)a(1:n,1:n)=1; %a即nn模板,元素全是1p=size(x); %输入图像是pq的,且pn,qnx1=double(x);x2=x1;%A(a:b,c:d)表示A矩阵的第a到b行,第c到d列的所有元素for i=1:p(1)-n+1 for j=1:p(2)-n+1

10、 c=x1(i:i+(n-1),j:j+(n-1).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘 s=sum(sum(c); %求c矩阵(即模板)中各元素之和 x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将模板各元素的均值赋给模板中心位置的元素 endend%未被赋值的元素取原值d=uint8(x2);%自编的中值滤波函数。x是需要滤波的图像,n是模板大小(即nn)function d=midfilt(x,n)p=size(x); %输入图像是pq的,且pn,qnx1=double(x);x2=x1;for i=1:p(1)-n+1 for j=1:p(

11、2)-n+1 c=x1(i:i+(n-1),j:j+(n-1); %取出x1中从(i,j)开始的n行n列元素,即模板(nn的) e=c(1,:); %是c矩阵的第一行 for u=2:n e=e,c(u,:); %将c矩阵变为一个行矩阵 end mm=median(e); %mm是中值 x2(i+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素 endend%未被赋值的元素取原值d=uint8(x2);%自编的高斯滤波函数,S是需要滤波的图象,n是均值,k是方差function d=gaussfilt(k,n,s)Img = double(s);n1=f

12、loor(n+1)/2);%计算图象中心for i=1:n for j=1:n b(i,j) =exp(-(i-n1)2+(j-n1)2)/(4*k)/(4*pi*k); endend%生成高斯序列b。Img1=conv2(Img,b,same); %用生成的高斯序列卷积运算,进行高斯滤波d=uint8(Img1);%此为程序主文件,包含主要功能单元,以及对子函数进行调用try%实验步骤一:彩色、灰度变换h=imread(photo.jpg); %读入彩色图片c=rgb2gray(h); %把彩色图片转化成灰度图片,256级figure,imshow(c),title(原始图象); %显示原始

13、图象g=imnoise(c,gaussian,0.1,0.002); %加入高斯噪声figure,imshow(g),title(加入高斯噪声之后的图象); %显示加入高斯噪声之后的图象%实验步骤二:用系统预定义滤波器进行均值滤波n=input(请输入均值滤波器模板大小n);A=fspecial(average,n); %生成系统预定义的3X3滤波器Y=filter2(A,g)/255; %用生成的滤波器进行滤波,并归一化figure,imshow(Y),title(用系统函数进行均值滤波后的结果); %显示滤波后的图象%实验步骤三:用自己的编写的函数进行均值滤波Y2=avefilt(g,n)

14、; %调用自编函数进行均值滤波,n为模板大小figure,imshow(Y2),title(用自己的编写的函数进行均值滤波之后的结果); %显示滤波后的图象%实验步骤四:用Matlab系统函数进行中值滤波n2=input(请输入中值滤波的模板的大小n);Y3=medfilt2(g,n2 n2); %调用系统函数进行中值滤波,n2为模板大小figure,imshow(Y3),title(用Matlab系统函数进行中值滤波之后的结果); %显示滤波后的图象%实验步骤五:用自己的编写的函数进行中值滤波Y4=midfilt(g,n2); %调用自己编写的函数进行中值滤波,figure,imshow(Y

15、4),title(用自己编写的函数进行中值滤波之后的结果);%实验步骤六:用matlab系统函数进行高斯滤波n3=input(请输入高斯滤波器的均值n);k=input(请输入高斯滤波器的方差n);A2=fspecial(gaussian,k,n3); %生成高斯序列Y5=filter2(A2,g)/255; %用生成的高斯序列进行滤波figure,imshow(Y5),title(用Matlab函数进行高斯滤波之后的结果); %显示滤波后的图象%实验步骤七:用自己编写的函数进行高斯滤波Y6=gaussfilt(n3,k,g); %调用自己编写的函数进行高斯滤波,n3为均值,k为方差figur

16、e,imshow(Y6),title(用自编函数进行高斯滤波之后的结果); %显示滤波后的图象catch %捕获异常 disp(lasterr); %如果程序有异常,输出end分享到搜狐微博*高斯噪声去噪 thr,sorh,keepapp = ddencmp(den,wv,x);x1= wdencmp(gbl,J1,sym4,2,thr,sorh,keepapp);%x为要处理得原始图像%x1为处理后的图像*/运行结果如图所示3. 结束语在图像处理过程中,消除图像的噪声干扰是一个非常重要的问题,本文利用matlab软件,采用中值滤波的方式,对带有椒盐噪声的图像进行处理,经过滤波后的图像既适合人

17、眼的视觉感觉又能够消除图像中的干扰影响。通过本次试验我们可以看到中值滤波对于滤除图像的“椒盐”噪声非常有效,它可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,尤其在滤除叠加白噪声和长尾叠加噪声方面显出极好的性能。因此中值滤波是图像处理所不可缺少的,许多类型的图像噪声都可以利用中值滤波法加以除噪。参考文献:1 张毓晋.图像工程(第二版).北京:清华大学出版社,20072 孙宏琦,施维颖,巨永峰.利用中值滤波进行图像处理长安大学学报(自然科学版) ,2003(2)3 李彦军,苏红旗等.改进的中值滤波图像去噪方法研究计算机工程与设计,2009(12)4 胡鹏,徐会燕.基于matlab的图像去噪算法的研究与实现福建电脑,2009(12)5 宋兆基、徐流美等.MATLAB 6.5在科学计算中的应用.北京:清华大学出版社,2005-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com