原文地址: 《Background Subtraction: Experiments and Improvements for ViBe》
本文从原文第二章开始翻译:
ViBe是一种图像处理算法,它通过收集背景样本来构建背景模型。ViBe算法的部分要点如下:
通常来说,对于背景提取模型有着几个标准:
这篇文章中,我们不提出对阴影的具体修改,尽管有很多算法已经处理了由于阴影而引起的问题(见文章《Detecting moving shadows: algorithms and evaluation.》与《Shadow detection: A survey and comparative evaluation of recent methods.》),由于阴影的物理起源的多样性,我们认为如何合适处理阴影的问题是存在争议的。在《Shadow detection: A survey and comparative evaluation of recent methods.》》文中,阴影受物理、地理、时间的影响。在基于概率的背景模型中,将一个值与统计阴影模型的均值比较是可行的,这种方法没有基于样本的模型直接。除此之外,数值比较仅仅是一个处理由于物理因素而产生的阴影的方法,而一个有效的方法应该将地理与时间因素。最终,我们决定忽略阴影元素,并将阴影考虑进入我们前景像素中。 最后一个重要论证是分析级别。运动可以在像素等级或斑点级别中分析出来。看到类似于ViBe的这种忽略物体概念的算法是十分震惊的,这类算法在物体等级上也可以有很好的表现。大多数基于像素的提取算法如今都做到了实时处理,这显得十分具有吸引力。然而人们通常都在物体等级解释运动的概念。
对ViBe的对照中,其中一个在我们的算法中被介绍过的最小的改动,就是在前面第2节中介绍的,将更新因子减小到5(或者1)。然而这里还有更多的更改。
背景分割技术目的是生成一个带有背景和前景像素的二值化模板,大多数时间,这个分割蒙版就是用户们想要得到的。在保守策略中,分割蒙版被用来决定哪些值被用来输进背景蒙版中,另外,分割蒙版在更新模板中起着很重要的作用。因此,我们用不同的方式处理分割蒙版和更新蒙版。为了起到强烈的抑制效果,我们强行决定前景像素不被用来更新模型。
我们的算法中,在分割蒙版与更新蒙版中,我们对几种类型的区域做了处理:
此外对于前景与背景斑点的操作,我们将介绍一种抑制空间传播的机制。有一种模型存在8连接邻域像素点,并从邻域像素点中随机取值,这种空间传播就会向这种模型中插值。这种传播机制有一部分是从介绍过的ViBe算法中创新出来的,它扩散了背景模板的数值,并抑制了随时间产生的Ghost现象与静止物体问题。 然而对于静止物体问题,这也并不是一直适合的。如果在斑点等级上应用,可能会获得更好的效果。我们计算了背景斑点内侧边界的梯度,当梯度值(限制于整数范围[0, 255])大于50时,将会抑制扩散。这种操作避免了背景值穿过物体边界。 ViBe算法的强项之一是它能逐步的抑制ghost现象。一些背景“种子”随机的插入在邻域模型,而且一旦这些“种子”中有2个(最小匹配值)出现在一个像素的模型中,前景像素就会转换为背景像素点。这种方法对于Ghost有效果,但是当用户想保留随时间变化的静止物体时,对于这些静止物体就并不适用了。 下图中,我们可以看到,通过比较(c)图和(d)图,抑制作用减缓了背景点在前景物体中的扩散作用。
上图中比较了ViBe改进前后算法的效果。
在文章《ViBe: A universal background subtraction algorithm for video sequences》中,ViBe算法的作者称该方法是基本是无参的,对此我们可以理解成对于阈值的轻微修正并不敏感。简单地说,作者用了欧氏距离测量是否匹配。虽然它已经被证明在很多视频流中足够有效,但它还有提高的空间,几个作者提出了一种不同的方法,用以区分颜色匹配和亮度匹配。 我们的距离度量是受文章《Real-time foreground-background segmentation using codebook model. 》启发而得到的。这种举例是基于背景技术的,比较强度并计算某些颜色畸变。我们的颜色畸变就是在文章《Real-time foreground-background segmentation using codebook model. 》中等式(2)定义的colordist()。颜色畸变测量可以被解释为在标准颜色空间中的一个亮度权重的版本。在ViBe+中,需要两个值匹配的一个条件是颜色畸变值小于20。此外,在强度值上还有第二个条件。通常,如果两个强度值之差小于20,ViBe算法认为它们是相近的。在文章《Evaluation of background subtraction techniques for video surveillance》中,作者建议在ViBe算法中用一个与模型样本中相关的阈值,这样会更好的处理伪装前景点。因此我们计算模型样本的标准偏差σ,并将其定义一个匹配阈值为0.5×σ,设定在整数范围[20, 40]中。我们观察到无论是颜色失真度量,还有自适应阈值,在我们的算法中都有效果的提升。
我们的主要困难之一与基于样本模型的使用有关,就是处理多峰值背景分布情况,因为没有明确的机制去适应这种分布。作为一种替代品,如果一个像素经常在背景点与前景点之间跳变(我们将这种像素称为闪烁像素),我们提出了一种检测方法。 对于每个像素,我们存储了之前的更新蒙版(进行任何修正之前的更新蒙版)与一个闪烁等级图表。闪烁等级定义如下:如果一个像素属于背景的内边缘,并且当前更新边缘不同于之前更新的边缘,那么闪烁等级增加15(闪烁等级保持在整数范围[0, 150]之间),否则等级减1。 这种方法与我们知道的Σ - Δ技术(比如见文章《A new motion detection algorithm based on Σ-∆ background estimation》中在前景背景提取中对该技术的应用)相似。如果一个像素的闪烁等级大于等于30,则该像素被认为正在闪烁,并将其从更新蒙版中移除。换句话说,只有在背景蒙板的边界,我们才允许闪烁等级增加,但是我们抑制所以更新蒙版的闪烁像素。这种技术增强了我们算法对于多峰背景分布的处理。 注:当摄像机晃动时,检测闪烁像素是不可取的。
对于检测闪烁像素启发优点的论证在下图中论证。在ViBe+算法中,对于水面区域有更少的错误提取。
修正算法与包括原始版本ViBe在内的其他算法对比,使用由http://www.changedetection.net 提供的公用数据库。数据库中包括31个视频序列,分为6中类型:baseline, dynamic background, camera jitter, intermittent object motion, shadow, thermal。种类的名称都是十分明确的,所以我们不再细节讲述其中内容。 在我们的试验中,我们用一组独特的参数(下一节中会提到),包括热图像。所有的视频序列都被处理,其二值化蒙版(0值代表背景像素点)也与真实背景蒙板相比较。虽然真实背景蒙板数据包含五个标签,但我们只以检测静止像素(背景)与移动物体(前景)为目标。 如果背景提取被视为二值化分类的问题,即区分前景(通常被考虑为正)与背景(负),那么我们可以使用常用术语:真正(True Positive, TP),真负(True Negative, TN),假正(False Positive, FP),假负(False Negative, FN)。下面,结果将用两种指标进行评估:
改变检测网站也提出并评估其他指标,此处并未考虑。
所有参数的列表以及在我们运行ViBe+算法时使用的值给出如下:
对于摄像机抖动数据集(camera jitter)的检测,我们使用了Kanade-Lucas-Tomasi特征追踪器,可用网址如下:http://www.ces.clemson.edu/~stb/klt 。 这个算法在第一帧选择了100个最好的特征并对它们进行了超过100帧的追踪。一个被追踪的特征可以被视为静态的或者动态的:如果水平与垂直移动尺度小于1个像素点,则被视为静态;否则视为动态。如果至少一半被追踪的特征是静态的,那么一帧被认为是静止的。测试程序运行超过了视频序列最开始的100帧,我们投票决定摄像机是否存在抖动现象。如果摄像机存在抖动现象,那么剩下来的视频序列中更新因子减小至1.对于这种简单处理,我们观察摄影机抖动数据集(即camera jitter)所有视频帧,检测结果都是移动摄像机。其他所有视频都被检测为静止摄像机。
这篇文章中,我们基于原始算法提出了很多改变。从实际角度出发,无论是由于各种改变之间的相互作用,还是由于这些影响都作用于视频序列,将每种改变的影响隔离并分开是十分困难的。因此,我们仅仅表达整体结果。 所有6中分类视频,对错误分类百分比(PBC)平均值和精准度的测试结果在下面两个表中中分别列出:
为了比较这些结果,我们提供了不同算法处理前面6种类别视频数据的最佳排名。我们也提到截止到2012年4月的最佳算法。对于精准度,KaewTraKulPong和Bowden《An improved adaptive background mixture model for real-time tracking with shadow detection》表现最佳,出现排名第一的时间最多。请注意:我们希望错误分类百分比(PBC)越小越好,这与精准度越大越好的指标相反。 最佳结果在表中都用粗体标识出。可以看出我们的算法在几种分类中,错误分类百分比(PBC)有所改善,总体而言,错误分类百分比(PBC)基本上都接近了最佳值。 我们的算法性能也优于先前某些类别视频的最佳精准度,总体平均精准度大于文章《An improved adaptive background mixture model for real-time tracking with shadow detection》。 显而易见,对于如特殊性等其他指标(但不包括正确召回率(recall))。正确召回率定义为TP与(TP + FN)的比值,正确召回率的值提高到了19/31,但整体平均正确召回率为0.6840,与原始ViBe算法相比,原始ViBe的正确召回率为0.6758。这意味着原始版本ViBe算法与改进版本ViBe+算法的TP与FN数量基本近似。 ViBe+算法对于baseline分类的视频数据稍微削弱了效果。这并不奇怪,因为本文介绍的改进算法主要是为了针对某些特别问题而增强ViBe的效果,如多峰值背景,相机抖动,或者不连续物体运动。
在这篇文章中,我们介绍了对于原始ViBe算法的几处改良。改良主要在:不同距离函数、阈值标准、更新蒙版与分割(输出)蒙版的区别、合适的滤波操作、更新蒙版中部分像素扩散的抑制、闪烁像素的检测、改善了更新因子(尤其当摄影机存在抖动的情况下)。 对于多数视频序列,本文比较展示了改进版ViBe+算法的性能优于原始版本的ViBe算法。另外,对于一些分类与一些指标,我们的新算法性能优于很多已有的技术。