4. 高斯滤波:高斯核生成、标准差影响及运动模糊场景下的应用

运动检测中的噪声消除技巧 · 第4章

高斯滤波是图像去噪与预处理中最经典的线性平滑滤波器。它利用高斯函数生成权重核,对邻域像素进行加权平均,在抑制高斯噪声的同时保留边缘的渐变信息。本章深入解析高斯核的生成原理、标准差 σ 的调控作用,并探讨在运动模糊场景下如何联合使用高斯滤波。

高斯核生成 (5×5, σ=1.0) 0.003 0.013 0.022 0.013 0.003 0.013 0.059 0.097 0.059 0.013 0.022 0.097 0.159 0.097 0.022 0.013 0.059 0.097 0.059 0.013 0.003 0.013 0.022 0.013 0.003 G(x,y) = 1 2πσ² · e -(x²+y²)/2σ² 核大小 = 2k+1, 归一化
图4-1 高斯核权重分布 (5×5, σ=1.0) 及二维高斯公式

4.1 高斯核生成与参数

高斯核由离散采样二维高斯函数得到。核大小通常取奇数 (如 3×3, 5×5, 7×7),中心权重最大,向四周递减。生成步骤:

  1. 确定核半径:通常取 radius = ceil(3σ),核尺寸为 2·radius+1。
  2. 计算权重:对每个位置 (i, j) 计算 G(i,j) = exp(-(i²+j²)/(2σ²))。
  3. 归一化:所有权重之和为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.83×3弱好轻微噪声、细节保护
1.0 ~ 1.55×5中等中等通用去噪、预处理
2.0 ~ 3.07×7 或 9×9强较差强噪声、运动模糊预处理
不同 σ 的一维高斯曲线对比 σ=0.5 σ=1.0 σ=2.0 ▲ 横轴:空间距离;纵轴:权重值
图4-2 不同标准差 σ 对应的高斯权重分布 (一维截面)

4.3 运动模糊场景下的应用

运动模糊通常由相机或物体快速移动引起,表现为沿运动方向的拖尾。高斯滤波可作为一种预处理手段:

  • 去噪 + 弱化模糊:在运动模糊图像中,高频噪声与模糊混叠。先用小 σ 高斯滤波抑制噪声,避免后续去模糊算法放大噪声。
  • 各向同性平滑:运动模糊具有方向性,而高斯滤波是各向同性的,可配合方向性滤波(如运动模糊核估计)使用。
  • 多尺度策略:在运动检测中,对帧图像进行高斯金字塔下采样,减少模糊区域的影响,提升运动目标检测鲁棒性。
运动模糊 + 高斯滤波流程 输入帧 高斯滤波 (σ=1.2) 运动检测 输出掩码 ▸ 高斯滤波抑制噪声,避免运动模糊区域产生虚假边缘
图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)