高斯混合背景建模

BackgroundSubtractor类

背景/前景分割的基类

该类仅用于定义整个背景/前景分割算法族的公共接口

operator()

计算前景掩码

void BackgroundSubtractor::operator()(InputArray image, OutputArray fgmask, double learningRate=0) //image – 下一视频帧。 fgmask – 输出前景掩码为8位二进制映像。

getBackgroundImage

计算背景图像

void BackgroundSubtractor::getBackgroundImage(OutputArray backgroundImage) const //backgroundImage – 输出的背景图像

BackgroundSubtractorMOG

继承自BackgroundSubtractor,基于高斯混合的背景/前景分割算法

构造函数

BackgroundSubtractorMOG::BackgroundSubtractorMOG()
BackgroundSubtractorMOG::BackgroundSubtractorMOG(int history, int nmixtures, double backgroundRatio, double noiseSigma=0)

history

历史帧的数目; nmixtures - 混合高斯数量; backgroundRatio - 背景比例; noiseSigma - 噪声权重

BackgroundSubtractorMOG2

继承自BackgroundSubtractor,基于高斯混合的背景/前景分割算法2

构建类的实例后,可以设置类的重要成员:

  • int nmixtures - 混合组件最大允许数。实际数量是根据每个像素动态确定的。
  • float backgroundRatio - 阈值定义组件是否足够显着以包括到背景模型中。 cf = 0.1 => TB = 0.9是默认值。对于α= 0.001,这意味着在被认为是前景之前,该模式应存在大约105帧。
  • float varThresholdGen - 帮助决定样品何时接近现有组分(对应于Tg)的马氏距离平方的阈值。如果它不靠近任何组件,则会生成一个新组件。默认为3 sigma => Tg = 3 * 3 = 9。较小的Tg值产生更多的组分。较高的Tg值可能导致少量的组分,但它们可能生长得太大。
  • float fVarInit - 新生成的组件的初始方差。它影响适应的速度。参数值基于您对图像的典型标准偏差的估计。 OpenCV使用15作为合理的值。
  • float fVarMin - 用于进一步控制方差的参数。
  • float fVarMax - 用于进一步控制方差的参数。
  • float fCT - 复杂性降低参数。此参数定义接受证明组件存在所需的样本数。 CT = 0.05是所有样本的默认值。通过设置CT = 0,您得到的算法非常类似于标准的Stauffer&Grimson算法。
  • uchar nShadowDetection - 用于在输出前景蒙版中标记阴影像素的值。默认值为127。
  • float fTau - 阴影阈值。如果像素是背景的较暗版本,则检测到阴影。 Tau是一个阈值,定义阴影可以有多深。 Tau = 0.5意味着如果一个像素多于两倍暗,那么它不是阴影。

构造函数

BackgroundSubtractorMOG2::BackgroundSubtractorMOG2()
BackgroundSubtractorMOG2::BackgroundSubtractorMOG2(int history, float varThreshold, bool bShadowDetection=1)

history – 历史帧的数目。 varThreshold – 马氏平方距离上使用的来判断是否为背景的阈值。bShadowDetection – 是否使用阴影检测。

getBackgroundImage

返回背景图像

void BackgroundSubtractorMOG2::getBackgroundImage(OutputArray backgroundImage)

你可能感兴趣的:(高斯混合背景建模)