np.fft 傅里叶变换 图像低通滤波代码演示
时间: 2023-12-14 22:03:17 浏览: 105
好的,以下是使用 np.fft 进行图像低通滤波的 Python 代码演示:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy import misc
# 读取 Lena 图像
lena = misc.face(gray=True)
# 进行傅里叶变换
F = np.fft.fft2(lena)
# 将高频成分置零
Fshift = np.fft.fftshift(F)
rows, cols = lena.shape
crow, ccol = int(rows/2), int(cols/2)
Fshift[crow-30:crow+30, ccol-30:ccol+30] = 0
F_ishift = np.fft.ifftshift(Fshift)
# 进行傅里叶逆变换
lena_filtered = np.fft.ifft2(F_ishift).real
# 绘制原始图像和滤波后的图像
plt.figure(figsize=(8, 4))
plt.subplot(1, 2, 1)
plt.imshow(lena, cmap='gray')
plt.title('Original Image')
plt.subplot(1, 2, 2)
plt.imshow(lena_filtered, cmap='gray')
plt.title('Filtered Image')
plt.tight_layout()
plt.show()
```
这段代码中,我们首先读取了一张灰度图像 Lena,然后使用 np.fft.fft2 函数对其进行二维傅里叶变换得到频域图像 F。接着,我们将频域图像中心化后将高频成分置零,最后使用 np.fft.ifft2 函数进行傅里叶逆变换得到滤波后的图像 lena_filtered。最后,我们使用 matplotlib 库将原始图像和滤波后的图像绘制出来,以便进行比较。
阅读全文