数字图像处理实验一图像变换及频域滤波.docx

上传人:b****4 文档编号:3688333 上传时间:2022-11-24 格式:DOCX 页数:28 大小:1.45MB
下载 相关 举报
数字图像处理实验一图像变换及频域滤波.docx_第1页
第1页 / 共28页
数字图像处理实验一图像变换及频域滤波.docx_第2页
第2页 / 共28页
数字图像处理实验一图像变换及频域滤波.docx_第3页
第3页 / 共28页
数字图像处理实验一图像变换及频域滤波.docx_第4页
第4页 / 共28页
数字图像处理实验一图像变换及频域滤波.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数字图像处理实验一图像变换及频域滤波.docx

《数字图像处理实验一图像变换及频域滤波.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验一图像变换及频域滤波.docx(28页珍藏版)》请在冰豆网上搜索。

数字图像处理实验一图像变换及频域滤波.docx

数字图像处理实验一图像变换及频域滤波

实验一图像变换及频域滤波

1.

一.实验目的

(1)编写快速傅里叶变换算法程序,验证二维傅里叶变换的平移性和旋转不变。

(2)实现图像频域滤波,加深对频域图像增强的理解。

二.实验环境及开发工具

WindwsXP、MATALAB7.0、VisualC++、VisualBasic

三.实验方法

1.验证二维傅里叶变换的平移性和旋转不变性;

a.要验证证其平移特性,就先建立一个二维图象,然后再对其平移,通过观察两者的频谱图来观察平移特性,为了方便起见,我们选择特殊情况来分析,令u0=v0=N/2,使

F(u-N/2,v-N/2),达到将原始F(U,V)四周频谱移到中心的效果,及达到频谱中心化。

b.验证旋转不变性可以通过将原始数组的通过移动45度,然后再比较旋转后与旋转前的频谱,得出频谱旋转不变性的结论。

具体步骤:

1)产生如图1所示图像

(128×128大小,暗处=0,亮处=255)

2)同屏显示原图

的幅度谱图。

3)若令

,重复以上过程,比较二者幅度谱的异同。

4)将

顺时针旋转45度得到

,显示

的幅度谱,并与

的幅度谱进行比较。

 

2.实现图像频域滤波,加深对频域图像增强的理解。

频率域中进行增强是相当直观的,主要步骤有:

1)计算需要增强的图象的傅立叶变换;

2)将其与一个(根据需要设计的)转移的函数相乘;

3)再将结果反傅立叶变换以得到增强的图象.

为了直观的展示频域增强,可以通过下面任务来展现:

对如图2所示的数字图像lena.img(256×256大小、256级灰度)进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。

 

四.实验分析

1.验证二维傅里叶变换的平移性和旋转不变性

1)建立一个二维数组并要求该数组能够显示成图1.

a=zeros(128,128)

fory=54:

74

forx=34:

94

a(x,y)=1;

end

end

然后再用显示图象的函数显示即可,在此我们用imshow(a)语句。

为了得到幅度谱图,可以地数组a进行快速傅立叶变换,然后再用

Mesh语句便可得到其幅度谱.

2)观察其平移特性。

根据实验方法中的分析,构造一个新的数组存入平移后的原数组,通过在嵌套中加入语句b(x,y)=(-1).^(x+y).*a(x,y);即可,然后再用类似上面的方法画出图象和幅度谱.

3)验证其旋转不变性。

首先将所得图画旋转45度,这需要通过将数组先相应的旋转,这个旋转有两种方式:

(1)根据旋转后的图象算出旋转后的数组形式,通过点与点之间的变换来实现,需要分区间来画图和构建新的数组.然后用imshow来显示.

(2)直接用IMROTATE(A,ANGLE,METHOD)语句,其中A表示数组,ANGLE表示旋转角度,METHOD表示旋转方向.我们令t=imrotate(a,315,'nearest','crop')令可将数组a逆时针旋转135度,即相当于顺时针旋转45度。

然后比较旋转前后两幅图的差别以及其频率谱和幅度谱的异同。

最后可以得结论。

2.实现图像频域滤波

1)读出图片,并生成图片的数组.

首先要将lena.img与MATLAB程序文档放在一个目录下面,然后再用语句a=fopen('lena.img','r');

b=fread(a,[256,256],'uchar');

打开图片并获得组成该图片的数组.然后用imshow(b),便可得到lena的人头图片.

其次与上面任务一样,对图片数组进行快速傅立叶变换,然后用mesh()语句画出他的幅度谱图,

2)进行频域增强的低通滤波部分。

频域法的过程是:

f(x,y)正变换----F(u,v)---修正H(u,v)---G(u,v)---反变换g(x,y).

理想低通滤波的转移函数需满足以下条件:

H(u,v)H(u,v)=1;当D(u,v)<=Do时;

H(u,v)=0;当D(u,v)>Do时;

其中Do是一个非负整数,D(u,v)是反映点(u,v)到频率平面原点的距离。

当小于Do的频率可以完全不受影响的通过滤波器,而大于Do的则完全不能通过滤波器,该Do可以形象的表示成截断频率。

在低通滤波时,分别令Do等于88,24,11,5时,可得到低通滤波后的结果图象,通过观察其图象与幅度谱图来理解低通滤波的特性.

3)进行频域增强的高通滤波部分。

一个2---D理想高通滤波器的转移函数满足下列条件

H(u,v)H(u,v)=0;当D(u,v)<=Do时;

H(u,v)=1;当D(u,v)>Do时;

所得到的结果恰好与低通滤波相反,当大于Do的频率可以完全不受影响的通过滤波器,而小于Do的则完全不能通过滤波器。

在高通滤波时,分别令Do等于2,8,24时,分别得到高通滤波后的结果图像,通过观察其图象与幅度谱图来理解高通滤波的特性。

关于此部分主要的函数语句是:

(1)m=abs(b);

m0=15*log(m+1.001);

surf(m0);

求出数组之后将其进行fft2得到m,然后求出其绝对值,为了避免其数值过大,求其对数,且为了避免出现0和1的情况,可以在m的基础上加上1.001,最后用surf()函数显示出3----D效果.

(2)r=24;

forx=1:

256

fory=1:

256

if(x-128).^2+(y-128).^2

t(x,y)=0;

end

end

end

通过对r数值的改变,和if条件的变化来实现不同的低通和高通情况下的滤波.

五.实验结果及结论

1.验证二维傅里叶变换的平移性和旋转不变性;

1.1产生的图像

与fft2(f1)幅度谱的程序如下:

Clc;

a=zeros(128,128)

fory=54:

74

forx=34:

94

a(x,y)=1;

end

end

figure

(1)

a1=fft2(a);

subplot(1,2,1);

imshow(a);

subplot(1,2,2);

a2=abs(a1);

mesh(a2);

forx=1:

128

fory=1:

128

b(x,y)=(-1).^(x+y).*a(x,y);

end

end

figure

(2)

b1=fft2(b);

subplot(1,2,1);

imshow(b);

subplot(1,2,2);

b2=abs(b1);

mesh(b2);

figure(3)

t=imrotate(a,315,'nearest','crop')

t1=fft2(t);

subplot(1,2,1);

imshow(t);

subplot(1,2,2);

t2=abs(t1);

surf(t2);

结果如图

1.2令

,则图像

的幅度谱图如下:

结果分析:

对比两图可以得到,1.2得的图就是将1.1得的图的频谱往中心移.即称为频谱中心化,将能量集中的4个角往中心靠拢。

1.3若将f2(x,y)顺时针旋转45°得到

,则

的幅度谱图如下

 

结果分析:

将1.3得的图与1.1得的图比较可知,将原图移动旋转45度以后,幅度谱图仍然没的改变,图象能量依然集中在4个角。

2.实现图像频域滤波

2.1对数字图像lena.img进行频域的理想低通,同屏显示原图、幅度谱图和低通滤波的结果图。

其中,取理想低通滤波的半径R分别为88、24、11和5。

程序代码如下(取r=8时)

Clc;

a=fopen('D:

\图像实验\img\lena.img','r');

b=fread(a,[256,256],'uchar');

fclose(a);

figure

(1)

subplot(1,2,1)

imshow(b,[0,255]);

b=fft2(b)

m=abs(b);

subplot(1,2,2)

m0=15*log(m+1.001)

surf(m)

q=b;

t=fftshift(q)

r=8;

forx=1:

256

fory=1:

256

if(x-128).^2+(y-128).^2>r.^2;

t(x,y)=0;

end

end

end

h2=abs(t);

h02=15*log(1.001+h2)

figure

(2)

imshow(h02,[0,255]);

t=ifftshift(t);

z=ifft2(t);

figure(3);

subplot(1,2,1)

imshow(z,[0,255]);

n=fft2(z);

subplot(1,2,2);

n=15*log(1.001+abs(n));

surf(n);

结果如下:

原图像及其频谱图

R=88时的理想低通滤波结果图和滤波频谱图

 

RR=24时的理想低通滤波结果图和滤波幅度谱图

R=11时的理想低通滤波结果图和滤波频谱图

 

R=5时的理想低通滤波结果图和滤波频谱图

当R=5时,滤波后的图像很模糊,无法分辨;

当R=11时,滤波后的图像比较模糊,但基本能分辨出人脸的形状;

当R=24时,滤波后的图像有些模糊,能分辨出脸上的器官轮廓,但由于理想低通滤

波器在频域的锐截止特性,滤波后的图像有较明显的振铃现象;

当R=88时,滤波后的图像比较清晰,但高频分量损失后,图像边沿与文字变的有些

模糊,在图像的边框附近仍有振铃现象。

2.2对数字图像lena.img进行频域的理想高通,同屏显示原图、幅度谱图和高通滤波的结果图。

其中,取理想高通滤波的半径R分别为2、8和24:

原图像及其频谱图

R=2时的理想高通滤波结果图和滤波频谱图

R=8时的理想高通滤波结果图和滤波频谱图

R=24时的理想高通滤波结果图和滤波频谱图

 

注:

对理想高通滤波后的图像用直接灰度变换方法作了灰度范围的扩展。

当R=2时,滤波后的图像无直流分量,但灰度的变化部分基本上都保留了;

当R=8时,滤波后的图像在文字和图像边缘部分的信息仍然保留;

当R=24时,滤波后的图像只剩下文字和白条边缘等信号突变的部分。

 

六、实验心得

、熟悉了MATLAB7.0的使用

、验证了二维傅里叶变换的平移性和旋转不变性。

、实现了对图像的频域滤波,掌握了频域图像增强,了解了低通滤波对图像的影响。

 

实验二空间域图像增强

一、实验目的

1、了解空间域图像增强的各种方法(点处理、掩模处理);

2、通过编写程序掌握采用直方图均衡化进行图像增强的方法;

3、使用邻域平均法编写程序实现图像增强,进一步掌握掩模法及其改进(加门限法)消除噪声的原理;

二、实验环境及开发工具

Windws2000/XP、MATLAB6.x、VisualC++、VisualBasic或其它

三、实验方法

对如图所示的两幅128×128、256级灰度的数字图像fing_128.img和cell_128.img进行如下处理:

 

(1)对原图像进行直方图均衡化处理,同屏显示处理前后图像及其直方图,比较异同,并回答为什么数字图像均衡化后其直方图并非完全均匀分布。

(2)对原图像加入点噪声,用4-邻域平均法平滑加噪声图像(图像四周边界不处理,下同),同屏显示原图像、加噪声图像和处理后的图像。

①不加门限;

②加门限

,(其中

四、实验结果及分析

1、直方图均衡化处理

程序如下:

clc;

fid=fopen('F:

\数字图像\图像\img\fing_128.img','r');

f=fread(fid,[128,128],'uchar');

subplot(2,1,1);

imshow(f,[0,255]);

q=zeros(1,256);

forx=1:

128

fory=1:

128

q(f(x,y)+1)=q(f(x,y)+1)+1;

end

end

s=q./(128*128);

X=0:

255;

subplot(2,1,2);

bar(X,s');

figure;

t=zeros(1,256);

t

(1)=s

(1);

fori=2:

256

t(i)=t(i-1)+s(i);

end

subplot(2,1,1);

bar(X,t');

t0=floor(255*t+0.5);

subplot(2,1,2);

bar(X,t0');

figure;

t1=zeros(1,256);

fori=1:

256

t1(t0(i)+1)=s(i)+t1(t0(i)+1);

end

subplot(2,1,1);

bar(X,t1');

f1=zeros(128,128)

forx=1:

128

fory=1:

128

f1(x,y)=t0(f(x,y)+1);

end

end

subplot(2,1,2);

imshow(f1,[0,255]);

运行结果:

(1)、指纹均衡化处理

(2)、细胞的均衡化处理

2、对原图像加入点噪声

程序代码

不加门限:

clc;

fid=fopen('F:

\数字图像\图像\img\fing_128.img','r');

f=fread(fid,[128,128],'uchar');

subplot(2,2,1);

imshow(f,[0,255]);

forx=1:

128

fory=1:

128

ifx==y

f(x,y)=255;

elseifx+y==100

f(x,y)=0;

end

end

end

subplot(2,2,2);

imshow(f,[0,255]);

f0=f;

forx=2:

127

fory=2:

127

f0(x,y)=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

end

end

subplot(2,2,3);

imshow(f0,[0,255]);

t=fft2(f);

T=t(1,1)/128;

f1=f;

forx=2:

127

fory=2:

127

h=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

ifabs(f(x,y)-h)>T

f1(x,y)=h;

else

f1(x,y)=f(x,y);

end

end

end

subplot(2,2,4);

imshow(f1,[0,255]);

运行结果:

加门限:

clc;

fid=fopen('F:

\数字图像\图像\img\fing_128.img','r');

fg=fread(fid,[128,128],'uchar');

subplot(2,2,1);

imshow(fg,[0,255]);

a=randn(128,128);

f=a.*20+fg;

subplot(2,2,2);

imshow(f,[0,255]);

f0=f;

forx=2:

127

fory=2:

127

f0(x,y)=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

end

end

subplot(2,2,3);

imshow(f0,[0,255]);

t=fft2(f);

T=t(1,1)/128;

f1=f;

forx=2:

127

fory=2:

127

h=(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1)))./4;

ifabs(f(x,y)-h)>T

f1(x,y)=h;

else

f1(x,y)=f(x,y);

end

end

end

subplot(2,2,4);

imshow(f1,[0,255]);

运行结果:

(2)细胞加入噪声及去噪

3、结果分析

(1)直方图均衡化处理后图像的对比度增强,变得相对清晰,达到了图像增强的效果。

(2)去噪的同时图像的某些细节变得模糊。

五、实验心得

1、通过本次试验了解了空间域图像增强的各种方法,如点处理、掩模处理等。

2、学会并掌握了编写采用直方图均衡化进行图像增强的方法。

 

实验三图像边缘检测

一、实验目的

(1)了解并掌握使用微分算子进行图像边缘检测的基本原理;

(2)编写程序使用Laplacian算子(二阶导数算子)实现图像锐化,进一步理解图像锐化的实质;

(3)掌握使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法,根据实验结果分析各种算子的工作效果;

(4)总结实验过程(实验报告,左侧装订):

方案、编程、调试、结果、分析、结论。

二、实验环境

操作系统:

Windws2000/XP所用软件:

MATLAB6、VisualC++、VisualBasic或其它

三、实验内容及步骤

对256×256大小、256级灰度的数字图像lena.img(如图5.1所示)进行如下处理:

 

(1)对原图像进行锐化处理,显示处理前、后图像:

用Laplacian算子进行锐化,分

两种情况,各按如下不同情况给出处理结果,并回答提出的问题:

问题:

(1)

之间有何关系?

代表图像中的哪些信息?

由此得出图像锐化的实质是什么?

(2)分别利用Roberts、Prewitt和Sobel边缘检测算子,对原图像进行边缘检测,显示处理前、后图像。

四、实验结果与分析

程序代码:

clc;

fid=fopen('F:

\数字图像\图像\img\lena.img','r');

f=fread(fid,[256,256],'uchar');

subplot(2,2,1);

imshow(f,[0,255]);

g1=f;g2=f;

a=1;

forx=2:

255

fory=2:

255

g1(x,y)=f(x,y)-(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1))-f(x,y).*4).*a;

g2(x,y)=f(x,y).*4*a-(f((x-1),y)+f((x+1),y)+f(x,(y-1))+f(x,(y+1))).*a;

end

end

subplot(2,2,2);

imshow(g1,[0,255]);

subplot(2,2,3);

imshow(g2,[0,255]);

运行结果

a=1时原图、g1和g2的图像

a=2时原图、g1和g2的图像

利用Roberts、Prewitt和Sobel算子对lena.img进行边缘检测

程序代码:

clc;

fid=fopen('F:

\数字图像\图像\img\lena.img','r');

f=fread(fid,[256,256],'uchar');

GR=f;

GP=f;

GS=f;

forx=2:

255

fory=2:

255

GRx(x,y)=f(x,y)-f(x+1,y+1);

GRy(x,y)=f(x,y+1)-f(x+1,y);

GR(x,y)=sqrt((GRx(x,y)).^2+(GRy(x,y)).^2);

GPx(x,y)=(f(x-1,y+1)+f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+f(x,y-1)+f(x+1,y-1))/3;

GPy(x,y)=(f(x-1,y-1)+f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+f(x+1,y)+f(x+1,y+1))/3;

GP(x,y)=sqrt((GPx(x,y)).^2+(GPy(x,y)).^2);

GSx(x,y)=(f(x-1,y+1)+2*f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+2*f(x,y-1)+f(x+1,y-1))/3;

GSy(x,y)=(f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1))/3;

GS(x,y)=sqrt((GSx(x,y)).^2+(GSy(x,y)).^2);

end

end

subplot(2,2,1);

imshow(f,[0,255]);title('ÔͼÏñ');

subplot(2,2,2);

imshow(GR,[0,255]);title('Roberts');

subplot(2,2,3);

imshow(GP,[0,255]);title('Prewitt');

subplot(2,2,4);

imshow(GS,[0,255]);title('Sobel');

运行结果:

a=2时原图、g1和g2的图像

分析:

的两个分量;

代表图像中的低频信息;因此得出图像锐化的实质是对原图像进行变换,保留高频成分。

五、实验结论

1、通过本实验了解了并掌握了使用微分算子进行图像边缘检测的基本原理;

2、学会使用Laplacian算子(二阶导数算子)实现图像锐化的程序编写。

3、掌握了使用不同梯度算子(一阶导数算子)进行图像边缘检测的原理、方法。

六、参考文献

[1]R.C.Gonzalez&R.EWoods.DigitalImageProcessing(2E).PrenticeHallPTR,2002

中译本:

阮秋琦等译.数字图像处理(第二版).北京:

电子工业出版社,2005.3

[2]冈萨雷斯.数字图像处理(MATLAB版).北京:

电子工业出版社,2005.9

[3]K.R.Castleman.数字图像处理.朱志刚等译.北京:

电子工业出版社,1998.9

[4]章毓晋.图象工程(上册)—图象处理和分析.北京:

清华大学出版社,2003.7

[5]何斌.VisualC++数字图像处理(第二版).北京:

人民邮电出版社,2002.1

 

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

当前位置:首页 > 初中教育 > 中考

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

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