Skip to content

论文翻译:ViBe+算法(ViBe算法的改进版本) #24

Description

@upcAutoLang

论文翻译:ViBe+算法(ViBe算法的改进版本)

注:本博文中的矩阵与公式不能正确显示,具体可以在本博文其他地址中查阅:
http://blog.csdn.net/ajianyingxiaoqinghan/article/details/72782685

原文地址:
《Background Subtraction: Experiments and Improvements for ViBe》

本文从原文第二章开始翻译:

一、ViBe算法的部分逻辑

ViBe是一种图像处理算法,它通过收集背景样本来构建背景模型。ViBe算法的部分要点如下:

  • 背景模型中每个像素点由20个背景样本构成;
  • 背景样本随机选择,用于更新模型,其他样本被弃置;
  • ViBe算法存在一种空间传播机制,它可以在将背景像素值插入在邻域像素点的模型样本库中;
    • 随机策略替代了模型样本中的一个值,它同时也会向某个邻域像素点的背景模型中插入这个值;
    • 只有很少的背景提取算法使用了这种空间传播机制;
  • ViBe算法不受时间历史的影响。当旧值与新值被替换时,它们是被同等考虑的。
  • 如果一个像素点属于背景模型,则酱油一个简单的处理:按照欧氏距离,找到至少两个相近样本,就能将该像素点划分为背景模型)

通常来说,对于背景提取模型有着几个标准:

  • 基于条件密度函数的底层模型或一系列样本值的背景模型
    • 一个背景模型的共识由两种假定构成,一是假定背景像素点是由一个随机变量生成的,二是因此贴近于某个被给定的概率密度函数。这就足够估计密度函数的参数,确定一个新样本是否属于同样的分布。另外,也可能为背景模型收集样本值并存储它们,而不是计算背景像素点的底层概率密度函数的参数。
    • 除了存储值被限制在20之外,ViBe有相似的方法,所以在此感谢随机选择的策略。作者有时把他们的技术描述成单峰或者多峰,但是区别在于,区分是否存在底层概率密度模型是很困难的。
  • 参数相对于非参数
    • 参数模型需要优化参数值;非参数模型虽然更加灵活多变,但也对数据更加敏感。
    • 在论文《ViBe: A universal background subtraction algorithm for video sequences.》中,作者宣称ViBe是非参数模型。实际上对更多视频序列而言,调整参数对ViBe算法更加适合,这些参数中除去背景值被用于更新其模型的概率的更新因子。
    • 原始值被设定为20,指20个背景像素值中只有1个被(随机)选择,但对于快速更新背景,该值设定为20并不是最佳选择。因此,当我们检测到在摄像机抖动时,我们将更新因子设定为5,甚至设定为1。
    • 检测到摄像机移动的情况,我们跟踪若干在第一帧中用Kanade-Lucase-Tomasi光流法检测到的特征,并逐帧检测是否大多数特征仍然保留。然后将存在一个对视频最初100帧的投票,决定这是否摄像机的整体移动现象。更多的细节在4.2节中介绍。
  • 保守与非保守更新策略
    • 在保守背景模型中,只有被分类为背景点的像素值才被插入到模型中,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的修改

对ViBe的对照中,其中一个在我们的算法中被介绍过的最小的改动,就是在前面第2节中介绍的,将更新因子减小到5(或者1)。然而这里还有更多的更改。

1. 分割蒙版与更新蒙版之间的区别

背景分割技术目的是生成一个带有背景和前景像素的二值化模板,大多数时间,这个分割蒙版就是用户们想要得到的。在保守策略中,分割蒙版被用来决定哪些值被用来输进背景蒙版中,另外,分割蒙版在更新模板中起着很重要的作用。因此,我们用不同的方式处理分割蒙版和更新蒙版。为了起到强烈的抑制效果,我们强行决定前景像素不被用来更新模型。

2. 连接区域的滤波操作

我们的算法中,在分割蒙版与更新蒙版中,我们对几种类型的区域做了处理:

  • 分割蒙版:移除面积小于等于10(像素)的前景斑点区域,填充面积小于等于20的前景斑点区域;贴近边缘的斑点,无论尺寸全部保留,使其保持原状;
  • 更新蒙版:填充面积小于等于50(像素)的前景空洞区域,该操作用来限制散布在前景物体中的错误背景。
    • 注:对于更新蒙版,我们保留所有的前景斑点,这与更新操作的保守性质有关(前景值应该插进背景模型中)

3. 抑制传播

此外对于前景与背景斑点的操作,我们将介绍一种抑制空间传播的机制。有一种模型存在8连接邻域像素点,并从邻域像素点中随机取值,这种空间传播就会向这种模型中插值。这种传播机制有一部分是从介绍过的ViBe算法中创新出来的,它扩散了背景模板的数值,并抑制了随时间产生的Ghost现象与静止物体问题。
然而对于静止物体问题,这也并不是一直适合的。如果在斑点等级上应用,可能会获得更好的效果。我们计算了背景斑点内侧边界的梯度,当梯度值(限制于整数范围[0, 255])大于50时,将会抑制扩散。这种操作避免了背景值穿过物体边界。
ViBe算法的强项之一是它能逐步的抑制ghost现象。一些背景“种子”随机的插入在邻域模型,而且一旦这些“种子”中有2个(最小匹配值)出现在一个像素的模型中,前景像素就会转换为背景像素点。这种方法对于Ghost有效果,但是当用户想保留随时间变化的静止物体时,对于这些静止物体就并不适用了。
下图中,我们可以看到,通过比较(c)图和(d)图,抑制作用减缓了背景点在前景物体中的扩散作用。
这里写图片描述
上图中比较了ViBe改进前后算法的效果。

  • a. 红外图像的原图像;
  • b. 真实前景背景图像;
  • c. ViBe算法的分割蒙版;
  • d. ViBe+算法的分割蒙版;

4. 适应距离测量与阈值化

在文章《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]中。我们观察到无论是颜色失真度量,还有自适应阈值,在我们的算法中都有效果的提升。

5. 检测闪烁像素的启发

我们的主要困难之一与基于样本模型的使用有关,就是处理多峰值背景分布情况,因为没有明确的机制去适应这种分布。作为一种替代品,如果一个像素经常在背景点与前景点之间跳变(我们将这种像素称为闪烁像素),我们提出了一种检测方法。
对于每个像素,我们存储了之前的更新蒙版(进行任何修正之前的更新蒙版)与一个闪烁等级图表。闪烁等级定义如下:如果一个像素属于背景的内边缘,并且当前更新边缘不同于之前更新的边缘,那么闪烁等级增加15(闪烁等级保持在整数范围[0, 150]之间),否则等级减1。
这种方法与我们知道的Σ - Δ技术(比如见文章《A new motion detection algorithm based on Σ-∆ background estimation》中在前景背景提取中对该技术的应用)相似。如果一个像素的闪烁等级大于等于30,则该像素被认为正在闪烁,并将其从更新蒙版中移除。换句话说,只有在背景蒙板的边界,我们才允许闪烁等级增加,但是我们抑制所以更新蒙版的闪烁像素。这种技术增强了我们算法对于多峰背景分布的处理。
注:当摄像机晃动时,检测闪烁像素是不可取的。

对于检测闪烁像素启发优点的论证在下图中论证。在ViBe+算法中,对于水面区域有更少的错误提取。
这里写图片描述

三、实验

1. 方法

修正算法与包括原始版本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)。下面,结果将用两种指标进行评估:

  • 错误分类百分比(the percentage of bad classification, PBC)
    • $ PBC = 100 \times \frac{FN+FP}{TP+FN+FP+TN} $
  • 准确度(Precision)
    • $ Precision = \frac{TP}{TP+FP} $

改变检测网站也提出并评估其他指标,此处并未考虑。

2. 参数

所有参数的列表以及在我们运行ViBe+算法时使用的值给出如下:

  • 初始化:
    • 更新因子 = 1(针对前100帧)
  • ViBe的参数:
    • 更新因子 = 5(在初始化帧数之后,即100帧之后)
    • 每个像素的样本数量 = 20
    • 需要匹配的数量 = 2
  • 改进后ViBe的参数:
    • 距离指标
      • 振幅乘数因子 = 0.5
      • 振幅匹配阈值范围 = [20, 40]
      • 颜色畸变阈值 = 20
    • 边缘抑制
      • 边缘抑制阈值 = 50
  • 闪烁像素检测
    • 闪烁值的范围 = [0, 150]
    • 闪烁增量 = 15
    • 闪烁减量 = 1
    • 闪烁阈值 = 30
  • 已连接部分滤波
    • 更新蒙版
      • 前景空洞最小尺寸 = 50(像素)
    • 分割(输出)蒙版
      • 前景斑点最小尺寸 = 10(像素)
      • 前景空洞最小尺寸 = 20(像素)

对于摄像机抖动数据集(camera jitter)的检测,我们使用了Kanade-Lucas-Tomasi特征追踪器,可用网址如下:http://www.ces.clemson.edu/~stb/klt
这个算法在第一帧选择了100个最好的特征并对它们进行了超过100帧的追踪。一个被追踪的特征可以被视为静态的或者动态的:如果水平与垂直移动尺度小于1个像素点,则被视为静态;否则视为动态。如果至少一半被追踪的特征是静态的,那么一帧被认为是静止的。测试程序运行超过了视频序列最开始的100帧,我们投票决定摄像机是否存在抖动现象。如果摄像机存在抖动现象,那么剩下来的视频序列中更新因子减小至1.对于这种简单处理,我们观察摄影机抖动数据集(即camera jitter)所有视频帧,检测结果都是移动摄像机。其他所有视频都被检测为静止摄像机。

3. 结果与讨论

这篇文章中,我们基于原始算法提出了很多改变。从实际角度出发,无论是由于各种改变之间的相互作用,还是由于这些影响都作用于视频序列,将每种改变的影响隔离并分开是十分困难的。因此,我们仅仅表达整体结果。
所有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算法。另外,对于一些分类与一些指标,我们的新算法性能优于很多已有的技术。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions