1

私はOpenCV 3.0stereoRectifyUncalibrated()の下の方法でステレオビジョンに取り組んでいます。

次の手順でシステムを調整します。

  1. 2 台のカメラからの画像間で SURF 特徴点を検出して一致させる
  2. findFundamentalMat()お揃いのペアで申し込む
  3. で修正同形異義語を取得しstereoRectifyUncalibrated()ます。

各カメラについて、次のように回転行列を計算します。

R1 = cameraMatrix[0].inv()*H1*cameraMatrix[0];

3D ポイントを計算するには、射影行列を取得する必要がありますが、平行移動ベクトルを推定する方法がわかりません。

私は試してみましたがdecomposeHomographyMat()、このソリューションhttps://stackoverflow.com/a/10781165/3653104が、回転行列はR1で得られるものと同じではありません。

R1/R2 を使用して修正された画像を確認すると (initUndistortRectifyMap()続いてを使用remap())、結果は正しいようです (エピポーラ線で確認しました)。

視覚に関する知識が乏しく、少し迷っています。したがって、誰かが私に説明できれば。ありがとうございました :)

4

1 に答える 1

0

あなたが提供したリンクのコード ( https://stackoverflow.com/a/10781165/3653104 ) は、回転ではなく、カメラの 3x4 ポーズを計算します。

ポーズの最後の列は Translation ベクトルです

于 2015-05-12T06:29:59.437 に答える