2011-09-05 6 views
9

目的は、別の背景に人物を表示することです(バックグラウンド除去とも呼ばれます)。Kinectを使用した背景除去:ボディ形状の周囲のノイズ抑制

私はMicrosoftのベータKinect SDKでKinectを使用しています。深みの助けを借りて、背景はフィルタリングされ、人物の画像のみが取得されます。

これは非常に簡単で、インターネット上のいたる所でそれを行うコードを見つけることができます。しかし、奥行き信号はノイズが多く、表示される人物に属さないピクセルが得られます。

私はそれが有用であったかどうかを確認するためにエッジ検出器を適用し、私は現在、この取得:

をここでは、エッジ検出せずに別です:

enter image description here

私の質問は次のとおりです。どのように私は人の周りのこれらの騒々しい白いピクセルを取り除くことができますか?

私は形態学的操作を試みましたが、体のいくつかの部分が消去され、白いピクセルが残っていました。

アルゴリズムはリアルタイムである必要はなく、[画像を保存]ボタンを押したときに適用できます。

編集1:

私は、形状境界上の最も近いフレームと背景substractionを実行しようとしました。あなたが見る単一のピクセルはちらつきです。つまり、ノイズであり、簡単に取り除くことができます。

編集2:

プロジェクト超える今であり、ここでは私たちがやったことだ:直接赤外線画像を提供OpenNIドライバを使用してのKinectの手動校正。結果は本当に良いですが、各校正は各Kinectに固有のものです。

次に、境界線を少し透明にして、結果が本当に素晴らしいように見えます。しかし、私は写真を提供することはできません。

+1

エッジ検出器を適用する前に画像を投稿できますか? – misha

+1

ちょうどそれが追加されました。 – wormsparty

+0

はコード – ravithejag

答えて

5

あなたの問題は、ノイズの多い白いピクセルだけではありません。その人の重要な部分も欠落しています(例:彼の右手の一部。私はあなたの深さデータの閾値処理(より誤ったポジティブを許す)でより慎重にすることをお勧めします。これは、より多くのノイズの多いピクセルを与えるだろうが、少なくともあなたはその人を完全に持つだろう。ノイズの多いピクセルを取り除くために

、私は物事のカップルを考えることができます。

  • フェザー外側のピクセル(あなたはアルファチャンネルを使用している場合は、その透明性を高める/強度でそれらを減らす)
  • イメージを滑らかにし、スムージングされたイメージでエッジ検出を実行し、これらのエッジを元のシャープイメージで使用します。
  • 人に確実に属している部分にマークを付けるために、肌領域検出を行います。 skin detection in the YUV color space?Skin Color Detection
  • を参照してください。衣服の場合は、色相と彩度画像で作業してください。あなたがTシャツの色を知っていれば(少なくともニュートラルな色ではない)、これは簡単に目立ちます。この情報がわからない場合は、他のフレームを使用している人物のモデルを構築する価値があるかもしれません(ビデオ内で動き回っている大きな灰色の塊がある場合は、対象が灰色のシャツを着ている可能性があります)

これらのアプローチは互いに排他的なものではないので、それらを組み合わせて実行する価値があります。他に何かを考えたら、私はここに戻ってきます。

+0

ありがとう、私は明日あなたの考えを見ていきます。見つからない人の部分については、私はSDKの人検出を使用するので、私はそれを制御することはできません。私が自分のバージョンを書いたとしても、腕のエッジや髪の毛のように、奥行き信号が非常に騒々しいときにこれらのエラーが発生します。時々、頭のいくつかの部分では、私は容易に回復できない深さ0を得る。 – wormsparty

2

エッジのジッタを解決する他の方法がない場合、アンチエイリアスは常に後処理として試すことができます。

関連する問題