Определить поворот камеры и матрицу перевода из основной матрицы

Я пытаюсь извлечь матрицу вращения и матрицу перевода из основной матрицы. Я взял эти ответы в качестве ссылки:

Правильный способ извлечь перевод из Essential Matrix через SVD

Извлечь перевод и вращение из фундаментальной матрицы

Теперь я сделал вышеупомянутые шаги, применяя SVD к основной матрице, но здесь возникает проблема. Согласно моему пониманию по этому вопросу, у R и T есть два ответа, что приводит к 4 возможным решениям [R|T]. Однако только одно из решений будет соответствовать физической ситуации.

У меня вопрос, как я могу определить, какое из 4 решений является правильным?

Я просто новичок в изучении положения камеры. Поэтому, если возможно, пожалуйста, сделайте ответ максимально четким (но простым). Любое предложение будет оценено, спасибо.

1 ответ

Решение

Самым простым является тестирование 3D-положения точки с использованием возможного решения, то есть восстановленная точка будет находиться перед обеими камерами только в одном из 4 возможных решений. Таким образом, предполагая, что одна матрица камеры имеет вид P = [I|0], у вас есть 4 варианта для другой камеры, но только одна из пар поместит такую ​​точку перед ними.

Подробнее о геометрии множественных видов Хартли и Циссермана (стр. 259)

Если вы можете использовать Opencv (версия 3.0+), вы рассчитываете с помощью функции "recoveryPose", эта функция сделает эту работу за вас.

Ссылка: документация OpenCV, http://docs.opencv.org/trunk/modules/calib3d/doc/calib3d.html

Другие вопросы по тегам