返回

背景建模与背景减除

Background Modeling & Subtraction - 用长期背景模型提取前景
第三章 / 简单背景方法
参数面板

切换均值、自适应、单高斯与混合高斯模型,观察背景模型、差异图和前景掩膜之间的关系。

连续帧播放
13
58
均值模型用前 K 帧平均得到背景,不使用学习率 α;调整阈值会直接改变前景掩膜。
窗口定位辅助操作
用方向键或下方 4 个按钮移动当前窗口;也可以直接点击原图或结果图跳转。
当前像素 (48, 42)4081 / 6144
方向
概念说明

背景模型是什么

背景模型从历史帧中估计稳定场景,再把当前帧中的运动目标分割为前景掩膜。图源:OpenCV segment objects demo
任务

当需要在连续视频中检测运动目标或新出现物体时,直接用相邻两帧相减会留下双影,也容易把静止不久的目标漏掉。需要先为每个像素建立一个长期背景模型,再把当前帧与它比较。

思路

常用办法是用前若干帧的均值作为背景;也可以用<TeachingTerm term="自适应递推" explanation="自适应递推按学习率 α 把当前帧融入背景,α 越大背景更新越快,适合缓慢光照变化。" />持续更新背景,或者用单高斯分布、<TeachingTerm term="混合高斯模型" explanation="混合高斯模型允许同一像素有多个常见背景取值,适合树叶摇晃、水面反光等动态背景。" />描述每个像素的常见取值。当前像素与背景估计相差超过阈值时,就判为前景并写入<TeachingTerm term="前景掩膜" explanation="前景掩膜是一幅二值图,标记当前帧中被判定为运动目标或新出现物体的像素位置。" />。

观察

点击不同像素或拖动当前帧序号,观察该位置的历史灰度序列、背景估计值和当前差分;再切换背景模型,比较前景掩膜中目标残留和背景噪声的变化。

方向键移动 / 点击当前帧或前景掩膜定位像素当前结果像素 (48, 42)
4081 / 6144
连续帧小人运动序列
公共序列生成器输出 96×6424 帧;当前显示第 13 帧。
琥珀色缩略图表示当前像素参与背景建模的历史窗口,红色缩略图表示当前正在判定的第 13 帧。
当前帧 I(t)96×64
I(48, 42) = 219
背景模型 B(t)均值模型
B(48, 42) = 90
差分 |I-B|129
|219 - 90| = 129
前景掩膜 D(t)12.7%
前景 778 / 6144 像素,当前为 前景运动目标(D=1)
当前规则
|I-B| > T
代入比较
|219 - 90| = 129,T = 58
当前结论
前景运动目标(D=1)
读取当前像素(48, 42)
当前帧灰度
219

当前帧只提供观测值,是否是前景要看它与长期背景模型的距离。

读取背景模型均值模型
背景估计
90
差分
129

用前 K 帧平均值近似背景,适合背景稳定且目标偶尔出现的场景。

差分与阈值比较|I-B| > T
|219 - 90| = 129
判定阈值 = 58差分超过阈值,写入前景。
写入前景掩膜D = 1
前景运动目标(D=1)
当前整张掩膜中共有 778 个前景像素,占 12.7%
当前像素时间序列

观察 (48, 42) 在连续帧中的观测值、背景估计和前景判定。

当前 t = 13
红条 It:当前像素观测值,当前帧为 219
黄条 Bt/μt:背景估计,当前帧为 90
下方圆点:红色表示该帧判为前景,绿色表示背景。
其中琥珀色高亮时间窗口表示当前像素参与背景建模的历史帧,红色边框表示当前正在判定的帧。

背景减除法

下面使用连续帧小人运动序列讲解背景建模:先建立长期背景,再比较当前帧与背景模型,差异超过判定条件的位置输出为前景。

均值模型动态推导

用前 8 帧估计当前像素的背景均值,再与第 13 帧比较。

K = 8
前 K 帧训练序列
I1=90
I2=89
I3=90
I4=88
I5=89
I6=90
I7=93
I8=94
均值背景估计
Bt=1Kj=1KIj
当前像素训练均值 = 90,背景图中 B = 90。
前提假设
前 K 帧中该像素多数时间应呈现背景值。当前统计:8/8 帧接近均值,满足多数背景假设。
历史帧与当前帧分工
历史帧只用于估计 B,当前帧 It 只用于和 B 做差分判定。
常用参数
教材示例常用 T=58、K=3;此处 T 可调,K 固定为 8 帧以增强连续序列稳定性。
当前帧判定
|It-Bt|=|219-90|=129, T = 58,结果: 前景运动目标(D=1)

当前像素总结

对当前位置 (48, 42) 和第 13 帧做统一代入。

当前帧像素:

I(48,42)=219

背景减除差值:

|I-B|=|219-90|=129

前景判定 D(x,y):

Dt(x,y)={1|It-Bt|>T;0 其他}

代入:|It-Bt|=129,T=58结果:前景运动目标(D=1)