13

私は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は前景ピクセルの影の除去を実行しますか?

どうもありがとうございます。

4

4 に答える 4

12

mogを作成するときは、パラメーターを定義していないため、デフォルトのパラメーターを使用して作成されます。ここに各パラメータの説明があります、多分それだけです。3、45ガウス分布で試してください。

この関数はシャドウ除去を実行しませんが、実行するこの他の関数があります。幸運を!

于 2012-06-01T10:52:52.803 に答える
5

OpenCVの標準GMM実装よりもはるかに優れた背景の除去(前景の検出)を行う最近のアルゴリズムがあります。

たとえば、このジャーナル記事で説明されているブロックベースの分類子カスケードアプローチと、そのC++ベースのソースコードがあります。

于 2013-12-02T04:59:35.353 に答える
1

このスレッドに関するFXの回答は、次のサンプルパラメータを示しています。

backgroundSubtractor = new BackgroundSubtractorMOG(3, 4, 0.8);
于 2013-03-05T06:29:54.920 に答える
0

開始するには、次の設定を使用することをお勧めします。次に、パラメータの調整を開始できます。

cv::BackgroundSubtractorMOG2 mog;
mog(rawFrame,foregroundFrame,-1);
mog.set("nmixtures", 3);
mog.set("detectShadows",1);   

この例では、MOG2減算器を3つのガウス混合で設定しました。影の検出も有効にしました。

于 2014-02-14T16:12:56.090 に答える