2017-02-28 8 views
0

absdiff関数を使用して2つの画像を減算しようとしていますが、動くオブジェクトを抽出するためにはうまくいきますが、前景の前に背景が表示されることがあります。 これは実際に背景色と前景色が似ている場合に発生します。この問題を解決する方法はありますか? 上記の問題の説明では不十分です。私は次の画像を添付します link。 おかげ..OpenCVでのバックグラウンドの差し引き

+0

どのようにして2つの画像から背景を判断できますか?あなたは2枚の画像しか持っていないのですか?具体的には、あなたがビデオや画像で作業しているのだろうかと思います。 – smttsp

+0

私はビデオに取り組んでいます。フレームごとに元のフレームとカメラからの画像がありますので、移動オブジェクトを抽出するためにそれらを減算します。 – joly

+0

「移動平均」や「ガウス混合モデル」はどうしていいのですか?どのように背景/元のイメージを持つことができますか?その場合偏った実験になるでしょうか? – smttsp

答えて

1

私が提供できるあなたの問題の完全な解決策を策定するために十分な情報がありませんが、いくつかのヒントがあります: 強いを使用して入力し、背景画像を、

  • まずプレフィルタメジアン(またはガウス)フィルタこれにより、あなたの結果はより多くのものになります (背景画像の水平線のような)、マイナーな、本質的でない詳細 からのイメージのノイズと混乱に強くなります。 に毛髪の動きを検出させたくない場合は、 生のピクセルを処理する必要はありません。

  • 次に、グレースケールにまっすぐ行くのではなく、 チャネルの3つすべての色をテストするために、コメント内のアドバイスを受けてください。

  • 次に、各チャネルで行われた3つのabsdiffsの最大値からグレースケール画像を作成します。

  • 次に、閉会と開会の手続きを行います。

私はあなたの要件を知らないので、考慮に入れることはできません。正確さが最も重要である場合。私はガウス型で入力画像にメジアンフィルタを使います。速度が問題であれば、少なくとも半分の処理のために入力画像を縮小し、結果を再びスケールアップします。カメラが固定された位置にあり、事前に較正された背景を持っている場合は、現在の未知の差分方法が有効になります。システムが長時間(影、植物、車両、天気などを移動する)長期間にわたる実世界環境からの動きを決定しなければならない場合、ローリング平均(またはガウス)バックグラウンドモデルがうまく機能します。カメラが動いている場合は、より多くの処理、おそらくいくつかのオプティカルフローまたはフーリエ変換テストを行う必要があります。アプリケーションに最適なソリューションを提供するには、これらのすべてを考慮する必要があります。

3

エッジ検出やコントラストストレッチアルゴリズムなどのいくつかの前処理技術を使用すると、画像を減算するための追加情報が得られます。色は同じですが、新しいオブジェクトにはエッジのようなテクスチャ機能が必要です。エッジが適切に保存されると、イメージの減算を実行するときにオブジェクトが取得されます。

プロセスフロー:

  1. エッジ検出アルゴリズムを使用します。
  2. コントラストストレッチアルゴリズム(ヒストグラムストレッチングなど)。
  3. コントラスト拡大画像の検出されたエッジトップを使用します。
  4. OpenCVの画像減算アルゴリズムを使用します。
+0

私はあなたが示唆したものを試しています。私はSobelを使ってエッジを検出し、ヒストグラムの等価性を適用しました。あなたは何を意味しているのですか? – joly

関連する問題