Оценить движение монокулярной камеры

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

У меня есть монокуляр и неизвестное слово. У меня есть внутренние параметры и параметры искажения. У меня есть особенности и соответствия. Итак, я ищу вращение и перевод между двумя кадрами. Я бы хотел рассматривать свое первое изображение как начало осей XYZ.

Я использую фундаментальную матрицу и существенную матрицу, чтобы найти внешние параметры (R, T), но я не уверен. У меня были такие результаты:

R [0.040437..., 0.116076..., -0.992416..., 0.076999..., -0.99063..., -0.112731..., -0.996211.., -0.071848.., -0.048994...] T [0.6924183...; 0.081694...; -716885...]

Как я могу проверить, хороши ли они?

Я рассчитал евклидово расстояние, чтобы увидеть расстояние в 3D, но у меня были ошибочные значения.

Пожалуйста, кто-нибудь может дать мне некоторые подробности или направить меня? Надеюсь, я хорошо объяснил.

С Уважением


person user1553010    schedule 25.07.2012    source источник


Ответы (2)


Вы имеете в виду мир под словом? Этот вопрос также не относится к теме stackoverflow, поскольку он касается теории, а не кода.

https://stackoverflow.com/faq

Чтобы ответить на ваш вопрос. Если вы и R и T, вы можете вычислить 3D координату для каждой точки. Исходя из этого, вы можете перепроецировать каждую точку на другую камеру и вычислить остаточную ошибку между наблюдаемой и предсказанной точкой. Если ошибка находится в пределах одного пикселя или около того, вероятно, это действительно так.

person lessthanoptimal    schedule 25.07.2012
comment
Да, я имею в виду мир, извините. Забыл сказать, что использую OpenCV! Итак, с помощью R и T я должен найти матрицу проекции и использовать triangulatePoint (), чтобы найти трехмерную координату для каждой точки, как вы сказали. Могу ли я использовать SolvePnP () для перепроецирования? Я прав? - person user1553010; 26.07.2012

По сути, таким образом у вас будет неизвестный масштабный коэффициент для каждого последовательного кадра, поэтому вы можете получить странные значения для R и T. Но вы можете использовать некоторую инициализацию, например известное движение, для выполнения первой триангуляции сцены. Затем вы можете использовать resolvePnP для вычисления следующего [R | T].

Попробуйте прочитать про PTAMM, который является одной из самых интересных реализаций монокулярного SLAM.

http://www.robots.ox.ac.uk/~bob/research/research_ptamm.html

person Michael Kupchick    schedule 11.12.2012