数字图像处理实验一
    15生医    
一、实验容
产生右图所示图像 f1(m,n),其中图像大小为256×256,中间亮条为128×32,暗处=0,亮处=100。对其进行FFT:
① 同屏显示原图f1(m,n)和FFT(f1)的幅度谱图;
② 若令f2(m,n)=(-1)^(m+n)f1(m,n),重复以上过程,比较二者幅度谱的异同,简述理由;
③ 若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;
④ 若将f1(m,n) 顺时针旋转90度得到f4(m,n),令f5(m,n) = f1(m,n) + f4(m,n),试显示FFT(f5)的幅度谱,指出其与 FFT(f1)和FFT(f4)的关系;
⑤ 若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的关系,比较FFT(f6)和FFT(f5)的幅度谱。
二、运行环境
MATLAB R2014a
三、运行结果及分析
1.同屏显示原图f1(m,n)和FFT(f1)的幅度谱图:
 
2.令f2(m,n)=(-1)^(m+n)f1(m,n),对其进行FFT,比较f2与f1幅度谱的异同,简述理由:
异同及理由:①空域:f2由于前边乘了系数(-1)^(m+n),导致灰度值有正有负,而在MATLAB的imshow函数中默认把负值变为0(有些情况是取反),所以形成了如左图所示的黑白花纹。②频域:FFT(2)为FFT(1)中心化后的图像。空域进行乘以(-1)^(m+n)的操作,即相当于频域里的位移,实现频谱的中心化。
3.将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱
进行比较:
比较:空域图像旋转90度后,频域幅度谱也旋转90度。
4.将f1(m,n) 顺时针旋转90度得到f4(m,n),令f5(m,n) = f1(m,n) + f4(m,n),试显示FFT(f5)的幅度谱,指出其与 FFT(f1)和FFT(f4)的关系:
关系:空域里原图与其旋转90度后的图像进行叠加,在频域里也体现为相应幅度谱的叠加,即FFT(f5)=FFT(f1)+FFT(f4)。
5.令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与 FFT(f2)和FFT(f3)的
关系,比较FFT(f6)和FFT(f5)的幅度谱:
关系:空域里原图与其旋转90度后的图像进行叠加,在频域里也体现为相应幅度谱的叠加,即FFT(f6)=FFT(f2)+FFT(f3)。
比较:FFT(6)为FFT(5)中心化后的图像。
四、心得体会
通过MATLAB编程更加熟练了课上的知识点,比如空域旋转频域也旋转,空域叠加频域也满足叠加关系。同时,对MATLAB实现傅里叶变换及其显示的机理也有所掌握,比如后边附的程序中会提到的Note1-Note5的思考。
Note1:复数取绝对值后才可以二维图示;Note2:为什么这里要划分255个灰度级?为什么是在频域里操作?(可能的解释:用灰度来表示值的大小,越白值越大);Note3:空域进行此操作频域位移;Note4:双线性插值法;Note5:旋转坐标计算式:256*(1+0)
五、具体程序
(复制于matlab notebook)
% 产生亮块图像 0暗100亮
f1=zeros(256,256);
for m=64:192
      for n=112:144
matlab求傅里叶变换
            f1(m,n)=100;
      end
end
figure(1);
subplot(1,2,1);
imshow(f1);
xlabel('(a)亮块图f1(m,n)');
axis on;  
% 求f1(m,n)的傅里叶变换
FFT_f1=fft2(f1);
% 求f1(m,n)的频谱
FFT_f1=abs(FFT_f1);  % Note1:复数取绝对值后才可以二维图示
tmax=FFT_f1(1,1);