您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 中值和均值滤波论文(附代码)
1基于MATLAB的带噪图像的中值和均值滤波摘要:图像是一种重要的信息源,通过图像处理可以帮助人们了解信息的内涵。本文将纯净的图像加入椒盐噪声,然后采用中值和均值滤波的方法对其进行去噪。在图像处理中,中值和均值滤波对滤除脉冲干扰噪声都很有效。文章阐述了中值和均值滤波的原理、算法以及在图像处理中的应用。MATLAB是一种高效的工程计算语言,在数据处理、图像处理、神经网络、小波分析等方面都有广泛的应用。关键词:图像,中值滤波,均值滤波,去噪,MATLAB1.引言20世纪20年代,图像处理首次得到应用。上个世纪60年代中期,随着计算机科学的发展和计算机的普及,图像处理得到广泛的应用。60年代末期,图像处理技术不断完善,逐渐成为一个新兴的学科。图像处理中输入的是质量低的图像,输出的是改善质量后的图像。为了改善图像质量,从图像中提取有效信息,必须对图像进行去噪预处理。根据噪声频谱分布的规律和统计特征以及图像的特点,出现了多种多样的去噪方法。经典的去噪方法有:空域合成法,频域合成法和最优合成法等,与之适应的出现了许多应用方法,如均值滤波器,中值滤波器,低通滤波器,维纳滤波器,最小失真法等。这些方法的广泛应用,促进数字信号处理的极大发展,显著提高了图像质量。2.中值滤波中值滤波是一种典型的低通滤波器,属于非线性滤波技术,它的目的是保护图像边缘的同时去除噪声。所谓中值滤波,是指把以某点(x,y)为中心的小窗口内的所有象素的灰度按从大到小的顺序排列,若窗口中的象素为奇数个,则将中间值作为(x,y)处的灰度值。若窗口中的象素为偶数个,则取两个中间值的平均值作为(x,y)处的灰度值。中值滤波对去除椒盐噪声很有效。中值滤波器的缺点是对所有象素点采用一致的处理,在滤除噪声的同时有可能改变真正象素点的值,引入误差,损坏图像的边缘和细节。该算法对高斯噪声和均匀分布噪声就束手无策。设有一个一维序列1f,2f,…,nf,取窗口长度为m(m为奇数),对此序列2进行中值滤波,就是从输入序列中相继抽出m个数,vif,…,1if,…,1f,…,1if,…,vif,其中i为窗口的中心位置,21mv,再将这m个点按其数值大小排列,取其序号为正中间的那作为输出。用数学公式表示为:viiviifffMedY,,,,21,mvZi(2.1)例如:有一个序列为{0,3,4,0,7},则中值滤波为重新排序后的序列{0,0,3,4,7}中间的值为3。此例若用平均滤波,窗口也是取5,那么平均滤波输出为8.2570430。因此平均滤波的一般输出为:mffffZviivivii1Zi(2.2)对于二维序列ijX进行中值滤波时,滤波窗口也是二维的,但这种二维窗口可以有各种不同的形状,如线状、方形、圆形、十字形、圆环形等。二维数据的中值滤波可以表示为:为滤波窗口AXMedYijAji},{,(2.3)在实际使用窗口时,窗口的尺寸一般先用33再取55逐渐增大,直到其滤波效果满意为止。对于有缓变的较长轮廓线物体的图像,采用方形或圆形窗口为宜,对于包含尖顶角物体的图像,适宜用十字形窗口。使用二维中值滤波最值得注意的是保持图像中有效的细线状物体。与平均滤波器相比,中值滤波器从总体上来说,能够较好地保留原图像中的跃变部分。3.均值滤波均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身)。邻域平均法是一种局部空间域处理的算法。设一幅图像f(x,y)为N×N的阵列,处理后的图像为g(x,y),它的每个像素的灰度级由包含(x,y)领域的几个像素的灰度级的平均值所决定,即用下式得到处理后的图像:3(3.1)式中x,y=0,l,2,…,N-1;S是以(x,y)为中心的邻域的集合,M是S内坐标点的总数。图像邻域平均法的处理效果与所用的邻域半径有关。半径愈大,则图像的模糊程度也度大。外,图像邻域平均算法简单,计算速度快,但它的主要缺点是在降低噪声的同时使图像产生模糊,特别在边沿和细节处,邻域越大,模糊越厉害。4.算法流程本文给定的图像为二维信号,在信号中加入指定的椒盐噪声,然后利用中值滤波进行去噪。虽然有关中值滤波的函数是在matlab函数库中已经提供,但在图像处理中利用中值滤波去除图像中的椒盐噪声噪声却是一种有效的方法,利用中值和均值滤波函数去除图像中的噪声过程如下:(1)使用imread()读入原始的彩色图像。(2)因为使用中值滤波器只能对灰度图像进行处理,所以利用rgb2gray()将彩色图像转化为灰度图像。(3)用imnoise()在灰度图像中加入椒盐噪声。(4)根据滤波原理编写算法进行中值和均值滤波,并在matlab环境下运行。相应的MATLAB主程序如下:clearall;closeall;clc;a=imread('D:\myzone\download\滤波经典.png');%读取图像b=rgb2gray(a);%转化为灰度图像%给图像加入噪声I=imnoise(b,'salt&pepper')%椒盐噪声%扩展矩阵,生成待处理矩阵SjijifMyxg),(),(1),(4n=3;%模板阶数m=(n-1)/2;[p,q]=size(I);PI=zeros(p+2*m,q+2*m);%待处理矩阵fori=1:pforj=1:qPI(i+m,j+m)=I(i,j);endendfori=1:pforii=1:mPI(i+m,ii)=I(i,1);PI(i+m,q+m+ii)=I(i,q);endendforj=1:qforjj=1:mPI(jj,j+m)=I(1,j);PI(p+m+jj,j+m)=I(p,j);endendforii=1:mforjj=1:mPI(ii,jj)=I(1,1);PI(q+m+ii,jj)=I(p,1);PI(ii,p+m+jj)=I(1,q);PI(q+m+ii,p+m+jj)=I(p,q);endend%中值滤波&均值滤波5derta=zeros(n,n);%n阶模板矩阵PImid=PI;PImean=PI;fori=m+1:p+mforj=m+1:q+mfork=1:mforh=1:mderta(k,h)=PI(i+k-m-1,j+h-m-1);derta(k,m+1)=PI(i+k-m-1,j);derta(k,n-h+1)=PI(i+k-m-1,j+m+1-h);derta(m+1,h)=PI(i,j+h-m-1);derta(m+1,m+1)=PI(i,j);derta(m+1,n-h+1)=PI(i,j+m+1-h);derta(n-k+1,h)=PI(i+m+1-k,j+h-m-1);derta(n-k+1,m+1)=PI(i+m+1-k,j);derta(n-k+1,n-h+1)=PI(i+m+1-k,j+m+1-h);PImid(i,j)=median(median(derta));%中值滤波PImean(i,j)=round(mean(mean(derta)));%均值滤波endendendend%输出结果Imid=zeros(p,q);Imean=zeros(p,q);fori=1:pforj=1:qImid(i,j)=PImid(i+m,j+m);Imean(i,j)=PImean(i+m,j+m);end6end%显示结果figure()subplot(2,2,1);imshow(b);title('原图像');subplot(2,2,2);imshow(I);title('加入椒盐噪声的图像');subplot(2,2,3);imshow(Imid,[0,255]);title('中值滤波处理后的图像');subplot(2,2,4);imshow(Imean,[0,255]);title('均值滤波处理后的图像');运行结果如图所示图1中值和均值滤波效果图75.结束语在图像处理过程中,消除图像的噪声干扰是一个非常重要的问题,本文利用matlab软件,采用中值和均值滤波的方式,对带有椒盐噪声的图像进行处理,经过滤波后的图像既适合人眼的视觉感觉又能够消除图像中的干扰影响。通过本次试验我们可以看到中值滤波对于滤除图像的“椒盐”噪声非常有效,它可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,尤其在滤除叠加白噪声和长尾叠加噪声方面显出极好的性能。但均值滤波效果一般。因此中值滤波是图像处理所不可缺少的,许多类型的图像噪声都可以利用中值滤波法加以除噪。
本文标题:中值和均值滤波论文(附代码)
链接地址:https://www.777doc.com/doc-5296455 .html