实验五 傅立叶变换与频率域滤波

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五傅立叶变换与频率域滤波

一、实验目的

1.理解傅立叶变换;

2.熟悉MATLAB中各种傅立叶变换相关的函数;

3.掌握频域滤波的步骤以及MATLAB的实现方法;

4.理解频域滤波器与空域滤波器的关系。

二、实验内容及步骤

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);

Image=log(1+double(fftshift(FP)));

imshow(x);

figure(2);imshow(Image,[]);

(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)进行理想低通滤波处理,截止频率D 0=30。

理想低通滤波函数:

00

1((,)0H u v ≤⎧=⎨⎩,D u,v)D ,D(u,v)>D ,221/2(,)[(/2)(/2)]D u v u M v N =-+- 例:

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

% -----------傅立叶变换及频域滤波---------

F=fft2(f);

F=fftshift(F); %中心平移

FF=F.*H; % 频域滤波。注意必须是点乘

FFS=ifftshift(FF);

g=ifft2(FFS); % 傅立叶反变换

g=uint8(real(g)); %取变换后的实部

% 显示并比较结果

figure(1), imshow(f); title('原图')

figure(2),imshow(H);title('理想低通滤波器')

figure(3), imshow(log(abs(F)+1),[ ]);title('频率谱') %对数变换,便于显示结果figure(4), imshow(log(abs(FF)+1),[ ]);title('频域滤波')

figure(5),imshow(g,[]);title('滤波结果')

相关文档
最新文档