BackgroundSubtractorMOG2的参数

时间:2014-04-02 10:39:20

标签: c++ opencv parameters background-foreground

我有理解backgroundsubtractormog2的所有参数的问题。

我查看了代码(位于bfgf_gaussmix2.cpp),但没有看到与提到的论文的连接。例如,Tb = varThreshold,但论文中Tb的名称是什么?

我对脂肪标记的参数特别感兴趣。

让我们从简单的参数[我的评论]开始:

  • int nmixtures

    允许的最大混合物组分数。每个像素动态确定实际数量。 [为GMG设置0]

  • uchar nShadowDetection

    在输出前景蒙版中标记阴影像素的值。默认值为127。

  • float fTau

    暗影阈值。如果像素是背景的较暗版本,则检测阴影。 Tau是一个阈值,用于定义阴影的暗度。 Tau = 0.5意味着如果一个像素的深度超过两倍,那么它就不是阴影。

现在我不理解的那些:

  • float backgroundRatio

    阈值定义组件是否足够重要以包含在背景模型中(对应于TB = 1-cf,来自论文?哪篇论文??)。 cf = 0.1 => TB = 0.9是默认值。对于alpha = 0.001,这意味着模式在被视为前景之前应存在大约105帧。

  • float varThresholdGen

    马哈拉诺比斯平方距离的阈值,有助于确定样品何时接近现有组分(对应于Tg)。如果它不接近任何组件,则生成新组件。 3 sigma => Tg = 3 * 3 = 9是默认值。 Tg值越小,产生的组分越多。较高的Tg值可能导致少量组分,但它们可能会变得太大。 [我不明白这一点]

  • 在构造函数中,使用变量 varThreshold 。它与varThresholdGen相同吗?

    马哈拉诺比斯平方距离的阈值,以决定它是否被背景模型很好地描述(见Cthr ??)。此参数不会影响后台更新。典型值可以是4西格玛,即varThreshold = 4 * 4 = 16; (见Tb ??)。

  • float fVarInit

    新生成的组件的初始差异。它影响适应的速度。参数值基于您对图像的典型标准偏差的估计。 OpenCV使用15作为合理的值。

  • float fVarMin

    用于进一步控制方差的参数。

  • float fVarMax

    用于进一步控制方差的参数。

  • float fCT

    复杂性降低参数。此参数定义接受证明组件存在所需的样本数。 CT = 0.05是所有样品的默认值。通过设置CT = 0,您将获得与标准Stauffer& Grimson算法非常相似的算法。

有人在OpenCV网站上提出了同样的问题,但without an answer.

1 个答案:

答案 0 :(得分:13)

好吧,如果您不了解您正在使用的算法的详细信息,我认为没有人可以告诉您哪个参数是什么。此外,如果您知道算法的详细信息,则不需要任何人告诉您哪个参数是什么。我告诉这个有关详细参数(fCT,fVarMax等)的信息,而不是简单的参数(nmixtures,nShadowDetection等)。

所以,我认为你应该阅读文档中引用的论文。以下是论文123的链接。

你也应该阅读this论文,这是背景评估的开始。

阅读完这些文章并查看代码后,我确定你会明白这些参数是什么。

祝你好运!