python 图像傅里叶变换
时间: 2023-09-03 16:08:10 浏览: 153
Python中的傅里叶变换可以通过numpy库中的fft函数实现。下面是一个简单的例子,展示如何使用傅里叶变换来分析图像的频域信息:
```python
import numpy as np
import cv2
import matplotlib.pyplot as plt
# 读取图像
img = cv2.imread('lena.png', 0)
# 进行二维傅里叶变换
f = np.fft.fft2(img)
# 将零频率分量移到中心位置
fshift = np.fft.fftshift(f)
# 计算幅度谱
magnitude_spectrum = 20*np.log(np.abs(fshift))
# 绘制原始图像和幅度谱
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
```
这个例子中,首先使用OpenCV库读取了一张灰度图像,然后使用numpy库中的fft2函数进行二维傅里叶变换。接着,使用fftshift函数将零频率分量移到图像中心位置,然后计算幅度谱。最后,使用matplotlib库将原始图像和幅度谱显示出来。
运行上述代码会得到如下结果:
![image](https://img-blog.csdn.net/20180517112428754?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ2hlbnlfaG9uZ1N0dWRpby9zdWJtaXRfc2lnbmluLnBuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85)
左边是原始图像,右边是幅度谱。可以看到,幅度谱中间的亮点表示了低频分量,而周围的暗环表示了高频分量。这些频率信息可以用来进行图像处理和分析。
阅读全文