Что такое вектор перевода и как с ним работать - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь рассчитать перевод между двумя изображениями. По сути, я делаю следующее:

CameraMatrix = LoadCameraMatrix()
FundamentalMatrix = CalculateFundamentalMatrix(points1, points2)
EssentialMatrix = CalculateEssentialMatrix(FundamentalMatrix, CameraMatrix)
translation, rotation = GetTranslationRotationFromEssential(EssentialMatrix)

print(translation)
[[-0.29258711]
 [-0.49736601]
 [ 0.81671282]]

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

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

1 Ответ

0 голосов
/ 28 октября 2019

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

Если вы знаете размеры объектов, которые выМожно рассчитать расстояние между определенными точками, которые принадлежат объекту, и сравнить его с расстоянием между ними в пикселях, чтобы масштабировать вектор перевода. См. Этот вопрос или вопрос , посвященный той же проблеме.

...