1. ホーム

Opencv3の動的ターゲット検出。BackgroundSubtractorMOG2 パラメータ設定

2022-02-28 07:15:45

        Opencvは、BackgroundSubtractorMOGよりも干渉、特に照明の変化に強い適応型ハイブリッドガウス背景モデリングに基づく背景減算法を使用し、動的ターゲット検出のためにBackgroundSubtractorMOG2を統合しています。

------------------------------------------------------------------------------------------------------------

ps. BackgroundSubtractorMOG2といくつかの他の背景減算法、フレーム差分法はちょうど動き検出を行うために、オンラインしばしば人々は動き検出を行い、その後、輪郭を見つける楕円を当てると言う、概念を混同し、フレームにフレームのターゲット接続、ない判断ターゲット生成とターゲット消滅はそれを追跡とみなすことができない。

-----------------------------------------------------------------------------------------------------------

BackgroundSubtractorMOG2には多数のパラメータがあり、その設定は動き検出の結果に大きく影響します。opencv2版のBackgroundSubtractorMOG2のパラメータは調整できないため、MOG2の検出結果は残念なものになることが多く、MOGより劣ると考える人もいます。

    opencv3版では、BackgroundSubtractorMOG2は、パラメータを調整可能にするメンバ関数が多数あり、これを大きく変更することが可能だと思います。しかし、アルゴリズムを勉強したくないopencvプレイヤーや、私のようにopencv初心者で楽しいエフェクトを作りたい人にとって、これらのパラメータを理解することは大きな頭痛の種なので、ここでは私の謙虚な意見でいくつかのパラメータの意味と他の人の結果をまとめておきます、参考までに、スプレーしないでください!。

<ブロッククオート <ブロッククオート 一部参照元:http://blog.csdn.net/abc20002929/article/details/43247425

1--  BackgroundSubtractorMOG2の作成と初期化



eg: Ptr<BackgroundSubtractorMOG2> mog = createBackgroundSubtractorMOG2(100,25,false).Ptr<BackgroundSubtractorMOG2(100,25,false);

  • history: 背景の学習に使用するフレーム数、デフォルトは500フレーム、learningRateを手動で設定しない場合、現在のlearningRateを計算するためにhistoryが使用され、historyが大きいほどlearningRateが小さく、背景の更新が遅くなる。
  • varThreshold: 分散しきい値、現在のピクセルが前景か背景かを決定するために使用されます。一般的なデフォルトは16、水面の太陽光など光の変化が大きい場合は25,36に設定することを推奨、具体的に試すのはそれほど面倒ではなく、値が大きいほど感度が低くなる。



  • detectShadows:影を検出するかどうか、検出するためにtrueに設定し、検出しないために偽、影を検出すると、プログラムの時間の複雑さが増加し、特別な要件がない場合、それはfalseに設定することが推奨されます。
2--  BackgroundSubtractorMOG2モーションディテクション
eg: mog->apply(src_YCrCb, foreGround, 0.005);
  • 画像 ソース画像
  • fmask フォアグラウンド (バイナリ画像)
  • learningRate 学習率、値0-1,0は背景の更新なし、1はフレームごとの更新、デフォルトは-1、つまりアルゴリズムは自動的に更新されます。



3--  BackgroundSubtractorMOG2 その他のパラメータ
パラメータ設定機能は http://docs.opencv.org/3.2.0/d7/d7b/classcv_1_1BackgroundSubtractorMOG2.html
eg: mog->setVarThreshold(20);
重要なパラメータの紹介
  • nmixtures:ガウスモデルの数、デフォルト5、最大8、一般的に5に設定すると、良いですが、個人的なテスト:8検出効果が向上するために制限されているときに設定しますが、プログラムの時間消費が増加した。



  • backgroundRatio。ガウスバックグラウンドモデルの重みとしきい値、重みでモデルをソートした後、累積モデル重みが backgroundRatio より大きい最初の数モデルのみがバックグラウンドモデルとして採用されます。つまり,この値が非常に小さい場合,最大の重みを持つガウシアンモデルのみが背景として使われる可能性があります(1つのモデル重みのみがbackgroundRatioより大きいため).



  • fVarInit: 新しいガウシアンモデルの分散の初期値、デフォルトは15です。
  • fVarMax: バックグラウンド更新中にガウシアンモデルの分散を制限するために使用される最大値、デフォルトは20。
  • fVarMin: バックグラウンド更新時にガウシアンモデルの分散を制限するために使用される最小値、デフォルトは4。



  • varThresholdGen: 一致するモデルが存在するかどうか、存在しない場合は新しいモデルを作成するかどうかの分散しきい値。



4--  BackgroundSubtractorMOG2 動き検出プログラムリファレンス