4. 高斯滤波:高斯核生成、标准差影响及运动模糊场景下的应用
运动检测中的噪声消除技巧 · 第4章
高斯滤波是图像去噪与预处理中最经典的线性平滑滤波器。它利用高斯函数生成权重核,对邻域像素进行加权平均,在抑制高斯噪声的同时保留边缘的渐变信息。本章深入解析高斯核的生成原理、标准差 σ 的调控作用,并探讨在运动模糊场景下如何联合使用高斯滤波。
图4-1 高斯核权重分布 (5×5, σ=1.0) 及二维高斯公式
4.1 高斯核生成与参数
高斯核由离散采样二维高斯函数得到。核大小通常取奇数 (如 3×3, 5×5, 7×7),中心权重最大,向四周递减。生成步骤:
- 确定核半径:通常取
radius = ceil(3σ),核尺寸为2·radius+1。 - 计算权重:对每个位置 (i, j) 计算
G(i,j) = exp(-(i²+j²)/(2σ²))。 - 归一化:所有权重之和为1,保证平滑后图像亮度不变。
import numpy as np
def gaussian_kernel(size, sigma):
k = size // 2
x, y = np.mgrid[-k:k+1, -k:k+1]
kernel = np.exp(-(x**2 + y**2) / (2 * sigma**2))
return kernel / kernel.sum()
4.2 标准差 σ 的影响
σ 控制高斯函数的“宽度”:σ 越小,核越集中在中心,平滑效果弱;σ 越大,邻域权重越均匀,平滑程度增强,但边缘模糊也更严重。下表总结了典型 σ 值的效果:
| σ 值 | 核尺寸建议 | 平滑强度 | 边缘保留 | 适用场景 |
|---|---|---|---|---|
| 0.5 ~ 0.8 | 3×3 | 弱 | 好 | 轻微噪声、细节保护 |
| 1.0 ~ 1.5 | 5×5 | 中等 | 中等 | 通用去噪、预处理 |
| 2.0 ~ 3.0 | 7×7 或 9×9 | 强 | 较差 | 强噪声、运动模糊预处理 |
图4-2 不同标准差 σ 对应的高斯权重分布 (一维截面)
4.3 运动模糊场景下的应用
运动模糊通常由相机或物体快速移动引起,表现为沿运动方向的拖尾。高斯滤波可作为一种预处理手段:
- 去噪 + 弱化模糊:在运动模糊图像中,高频噪声与模糊混叠。先用小 σ 高斯滤波抑制噪声,避免后续去模糊算法放大噪声。
- 各向同性平滑:运动模糊具有方向性,而高斯滤波是各向同性的,可配合方向性滤波(如运动模糊核估计)使用。
- 多尺度策略:在运动检测中,对帧图像进行高斯金字塔下采样,减少模糊区域的影响,提升运动目标检测鲁棒性。
图4-3 运动模糊场景下高斯滤波作为前置去噪模块
4.4 代码示例:OpenCV 高斯滤波
import cv2
img = cv2.imread('motion_frame.jpg')
# 高斯滤波,核大小5x5,sigmaX=1.2
blurred = cv2.GaussianBlur(img, (5, 5), 1.2)
# 运动检测 (帧差法示例)
gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)
diff = cv2.absdiff(gray, cv2.GaussianBlur(prev_gray, (5,5), 1.2))
_, mask = cv2.threshold(diff, 30, 255, cv2.THRESH_BINARY)