1

私は、Matlab で使用している 2 つの Web カメラで立体視カメラをセットアップしています。カメラを調整し、stereoParams を取得します。

次に、ユーザーが画像内のポイントを選択して、画像内の実際のポイントの位置を取得できるようにします。これには、ベースライン、焦点距離、およびピクセル視差が必要であることを知っています。ピクセルの視差がありますが、ベースラインと焦点距離を取得するにはどうすればよいですか? ベースラインは stereoParams から計算できますか?

4

3 に答える 3

0

「ピクセル」視差は、修正された画像座標で定義されます。ただし、実際のカメラは通常、正確に平行で行が揃っているわけではないため、入力カメラ画像を調整する非恒等変換があります。したがって、特定の画像に対応する他の画像のピクセルを見つけるには、修正を「元に戻す」必要があります。手順は次のとおりです。

  1. ユーザーは、たとえば左の画像でポイントを選択し、画像座標のペア (xl, yl) を取得します。
  2. それらに左整流変換を適用し、対応する左整流画像座標を取得します。一般的な線形整流法の 1 つを使用している場合、これは (xlr, ylr, wlr)' = Hlr * (xl, yl, 1)' であり、Hlr は左整流ホモグラフィです。
  3. (xlr / wlr, ylr / wlr) のマップで視差を調べ、ピクセルの視差値 d を取得します (ここでは、ステレオ アルゴリズムが X 座標の左から右への視差マップを生成すると仮定します)。
  4. 修正された右画像の一致点は、(xrr, yrr) = (d + xlr / wlr, ylr / wlr) です。
  5. 右整流変換の逆を適用して、右画像座標の対応するピクセルを取得します (xr, yr, wr)' = Hrr^-1 * (xrr, yrr, 1)'

これらの操作はすべて、各ピクセルに対して 1 回だけ実行する必要があり、キャッシュできることに注意してください。つまり、ピクセルごとに、一方の画像の座標から他方の画像の対応するピクセルまでのオフセットを生成する、「調整された」2 チャンネルの視差マップを事前に計算できます。マップ自体は画像として保存でき、そのチャネル タイプは視差の範囲に依存します。通常は、+- 32K ピクセルのオフセットを表すことができるため、短い整数で十分です。

于 2015-02-23T21:28:22.243 に答える
0

有効な視差を持つすべてのピクセルの 3D ワールド座標を提供する、 reconstructScene関数を使用できます。このでは、検出された人物の重心の 3D 座標を調べます。

于 2015-02-24T20:29:25.010 に答える