数字图像处理之空间滤波.docx

上传人:b****3 文档编号:1013666 上传时间:2022-10-15 格式:DOCX 页数:17 大小:18.07KB
下载 相关 举报
数字图像处理之空间滤波.docx_第1页
第1页 / 共17页
数字图像处理之空间滤波.docx_第2页
第2页 / 共17页
数字图像处理之空间滤波.docx_第3页
第3页 / 共17页
数字图像处理之空间滤波.docx_第4页
第4页 / 共17页
数字图像处理之空间滤波.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

数字图像处理之空间滤波.docx

《数字图像处理之空间滤波.docx》由会员分享,可在线阅读,更多相关《数字图像处理之空间滤波.docx(17页珍藏版)》请在冰豆网上搜索。

数字图像处理之空间滤波.docx

数字图像处理之空间滤波

实验三、空域滤波

一、实验目的

1.了解空域滤波的方法;

2.掌握几种模板的基本原理。

二、实验内容

1.使用函数fspecial()生成几种特定的模板;

2.使用函数imfilter()配合模板对图象数据进行二维卷积;

3.比较各种滤波器的效果。

三、实验步骤

1.线性平滑(低通)滤波器

a.用 h=fspecial(‘average’) 得到的h为3×3的邻域平均模板,然后用h来对图象cameraman.tif进行平滑处理。

>>x=imread(‘cameraman.tif’);

h=fspecial(‘average’)

y=imfilter(x,h);

subplot(1,2,1)

imshow(x)

subplot(1,2,2)

imshow(y)

b.把模板大小依次改为7×7,9×9和11×11,观察其效果有什么不同?

7×7:

9×9:

11×11:

c.改变fspecial()的参数为高斯低通模板fspecial(‘gaussian’),再以上同样的平滑处理,观察其结果。

实验结果:

相对于未进行处理的图像更加清晰

 

d.可以用mesh函数直观观察模板:

>>clear

h1=fspecial(‘gaussian’,100,3);

[xy]=meshgrid(1:

100);

mesh(x,y,h1);

h2=fspecial(‘gaussian’,100,10);

figure

mesh(x,y,h2)

e.对以上模板进行求和运算sum(sum(h)),其结果是否一样,试解释。

实验结果:

求和得数均为1。

B=sum(A)returnssumsalongdifferentdimensionsofanarray.

2.非线性平滑滤波器

a.中值(median)滤波器是非线性滤波器的一种,它工作原理如下:

1)将模板在图中漫游,并将模板中心与图中某个象素位置重合;

2)读取模板下各对应象素的灰度值;

3)将这些灰度值从小到大排成一列;

4)找出这些值中排在中间的1个;

5)将这个中间值赋给对应模板中心位置的象素。

b.先用imnoise()函数给图象加噪声,如对图象增加高斯白噪声

y=imnoise(x,’gaussian’)

c.对图象eight.tif添加胡椒盐噪声(salt&pepper),然后分别用前面

的均值滤波器和中值滤波器medfilt2()进行去噪声处理,比较结果。

均值滤波:

 

中值滤波:

思考:

用imnoise()函数分别对eight.tif添加高斯噪声及椒盐噪声,然后进行均值滤波、中值滤波,观察结果。

均值滤波:

中值滤波:

3.线性锐化滤波器

a.线性锐化滤波器的模板为h=[ -1 -1 -1;

-1 8 -1;

-1 -1 -1;]

用该模板对图象cameraman.tif进行锐化处理;

closeall;

x=imread('cameraman.tif');

h=[ -1 -1 -1;

-1 8 -1;

-1 -1 -1;]

y=imfilter(x,h);

subplot(1,2,1)

imshow(x)

subplot(1,2,2)

imshow(y)

b.也可以fspecial('laplacian')函数得到锐化模板;

closeall;

x=imread('cameraman.tif');

h=fspecial('laplacian')

y=imfilter(x,h);

subplot(1,2,1)

imshow(x)

subplot(1,2,2)

imshow(y)

c.另外一种有趣的作法是:

用原图象减去经过低通处理的图象,再经过灰度拉伸得到高通(锐化)的图象。

d.索贝尔(sobel)算子  h1=[-1 0 1;

-2 0 2;

-1 0 1;]

h2=[1 2 1;

0 0 0;

-1 -2 -1;]

分别使用以上算子对图象进行处理可以得到图象的边缘。

x=imread('cameraman.tif');

h1=[-1 0 1;

-2 0 2;

-1 0 1;]

y=imfilter(x,h1);

subplot(1,2,1)

imshow(x)

subplot(1,2,2)

imshow(y)

closeall;

x=imread('cameraman.tif');

h2=[1 2 1;

0 0 0;

-1 -2 -1;]

y=imfilter(x,h2);

subplot(1,2,1)

imshow(x)

subplot(1,2,2)

imshow(y)

思考:

1、 使用sobel算子对图像进行锐化处理,得出类似下图的结果。

closeall;

x=imread('cameraman.tif');

h=fspecial('average')

y=imfilter(x,h);

h1=[1 2 1;

0 0 0;

-1 -2 -1;]

h2=[-1 0 1;

-2 0 2;

-1 0 1;]

h3=[-1 -2 -1;

0 0 0;

1 2 1;]

h4=[1 0 -1;

2 0-2;

1 0 -1;]

k1=imfilter(y,h1);

k2=imfilter(y,h2);

k3=imfilter(y,h3);

k4=imfilter(y,h4);

k=double(k1)+double(k2)+double(k3)+double(k4);

m=uint8(k/4);

c=imadjust(m,[00.5],[]); 

subplot(1,2,1)

imshow(x)

subplot(1,2,2)

imshow(c)

2、 写出步骤3–c的具体命令与结果。

即用原图象减去经过低通处理的图象,再经过灰度拉伸得到高通(锐化)的图象。

closeall;

x=imread('cameraman.tif');

h=fspecial('average')

y=imfilter(x,h);

k1=double(x)-double(y);

k2=uint8(k1);

m=imadjust(k2,[00.2],[]);

subplot(1,2,1)

imshow(x)

subplot(1,2,2)

imshow(m)

进阶题:

编写m文件,实现图像与模板的卷积。

y=imfilter(x,h);

subplot(1,2,1)

functiona=myconv(b,c)

bs=size(b);

cs=size(c);

i=any(bs-cs);

ifi

error('error')

end

i=any(~(bs-1));

if~i

error('error')

end

ko=0;

ifbs

(1)>bs

(2)

b=b';

c=c';

ko=1;

end

bs=size(b);

cs=size(c);

ss=2*bs

(2)-1;

a=zeros(1,ss);

fori=1:

cs

(2)

q=zeros(1,i-1);

p=zeros(1,ss-cs

(2)+1-i);

ba=[q,c,p];

ma=b(i)*ba;

a=a+ma;

end

ifko

a=a';

end

end

四、实验心得与体会

通过这次实验,我学会并了解了许多有关数字图像处理方面的知识。

以前只是看着课本上的内容学习,对很多知识只是生分的了解,但是不懂得如何应用,通过做实验,自己动手,对图像做一系列的处理和变换,体会到了各种参数对数字图像的影响。

通过此次实验也发现了自己的而许多问题,在对于MATLAB软件的应用上面我还有许多不足,尤其是对如何编写M文件方面很难掌握,仍有待加强。

四、实验报要求

1、按照实验步骤做实验;

2、记录实验结果,并作出总结;

3、按照实验报告格式写出报告。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1