2017-01-25 29 views
0

画像内の前景オブジェクトの視差マップを抽出しようとしています。フォアグラウンドオブジェクトはカラーを使用して抽出され、最終目的は抽出されたオブジェクトの座標を決定することです。以下は、赤みを帯びたオブジェクトとビューのマスクされた左の画像は前景マスク画像の視差マップ

enter image description here

を抽出し、その後、右の画像

enter image description here

がある背景には、基本的に私はなりたい巨大なウィンドウです無視され、私は赤い(または私が後に選択する色)オブジェクトの位置を見つけることだけを気にします。 OpenCVの例ではSGBMアルゴリズムのパラメータで遊ん後

、主に

int SADWindowSize 
int minDisparity 
int numberOfDisparities 

私はより正確なアルゴリズムは均一で非常にうまく対処することができませんでした、満足のいく結果を得ることができませんでしたマスクされた部分の質感。説明するために2つの例を掲載します。最も顕著な結果が得られるので、これらの例では、SADWindowSizeが唯一のパラメータです。

例1:小さなウィンドウサイズ= 23及び視差数= 64

enter image description here

有する:小さなウィンドウサイズ= 9と視差数= 64

enter image description here

例2

ウィンドウのサイズが大きくなると、結果がより鮮明になり、望ましくない結果になります。

質問:ディスパリティマップを計算するときにバックグラウンドをマスクするのは間違ったアプローチですか?別の方法として、ディスパリティマップを計算してからマスクを適用する方法がありますが、この場合の結果の妥当性についてはわかりません。

カメラと較正された画像、および画像(およびマスク)は修正されています。

答えて

2

深度マップを計算する前にマスキングすることは意味がありません。なぜならアルゴリズムは対応するピクセルを見つけるために指定されたスペースを比較する必要があるからです。マスクを使用すると、黒いピクセルがたくさんあるため情報が不足します。だからあなたが試しているのはわかりやすいですが、アプリケーションはどのピクセルが同じ点を表すのかを簡単に判断できません。

私は、あなたがあなたが期待しているものを得るために、視差の左のビューのためにマスクを使用する場合は確信していません。または、reprojectImageTo3D()の出力をマスクします。

+0

あなたのロジックは正しいです、私はこの点を逃した。ありがとうございました。 –

関連する問題