圆周均值滤波python代码
时间: 2024-06-23 19:00:50 浏览: 174
MATLAB实现维纳滤波
5星 · 资源好评率100%
圆周均值滤波(Circular Mean Filter)是一种图像处理技术,用于平滑图像的同时保持边缘的清晰度。在Python中,我们可以使用OpenCV库来实现这种滤波,因为OpenCV提供了一套丰富的图像处理功能。
以下是一个简单的圆周均值滤波的Python代码示例,使用OpenCV库:
```python
import cv2
import numpy as np
def circular_mean_filter(image, radius):
# 将输入图像转换为灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 获取图像的维度
height, width = gray.shape
# 创建一个和输入图像大小相同的浮点数数组,用于存放滤波结果
filtered_image = np.zeros_like(gray, dtype=np.float32)
# 遍历图像的每个像素
for i in range(height):
for j in range(width):
# 计算当前像素的圆周半径内的所有像素值
mask = np.sqrt((i-radius)**2 + (j-radius)**2) <= radius
pixels = gray[mask]
# 如果圆内有像素,则计算平均值并保存到结果数组
if len(pixels) > 0:
filtered_image[i][j] = np.mean(pixels)
else:
# 如果圆内没有像素,保持原值不变
filtered_image[i][j] = gray[i][j]
# 返回过滤后的图像,可能需要将其转换回BGR格式
return cv2.convertScaleAbs(filtered_image)
# 使用例子
input_image = cv2.imread('input.jpg') # 替换为你想要处理的图片路径
filtered_image = circular_mean_filter(input_image, 5) # 可调整radius参数
cv2.imshow('Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文