私はOpenCV 3.0stereoRectifyUncalibrated()
の下の方法でステレオビジョンに取り組んでいます。
次の手順でシステムを調整します。
- 2 台のカメラからの画像間で SURF 特徴点を検出して一致させる
findFundamentalMat()
お揃いのペアで申し込む- で修正同形異義語を取得し
stereoRectifyUncalibrated()
ます。
各カメラについて、次のように回転行列を計算します。
R1 = cameraMatrix[0].inv()*H1*cameraMatrix[0];
3D ポイントを計算するには、射影行列を取得する必要がありますが、平行移動ベクトルを推定する方法がわかりません。
私は試してみましたがdecomposeHomographyMat()
、このソリューションhttps://stackoverflow.com/a/10781165/3653104が、回転行列はR1で得られるものと同じではありません。
R1/R2 を使用して修正された画像を確認すると (initUndistortRectifyMap()
続いてを使用remap()
)、結果は正しいようです (エピポーラ線で確認しました)。
視覚に関する知識が乏しく、少し迷っています。したがって、誰かが私に説明できれば。ありがとうございました :)