理想高通滤波处理图像代码
时间: 2023-08-23 08:18:54 浏览: 97
以下是使用 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)
mask = np.ones((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 0
# 进行滤波
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("Processed Image", img_back)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在代码中,首先使用 `cv2.imread` 函数读取图像,然后使用 `np.fft.fft2` 函数对图像进行傅里叶变换,并使用 `np.fft.fftshift` 函数将频域中心移到图像中心。接着,构建理想高通滤波器,将滤波器与频域图像相乘,再使用 `np.fft.ifftshift` 函数将频域中心移回原位,使用 `np.fft.ifft2` 函数进行傅里叶反变换,最后使用 `np.abs` 函数获取处理后的图像的幅值,即处理后的图像。最后,使用 `cv2.imshow` 函数显示原图和处理后的图像,并使用 `cv2.waitKey` 和 `cv2.destroyAllWindows` 函数等待用户关闭窗口。
阅读全文