实验报告
实验名称
课程名称图像变换及频域滤波数字图像处理
姓名成绩
班级学号
日期2012.11.15地点综合实验楼4楼
1.实验目的
(1)编写快速傅里叶变换算法程序,验证二维傅里叶变换的平移性和旋转不变性;
(2)实现图像频域滤波,加深对频域图像增强的理解;
(3)总结实验过程(实验报告,左侧装订):方案、编程、调试、结果、分析、结论。
2.实验环境(软件、硬件及条件)
Windows_P
Matlab7.1
3.实验方法
运用数字图像处理所学的图像变换及滤波知识,运用MATLAB工具,编写程序并实现要求。
4.实验题目和分析
实验题目:
(1)产生实验图像f1(_,y)(128_12小,黑色区域灰度值为0,中心白色区域大小为16_,灰度值等于255),用MATLAB中的fft2函数对其进行FFT:
①同屏显示原图f1和FFT(f1)的幅度谱图;
②若令f2(_,y)=(-1)f1(_,y)重复以上过程,比较二者幅度谱的异同,简述理由;
③若将f2(_,y)顺时针旋转45度得到f3(_,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较。
(2)对实验图像XXX(256_256大小、256级灰度)进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。分析:
a.先用矩阵构建图像,再对图像进行二维快速傅XX变换,最后用MATLAB中的mesh函数显示其幅度谱图;
b.对原图像进行频谱中心化,再进行二维快速傅XX变换显示其频谱图,与前面对比;
c.用最邻近插值法旋转图像再进行频谱中心化,显示其幅度谱图,观察幅度谱的变化;
e.用fopen函数打开XXX图像,imshow显示原图像,mesh显示幅度谱图;f.低通滤波:图像的能量大部分集中在幅度谱的低频和中频部分,而图像的边缘和噪声对应于高频部分。因此能降低高频成分幅度的滤波器就能减弱噪声的影_+y
高通滤波:由于图像中的细节部分与其高频分量相对应,所以高通滤波可以对图像进行锐化处理。高通滤波与低通滤波相反,它是高频分量顺利通过,使低频分量受到削弱。
对理想高通滤波后的图像用直接灰度变换方法作了灰度范围的扩展。利用循环和选择语句将距离中心点一定距离之内或之外的点置为0,然后用上述函数显示结果图。
5.实验结论
(1)构建图像幅度谱时注意mesh函数的使用,并使用代码为mesh(log(abs(filter1)+1)),否则图像经滤波后无明显变化;
(2)频谱中心化后的频谱谱中心出现峰值;观察频谱发现,频谱也随着图像顺时针旋转了45度;
(3)对图像频域进行理想低通滤波:当R=5时,滤波后的图像很模糊,无法分辨;当R=11时,滤波后的图像比较模糊,但基本能分辨出人脸的形状;当R=24时,滤波后的图像有些模糊,能分辨出脸上的器官轮廓,但由于理想低通滤波器在频域的锐截止特性,滤波后的图像有较明显的振铃现象;当R=88时,滤波后的图像比较清晰,但高频分量损失后,图像边沿与文字变的有些模糊,在图像的边框附近仍有振铃现象。
对图像频域进行理想低通滤波:当R=2时,滤波后的图像无直流分量,但灰度的变化部分基本上都保留了;当R=8时,滤波后的图像在文字和图像边缘部分的信息仍然保留;当R=24时,滤波后的图像只剩下文字和白条边缘等信号突变的部分。
1.实验结果显示
1.(1)
(2)令f2(_,y)=(-1)_+yf1(_,y),则图像f2与FFT(f2)的幅度谱图如下:
(3)将f2(_,y)顺时针旋转45得到f3(_,y),则f3及FFT(f3)的幅度谱图如下:
2.原图像及其幅度谱图
R=88时的理想低通滤波结果图和滤波频谱图
R=24时的理想低通滤波结果图和滤波频谱图
R=11时的理想低通滤波结果图和滤波频谱图
R=5时的理想低通滤波结果图和滤波频谱图
理想高通滤波图像:
R=2时的理想高通滤波结果图和滤波频谱图
R=8时的理想高通滤波结果图和滤波频谱图
R=24时的理想高通滤波结果图和滤波频谱图
2.实验代码
第一题.(1)
imgBlk=zeros(128,128);
imgBlk(33:96,57:72)=1;
f1=abs(fft2(imgBlk));
figure('Name','原始图像及其幅度谱','NumberTitle','off');subplot(1,2,1);
imshow(imgBlk,[]);
title('原图像f1');
subplot(1,2,2);
mesh(f1);
title('FFT(f1)的幅度谱图');
tmp=imgBlk;
fori=1:128
forj=1:128
ifmod(i+j,2)
tmp(i,j)=-tmp(i,j);end
f2=abs(fft2(tmp));
figure('Name','频谱中心化及其幅度谱图','NumberTitle','off');subplot(1,2,1);
imshow(tmp,[]);
title('图像f2');
subplot(1,2,2)
mesh(f2);
title('FFT(f2)的幅度谱图');
imgRot=zeros(size(imgBlk,1),size(imgBlk,2));
theta=-pi/4;
M=round(size(imgBlk,1)/2);N=round(size(imgBlk,2)/2);
foru=-M:M-1
forv=-N:N-1
i=cos(-theta)u-sin(-theta)v;
j=sin(-theta)u+cos(-theta)v;
i=round(i);
j=round(j);
ifabs(i) imgRot(u+M+1,v+N+1)=imgBlk(i+M,j+N);end tmp1=imgRot; fori=1:size(imgRot,1) forj=1:size(imgRot,2) ifmod(i+j,2) tmp1(i,j)=-tmp1(i,j); f3=abs(fft2(tmp1)); figure('Name','旋转图像及其幅度谱图','NumberTitle','off');subplot(1,2,1); imshow(tmp1,[]); title('f1旋转45度再中心化后得到的图像f3'); subplot(1,2,2); mesh(f3); title('FFT(f3)的幅度谱图'); 第二题. clear;closeall; fid=fopen('XXX','r'); image0=fread(fid,[256,256],'uint8'); Im=fft2(image0); Imr=abs(fftshift(Im)); figure(); subplot(1,2,1); imshow(image0,[]); subplot(1,2,2); mesh(log(Imr)); %理想低通滤波 filter1=fftshift(Im); R1=input('输入低通滤波半径:'); for_=1:256 fory=1:256 if(_-128)^2+(y-128)^2>R1^2 filter1(_,y)=0; image1=abs(ifft2(filter1));subplot(1,2,1); imshow(image1,[]); subplot(1,2,2); mesh(log(abs(filter1)+1)) %理想高通滤波 filter2=fftshift(Im); R2=input('输入高通滤波半径:');for_=1:256 fory=1:256 if(_-128)^2+(y-128)^2 image2=abs(ifft2(filter2));subplot(1,2,1); imshow(image2,[]); subplot(1,2,2); mesh(log(abs(filter2)+1));