DFT滤波的基本步骤:
其中 f 是将被滤波的图像,g 为结果,同时假设滤波器函数的 H 与填充后的图像大小相同
- 使用函数 tofloat 把输入图像转换为浮点图像:
[f,revertclass] = tofloat(f);
- 使用函数 paddedsize获得填充参数:
PQ = paddedsize(size(f));
- 得到有填充图像的傅里叶变换:
F = fft2(f,PQ(1),PQ(2));
- 使用后续的一个方法,生成一个大小为 PQ(1) x PQ(2) 的滤波器函数。注意格式。
例如上节:H = lpfilter('gaussian',PQ(1),PQ(2),2*sig);
- 用滤波器乘以该变换:
G = H.*F;
- 获得 G 的 IFFT:
g = ifft2(G);
- 将左上部的矩形修剪为原始大小:
g = g(1:size(f,1),1:size(f,2));
- 需要时,将滤波后的图像转换为输入图像的类:
g = revertclass(g);
图示:
预处理: