赞
踩
1线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) title('原始图像') I=rgb2gray(I); I1=imnoise(I,'salt & pepper',0.02); subplot(232) imshow(I1) title(' 添加椒盐噪声的图像') k1=filter2(fspecial('average',3),I1)/255; %进行3*3模板平滑滤波 k2=filter2(fspecial('average',5),I1)/255; %进行5*5模板平滑滤波k3=filter2(fspecial('average',7),I1)/255; %进行7*7模板平滑滤波 k4=filter2(fspecial('average',9),I1)/255; %进行9*9模板平滑滤波 subplot(233),imshow(k1);title('3*3 模板平滑滤波'); subplot(234),imshow(k2);title('5*5 模板平滑滤波'); subplot(235),imshow(k3);title('7*7 模板平滑滤波'); subplot(236),imshow(k4);title('9*9 模板平滑滤波'); 2.中值滤波器 用MATLAB实现中值滤波程序如下: I=imread(' c4.jpg '); I=rgb2gray(I); J=imnoise(I,'salt&pepper',0.02); subplot(231),imshow(I);title('原图像'); subplot(232),imshow(J);title('添加椒盐噪声图像'); k1=medfilt2(J); %进行3*3模板中值滤波 k2=medfilt2(J,[5,5]); %进行5*5模板中值滤波 k3=medfilt2(J,[7,7]); %进行7*7模板中值滤波 k4=medfilt2(J,[9,9]); %进行9*9模板中值滤波 subplot(233),imshow(k1);title('3*3模板中值滤波'); subplot(234),imshow(k2);title('5*5模板中值滤波 '); subplot(235),imshow(k3);title('7*7模板中值滤波'); subplot(236),imshow(k4);title('9*9 模板中值滤波'); 3状态统计滤波器:ordfilt2函数 Y=ordfilt2(X,order,domain) 由domain中非0元素指定邻域的排序集中的第order个元素代替X中的每个元素。Domain是一个仅包括0和1的矩阵,1仅定义滤波运算的邻域。 Y=ordfilt2(X,order,domain,S) S与domain一样大,用与domain的非0值相应的S的值作为附加补偿。 4二维自适应除噪滤波器:wiener2函数 wiener2函数估计每个像素的局部均值与方差,该函数用法如下: J=wiener2(I,[M N],noise) 使用M×N大小邻域局部图像均值与偏差,采用像素式自适应滤波器对图像I进行滤波。 [J,noise]=wiener2(I,[M N]) 滤波前还有估计附加噪声的能量。 5.特定区域滤波 MATLAB图像处理工具箱中提供的roifilt2函数用于对特定区域进行滤波,其语法格式为: J=roifilt2(h,I,BW) 其功能是:使用滤波器h对图像I中用二值掩模BW选中的区域滤波。 J=roifilt2(I,BW,fun) J=roifilt2(I,BW,fun,P1,P2,…) 其功能是:对图像I中用二值掩模BW选中的区域作函数运算fun,其中fun是描述函数运算的字符串,参数为P1、P2、…。返回图像J在选中区域的像素为图像I经fun运算的结果,其余部分的像素值为I的原始值。 例:对指定区域进行锐化滤波的程序清单: I=imread('eight.tif'); c=[222 272 300 272 222 194]; r=[21 21 75 121 121 75]; BW=roipoly(I,c,r); h=fspecial('unsharp'); J=roifilt2(h,I,BW); subplot(1,2,1);imshow(I); subplot(1,2,2);imshow(J); 由运行结果可知:右上角的硬币发生了变化,而其他硬币保持不变。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。