当前位置:首页 > 代码 > 正文

matlab图像滤波去噪代码(基于matlab的图像去噪算法研究)

admin 发布:2022-12-19 19:42 141


今天给各位分享matlab图像滤波去噪代码的知识,其中也会对基于matlab的图像去噪算法研究进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

关于图像去噪的matlab代码

I

=

imread('a.png');%读图像

J

=

imnoise(I,'salt

pepper',0.02);%加椒盐噪声

K

=

medfilt2(J);%用中值滤波去噪声。

imshow(K);

如果效果不好,加上图片问我。

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

方法一:filter2

clear all;

I=imread('lena.bmp');

%读入预处理图像

imshow(I)

%显示预处理图像

K1=filter2(fspecial('average',3),I)/255;

%进行3*3均值滤波

K2=filter2(fspecial('average',5),I)/255;

%进行5*5均值滤波

K3=filter2(fspecial('average',7),I)/255;

%进行7*7均值滤波

figure,imshow(K1)

figure,imshow(K2)

figure,imshow(K3)

方法二:双循环语句,移动平均法

%均值滤波

clc,clear;

f=imread('lena.bmp');

subplot(121),imshow(f),title('原图');

f1=imnoise(f,'gaussian',0.002,0.0008);

%subplot(222),imshow(f1),title('添加高斯噪声图');

k1=floor(3/2)+1;

k2=floor(3/2)+1;

X=f1;

[M,N]=size(X);

uint8 Y=zeros(M,N);

funBox=zeros(3,3);

for i=1:M-3

for j=1:N-3

funBox=X(i:i+3,j:j+3);

s=sum(funBox(:));

h=s/9;

Y(i+k1,j+k2)=h;

end;

end;

Y=Y/255;

subplot(122),imshow(Y),title('均值滤波');

实现图:

我想问一下:怎么用matlab编写函数对图像进行高斯滤波以去除噪声?

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 常与其它滤波器搭配使用。

关于matlab图像滤波去噪代码和基于matlab的图像去噪算法研究的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/21135.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载