空域均值滤波python 15*15 手写
时间: 2023-05-18 12:03:31 浏览: 125
均值滤波的MATLAB实现-第5、6、7、8讲-图像的空域增强
以下是一个 15*15 的空域均值滤波的 Python 实现:
```python
import cv2
import numpy as np
def mean_filter(img, kernel_size):
# 获取图像的高度和宽度
height, width = img.shape
# 计算 padding 的大小
padding_size = kernel_size // 2
# 对图像进行 padding
img_padding = cv2.copyMakeBorder(img, padding_size, padding_size, padding_size, padding_size, cv2.BORDER_REPLICATE)
# 创建一个和原图像大小相同的空白图像
img_filtered = np.zeros((height, width), dtype=np.uint8)
# 对每个像素进行均值滤波
for i in range(padding_size, height + padding_size):
for j in range(padding_size, width + padding_size):
# 获取当前像素的邻域
neighborhood = img_padding[i - padding_size:i + padding_size + 1, j - padding_size:j + padding_size + 1]
# 计算邻域的均值
mean_value = np.mean(neighborhood)
# 将均值赋值给当前像素
img_filtered[i - padding_size, j - padding_size] = mean_value
return img_filtered
```
你可以将这个函数应用于任何灰度图像,例如:
```python
# 读取图像
img = cv2.imread('lena.png', cv2.IMREAD_GRAYSCALE)
# 对图像进行均值滤波
img_filtered = mean_filter(img, 15)
# 显示原图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Filtered Image', img_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请注意,这个函数只适用于灰度图像,如果你想对彩色图像进行均值滤波,你需要对每个通道分别进行滤波。
阅读全文