频域滤波python
时间: 2023-11-05 22:04:34 浏览: 90
频域滤波在Python中可以通过使用傅里叶变换和逆变换来实现。首先,将原始图像转换为频域,然后对频域图像进行滤波处理,最后再通过逆变换将滤波后的频域图像转换回空间域。以下是实现频域滤波的Python代码示例:
```python
import numpy as np
import cv2
# 读取原始图像
image = cv2.imread('input.jpg', 0)
# 进行傅里叶变换
f = np.fft.fft2(image)
# 将低频部分移到中心
f_shift = np.fft.fftshift(f)
# 构建频域滤波器,可根据需要选择不同的滤波器类型和参数
# 例如,构建一个理想低通滤波器
rows, cols = image.shape
crow, ccol = rows//2, cols//2
mask = np.zeros((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
# 应用滤波器
f_shift_filtered = f_shift * mask
# 将滤波后的频域图像转换回原始图像空间域
f_filtered = np.fft.ifftshift(f_shift_filtered)
image_filtered = np.fft.ifft2(f_filtered).real
# 将图像从浮点型转换为整型
image_filtered = np.uint8(image_filtered)
# 显示滤波后的图像
cv2.imshow('Filtered Image', image_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码将读取名为"input.jpg"的原始图像,并对其进行频域滤波处理。其中,使用的滤波器是一个理想低通滤波器,通过设置掩模mask实现。通过调整掩模大小和形状,可以实现不同类型的滤波效果。
阅读全文