に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;
は1
に3dPos[3]
を設定するには、それは間違ってますか?
注:すべての画像が再マップされている
- 、私はステップを前処理の一種で、これを行います。
- はもちろん、私はいつもあなたがそう整流カメラ内に突出している同次座標
OpenCVでこれを行う方法を知っていますか?私は解決策を見つけようとしました。何も見つかりませんでした。 – black
あなたが試したことを示してください。 –
私は2ポーズを歪ませて、問題の数式を得たはずだと理解しています。しかし、このサイト(http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html)では、特定の点を歪ませないための解決策は見つかりませんでした。マット全体に整流マップを適用する解決策があります。 – black