一句话定义
滤波是用一个小尺寸核(kernel)在图像上滑动、对邻域像素加权求和得到输出像素的运算;严格卷积还会先把核翻转 180 度。
为什么重要
滤波是图像处理的「四则运算」:去噪靠高斯滤波、锐化靠拉普拉斯核、边缘靠梯度核、深度网络的第一层也是可学习的卷积核。理解了离散卷积与输出尺寸公式,就同时打通了经典视觉与 CNN 两套体系。
直观类比
核像一枚小印章,盖在图像每个位置上,把印章覆盖的像素按印章上的系数加权求和,填进输出图;均值核是「全体平摊」,高斯核是「越近的话语权越大」,中值滤波则是「让中间人发言」。
前置知识
kp-001(像素矩阵与通道)。
核心概念
- 核/模板(Kernel):如 3×3 的系数矩阵,系数决定滤波性质。
- 线性滤波:输出是邻域的线性组合(均值、高斯、Sobel)。
- 非线性滤波:输出不能用线性组合表达,如中值滤波取邻域中位数,对椒盐噪声特别有效。
- 边界处理(Padding):核滑到图像边缘会越界,常用补零、复制边缘或镜像填充。
- 可分离核:二维高斯可拆成先横向后纵向两次一维卷积,计算量从 k² 降为 2k。
原理与机制
离散线性滤波按下式计算(严格说这是互相关,深度学习文献里统称卷积;数学意义上的卷积需先把核旋转 180 度,对对称核二者等价):
输出尺寸由核尺寸 k、填充 p、步幅 s 决定:
g(x, y) = Σ Σ k(i, j) · f(x + i, y + j)
out = ⌊(N + 2p − k) / s⌋ + 1高斯核由二维正态密度采样归一化而来,标准差 σ 越大越模糊;核尺寸通常取 σ 的约 6 倍并向上取奇数。均值核系数全为 1/k²,实现最简单但频域上截止不干净,会留下振铃感;高斯核是唯一「各向同性且可分离」的常用平滑核,因此工程上平滑首选高斯。
公式与模型
G_σ(x, y) = exp(−(x² + y²) / (2σ²)) / (2π σ²)中值滤波:out(x,y) = median{ f(x+i, y+j) | (i,j) ∈ 核窗口 },无法写成卷积,也无解析频域描述。
图示
实例与案例
去噪:手机夜拍叠加高斯去噪后噪点减少但细节变软,改用双边滤波(保边平滑)可兼顾。实时预处理:YOLO 训练管线里的 Mosaic 增强前常有轻量模糊增强,本质就是随机 σ 的高斯核。工业检测中先 3×3 高斯再去 Canny 边缘,能把孤立噪点误检率降一半以上。
import cv2
blur = cv2.GaussianBlur(img, (5, 5), 1.2) # 高斯平滑
med = cv2.medianBlur(img, 5) # 中值,治椒盐噪声
sharp = cv2.filter2D(img, -1, kernel=[[0,-1,0],[-1,5,-1],[0,-1,0]]) # 锐化常见误区
- 把相关当卷积:核不对称时二者结果不同;
cv2.filter2D执行的是相关,不是严格卷积。 - 只调核尺寸不调 σ:OpenCV 的
GaussianBlur若 σ 传 0 会由核尺寸反推,理解错会得到意外模糊度。 - 用大核均值代替高斯:均值核方向性伪影明显,高质量平滑应使用高斯或双边。
- 忽略边界效应:补零会在边缘产生暗边,检测边缘强度时常用复制填充。
与其他知识点的关系
卷积是 kp-003 梯度算子、kp-005 金字塔降采样的原子操作;kp-015 的 CNN 把固定核换成可学习参数,输出尺寸公式完全沿用本站。
自测题
- 输入 32×32、核 5×5、padding 2、stride 1,输出尺寸是多少?
答案要点:(32 + 4 − 5)/1 + 1 = 32,尺寸不变。
- 椒盐噪声为什么中值滤波比高斯滤波有效?
答案要点:椒盐噪声是极端离群值,均值/加权平均会被拉偏,中值直接把离群值排掉。
- 5×5 高斯核可分离时计算量省多少?
答案要点:每像素从 25 次乘加降为 10 次,约省 60%。
延伸阅读
- Gonzalez 与 Woods《Digital Image Processing》第 3 章「Intensity Transformations and Spatial Filtering」
- kp-015 了解卷积在深度网络中的可学习形态