网上很多关于FFT变换的应用,但是对其性质的探索并不多。
我做了一个简单的实验,来探讨平移,缩放,旋转的性质。
由于我浅薄的知识,如有不对的地方,请各位大佬指正。
- 平移:FFT具有平移不变性,在空域平移图像,频域的信号不发生变换。
- 旋转:旋转同一性,空域图像的旋转,也会带动频域图像的旋转。
- 缩放:在空域缩小图像,频域的信号会相应的缩小信息量,视觉上体现为放大频谱图。
代码实现
先写一些准备代码,这里要注意,需要将fft2
变换的结果,进行后续处理,方便展示。
1.abs
傅里叶变换的结果是复数,需要取模转为实数
2. +(1 ** 10)
防止矩阵为0,无法进行logloglog运算
3. log
傅里叶变换的结果,范围很大,例如对于lena来说,变化范围为[−107,109][-10^7, 10^9][−107,109],所以我们需要用logloglog函数进行缩小范围,提升视觉观感
4. fftshift
:将直流分量变化到中间,提升观感
fft2
变化函数:
def fft2_log(data):
res = np.fft.fft2(data