傅立叶变换低通滤波代码
时间: 2023-08-03 10:07:36 浏览: 196
以下是一个使用傅立叶变换实现低通滤波的 Python 代码示例:
```python
import numpy as np
import cv2
# 读取图像
img = cv2.imread('lena.png', 0)
# 傅立叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
# 生成低通滤波器掩模
rows, cols = img.shape
crow, ccol = rows // 2, cols // 2
mask = np.zeros((rows, cols), np.uint8)
mask[crow - 30: crow + 30, ccol - 30: ccol + 30] = 1
# 低通滤波
fshift = fshift * mask
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Low Pass Filtered Image', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,我们首先使用 `np.fft.fft2()` 函数对输入图像进行傅立叶变换,然后使用 `np.fft.fftshift()` 函数将频域图像中心移到图像的中心。
接着,我们生成一个大小与输入图像相同的掩模,将其中心为低频的部分设为 1,其余部分设为 0。这样,我们就得到了一个低通滤波器掩模。
将掩模与频域图像做点乘,然后使用 `np.fft.ifftshift()` 函数将处理后的频域图像中心移回到左上角,最后使用 `np.fft.ifft2()` 函数进行反傅立叶变换,得到滤波后的图像。
阅读全文