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)