python opencv频率域滤波
时间: 2023-10-07 18:14:30 浏览: 84
opencv+python实现均值滤波
5星 · 资源好评率100%
频率域滤波是一种图像处理技术,可以用于图像增强、去噪等。在 OpenCV 中,频率域滤波可以通过傅里叶变换来实现。下面是一个使用 OpenCV 进行频率域滤波的示例代码:
```python
import cv2
import numpy as np
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.zeros((rows, cols), np.uint8)
r = 50
cv2.circle(mask, (ccol, crow), r, 255, -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('Frequency Domain Filtering', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先读取了一张灰度图像,然后对其进行傅里叶变换。傅里叶变换后得到的图像是一个复数数组,需要用 `fftshift` 函数将直流分量移到中心位置。接着,我们构建了一个高斯滤波器,用它来对频域图像进行滤波操作。最后,我们对滤波后的频域图像进行反傅里叶变换,并将结果显示出来。
在实际应用中,可以根据需要选择不同的滤波器和滤波器参数,以达到不同的效果。
阅读全文