私はOpenCV2.2を使用して、背景減算の方法で移動オブジェクトの検出を実装しています。また、ガウス混合モデル(GMM)法を使用して、背景の参照画像をモデル化します。
OpenCV2.2で提供されているクラスcv :: BackgroundSubtractorMOGを使用して、前景ピクセル(または前景マスク)を直接取得します。便利ですが、cv :: BackgroundSubtractorMOGによって返される前景マスクは思ったほど良くありません。さらに、cv :: BackgroundSubtractorMOGは、OpenCV1.0で提供されているC言語で記述されたGMMの方法よりもパフォーマンスが低いようです。
以下は、OpenCV2.2の私のコードです。
cv::BackgroundSubtractorMOG mog;
mog(frame, fgMask, 0.01);
それで、私は間違った方法でメソッドを使用しましたか?
ちなみに、cv :: BackgroundSubtractorMOGは前景ピクセルの影の除去を実行しますか?
どうもありがとうございました。
このスレッド に関するF.X.の回答は、
backgroundSubtractor = new BackgroundSubtractorMOG(3, 4, 0.8);
開始するには、次の設定を使用することをお勧めします。次に、パラメータの調整を開始できます。
cv::BackgroundSubtractorMOG2 mog;
mog(rawFrame,foregroundFrame,-1);
mog.set("nmixtures", 3);
mog.set("detectShadows",1);
この例では、MOG2減算器を3つのガウス混合で設定しました。影の検出も有効にしました。