OpenCV(Pythonインターフェイス)を使用してステレオカメラを調整しようとしています。最初に2台のカメラをcalibrateCamera2で別々にキャリブレーションし、次にパラメーターをstereoCalibrateにフィードしました
cv.StereoCalibrate(object_points, image_points_left, image_points_right, \
point_counts, intrinsic_left, distortion_left,\
intrinsic_right, distortion_right, \
(IMGRES_X,IMGRES_Y), R, T, E, F, \
term_crit=(cv.CV_TERMCRIT_ITER+cv.CV_TERMCRIT_EPS, 100, 1e-8),\
flags=cv.CV_CALIB_FIX_INTRINSIC)
(OpenCVブックで説明されているように)エピポーラ制約を使用して結果を確認すると、平均誤差は約0.0039になります。
原則として、基本マトリックスと基本マトリックスをカメラマトリックスと関連付けることができるはずです。だから私がすることは:
Mr = asarray(intrinsic_right,dtype=float64)
Ml = asarray(intrinsic_left,dtype=float64)
E = asarray(E)
F = asarray(F)
F2 = dot(dot(inv(Mr).T,E),inv(Ml))
ただし、結果の行列F2はFにまったく似ていません。私が間違っていることは明らかですか?ヘルプは大歓迎です。
編集: dotとinvはnumpyからのものです。