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

图像降噪算法matlab,数字图像去噪典型算法及matlab实现I=imread('C:\Documents and Settings\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; %模板尺⼨为3
K2=filter2(fspecial('average',5),J)/255;% 模板尺⼨为5
K3=filter2(fspecial('average',7),J)/255; %模板尺⼨为7
K4= filter2(fspecial('average',9),J)/255; %模板尺⼨为9
mediaring talksubplot(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指定相应的参数,具体格式为:typ
e='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.5
type= 'prewitt',为prewitt算⼦,⽤于边缘增强,⽆参数。type= 'sobel',为著名的sobel算⼦,⽤于边缘提取,⽆参数。type=
'unsharp',为对⽐度增强滤波器,参数alpha⽤于控制滤波器的形状,范围为[0,1],默认值为0.2。
运⾏效果见图1:
据我⽬测,使⽤均值滤波去噪(⾼斯噪声)效果选⽤的邻域半径越⼤效果越好,当然其代价也会更⼤,另外确切的去噪效果的好坏还需要⽤SNR等数据来度量。
实验⼆:⼆维⾃适应维纳滤波对⾼斯噪声的滤除效果I=imread('C:\Documents and Settings\Administrator\桌⾯\1.gif'); %读取图像
J=imnoise(I,'gaussian',0,0.005); %加⼊均值为0,⽅差为0.005的⾼斯噪声
K2=wiener2(J,[3 3]); %对加噪图像进⾏⼆维⾃适应维纳滤波
K2=wiener2(J,[5 5]); %对加噪图像进⾏⼆维⾃适应维纳滤波
K2=wiener2(J,[7 7]); %对加噪图像进⾏⼆维⾃适应维纳滤波
K2=wiener2(J,[9 9]); %对加噪图像进⾏⼆维⾃适应维纳滤波唐弢
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。
J = imnoise(I,type,parameters)其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。参数type和parameters⽤于确定噪声的类型和相应的参数。下⾯的命令是对图像1.gif分别加⼊⾼斯噪声、椒盐噪声和乘性噪声,其结果如图所⽰:
实验三:对加⼊椒盐噪声的图像分别作均值、中值和维纳滤
波I=imread(1.gif');
J1=imnoise(I,'gaussian',0,0.02);
J2=imnoise(I,'salt & pepper',0.02);
J3=imnoise(I,'speckle',0.02);
运⾏效果见图2
I=imread('C:\Documents and Settings\Administrator\桌⾯\1.gif');
J=imnoise(I,'salt & pepper',0.02);
%h=ones(3,3)/9;%产⽣3*3的全1数组
%B=conv2(J,h);%卷积运算
K2=filter2(fspecial('average',3),J)/255; %均值滤波模板尺⼨为3
K= medfilt2(J);%采⽤⼆维中值滤波函数medfilt2对受椒盐噪声⼲扰的图像滤波
K1=wiener2(J,[3 3]); %对加噪图像进⾏⼆维⾃适应维纳滤波苯酚丙酮
subplot(2,3,1);imshow(I);
title('原始图像');
重庆李庄案
subplot(2,3,2);imshow(J);
title('加噪图像');
subplot(2,3,3);imshow(K2);
title('均值滤波后的图像');
subplot(2,3,4);imshow(K);
title('中值滤波后的图像');
PS:MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:C = conv2(A,B)
C = conv2(A,B)返回矩阵A和B的⼆维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的⼤⼩为(ma+mb+1)×(na+nb+1)。
亚硝胺MATLAB图像处理⼯具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:Y = filter2(h,X)其中Y = filter2(h,X)返回图像X 经算⼦h滤波后的结果,默认返回图像Y与输⼊图像X⼤⼩相同。例如:其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调⽤conv2函数进⾏计算。Fspecial函数⽤于创建预定义的滤波算⼦,其语法格式为:h = fspecial(type)
h = fspecial(type,parameters)参数type制定算⼦类型,parameters指定相应的参数,具体格式为前⽂已有叙述。
ones产⽣全1数组,zeros产⽣全零数组。ones(a,b)产⽣a⾏b列全1数组ones(a)产⽣a⾏a列全1叔祖
运⾏效果见图3:
通过图3我们也可得出结论,即中值滤波对于去除椒盐噪声效果最好,⽽维纳滤波去除效果则较差。中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画⾯上的部分点随机出现,⽽中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较⼤,所以抑制效果好。对点、线和尖顶较多的图像不宜采⽤中值滤波,因为⼀些细节点可能被当成噪声点。
实验四:分别使⽤⼆维统计滤波对椒盐噪声和⾼斯噪声进⾏滤波
2012年中秋晚会
I=imread('C:\Documents and Settings\Administrator\桌⾯\1.gif');
J1=imnoise(I,'salt & pepper',0.004);
subplot(2,3,1);imshow(I);
title('原始图像');
subplot(2,3,2);imshow(J1);
title('加椒盐噪声后的图像');
J= ordfilt2(J1,5,ones(3,4));% 进⾏⼆维统计顺序过滤
subplot(2,3,3);imshow(J);
title('椒盐噪声滤波后的图像');
J2=imnoise(I,'gaussian',0,0.004);
J3= ordfilt2(J2,5,ones(3,4));
subplot(2,3,5);imshow(J3);
title('⾼斯噪声滤波后的图像');
PS:
效果见图4:
PS:MATLAB⼩波分析⼯具箱提供的⽤于图像去噪的函数有wrcoef2和wpdencmp,其语法格式分别为:
X=wrcoef2(‘type’,C,S,’wname’)
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)
其中,X=wrcoef2(‘type’,C,S,’wname’)返回基于⼩波分解结构[C,S]的⼩波重构图像X。参数“type”等于a表⽰重构近似系数;等于h表⽰重构⽔平细节系数;等于v表⽰重构垂直细节系数,等于d表⽰重构对⾓细节系数。
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,’wname’,crit,par,keepapp)是通过⼩波包定限(阈值化),返回输⼊信号或图像X的除噪结果xd。输⼊参数中,[treed,datad]为xd的最佳⼩波包分解结构;perfl2和perf0表⽰L^2复原和压缩百分数;perf12=100* (xd的⼩波包系数向量范数/X的⼩波包系数向量范数) ^2。Keepapp=1表⽰近似系数不能阈值化,否则可以阈值化;sorh=’s’为软阈值化,h为硬阈值化。
实验五:利⽤wrcoef2函数进⾏图像去噪
其程序代码如下:I=imread('C:\Documents and Settings\Administrator\桌⾯\1.gif');
J=imnoise(I,'gaussian',0,0.005);
[c,l]=wavedec2(J,2,'sym4');
J1= wrcoef2('a',c,l,'sym4',1);
J2= wrcoef2('a',c,l,'sym4',2);
subplot(2,2,1);imshow(I);
title('原始图像');

本文发布于:2024-09-25 15:20:05,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/477310.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   噪声   滤波
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议