15

2つの画像があります

代替テキスト http://bbs.shoucangshidai.com/attachments/month_1001/1001211535bd7a644e95187acd.jpg 代替テキスト http://bbs.shoucangshidai.com/attachments/month_1001/10012115357cfe13c148d3d8da.jpg 1 つは背景画像です。同じ背景、同じサイズ、私がやりたいことは、2 番目の画像の背景を削除し、人物のプロファイルのみを抽出することです。一般的な方法は、2 番目の画像から最初の画像を差し引くことですが、私の問題は、人物の着用の色が背景に似ている場合です。減算の結果はひどいです。全員のプロフィールを取得できません。背景を削除する良いアイデアがある人は、アドバイスをください。前もって感謝します。

4

6 に答える 6

17

画像の背景を適切に見積もっている場合は、人物が写っている画像からそれを差し引くのが適切な最初のステップです。しかし、それは最初のステップにすぎません。その後、画像を分割する必要があります。つまり、画像を「背景」ピクセルと「前景」ピクセルに分割する必要があります。次のような制約があります。

  1. 前景領域では、背景画像との平均差が大きくなるはずです
  2. 背景領域では、背景画像との平均差は低くなければなりません
  3. 領域は滑らかでなければなりません。アウトラインの長さと曲率は最小限にする必要があります。
  4. 領域の境界は、ソース画像で高いコントラストを持つ必要があります

数学に精通している場合、これらの制約は Mumford-Shah 汎関数で完全にモデル化できます。詳しくはこちらをご覧ください。

しかし、おそらく他のセグメンテーション アルゴリズムを問題に適応させることができます。

高速でシンプルな (ただし完全ではない) バージョンが必要な場合は、次の方法を試してください。

  • 2つの画像を差し引く
  • バックグラウンドとフォアグラウンドの差がしきい値よりも大きいピクセルの最大連続「ブロブ」を見つけます。これは前景画像の「人物領域」の最初の概算ですが、セグメンテーションは上記の基準 3 と 4 を満たしていません。
  • 最大のブロブの輪郭を見つけます (編集:輪郭から始める必要はないことに注意してください。手順によって自動的に最適な位置に縮小されるため、より大きな多角形から始めることもできます)。
  • アウトラインの各ポイントを通過し、アウトラインを滑らかにします。つまり、各点について、式 c1*L - c2*G を最小化する点を見つけます。ここで、L は点がここに移動された場合のアウトライン ポリゴンの長さであり、G は点が移動される場所の勾配です。 c1/c2 は、プロセスを制御するための定数です。ポイントをその位置に移動します。これには、ソース イメージの勾配の低い領域 (人物の目に見える境界線) に結び付けたまま、ソース イメージの勾配の低い領域の輪郭ポリゴンを滑らかにする効果があります。L と G に対して異なる式を試すことができます。たとえば、L は長さと曲率を考慮に入れ、G は背景と減算されたイメージの勾配も考慮に入れることができます。
  • おそらく、アウトライン ポリゴンを再正規化する必要があります。つまり、アウトライン上のポイントが一定の間隔で配置されていることを確認してください。それか、前のステップでポイント間の距離が一定であることを確認してください。(「測地線ヘビ」)
  • 収束するまで最後の 2 つの手順を繰り返す

これで、表示されている人物と背景の境界線に接し、境界線が表示されていない場所やコントラストが低い場所で滑らかに続くアウトライン ポリゴンが作成されました。詳細については、 "Snakes" (例: ここ) を参照してください。

于 2010-01-21T08:24:31.087 に答える
4

画像を差し引く前に、画像をローパス フィルター (ぼかし) にかけます。次に、その差分信号をマスクとして使用して、対象のピクセルを選択します。十分に広いフィルターは、関心のあるオブジェクト内の「ひどい」領域を切り開くことになる小さすぎる (高周波) 機能を無視します。また、ピクセル レベルのノイズとミスアライメント (最も頻度の高い情報) の強調表示も減らします。

さらに、2 つ以上のフレームがある場合は、時間ヒステリシスを導入することで、時間の経過とともにより安定した関心領域を形成することもできます。

于 2010-02-05T20:36:58.723 に答える
1

背景と前景の検出は非常に主観的です。アプリケーション シナリオは、背景または前景を定義します。ただし、詳細なアプリケーションでは、人が前景であると暗黙的に言っていると思います。上記の仮定を使用して、求めるのは人物検出アルゴリズムです。考えられる解決策は次のとおりです。

  1. haar 特徴検出器と弱分類器のブースト カスケードを実行します (詳細については、opencv wikiを参照してください)。
  2. フレーム間の動き (差分) を計算する
  3. フレームに +ve 顔検出がある場合、顔の周りにモーション ピクセルをクラスター化します ( kNN アルゴリズム) 。

出来上がり...単純な人検出器が必要です。

于 2010-10-30T12:04:09.310 に答える
1

私が一般的だと思うテクニックの 1 つは、混合モデルを使用することです。多数の背景フレームを取得し、ピクセルごとにその色の混合モデルを構築します。

人物が写っているフレームを適用すると、各ピクセルの混合モデルの確率密度が与えられると、色が前景または背景である確率がいくらか得られます。

P(ピクセルが前景)とP(ピクセルが背景)を取得したら、確率画像をしきい値処理できます。

もう 1 つの可能性は、より巧妙なセグメンテーション アルゴリズムの入力として確率を使用することです。1 つの例として、グラフ カットが非常にうまく機能していることに気付きました。

ただし、人物が背景と視覚的に区別できない服を着ている場合は、明らかに上記の方法はどれも機能しません。別のセンサー (IR や UV など) を入手するか、胴体と頭であると判断した場合に正しい位置に脚を「追加」できる非常に精巧な「人物モデル」を用意する必要があります。

プロジェクト頑張ってください!

于 2010-01-21T08:10:12.707 に答える
-3

Craigslist に写真を投稿し、誰かに写真を撮ってもらうために 5 ドル支払うことを伝えます。

数分でヒットすることが保証されています。

于 2010-01-21T01:22:39.697 に答える
-3

直接減算する代わりに、両方の画像をピクセルごとにステップスルーし、まったく同じピクセルのみを「減算」することができます。ただし、もちろん、色のわずかな違いは考慮されません。

于 2010-01-21T01:28:00.500 に答える