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)