Сочетание относительных поворотов камеры и переводов с известной позой

Я использовал функцию стереокалибровки OpenCV, чтобы получить относительное вращение и перевод с одной камеры на другую. Что я хотел бы сделать, так это изменить происхождение мирового пространства и соответствующим образом обновить внешние характеристики обеих камер. Я могу легко сделать это с камерами, которые имеют общий вид с SolvePnP, но я хотел бы сделать это с камерами, в которых каждая определяется своей позой относительно соседней камеры, где все их поля не перекрываются - например, последовательное соединение их относительные позы.

Я определил положение камер относительно того, где я хотел бы, чтобы мировое происхождение и ориентация были с помощью SolvePnP, чтобы я знал, какими «должны быть» окончательные внешние элементы. Затем я попытался объединить матрицы вращения и векторы смещения из стереокалибровки с SolvePnP с основной камеры, чтобы получить одинаковое значение как с ComposeRT, так и вручную, но безрезультатно.

Редактировать: Получается, что по какой-то причине функции StereoCalibration и SolvePnP создают зеркальные версии поз, а StereoCalibration создает позы с поворотом на 180 градусов вокруг оси Y. Таким образом, применяя это вращение к полученной матрице относительного вращения и вектору смещения, все работает!


person CMGreenspon    schedule 11.10.2019    source источник


Ответы (1)


Если вы знаете относительные позы между всеми камерами через цепочку (относительные позы между камерами a, b и b, c), вы можете комбинировать перемещения и повороты с камеры a на c через b с помощью

Rac = Rab Rbc

tac = tab + Rab тдо н.э.

Другими словами, новый поворот от ac сначала вращается от a до b, а затем от b до < эм>с. Перевод вычисляется таким же образом, кроме того, второй вектор перевода должен быть повернут на Rab.

Ожидается некоторая ошибка, в зависимости от того, насколько точна ваша попарная калибровка. Ошибки в позе камеры накапливаются по цепочке. Если у вас есть позы камеры, делающие полный круг, вы, как правило, не получаете точно такие же позы для начальной/конечной камеры.

person sebasth    schedule 11.10.2019
comment
Так что это именно то, что я пытался сделать, но, к сожалению, это просто не работает - отсюда и мое замешательство. Зная, что теоретически я поступал правильно, я только что проверил график, который я сделал для поз, и я подозреваю, что проблема частично связана со стереокалибрацией, но теперь я уверен, как это сделать. На этом изображении видно, что позы кажутся похожими, но что они смотрят в неправильном направлении по оси Z. - person CMGreenspon; 11.10.2019