matlab自带的滤波器有哪些??

matlab自带的滤波器有哪些??,第1张

1线性平滑滤波器

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

I=imread(' c4jpg ');

subplot(231)

imshow(I)

title('原始图像')

I=rgb2gray(I);

I1=imnoise(I,'salt & pepper',002);

subplot(232)

imshow(I1)

title(' 添加椒盐噪声的图像')

k1=filter2(fspecial('average',3),I1)/255; %进行33模板平滑滤波

k2=filter2(fspecial('average',5),I1)/255; %进行55模板平滑滤波k3=filter2(fspecial('average',7),I1)/255; %进行77模板平滑滤波

k4=filter2(fspecial('average',9),I1)/255; %进行99模板平滑滤波

subplot(233),imshow(k1);title('33 模板平滑滤波');

subplot(234),imshow(k2);title('55 模板平滑滤波');

subplot(235),imshow(k3);title('77 模板平滑滤波');

subplot(236),imshow(k4);title('99 模板平滑滤波');

2中值滤波器

用MATLAB实现中值滤波程序如下:

I=imread(' c4jpg ');

I=rgb2gray(I);

J=imnoise(I,'salt&pepper',002);

subplot(231),imshow(I);title('原图像');

subplot(232),imshow(J);title('添加椒盐噪声图像');

k1=medfilt2(J); %进行33模板中值滤波

k2=medfilt2(J,[5,5]); %进行55模板中值滤波

k3=medfilt2(J,[7,7]); %进行77模板中值滤波

k4=medfilt2(J,[9,9]); %进行99模板中值滤波

subplot(233),imshow(k1);title('33模板中值滤波');

subplot(234),imshow(k2);title('55模板中值滤波 ');

subplot(235),imshow(k3);title('77模板中值滤波');

subplot(236),imshow(k4);title('99 模板中值滤波');

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('eighttif');

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);

由运行结果可知:右上角的硬币发生了变化,而其他硬币保持不变。

#includevoidmain(){doublei,j;doublea,b,c=0;printf("请输入积分上下限:");scanf("%lf%lf",&a,&b);for(i=a;i<=b;i+=10e-8){j=ii+1;j=10e-8;c+=j;}printf("ans=%4f\n",c);}对了没考虑自变量取负值的情况,这个程序只适合算上下限都大于零的情况。

nlinfit是一个用于非线性最小二乘拟合的函数,它可以用来估计非线性模型的参数。它接受一个参数函数和要拟合的数据作为输入,并使用最小二乘法对参数函数进行拟合。

medfilt2是一个二维中值滤波器函数,它可以用来去除图像噪声。它接受一个二维图像数组作为输入,并使用指定大小的中值滤波器来对图像进行滤波。

24位的彩色图像由RGB三色彩元素组合而成,MATLAB中的medfilt函数只对其中某一通道比如R颜色进行中值滤波,要想实现对24位彩色图像的中值滤波,如果用标量中值滤波方法的话,必需从一副图像中分别读R\G\B通道的颜色值,再分别用medfilt函数中值滤波,再将滤波后的数据组合成一幅图像。不知道你看明白了没有。

打了这么多字给点分吧。

1、假如我要对a1,a2,a3,a4,……,a100分别赋予1,2,3,……,100,这时eval就发挥作用了。

for i=1:100

eval(['a' num2str(i) '=' num2str(i)]);

end

2、再比如批量存数据或文件等等。

那么开始提到的例子也就好解释了。

注意:eval中的中括号在两个以上字符串出现时一定要有,起连接作用。

如: 

input:[‘hello’ ‘world’]

output:helloworld 

扩展资料:

函数说明

eval(expression)在字符串表达式中评估MATLAB代码。如果你在一个匿名函数或者含有嵌套函数的函数里面使用eval,那么评估的expression将不能创建一个变量。

[output1,,outputN]=eval(expression) 从特定变量表达式即expression中存储所有的输出。

输入参数:

expression:含有有效的MATLAB表达式的字符串。如果要在表达式即expression里面包含数值,请使用int2str,num2str或者sprintf进行转换。

输出参数:

output1,,outputN:是评估的表达式expression中的输出。

参考资料:

—eval(MATLAB函数)

1、阅读,以pouttif为例,加上盐和胡椒噪音。

2、分别建立3×3高斯滤波器模板和平均滤波器模板,并对经过噪声添加的图像进行滤波。显示原始图像,噪声图像和由高斯和平均模板过滤的图像。

3、结果如图所示。可以看出,平均模板滤波后的噪声非常明显。高斯模板滤波的噪声影响相对较小。

4、之后我们选择输入代码进行过滤,并显示处理后的图像。

5、中值滤波图像基本上不显示噪声的影响。效果如下。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12181412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存