返回首页

Matlab邻域平均法 和中值滤波法 实验教程

时间:2012-06-22 14:26来源:知行网www.zhixing123.cn 编辑:麦田守望者

一.实验内容:

5´5区域的邻域平均法 5´5中值滤波法

二.实验目的:

了解各种平滑处理技术的特点和用途,掌握平滑技术的仿真与实现方法。学会用Matlab中的下列函数对输入图像进行上述2类运算。感受不同平滑处理方法对最终图像效果的影响。

nlfiltermean2std2fspecialfilter2medfilt2imnoise

三.实验步骤:

1.仔细阅读Matlab帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。

2.test3_1.jpg图像文件读入Matlab,用nlfilter对其进行5´5邻域平均和计算邻域标准差。显示邻域平均处理后的结果,以及邻域标准差图像。

3.test3_1.jpg图像中添加均值为0,方差为0.02的高斯噪声,对噪声污染后的图像用nlfilter进行5´5邻域平均。显示处理后的结果。(使用imnoise命令)

4.test3_2.jpg图像文件读入Matlab,用fspecial函数生成一5´5邻域平均窗函数,再用filter2函数求邻域平均,试比较与用nlfilter 函数求邻域平均的速度。

5.medfilt2函数对test3_2.jpg图像进行中值滤波。显示处理结果。

6.编写中值滤波程序(函数)。对test3_2.jpg图像进行中值滤波。显示处理结果。

四.实验报告要求:

imshow函数生成各类图像,提交原图像和经各种方法处理后的图像。给出中值滤波程序。对图像平滑结果进行分析。

解析:

%2

figure;

a=imread('e:\test3_1.jpg');

a=im2double(a);

f1 = inline('max(x(:))');

f2 = inline('std2(x)*ones(size(x))');

A1 = nlfilter(a,[5 5],f1);

subplot(1,3,1);

imshow(a);title('input image');

subplot(1,3,2);

imshow(A1);title(' 5*5领域平均后图像');

A4 = blkproc(a,[ 5 5 ],f2);

subplot(1,3,3);imview(A4,[]);% 领域标准差图像

%3

figure;

A2 = imnoise(a,'gaussian',0,0.02);

subplot(1,3,1);

imshow(a);title('input image');

subplot(1,3,2);

imshow(A2);title('加噪声后图像');

A3 = nlfilter(A1,[5 5],f);

subplot(1,3,3);

imshow(A3);title('对加噪声图像领域平均后图像');

%4

figure;

a=imread('e:\test3_2.jpg');

a=im2double(a);

f = inline('max(x(:))');

subplot(1,2,1);

imshow(a);title('input image');

h=fspecial('average',5);

K1=filter2(h,a);

subplot(1,2,2);

imshow(K1);title('filter2函数求邻域平均');

%5

figure;

K3=medfilt2(a,[5,5]);

subplot(1,2,1);

imshow(a);title('input image');

subplot(1,2,2);

imshow(K3);title('进行5*5模板中值滤波');

%6

figure;

subplot(1,2,1);

imshow(a);title('input image');

K4=a;

xsize=size(a);

for k=2:(xsize(1)-1)

for j=2:(xsize(2)-1)

t=a(k-1:k+1,j-1:j+1);

k4(k,j)=median(t(1:9));

end;

end;

subplot(1,2,2);

imshow(k4); title('中值滤波程序处理后的图');

------分隔线----------------------------
标签(Tag):MATLAB Matlab技巧 Matlab实例教程 matlab源代码 matlab基础教程
------分隔线----------------------------
推荐内容
猜你感兴趣