这篇文章实际上是笔者在学习冈萨雷斯 数字图像处理 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

本文详述了使用MATLAB进行数字图像处理的频域滤波过程,包括DFT、滤波器生成、滤波操作及逆变换。通过实例展示了未填充和填充的滤波效果,并对比了空间域与频域滤波的不同,同时探讨了如何从空间域获取频域滤波器。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



