np.fft 傅里叶变换 图像过滤高频代码演示
时间: 2023-12-14 15:03:17 浏览: 191
好的,以下是一个使用 np.fft 进行傅里叶变换和图像高通滤波的 Python 代码演示:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread('lena.jpg', 0)
# 傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
# 高通滤波(保留低频部分)
rows, cols = img.shape
crow, ccol = rows // 2, cols // 2
mask = np.ones((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 0
fshift = fshift * mask
# 傅里叶逆变换
ishift = np.fft.ifftshift(fshift)
iimg = np.fft.ifft2(ishift)
iimg = np.abs(iimg)
# 显示图像
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(iimg, cmap='gray')
plt.title('Output Image'), plt.xticks([]), plt.yticks([])
plt.show()
```
通过运行以上代码,可以将 `lena.jpg` 图像进行高通滤波,保留低频部分,得到输出图像。其中,`mask` 变量表示滤波器,这里使用一个矩形的掩码,将中心部分低频区域保留,其余高频区域置为零。可以通过调整掩码大小和形状来改变滤波效果。
阅读全文