import numpy as np
import cv2
def mean_filter(image, kernel_size):
# 获取图像的高度和宽度
height, width = image.shape[:2]
# 创建一个与原图像相同大小的空图像用于存储滤波结果
filtered_image = np.zeros_like(image)
# 计算滤波窗口的半径
radius = kernel_size // 2
# 遍历图像中的每个像素
for i in range(height):
for j in range(width):
# 提取当前像素周围的窗口区域
window = image[max(0, i - radius):min(height, i + radius + 1), max(0, j - radius):min(width, j + radius + 1)]
# 对窗口内的像素值求均值,并将结果赋值给滤波后的像素
filtered_image[i, j] = np.mean(window)
return filtered_image
# 读取图像
image = cv2.imread(r'E:\photo\creator.jpg', 0) # 以灰度模式读取图像
# 指定滤波窗口的大小(必须为奇数)
kernel_size = 5
# 应用均值滤波
filtered_image = mean_filter(image, kernel_size)
# 显示原图像和滤波后的图像
cv2.imshow("Original Image", image)
cv2.imshow("Filtered Image", filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
均值滤波算法
猜你喜欢
转载自blog.csdn.net/weixin_48158964/article/details/132430398
今日推荐
周排行