编写用均值滤波去噪的matlab程序,用两种方法实现.(重谢)

编写用均值滤波去噪的matlab程序,用两种方法实现.(重谢),第1张

1、双循环语句,移动平均法。

<p>双循环语句,移动平均法</p><p>%均值滤波</p>

<p>clc,clear</p>

<p>f=imread('lena.bmp')</p>

<p>subplot(121),imshow(f),title('原图')</p>

<裂巧p>f1=imnoise(f,'gaussian',0.002,0.0008)</p>

<p>%subplot(222),imshow(f1),title('添加高斯噪声图')</p>

<p>k1=floor(3/2)+1</p>

<p>k2=floor(3/2)+1</p><p>X=f1</p>

<p>[M,N]=size(X)</p><p>uint8 Y=zeros(M,N)</p>

<p>funBox=zeros(3,3)</p><p>for i=1:M-3</p>

<p> for j=1:N-3</p><p> funBox=X(i:i+3,j:j+3) </p>模源洞

<p> s=sum(funBox(:))</p><p> h=s/9 </p>

<p> Y(i+k1,j+k2)=h </p><p> end</p>

<p>end</p><p>Y=Y/255</p>

<p>subplot(122),imshow(Y),title('均值滤波')</p>

<p>实现图:</p>

2、filter2。

<p>filter2</p>

<p>clear all</p>

<p>I=imread('lena.bmp')</p>

<p>%读入预处理图像</p>

<p>imshow(I)</p><p>%显示预处理图像</p>

<p>K1=filter2(fspecial('average',3),I)/255</p><p>%进行3*3均值滤旦枯波</p>

<p>K2=filter2(fspecial('average',5),I)/255</p><p>%进行5*5均值滤波</p>

<p>K3=filter2(fspecial('average',7),I)/255</p><p>%进行7*7均值滤波</p>

<p>figure,imshow(K1)</p><p>figure,imshow(K2)</p>

<p>figure,imshow(K3)</p>

去噪有很多种方法,现在小波去噪最为常用,在matlab中有自带的函数进行小波去噪,简单易行。最常用且简单的是阈值去噪,用函数ddencmp()生成信号的默认阈值,然后利用函数wdencmp()进行去噪。如掘绝:陆袭

%对含噪信号s进行3层小波分解

[c,l]=wavedec(s,3,'db1')%s为含噪信号,3为小波分解层数,db1为采用的小波基

%获取信号默认值

[thr,sorh,keepapp]=ddencmp('den','wv',s)

%参数den代表去噪,wv代表小波,s代表含有噪声的信号

%实现去噪判悉姿过程

s2=wdencmp('gbl',c,l,'db1',3,thr,sorh,keepapp)

%参数gbl表示采用全局去噪

2. 噪声及其噪声的 Matlab 实现

imnoise 函数

格式:J=imnoise(I,type)

J=imnoise(I,type,parameter)

说明:J=imnoise(I,type) 返回对图像 I 添加典型噪声后的有噪图像 J ,参数 type 和 parameter 用于确定噪声的类型和相应的参数。

加权领域平均算法来进行滤波处理

由实验我们可以看出,一般的滤波器在对图像进行噪声滤除的同时对图像中的细节部分有不同程度的破坏,都不能达到理想的效果。但是采用加权的邻域平均哪带握算法对图像进行噪声滤除, 不仅能够有效地平滑噪声, 还能够锐化模糊图像的边缘。 加权的邻域平均算法的基本思想是: 在一个邻域行态内, 除了可以利用灰度均值外, 灰度的上偏差和下偏差也能够提供某些局部信息。算法的计算公式描述如下, 用f (x ,y ) 表示原始图像, g (x , y ) 为平滑后点(x , y ) 的灰度值,V x , y 表示以点(x , y ) 为中心的邻域, 该邻域包含N 个象素,m (x , y ) 表示邻域V x , y 内的灰度均值。NI表示邻域内大于平均值的像素个数,Ng表示小于平均值的像素个数,而N0表示等于平均值的像素个数。则修正的邻域平均法由下式给出:

m - A�0�3 m l; N l >max{N g ,N 0}

g(x,y)= m + A�0�3 m g; N g >max{N l ,N 0} (1)

m ;  else

(1)式(1) 中, A为修正系数, 取值范围为0~ 1, 其大小反映V x , y 中的边缘状况。 以上是我认为在图像处理中比较有价值的两点,有兴趣的可以上网查阅相关的资料。

3. 图像滤波的 Matlab 实现

3.1 conv2 函数

功能:计算二维卷积

格式:C=conv2(A,B)

C=conv2(Hcol,Hrow,A)

C=conv2(...,'shape')

说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则 size(C)=[Ma+Mb-1,Na+Nb-1]C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下:

》full 为缺省值,返回二维卷积的全部结果;

》same 返回二维卷积结果中与 A 大小相同的中间部分;

valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当 size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。

3.2 conv 函数

功能:计算多维卷积

格式:与 conv2 函数相同

3.3 filter2函数

功能:计算二维线型数字滤波,它与函数 fspecial 连用

格式:Y=filter2(B,X)

Y=filter2(B,X,'shape')

说明:对于 Y=filter2(B,X) ,filter2 使用矩阵 B 中的二维 FIR 滤波器对数据 X 进行滤波,结果 Y 是通过二维互相关计算出来的,其大李庆小与 X 一样;对于 Y=filter2(B,X,'shape') ,filter2 返回的 Y 是通过二维互相关计算出来的,其大小由参数 shape 确定,其取值如下:

》full 返回二维相关的全部结果,size(Y)>size(X);

》same 返回二维互相关结果的中间部分,Y 与 X 大小相同;

》valid 返回在二维互相关过程中,未使用边缘补 0 部分进行计算的结果部分,有 size(Y)<size(X) 。

3.4 fspecial 函数

功能:产生预定义滤波器

格式:H=fspecial(type)

H=fspecial('gaussian',n,sigma) 高斯低通滤波器

H=fspecial('sobel') Sobel 水平边缘增强滤波器

H=fspecial('prewitt') Prewitt 水平边缘增强滤波器

H=fspecial('laplacian',alpha) 近似二维拉普拉斯运算滤波器

H=fspecial('log',n,sigma) 高斯拉普拉斯(LoG)运算滤波器

H=fspecial('average',n) 均值滤波器

H=fspecial('unsharp',alpha) 模糊对比增强滤波器

说明:对于形式 H=fspecial(type) ,fspecial 函数产生一个由 type 指定的二维滤波器 H ,返回的 H 常与其它滤波器搭配使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12430252.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存