Я пытаюсь откалибровать стереокамеру с помощью OpenCV (интерфейс Python). Сначала я откалибровал две камеры отдельно с помощью 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. Есть ли что-то очевидное, что я делаю неправильно? Помощь очень ценится.
Изменить: точка и inv взяты из numpy.