python对图像做二维傅里叶变换
时间: 2023-09-12 16:11:09 浏览: 83
图像的二维傅立叶变换
4星 · 用户满意度95%
在Python中,可以使用NumPy和OpenCV库来对图像进行二维傅里叶变换。下面是一个简单的示例代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread('image.jpg', 0)
# 进行二维傅里叶变换
f = np.fft.fft2(img)
f_shift = np.fft.fftshift(f)
magnitude_spectrum = 20 * np.log(np.abs(f_shift))
# 绘制变换后的图像
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()
```
这段代码中,首先读取了一张灰度图像,然后使用`np.fft.fft2`函数对其进行了二维傅里叶变换。由于傅里叶变换后的频率分量是以0为中心的,因此使用`np.fft.fftshift`函数将其移动到图像中心。最后,计算了幅值谱,并使用Matplotlib库绘制出了变换后的图像。
值得注意的是,由于幅值谱的值域一般很大,因此在绘制时通常需要进行对数变换,以便更好地观察频率分量的分布情况。
阅读全文