0

私は3台のカメラすべてが以下に示すように同一線上に配置されているパラレルな三眼眼科のセットアップをしています。3眼ステレオのマージン深度マップ

左カメラ------------センターカメラ---------------------------- -----右カメラ

左カメラと中央カメラ間のベースライン(カメラ間距離)が最も短く、左右カメラ間のベースラインが最も長くなります。

理論的には、異なるカメラの組み合わせ(L-R、L-C、C-R)を使って3セットの視差画像を得ることができます。私は3つの深さマップを持っています。

LCコンビネーションは、近くにあるオブジェクト(ベースラインが短いため)の精度が高い(測定距離がより正確です)一方、 は、LRコンビネーションが遠いオブジェクト(ベースラインが長いため)。同様に、C-Rの組み合わせは、中距離の物体に対して正確である。

ステレオ設定では、通常、左(RGB)画像を基準画像として定義します。私のプロジェクトでは、深さの値を閾値化することによって、参照画像にROIを取得します。たとえば、10〜20mの間の奥行き値を持つすべてのピクセルを見つけ、それぞれのピクセル位置を見つけます。この場合、3D点と対応するピクセル位置との間に関係があります。

通常のステレオ設定では、ベースライン(近、遠)に応じて2つの領域のうちの1つに対してのみ深度の精度を高めることができるため、3台のカメラを使用する予定です。これは、3つの領域(近、中、遠)の3D点をより正確に生成するのに役立ちます。

ここで、3つの深度マップをマージしてグローバルマップを取得します。私の問題は以下の通りです。

  1. どのように3つの深さマップをマージしますか?
  2. マージ後、どの深度の値が参照(左RGB)イメージのどのピクセル位置に対応するのかをどのように知ることができますか?

あなたの助けに感謝します:)

答えて

0

1)私はあなたがグローバル2Dの深さマップを考えている場合は、単純な値の行列)として(デプスマップの「マージ」は、可能ではないと思われます深度値の画像またはマトリックスとして表示することができる。代わりに、3D点の3つのセットを距離のようないくつかの類似基準(ポイントクラウドの精緻化)とマージすることを検討できます。彼らはあまりにも接近している場合は、テーマの1(擬似コード)

for i in range(points): 
for j in range(i,points): 
    if distance(i,j) < treshold 
    delete(j) 

を削除するか、2ポイントを削除し、ポイント1からの平均座標

2)を持つポイントを追加し、この質問は、どのように接続するには」になりました左の画像内の関連ピクセルへの3D点」(これは唯一の解釈である)である。 答えは簡単です:投影方程式を使用します。左側のカメラのキャリブレーションからK(固有行列)、R(回転行列)とT(並進ベクトル)がある場合、3×4マトリックスに

[R|t] 

をRとtを結合した後にM 3D点を結びます4次元座標(X、Y、Z、1)m個の点(Uは、V、W)は、その第によって

m = K*[R|t]*M 

除算M W座標とあなたが

m = (u', v', 1) 

を得るようU」 v 'は左画像の画素座標である。

+0

ありがとう@marcoresk。 3Dポイントクラウドをマージするためには、最も近いネイバーまたは何らかの距離測定を使用することができます。 しかし、私のカメラは静的ではない、私は固有の行列Kを持っていますが、どのようにRとTを見つけるのですか?私はあらかじめ定義されたワールド座標系を持っていません。もし私が素朴に聞こえたら、私はまだ学習中です –

+0

@Beginner_In_Image_あなたは歓迎しています、私はあまりにも学習の過程にあります。私は文章「3つのカメラすべてが「3つのカメラの逆の位置/向きは、左側のカメラに関して固定されている」を意味する平行三つ眼のセットアップを有する」と仮定した。私は、視差のセットが時間的に「凍った」単一のフレームである「静的」オブジェクトであるとも仮定しました。したがって、[this](https://github.com/opencv/opencv/blob/master/samples/cpp/stereo_calib.cpp)のようなステレオキャリブレーションのいくつかの手順を実行することで、Rとteを取得できます。あなたのワールド座標系は左カム – marcoresk

+0

@Beginner_In_Image_Processingで起点として設定されています。あなたが(前のコメントでは剛性と仮定された)三眼系を動かしたときに、別の瞬間に得られたポイントをマージする必要がある場合、次回は、あなたのカメラが動いているかどうかを指定してください。私の答えを感謝したなら、それを受け入れることを検討してください。 – marcoresk

関連する問題