频域滤波演示
频域滤波其实就是根据卷积定理把原来在空间域的操作转移到频域,这样会提高速度,然后再傅里叶反变换回去得到结果,需要注意的是根据卷积的定义,空域滤波的时候需要翻转模板,不过一般的模板都是对称的,可以不用翻转。
这是前面提到过的卷积定理。首先要避免缠绕的条件是
然后频域滤波的步骤就是:
其中乘以(-1)^(x+y)和fftshift是等价的,这个我暂时也没想明白为什么,不过我试验过
用fftshift的结果ifft回来,看到的就像是原来的乘一个(-1)^(x+y)一样。
我们用python来演示几个滤波函数,参考了https://www.cnblogs.com/tlnshuju/p/7308590.html
上面的文章还叙述了一个比较有意思的现象。
代码在文中有,我们来看结果
虽然相位并不是方向的含义,学过三角函数的都知道,相位决定了什么位置三角函数有最大值
,有最小值,幅值只是决定这个值有多大,那么用在图像里面,幅值只是决定亮度信息,也就是决定山有多高,而相位决定的是哪里应该高,哪里应该低。相位决定的是一个地方的地形特征,比如这里是盆地,这里是高原,而幅值决定的是盆地有多低,高原有多高,可以说相位信息包含了大部分的边缘信息,而幅值是对边缘细节的补充,比如边缘应该有多陡。
但是最后的频域滤波的结果不太对,
我有点迷茫,同样的操作在MATLAB我做过,空域频域结果是一样的啊。