参看《Background subtraction:experiments and improvements for vibe》,总结出来的。
Vibe的改进
- Updating factor 由20降低到5或1,可以加快背景学习速度;
- 区分分割模型和更新背景模型
背景减的目标是获取前景运动目标,大多数情况得到的分割模块就是我们寻找的检测目标,一般情况下都利用获得的前景目标做为更新背景模型,来进行背景更新。但这不是所有情况,所以作者对分割模型(提取的运动目标)和更新背景模型进行区分。但需要指出的是前景像素永远不能用来更新模型。
- 级联滤波器
- 前分割模型:删除区域块小于或等于10像素的景目标,对小于或等于20的目标块进行漏洞填充。
- 背景更新模块:对小于或等于50的目标块进行漏洞填充。这主要是为了减少前景误判为背景的错误。对所有的前景模块都进行保留,前景像素值永远不要填充到背景模块中。
- 抑制传播
该方法主要应用于运动目标块静止,但又想保留其作为前景运动目标。由于vibe采用八邻域进行更新,并对更新的邻域位置不进行判断,如果一旦两个背景像素更新到前景区域某一像素点上,则该点会被误判为背景,所以在目标块的边界处会产生腐蚀的效果。作者的改进方法是计算背景模块的梯度,当梯度大于50时抑制邻域更新。下图为采用该方法得到的结果,从图中可以看出背景种子在前景中的传播得到了抑制。
- 距离计算和自适应阈值
由于简单的欧式距离对某些应用场合不适用,作者采用codebook中的颜色失真来计算分析前景运动目标。
当颜色失真值小于20时认为像素值相近,认定为背景。由于背景图像的不一致性,以自适应的阈值代替原来固定的距离判定阈值,阈值大小与样本集的方差成正比,样本集方差越大,说明背景越复杂,判定阈值应该越大。
- 解决闪烁背景误报
闪烁像素是像素经常在背景和前景中切换,作者采用的方法是首先判断闪烁像素。先存储一张背景更新模板和一个闪烁图(像素级),遍历当前背景更新模板,当某一像素是待更新的背景像素,则判断该像素点在上一帧的背景更新模板中与当前帧是否相同,如果不同则闪烁级增加15(闪烁级在[0,150]之间),否则闪烁级减1。如果闪烁级大于等于30则被判断为闪烁点。下图为该方法应用于水面。