用陷波滤波器复原图像的代码
时间: 2024-05-13 22:18:49 浏览: 93
陷波滤波器代码
陷波滤波器(Notch Filter)是一种用于去除特定频率成分的滤波器。在图像处理应用中,可以使用陷波滤波器去除由于光照或摄像机设置等原因引起的频率噪声。
以下是使用Python和OpenCV库实现陷波滤波器复原图像的代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg', 0)
# 计算傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
# 构建陷波滤波器
rows, cols = img.shape
crow, ccol = int(rows/2), int(cols/2)
r = 30 # 半径
mask = np.ones((rows, cols), np.uint8)
cv2.circle(mask, (crow, ccol), r, 0, -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', img)
cv2.imshow('Notch Filter', img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
代码中使用`cv2.imread()`读取图像,并使用`np.fft.fft2()`计算图像的傅里叶变换。然后,构建了一个圆形的陷波滤波器,将其应用于傅里叶变换后的图像,并使用`np.fft.ifft2()`计算反傅里叶变换得到复原图像。最后,使用`cv2.imshow()`显示原图和复原图。
阅读全文