2016-05-01 18 views
1

に2D点を三角測量とは異なる座標(pointR)の私のステレオカメラはフィーチャマッチングを使っています2台のカメラは平行で、同じ高さにあります。それらの間にはx-翻訳しかありません。OpenCVの立体視3Dは、私は左カメラ(<em>またpointl</em>)における像点と右のカメラに対応する画像点を取得2Dカメラ平面投影に3D

私もinitUndistortRectifyMapを使用して較正中に得た各カメラ(projL、projR)、のための投影行列を知っています。点を三角測量ため

、私が電話で triangulatePoints(projL, projR, pointL, pointR, pos3D)documentation)、pos3Dオブジェクトの出力三次元位置です。

ここで、Iは左カメラの2次元画像プロジェクト3D座標をしたい:

2Dpos = projL * 3dPos

得られたx座標が正しいです。しかし、y座標は約20ピクセルの間違っています。

どうすればこの問題を解決できますか?

編集:もちろん 、Iは、射影行列(3×4)とを乗算するために、同次座標を使用する必要があります。そのため、私が設定:

3dPos[0] = x; 
3dPos[1] = y; 
3dPos[2] = z; 
3dPos[3] = 1; 

13dPos[3]を設定するには、それは間違ってますか?

注:すべての画像が再マップされている

  1. 、私はステップを前処理の一種で、これを行います。
  2. はもちろん、私はいつもあなたがそう整流カメラ内に突出している同次座標

答えて

1

を使用しています。整流ワープの逆数を適用して元の(ひずみのない)線形カメラ座標内の点を取得し、歪みを適用して元の画像にする必要があります。

+0

OpenCVでこれを行う方法を知っていますか?私は解決策を見つけようとしました。何も見つかりませんでした。 – black

+0

あなたが試したことを示してください。 –

+0

私は2ポーズを歪ませて、問題の数式を得たはずだと理解しています。しかし、このサイト(http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)では、特定の点を歪ませないための解決策は見つかりませんでした。マット全体に整流マップを適用する解決策があります。 – black

関連する問題