2012-09-20 10 views
7

BackgroundSubtractorMOG2にどのピクセルを背景モデルに更新するのか、どのピクセルで更新しないのかを教えてください。BackgroundSubtractorMOG2のマスク

オブジェクトがシーンに入って数十秒間停止すると、オブジェクトがバックグラウンドモデルに吸収されるという問題に直面しています。

特定の停止したオブジェクトの周りで学習率を下げたり、学習をやめたいのですが、どうすればいいですか? BackgroundSubtractorMOG2は更新機能でマスクを使用してサポートしていますか?

私はOpenCV 2.4.1を使用しています。

ありがとう、 Alvin。

+0

良い質問を...私は正確に同じ問題に直面しています。 –

+0

OpenCVバックグラウンド減算アルゴリズムへのハイレベルのフィードバックのメカニズムはありません。やや一般的な更新関数の提案には、更新マスクが含まれています。 – killogre

答えて

3

BackgroundSubtractorMOG2入力のマスキングをサポートしていません。しかし、マスクするピクセルを知っていれば、出力をマスクすることができます:subtractor(input, fg, learningRate);と呼ばれていて、オブジェクトがどこにあるのか何らかの形で知っているとします(平均シフトやパターン認識を使用して追跡している可能性があります) fg |= mask;ここで、maskはどこか別のソースからわかるように、オブジェクトはです。あなたがダウンして本当に低

すなわち学習率を設定することによって、これを達成することができます

+0

バックグラウンドに吸収されている前景を追跡するのに役立ちます。しかし、これは私が探している答えではありません、私は可能な限り、私のバックグラウンドモデルをきれいに保ちたいと思います。 –

+1

私の最初の文でさえ、あなたが求める答えではありませんか?もしあなたのオブジェクトが入ってきて、それでも静止しているようなものなら、MOG2モデルはそれらを追跡するのに十分ではありません。最初のオブジェクト検出のためにMOG2を組み合わせた方が良いでしょう。それとも私はあなたの問題を誤解していますか? – artm

2

mog(input, output, 0.00000001);