python不使用第三方库函数实现中值滤波
时间: 2024-03-15 11:18:25 浏览: 70
计算机视觉,图像分割:活性污泥显微图像
中值滤波是一种常见的图像处理算法,可以用于去除图像中的噪声。以下是一种不使用第三方库函数实现中值滤波的Python代码:
```python
def median_filter(img, kernel_size):
# 获取图像的行数和列数
rows, cols = img.shape
# 计算卷积核的边长
k = (kernel_size - 1) // 2
# 创建一个新的图像矩阵
filtered_img = np.zeros((rows, cols), dtype=np.uint8)
# 遍历图像的每个像素
for i in range(rows):
for j in range(cols):
# 获取当前像素周围的像素值
neighbors = []
for ii in range(-k, k+1):
for jj in range(-k, k+1):
if i+ii >= 0 and i+ii < rows and j+jj >= 0 and j+jj < cols:
neighbors.append(img[i+ii, j+jj])
# 对周围像素值进行排序并取中值
neighbors.sort()
median = neighbors[len(neighbors) // 2]
# 将中值赋值给新图像矩阵中的对应像素
filtered_img[i, j] = median
return filtered_img
```
该函数接受一个二维数组作为输入图像,并指定卷积核的大小。函数遍历图像的每个像素,获取当前像素周围的像素值,对其进行排序并取中值,然后将中值赋值给新图像矩阵中的对应像素。最后返回新的图像矩阵。
阅读全文