高斯低通滤波器python实现
时间: 2023-07-11 15:50:17 浏览: 221
基于python实现巴特沃斯低通滤波
好的,我来给您讲一下高斯低通滤波器的 Python 实现。
高斯低通滤波器是一种可以平滑图像、去除高频噪声的滤波器。它的原理是在频域上将高频信号(即噪声)进行衰减,从而达到平滑图像的目的。下面是 Python 实现代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread("image.jpg", 0)
# 高斯低通滤波器
def gaussian_low_pass_filter(img, k_size, sigma=1):
# 生成高斯核
kernel = np.zeros((k_size, k_size), np.float32)
for i in range(k_size):
for j in range(k_size):
kernel[i, j] = np.exp(-((i - k_size//2)**2 + (j - k_size//2)**2) / (2 * sigma**2))
kernel = kernel / (2 * np.pi * sigma**2)
# 傅里叶变换
f = np.fft.fft2(img)
# 频域滤波
fshift = np.fft.fftshift(f)
fshift = fshift * kernel
fshift = np.fft.ifftshift(fshift)
# 傅里叶逆变换
filtered_img = np.fft.ifft2(fshift)
filtered_img = np.abs(filtered_img)
return filtered_img
# 调用高斯低通滤波器
filtered_img = gaussian_low_pass_filter(img, 5, 1)
# 显示原图和滤波后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Filtered Image", filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`cv2.imread("image.jpg", 0)` 用于读取灰度图像;`k_size` 表示高斯核的大小;`sigma` 表示高斯核的标准差。函数 `gaussian_low_pass_filter` 实现了高斯低通滤波器的操作,返回滤波后的图像。
希望这个回答能够帮到您!
阅读全文