У меня есть эталонное изображение A с известным положением, и я хочу вычислить относительное положение камеры на изображении B (то есть tx, ty, tz в метрах). Изображения сняты одной и той же камерой, поэтому матрица камеры остается неизменной. Я использую SIFT для обнаружения и вычисления ключевых точек и дескрипторов на обоих изображениях и сопоставления их с FLANN. Оттуда я могу получить матрицу гомографии, которую я разлагаю с помощью cv :: degposeHomography (..). Эта функция основана на этой статье: PDF.
В этой статье говорится, что матрица перевода нормирована на d *, которая является глубиной плоскости.
Чтобы получить правильный перевод, мне нужно знать глубину плоскости. Есть ли способ получить это, не зная размера объекта, найденного на изображении?
Трехмерный перевод, вычисленный с использованием гомографической декомпозиции, рассчитывается только до неизвестного масштабного коэффициента. Это классическая проблема с вычислением трехмерной геометрии из монокулярных изображений, используя только видимое движение в изображениях. По этой причине, как правило, трехмерные реконструкции по монокулярным изображениям называются метрическими реконструкциями (а не евклидовыми реконструкциями, в которых разрешается масштаб). Чтобы разрешить масштабный коэффициент, требуется дополнительная информация, например, знать глубину точки на плоскости или расстояние, перемещаемое камерой между изображениями.
Других решений пока нет …