实验5傅立叶变换.doc
文本预览下载声明
实验五 傅立叶变换与频率域滤波
一、实验目的
理解傅立叶变换;
熟悉MATLAB中各种傅立叶变换相关的函数;
掌握频域滤波的步骤以及MATLAB的实现方法;
理解频域滤波器与空域滤波器的关系。
二、实验内容及步骤
1、傅立叶变换及傅立叶反变换
(1)傅立叶变换相关函数
MATLAB提供了几个和傅立叶变换相关的函数。其说明如下:
F=fft2(f); 二维傅立叶变换
real(F); 傅立叶变换的实部
imag(F); 傅立叶变换的虚部
abs(F); 获得傅立叶频谱
fftshift(F); 将变换的原点移至频率矩形的中心
ifft2(F); 二维傅立叶反变换
iffshift(F); 反中心平移
(2)傅立叶频谱
傅立叶频谱(傅立叶变换的幅度)反映了图像的频率成分。幅值谱的能量往往集中于中低频部分,并且中低频部分的能量反映了图像的实体。 图像的噪声往往集中于高频部分。
下面的例子对课本中123页的图Fig4.03(a).jpg进行傅立叶变换,得到傅立叶频谱。
例: x=imread(Fig4.03(a).jpg);
F=fft2(x); %二维傅立叶变换
FP=sqrt(real(F).^2+imag(F).^2); %计算傅立叶频谱,或者使用abs()函数
imshow(uint8(FP)) %显示傅立叶频谱,直流成分分布在四个边角
figure(2); imshow(uint8(fftshift(FP))) % 中心平移的频谱图
思考题1:对课本125页的图Fig4.04(a).jpg进行傅立叶变换,得到傅立叶频谱,为清楚地显示该谱,将其进行对数变换处理,增强其灰度细节。结果类似于图5_1。
图5_1 Fig4.04(a)的傅立叶谱
x=imread(Fig4.04(a).jpg);
F=fft2(x);
FP=sqrt(real(F).^2+imag(F).^2);
PP=fftshift(FP)
imshow(x)
figure(2);
imshow(log(abs(PP)+1),[ ])
(3)傅立叶变换对
将一幅图像进行傅立叶变换,再进行傅立叶反变换,可以得到原始图像。下面的例子对课本中134页的图Fig4.11(a)进行傅立叶变换,然后再进行傅立叶反变换,观察并了解实现过程。
理论上,经过傅立叶变换和傅立叶反变换,应该得到原始图像。比较fa和f,基本差不多。查看变量C的内容,可以看到他们之间还是有细微的差别的。
例: close all
f=imread(Fig4.11(a).jpg);
F=fft2(f); %傅立叶变换
ff=ifft2(F); %反傅立叶变换
fa=real(ff); % 取实部
subplot(2,2,1),imshow(f);
subplot(2,2,2),imshow(F); %只显示变换的实部
subplot(2,2,3),imshow(ff,[]);
subplot(2,2,4),imshow(fa,[]);
figure(2)
C=fa-double(f); %反变换回来的图像和原图相减
imshow(C,[]); %两者是有差别的
2、频率域滤波
按照频域滤波的步骤,在MATLAB中是很容易编程实现频域滤波。由于滤波器就是频率域中的函数,关键是如何构造滤波器函数。频域滤波的步骤为:
对图像进行傅立叶变换DFT, 即F(u,v);
傅立叶变换原点中心平移;
用滤波器函数H(u,v)乘以F(u,v);
将原点反中心平移;
傅立叶反变换;
取上一步结果中的实部,即频域滤波后的结果。
(1) 低通滤波
低通滤波是使低频部分通过,而使高频部分受到抑制,从而使图像变得平滑。常用的低通滤波有理想低通滤波、巴特沃斯低通滤波和高斯低通滤波。
下面的例子实现了对课本135页图Fig4.11(a)进行理想低通滤波处理,截止频率D0=30。
例:
close all
clear all
f=imread(Fig4.11(a).jpg);
% ------构造理想低通滤波器----------
[Hh Hw]=size(f); %以图像的行列值作为滤波器的行列
H(1: Hh,1: Hw)=0; %滤波器的初值为0
x0=Hh/2; y0=Hw/2; % 滤波器的中心点
for x=1:Hh
for y=1:Hw
if(sqrt((x- x0)*(x- x0)+(y-y0)*(y- y0))30) %理想低通滤波器 D0=30
H(x,y)=1;
end
end
end
% ----
显示全部