这篇文章实际上是笔者在学习冈萨雷斯 数字图像处理 matlab 版本 的第四章时,自己动手在matlab里敲入书上的程序实验得到的。
这个DFT的滤波步骤很重要,应该弄清楚。
1, 使用函数paddedsize()获得填充参数
FQ=paddedsize(size(I));%I为原始图像灰度矩阵
2, 得到使用填充的傅里叶变换
F=fft2(I,PQ(1,),PQ(2));
3, 使用任何一种方法,例如lpfilter()生成一个大小为PQ(1)*PQ(2)的滤波函数H。这个函数如果居中,就要在使用前令H=fftshift(H).
3, 将变换乘以滤波函数:
G=H.*F;
5, 获得G的傅里叶变换的实部:
g=real(ifft2(G));
6, 将左上部的矩形修剪为原始大小:
g=g(1:size(I,1),1:size(I,2));
%%
这条语句要注意,生成一个二维频率域滤波器。
H=freqz2(h,R,C) 其中h是一个二维空间滤波器。
%频域变换
%
I=imread('bw.tif');
figure;
imshow(I);
title('一副简单的图像');
result:
%fft
figure;
F=fft2(I);
S=abs(F);
imshow(S,[]);
title('fft频谱');
figure;
Fc=fftshift(F);
Sc=abs(Fc);
i