Структура от движения

Структура от движения (SfM) является процессом оценки 3-D структуры сцены из набора 2D изображений. SfM используется во многих приложениях, таких как 3-D сканирование и дополненная реальность.

SfM может быть вычислен многими различными способами. Путь, которым вы приближаетесь к проблеме, зависит от различных факторов, таких как номер и тип камер, используемых, и упорядочены ли изображения. Если изображения взяты с одной калиброванной камерой, то 3-D структурой и движением камеры может только быть восстановленный up to scale. up to scale означает, что можно перемасштабировать структуру и величину движения камеры и все еще обеспечить наблюдения. Например, если вы помещаете камеру близко к объекту, вы видите то же изображение как тогда, когда вы увеличиваете объект и перемещаете камеру далеко. Если вы хотите вычислить фактическую шкалу структуры и движения в мировых единицах измерения, вам нужна дополнительная информация, такая как:

  • Размер объекта в сцене

  • Информация от другого датчика, например, одометра.

Структура от движения от двух представлений

Для простого случая структуры от двух стационарных камер или одной движущейся камеры, одно представление должно быть рассмотрено камерой 1 и другой одной камерой 2. В этом сценарии алгоритм принимает, что камера 1 в начале координат, и его оптическая ось простирается вдоль z - ось.

  1. SfM требует соответствий точки между изображениями. Найдите соответствующие точки или путем соответствия с функциями или отслеживания точек от изображения 1, чтобы отобразить 2. Покажите методы отслеживания, такие как алгоритм Kanade-Lucas-Tomasi (KLT), работайте хорошо, когда камеры будут близко друг к другу. Когда камеры перемещаются далее независимо, алгоритм KLT ломается, и функция, соответствующая, может быть использована вместо этого.

    Расстояние между камерами (базовая линия)Метод для нахождения соответствий точкиПример
    ШирокийСовпадайте с функциями с помощью matchFeaturesПоиск Поворота и Масштаба Изображения с Помощью Автоматического Сопоставления Объектов
    УзкийОтследите функции с помощью vision.PointTrackerСтолкнитесь с обнаружением и отслеживающий Используя алгоритм KLT

  2. Чтобы найти положение второй камеры относительно первой камеры, необходимо вычислить основную матрицу. Используйте соответствующие точки, найденные на предыдущем шаге для расчета. Основная матрица описывает epipolar геометрию этих двух камер. Это связывает точку в одной камере к epipolar линии в другой камере. Используйте estimateFundamentalMatrix функционируйте, чтобы оценить основную матрицу.

  3. Введите основную матрицу к relativeCameraPose функция. relativeCameraPose возвращает ориентацию и местоположение второй камеры в системе координат первой камеры. Местоположение может только быть вычислено, чтобы масштабироваться, таким образом, расстояние между двумя камерами установлено в 1. Другими словами, расстояние между камерами задано, чтобы быть 1 модулем.

  4. Определите 3-D местоположения совпадающих точек с помощью triangulate. Поскольку положение предоставлено право масштабироваться, когда вы вычисляете структуру, оно имеет правильную форму, но не фактический размер.

    triangulate функционируйте берет две матрицы камеры, которые можно вычислить использование cameraMatrix.

  5. Используйте pcshow отобразить реконструкцию и использовать plotCamera визуализировать положения камеры.

Чтобы восстановить шкалу реконструкции, вам нужна дополнительная информация. Один метод, чтобы восстановить шкалу должен обнаружить объект известного размера в сцене. Структура От Движения Из Двух примеров Представлений показывает, как восстановить шкалу путем обнаружения сферы известного размера в облаке точек сцены.

Структура от движения от нескольких представлений

Для большинства приложений, таких как робототехника и автономное управление автомобилем, SfM использует больше чем два представления.

Подход, используемый в SfM от двух представлений, может быть расширен для нескольких представлений. Набор нескольких представлений, используемых в SfM, может быть упорядочен или не упорядочен. Подход, проявленный здесь, принимает упорядоченную последовательность представлений. SfM от нескольких представлений требует соответствий точки через повторные изображения, названные tracks. Типичный подход должен вычислить дорожки из попарных соответствий точки. Можно использовать imageviewset управлять попарными соответствиями и найти дорожки. Каждая дорожка соответствует 3-D точке в сцене. Чтобы вычислить 3-D точки из дорожек, используйте triangulateMultiview.

Используя подход в SfM от двух представлений, можно найти положение камеры 2 относительно камеры 1. Чтобы расширить этот подход к нескольким просматривают случай, находят положение камеры 3 относительно камеры 2, и так далее. Относительные положения должны быть преобразованы в общую систему координат. Как правило, все положения камеры вычисляются относительно камеры 1 так, чтобы все положения были в той же системе координат. Можно использовать imageviewset управлять положениями камеры. imageviewset объектно-ориентированная память представления и связи между представлениями.

Каждая оценка положения камеры от одного представления до следующего содержит ошибки. Ошибки являются результатом неточной локализации точки в изображениях, и от шумных соответствий и неточной калибровки. Эти ошибки накапливаются как количество увеличений представлений, эффект, известный как drift. Один способ уменьшать дрейф, должен совершенствовать положения камеры и 3-D местоположения точки. Нелинейный алгоритм оптимизации, названный bundle adjustment, реализован bundleAdjustment функционируйте, может использоваться в улучшении.

Структура От Движения Из Двух примеров Представлений показывает, как восстановить 3-D сцену из последовательности 2D представлений. Пример использует приложение Camera Calibrator, чтобы калибровать камеру, которая получает представления. Это использует imageviewset возразите, чтобы сохранить и управлять данными, сопоставленными с каждым представлением.

Смотрите также

Приложения

Функции

Объекты

Похожие темы