本文章由公号【开发小鸽】发布!欢迎关注!!!
老规矩–妹妹镇楼:
一.卷积定理
空间域和频域线性滤波的基础都是卷积定理:
f(x,y) * h(x,y) <=> H(u,v)F(u,v)
其中,符号“*”表示两个函数的卷积,双箭头两边的表达式组成了傅里叶变换对。表达式表明两个空间函数的卷积可以通过计算两个傅里叶变换函数的乘积的逆变换得到。
相反地,两个空间函数的卷积的傅里叶变换恰好等于两个函数的傅里叶变换的乘积。
二.滤波传递函数
空间域中的滤波由图像f(x,y)与滤波掩模h(x, y)组成。根据卷积定理,我们可以在频城中通过让F(u, v)乘以H(u, v)来得到相同的结果,即空间滤波器的傅里叶变换。
我们通常将H(u, v)称为滤波传递函数。
频域滤波的目的是选择一个滤波器传递函数,以便按照指定的方式修改F(u,v)。
如低通滤波器:
该传递函数会衰减F(u, v)的高频分量,而保持低频分量相对不变。具有这种特性的滤波器称为低通滤波器。低通滤波器的结果会导致图像出现模糊现象(平滑)。
基于卷积理论,我们知道为了在空间域中得到相应的滤波后的图像,仅需要计算积H(u, v)F(u, v)的傅里叶逆变换。应当记住,上述方法所得到的结果与我们在空间域中使用卷积所得到的结果是相同的,只要滤波掩模h(x, y)是H(u, u)的傅里叶逆变换。
三.DFT滤波的周期性
若我们使用DFT进行滤波操作,则图像及其变换都将自动地看成是周期性的。不难发现,若周期关于函数的非零部分的持续时间很靠近,则对周期函数执行卷积运算会导致相邻周期之间的干扰。
这种称为折叠误差的干扰,可以通过使用零来填充函数的方法来避免。
假设函数f(x, y)和h(x, y)的大小分别为A x B和C x D。通过对f和g补零,我们构造两个大小均为P x Q的扩充(填充)的函数。可以看出,选择
P≥A+C- 1
和
Q≥B+D- 1
四.DFT滤波的步骤:
其中f是待滤波处理的图像,g为处理结果,同时假设滤波函数H(u, v)的大小与填充后的图像的大小相等。
1.使用函数paddedsize获得填充参数:
PQ = paddedsize (size(f));
2.得到使用填充的傅里叶变换:
F = ft2(f,PQ(1), PQ(2)) ;
3.生成一个大小为PQ(1) x PQ(2)的滤波函数H。
若它未居中,则在使用该滤波函数之前要令H= fftshilt (H)。
4.将变换乘以滤波函数:
G = H.*E;
5.获得G的傅里叶逆变换的实部:
g = real (ifft2 (G)) ;
6.将左上部的矩形修剪为原始大小:
g = g(1:size (f,1) ,1:size(f,2)) ;
可以看到我们在频域中进行滤波的目的就是为了改变F(u,v),然后通过傅里叶逆变换转换回空间域,达到更改输入图像的目的。