图像分别添加椒盐噪声与乘性噪声,实现3*3窗口均值滤波与中值滤波,并比较两种方法在不同噪声下的去噪效果。提示:嵌套使用for循环语句
时间: 2024-10-28 09:15:12 浏览: 44
图像处理中,椒盐噪声和乘性噪声是常见的两种噪声形式。椒盐噪声通常表现为随机像素点的缺失或突变,而乘性噪声则是像素值随机地乘以一个小于一的系数,导致整体亮度下降。
要实现3x3窗口的均值滤波,首先遍历图像的每个像素,以3x3的邻域为中心,计算这个区域内的像素值平均数,然后将中心像素替换为该平均值,以此降低噪声的影响。这是通过两个嵌套的for循环完成的,外层控制行,内层控制列:
```python
def mean_filter(image, window_size=3):
height, width = image.shape
for i in range(1, height - 1):
for j in range(1, width - 1):
pixel_sum = sum(image[i-1:i+2, j-1:j+2])
filtered_pixel = pixel_sum / (window_size ** 2)
image[i, j] = filtered_pixel
```
中值滤波则更为鲁棒,它会找到窗口内的像素值中位数作为新的像素值。同样使用嵌套循环:
```python
def median_filter(image, window_size=3):
# ... 其他步骤与mean_filter类似,但这里要用到列表排序来获取中位数 ...
pass
```
对于去噪效果对比,椒盐噪声对均值滤波效果较好,因为它能够通过计算平均值来抵消部分噪声;但对于乘性噪声,由于噪声是全局性质的,中值滤波可能更能保留图像细节,因为它的中位数操作对极端值(噪声)有较强的抵抗能力。
阅读全文