首先想到,在频率滤波我们需要什么呢,一个频域图像,一个滤波模板,将它们点乘就好了。然后就是细节问题了。
1. 在频域滤波,由于是点乘,所以滤波模板矩阵和图像矩阵必须尺寸一样。
2. 因为尺寸一样,它们的原点必须要对齐。
3. 因在进行离散傅里叶变换后,在频域点乘,相当于在时域卷积,但是这个时候实际上是对时域周期矩阵进行卷积。
(而直接在时域卷积,matlab默认是在边界补0)
好啦,问题来了。
1. 如何得到一个尺寸和图像大小一样的滤波模板
2. 它们的原点关系是怎么样的
3. 如何避免时域和频域由于傅里叶变换周期性导致的不一样
是这样解决的
1. Matlab freqz2()这个函数可以自动得到一个指定尺寸的 对应于时域的频域模板(原理我还没搞清楚)
2. 图像经过傅里叶变换后,它的原点在左上角。而模板经过freqz2后,原点在中心,所以只要平移其中的一个就好了
3. 在对原图像进行傅里叶变换之前,按照一定规则补0就好了