用变换域方法对图像进行傅里叶变换(可以是快速傅里叶),显示处理前、后图像
时间: 2024-05-29 14:15:12 浏览: 99
好的,以下是用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)
# 变换后的频谱图
magnitude_spectrum = 20*np.log(np.abs(fshift))
# 高通滤波器
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
# 傅里叶逆变换
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
# 显示图像
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(img_back, cmap='gray')
plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])
plt.show()
```
运行后会显示出原始图像和经过高通滤波后的图像:
![image](https://user-images.githubusercontent.com/38697715/112701135-1f8e0b80-8e9e-11eb-8d5c-4b36c9e1c2a2.png)
其中,左边是原始图像,右边是经过高通滤波后的图像。可以看到,经过滤波后,图像的低频分量被抑制,高频分量得到了增强,图像变得更加清晰。
阅读全文