1. 基础概念
中值滤波 是一种 非线性滤波 方法,常用于去除 椒盐噪声(Salt-and-Pepper Noise)。
-
原理:用卷积核覆盖图像区域,将该区域内所有像素值按大小排序,取 中间值 作为中心像素的新值。
-
特点:
-
对边缘保护较好(相比均值滤波不容易模糊边缘)。
-
对椒盐噪声有很好的抑制效果。
-
2. 工作原理
假设 3×3 核内像素值如下(灰度图):
10 200 15
180 255 5
35 20 100
-
排序后:
5, 10, 15, 20, 35, 100, 180, 200, 255
-
中值(第 5 个数):35
-
中心像素(255)被替换成 35,去除了极端值的影响。
3. OpenCV 用法
语法
cv2.medianBlur(src, ksize)
参数说明:
-
src
:输入图像(必须是单通道或三通道 8 位图像)。 -
ksize
:卷积核大小(必须是 奇数且大于 1,如 3、5、7)。
4. 示例代码
import cv2
# 读取图像
img = cv2.imread("salt_pepper.jpg") # 这里建议用一张带椒盐噪声的图
# 中值滤波
median = cv2.medianBlur(img, 5) # 5×5 核
cv2.imshow("Original", img)
cv2.imshow("Median Blur", median)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. 参数调节建议
核大小 | 效果 | 场景 |
---|---|---|
3 | 轻微去噪 | 噪声较少 |
5 | 中等去噪 | 一般椒盐噪声 |
7 及以上 | 强去噪,可能模糊细节 | 噪声较多 |
6. 对比
滤波方法 | 去椒盐噪声效果 | 边缘保留能力 | 是否线性 |
---|---|---|---|
均值滤波 | 一般 | 较差 | 线性 |
高斯滤波 | 较好 | 较好 | 线性 |
中值滤波 | 很好 | 好 | 非线性 |
7. 练习任务
-
使用
ksize=3, 5, 7
比较中值滤波效果。 -
在一张干净的图片上添加椒盐噪声,然后用中值滤波去除。
-
对比均值、高斯、中值滤波在同一张带椒盐噪声的图上的效果。
✅ 重点记忆:
-
中值滤波是 非线性 滤波。
-
对 椒盐噪声 效果最好。
-
核大小必须是 奇数且 > 1。