Зная повороты и перемещения двух камер в мировых координатах (относительно некоторой известной точки), как мне откалибровать мою стереосистему?
В OpenCV нормальным подходом является использование калибровочного шаблона перед обеими камерами для получения точечных соответствий. Эти точки используются в stereoCalibrate
, который вычисляет матрицу вращения R
и вектор перевода T
(и фундаментальную матрицу F
). На следующем этапе можно выполнить стереопрямление, чтобы выровнять изображения обеих камер с помощью stereoRectify
. stereoRectify
необходимо R
и T
для расчета гомографий для перспективного преобразования изображений, а также для вычисления Q
-матрицы для перевода диспаратности в глубину.
Ситуация, когда R
и T
в мировой системе координат уже известны (известно вращение вокруг оси z (угол пола-потолка или угол рыскания в аэрономии) и вращение вокруг оси, перпендикулярной вид камеры (угол наклона)), в какой системе координат им следует присваивать stereoRectify
? Я имею в виду, что есть система координат Camera1, Camera2 и (или одна) мировая система координат.
Вычисление существенной матрицы E
может быть выполнено с помощью R * S
, где S
- это кососимметричная матрица T
и фундаментальная матрица F
с M_r.inv().t() * E * M_l.inv()
после LearningOpenCV 3 от Kaehler и Брадски (M_r и M_l - это внутренняя сторона камеры правой и левой камеры соответственно). Здесь вопрос о R
и T
одинаков. Это вращение от одной камеры к другой в мировых координатах или, например, в системе координат одной камеры?
Эскиз задействованных систем координат можно найти здесь:
Как ориентирована система координат камеры в OpenCV? , однако мне все еще неясно, как именно следует вычислять R
и T
.