几何均值滤波代码实现
时间: 2024-11-28 13:22:47 浏览: 11
均值滤波_高斯噪声_几何均值滤波_算术均值滤波_均值滤波_
5星 · 资源好评率100%
几何均值滤波是一种图像平滑技术,它通常用于减少噪声,同时保持边缘清晰度。它的原理是通过对邻域像素亮度取几何平均来计算每个像素的新值。这个过程可以看作是对图像数据的一种低通滤波操作。
下面是一个简单的Python代码实现,使用了OpenCV库:
```python
import cv2
import numpy as np
def geometric_mean_filter(image, kernel_size=3):
# 获取卷积核大小
kh, kw = kernel_size // 2, kernel_size // 2
# 初始化空白矩阵存放结果
filtered_image = np.zeros_like(image)
for i in range(image.shape[0]):
for j in range(image.shape[1]):
# 计算当前像素及其周围像素的几何平均
neighborhood = image[i:i+kh+1, j:j+kw+1]
if neighborhood.size != 0: # 防止边界处理导致空数组
filtered_image[i,j] = np.exp(np.log(neighborhood).mean())
return filtered_image
# 使用示例
input_image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 加载灰度图像
filtered_image = geometric_mean_filter(input_image)
cv2.imshow('Geometric Mean Filtered Image', filtered_image)
cv2.waitKey(0) # 等待用户按键
```
在这个例子中,`kernel_size`决定了邻居像素的范围,默认为3x3,可以根据需要调整。注意实际应用中可能还需要对边角和边界像素做特殊的处理。
阅读全文