图像去噪算法 matlab,数字图像去噪典型算法及matlab实现.doc

本文介绍了数字图像处理中的关键步骤——图像去噪,并详细探讨了均值滤波、中值滤波和Wiener滤波三种经典算法。通过Matlab代码演示了这些算法在高斯噪声和椒盐噪声去除中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

41528d3028836879cd698677c3999917.gif数字图像去噪典型算法及matlab实现.doc

图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等;目前比较经典的图像去噪算法主要有以下三种:均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。实验一:均值滤波对高斯噪声的效果代码I=imread( C:\DocumentsandSettings\Administrator\桌面\1.gif );%读取图像J=imnoise(I, gaussian ,0,0.005);%加入均值为0,方差为0.005的高斯噪声subplot(2,3,1);imshow(I);title( 原始图像 );subplot(2,3,2);imshow(J);title( 加入高斯噪声之后的图像 );%采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波K1=filter2(fspecial( average ,3),J)/255;%模板尺寸为3K2=filter2(fspecial( average ,5),J)/255;%模板尺寸为5K3=filter2(fspecial( average ,7),J)/255;%模板尺寸为7K4=filter2(fspecial( average ,9),J)/255;%模板尺寸为9subplot(2,3,3);imshow(K1);title( 改进后的图像1 );subplot(2,3,4);imshow(K2);title( 改进后的图像2 );subplot(2,3,5);imshow(K3);title( 改进后的图像3 );subplot(2,3,6);imshow(K4);title( 改进后的图像4 );PS:filter2用法fspecial函数用于创建预定义的滤波算子,其语法格式为:h=fspecial(type)h=fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为:type= average ,为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。type= gaussian ,为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为0.5。type= laplacian ,为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。type= log ,为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5type= prewitt ,为prewitt算子,用于边缘增强,无参数。type= sobel ,为著名的sobel算子,用于边缘提取,无参数。type= unsharp ,为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。据我目测,使用均值滤波去噪(高斯噪声)效果选用的邻域半径越大效果越好,当然其代价也会更大,另外确切的去噪效果的好坏还需要用SNR等数据来度量。实验二:二维自适应维纳滤波对高斯噪声的滤除效果代码I=imread( C:\DocumentsandSettings\Administrator\桌面\1.gif );%读取图像J=imnoise(I, gaussian ,0,0.005);%加入均值为0,方差为0.005的高斯噪声K2=wiener2(J,[33]);%对加噪图像进行二维自适应维纳滤波K2=wiener2(J,[55]);%对加噪图像进行二维自适应维纳滤波K2=wiener2(J,[77]);%对加噪图像进行二维自适应维纳滤波K2=wiener2(J,[99]);%对加噪图像进行二维自适应维纳滤波subplot(2,3,1);imshow(I);title( 原始图像 );subplot(2,3,2);imshow(J);title( 加噪图像 );subplot(2,3,3);imshow(K1);title( 恢复图像1 );subplot(2,3,4);imshow(K2);title( 恢复图像2 );subplot(2,3,5);imshow(K3);title( 恢复图像3 );subplot(2,3,6);imshow(K4);title( 恢复图像3 );PS:维纳滤波的两个函数wiener2与deconvwnr都能够完成维纳滤波的功能,deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,[m,n])返回有噪声图像I经过wierner(维纳)滤波后的图像,[m,n]指定滤波器窗口大小为m*n,默认值为3*3,J=wiener2(I,[m,n],noise)指定噪声的功率,[J,noise]=wiener2(I,[m,n])在图像滤波的同时,返回噪声功率的估计值noise。imnoise的语法格式为J=imnoise(I,type)J=imnoise(I,type,parameters)其中J=imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。参数type和parameters用于确定噪声的类型和相应的参数。实验三:对加入椒盐噪声的图像分别作均值、中值和维纳滤波代码I=imread(1.gif );J1=imnoise(I, gaussian ,0,0.02);J2=imnoise(I, saltJ3=imnoise(I, speckle ,0.02);运行效果见图2I=imread( C:\DocumentsandSettings\Administrator\桌面\1.gif );J=imnoise(I, salt%h=ones(3,3)/9;%产生3*3的全1数组%B=conv2(J,h);%卷积运算K2=filter2(fspecial( average ,3),J)/255;%均值滤波模板尺寸为3K=medfilt2(J);%采用二维中值滤波函数medfilt2对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值