matlab自带滤波器函数

来源:互联网 发布:国外手机社交软件 编辑:程序博客网 时间:2024/05/17 06:54

matlab自带滤波器函数小结(图像处理)  

注:原文链接:http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=215671

1 、线性平滑滤波器


用MATLAB实现领域平均法抑制噪声程序:

I=imread(' c4.jpg ');subplot(231)imshow(I)title('原始图像')flag = isrgb(I);if flag==true   I=rgb2gray(I);else     I=I;endI1=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 ');flag = isrgb(I);if flag==true   I=rgb2gray(I);else     I=I;endJ=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);


0 0