给我python的图像傅里叶变换性质的代码
时间: 2024-05-05 21:21:24 浏览: 96
以下是Python中图像傅里叶变换性质的代码示例:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread('image.jpg', 0)
rows, cols = img.shape
# 傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
# 频谱图
magnitude_spectrum = 20 * np.log(np.abs(fshift))
# 频域取中心区域
crow, ccol = int(rows/2), int(cols/2)
fshift[crow-30:crow+30, ccol-30:ccol+30] = 0
# 傅里叶逆变换
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
# 显示图像
plt.subplot(221), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(222), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.subplot(223), plt.imshow(img_back, cmap='gray')
plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])
plt.subplot(224), plt.imshow(img_back)
plt.title('Result in JET'), plt.xticks([]), plt.yticks([])
plt.show()
```
在这个示例中,我们首先读取一张灰度图像,然后进行傅里叶变换。我们使用`np.fft.fft2()`函数将图像转换为频域,并使用`np.fft.fftshift()`函数将直流分量移到频率域的中心。然后我们生成频谱图,这里我们使用`20 * np.log(np.abs(fshift))`将傅里叶变换后的结果转换为可视化的形式。接下来,我们将频域的中心区域设置为0,这是为了进行高通滤波。最后,我们使用`np.fft.ifft2()`函数将傅里叶变换的结果转换回时域,并使用`np.abs()`函数获取实部。最后,我们显示原始图像、频谱图、高通滤波后的图像和结果图像。
阅读全文