mean_filter的傅里叶变换代码
时间: 2023-12-12 12:02:30 浏览: 78
mean_filter是一种平滑滤波器,它可以通过计算输入图像像素周围像素的平均值来减少噪声。它没有傅里叶变换的实现,但可以使用傅里叶变换来优化其性能。下面是一个使用傅里叶变换的mean_filter示例代码:
``` python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取图像
img = cv2.imread('lena.png',0)
plt.subplot(121),plt.imshow(img,cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
# 傅里叶变换
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)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
fshift = fshift*mask
# 傅里叶逆变换
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.real(img_back)
# 显示结果
plt.subplot(122),plt.imshow(img_back, cmap='gray')
plt.title('Result'), plt.xticks([]), plt.yticks([])
plt.show()
```
该代码首先读取图像,然后对其进行傅里叶变换并将其移位,以便将低频分量移到图像中心。然后,它创建一个高通滤波器mask,并将其应用于傅里叶变换后的图像。最后,它通过逆变换将图像转换回空间域,并显示结果。此过程可以减少图像中的噪声。
阅读全文