exponenta event banner

Обзор визуального SLAM

Визуальная одновременная локализация и отображение (vSLAM) относится к процессу вычисления положения и ориентации камеры по отношению к её окружению при одновременном отображении среды. Процесс использует только визуальные входные данные с камеры. Приложения для визуального SLAM включают дополненную реальность, робототехнику и автономное вождение.

Визуальные алгоритмы SLAM широко подразделяются на две категории в зависимости от того, как они оценивают движение камеры. Косвенный метод, основанный на характеристиках, использует характерные точки изображений, чтобы минимизировать ошибку обратного впрыска. Прямой метод использует общую яркость изображений для минимизации фотометрической ошибки. Алгоритмы Computer Vision Toolbox™ обеспечивают функции для выполнения визуального SLAM на основе функций. Рабочий процесс состоит из инициализации карты, отслеживания, локального сопоставления, обнаружения петель и коррекции дрейфа.

Примечание

Последовательность операций, описанная в этом обзоре, применяется к изображениям, сделанным камерой с точечным отверстием. Чтобы использовать визуальный поток операций SLAM с изображениями, сделанными камерой «рыбий глаз», преобразуйте камеру «рыбий глаз» в виртуальную камеру-микроотверстие с помощью undistortFisheyeImage функция.

Термины, используемые в Visual SLAM

В литературе Visual SLAM используются следующие общие термины:

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

  • Точки карты - список 3-D точек мира, которые представляют карту среды, реконструированную из ключевых кадров.

  • Covisibility Graph - граф ключевых кадров как узлов. Два ключевых кадра соединяются ребром, если они имеют общие точки карты. Вес кромки - это количество общих точек карты.

  • База данных распознавания (Recognition Database) - база данных, в которой хранится визуальное сопоставление «слово-изображение» на основе входного пакета элементов. Определите, посещалось ли место в прошлом, путем поиска в базе данных изображения, которое визуально похоже на изображение запроса.

Типичный рабочий процесс Visual SLAM на основе функций

Чтобы создать визуальный SLAM-конвейер на основе элементов для последовательности изображений, выполните следующие действия.

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

  2. Функции отслеживания - для каждого нового кадра оцените позу камеры, сопоставив функции в текущем кадре с функциями в последнем ключевом кадре.

  3. Создать локальную карту - если текущий кадр определен как ключевой, создайте новую 3-D карту точек. Используйте регулировку пучка для уточнения позы камеры и точек 3-D.

  4. Обнаружение петель - обнаружение петель для каждого ключевого кадра путем сравнения текущего кадра со всеми предыдущими ключевыми кадрами с использованием подхода «пакет функций».

  5. Правильный дрейф - оптимизируйте график позы для коррекции дрейфа в позициях камеры всех ключевых кадров.

На рисунке показан типичный визуальный рабочий процесс SLAM на основе функций. Он также показывает точки, в которых данные хранятся или извлекаются из объектов, управляющих данными.

Flow chart diagram showing map initialization, tracking, local mapping, loop detection, and drift correction.

Управление данными ключевых кадров и карт

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

  • Используйте imageviewset объект для управления данными, связанными с процессом одометрии и отображения. Объект содержит данные в виде набора представлений и попарных соединений между представлениями. Объект также можно использовать для построения и обновления графика позы.

    • Каждый вид состоит из абсолютной позы камеры и характерных точек, извлеченных из изображения. Каждое представление с его уникальным идентификатором (ИД вида) в наборе представлений образует узел графа позы.

    • В каждом соединении хранится информация, связывающая одно представление с другим. Соединение включает в себя индексы согласованных элементов между представлениями, относительное преобразование между связанными представлениями и неопределенность при вычислении измерения. Каждое соединение образует ребро в графе позы.

    • Использовать rigid3d ввод объекта с imageviewset для хранения абсолютных поз камеры и относительных поз камеры краев одометрии. Использовать affine3d ввод объекта с imageviewset для хранения относительных позиций камеры контуров замыкания.

  • Используйте worldpointset объект для хранения соответствий между точками карты 3-D и точками изображения 2-D на всех видах камеры.

    • WorldPoints имущество worldpointset сохраняет 3-D местоположения точек карты.

    • Correspondence имущество worldpointset сохраняет идентификаторы видов ключевых кадров, наблюдающих точки карты.

Инициализация карты

Для инициализации сопоставления необходимо сопоставить элементы между двумя изображениями, оценить относительную позу камеры и триангулировать начальные точки 3-D мира. В этом рабочем процессе обычно используются функции ускоренного создания надежных элементов (SURF) и ориентированного FAST и повернутого BRIEF (ORB). Процесс инициализации карты состоит из обнаружения, извлечения и сопоставления элементов, а затем поиска относительной оценки позы камеры, поиска 3-D местоположений соответствующих элементов и уточнения начальной карты. Наконец, сохраните полученные ключевые кадры и отображенные точки в наборе видов изображения и наборе точек мира соответственно.

Технологический процессФункцияОписание
ОбнаружитьdetectSURFFeaturesОбнаружение элементов SURF и возврат SURFPoints объект.
detectORBFeaturesОбнаружение функций ORB и возврат ORBPoints объект.
ИзвлечениеextractFeaturesИзвлеките векторы элементов и их соответствующие расположения в двоичном изображении или изображении интенсивности.
МатчmatchFeatures Получение индексов совпадающих элементов между двумя наборами элементов.
Оценка относительного положения камеры по соответствующим характерным точкамestimateGeometricTransform2D Вычислите гомографию из совпадающих пар точек.
estimateFundamentalMatrix Оценка фундаментальной матрицы по парам точек согласования.
relativeCameraPose Вычислить относительные позы камеры, представленные как rigid3d объект, основанный на гомографии или фундаментальной матрице. Местоположение можно вычислить только до масштаба, поэтому расстояние между двумя камерами устанавливается равным 1.
Поиск 3-D расположений совпадающих точек элементаtriangulate Найдите 3-D расположения совпадающих пар неискаженных точек изображения.
Уточнение начальной картыbundleAdjustment Уточните 3-D точки карты и позы камеры, которые минимизируют ошибки обратного впрыска.
Управление данными для начальной карты и ключевых кадровaddView Добавьте два вида, образованные точками элемента и их абсолютными позициями, к imageviewset объект.
addConnection Добавьте кромку одометрии, определяемую соединением между последовательными ключевыми видами, образованными относительным преобразованием позы между камерами, к imageviewset объект.
addWorldPoints Добавление начальных точек карты к worldpointset объект.
addCorrespondences Добавьте 3-D для 2-D соответствия проекции между ключевыми кадрами и точками карты worldpointset объект.

Отслеживание

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

Технологический процессФункцияОписание
Сопоставить извлеченные элементыmatchFeaturesСопоставьте извлеченные элементы из текущего кадра с элементами в последнем ключевом кадре, которые имеют известные 3-D расположения.
Оценка позы камерыestimateWorldCameraPoseОценка текущей позы камеры.
Точки карты проектаworldToImageСпроецируйте точки карты, наблюдаемые последним ключевым кадром, в текущий кадр.
Поиск соответствий элементовmatchFeaturesInRadiusПоиск соответствий элементов в пространственных ограничениях.
Уточнение позы камерыbundleAdjustmentMotionУточните позу камеры с 3-D, чтобы 2-D соответствие, выполнив настройку пучка только для движения.
Определение локальных точек карты

findWorldPointsInView

findWorldPointsInTracks

Определите точки на виде и точки, соответствующие дорожкам точек.
Поиск дополнительных соответствий функцийmatchFeaturesInRadiusПоиск дополнительных соответствий элементов в текущем кадре, содержащем спроецированные локальные точки карты.
Уточнение позы камеры bundleAdjustmentMotionУточните позу камеры с 3-D, чтобы 2-D соответствие, выполнив настройку пучка только для движения.
Сохранить новый ключевой кадр

addView

addConnection

Если определено, что текущий кадр является новым ключевым кадром, добавьте его и его соединения с скрытыми ключевыми кадрами в imageviewset.

Сопоставление функций имеет решающее значение в рабочем процессе отслеживания. Используйте matchFeaturesInRadius функция для возврата большего количества предполагаемых совпадений, когда доступна оценка положений совпадающих характерных точек. В рабочем процессе используются две функции совмещения функций:

  • matchFeatures - возвращает индексы соответствующих элементов в двух наборах входных элементов.

  • matchFeaturesInRadius - возвращает индексы совпадающих элементов, удовлетворяющие пространственным ограничениям, в двух наборах входных элементов.

Чтобы получить большее количество совпадающих пар элементов, увеличьте значения для MatchThreshhold и MaxRatio аргументы «имя-значение» matchFeatures и matchFeaturesInRadius функции. Пары отклонений могут быть отброшены после выполнения корректировки пучка на этапе локального отображения.

Локальное сопоставление

Выполнение локального сопоставления для каждого ключевого кадра. Выполните следующие действия для создания новых точек карты.

Технологический процессФункцияОписание
Подключить ключевые кадры connectedViewsНайдите скрытые ключевые кадры текущего ключевого кадра.
Поиск совпадений в подключенных ключевых кадрахmatchFeaturesДля каждой точки отличия в текущем ключевом кадре используйте matchFeatures функция для поиска совпадения с другими непревзойденными точками в скрытых ключевых кадрах.
Вычислить расположение для новых совпаденийtriangulateВычислите 3-D расположения совпадающих точек элемента.
Сохранить новые точки картыaddWorldPointsДобавление новых точек карты в worldpointset объект.
Сохранить 3-D для 2-D соответствийaddCorrespondencesДобавление новых 3-D к 2-D соответствиям worldpointset объект.
Обновление соединения одометрииupdateConnectionОбновите соединение между текущим ключевым кадром и его скрытыми кадрами с помощью большего количества совпадений функций.
Уточнить позуbundleAdjustment

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

Используйте minNumMatches аргумент connectedViews функция для выбора сильно соединенных ковисных ключевых кадров.

Удаление отклоненийremoveWorldPointsУдалить точки карты отклонений с большими ошибками обратного впрыска из worldpointset объект. Связанные 3-D с 2-D соответствиями удаляются автоматически.

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

ФункцияПозы камерыТочки картыКоличество камер
bundleAdjustmentОптимизированныйОптимизированныйНесколько
bundleAdjustmentMotionОптимизированныйФиксированныйОдин
bundleAdjustmentStructureФиксированныйОптимизированныйНесколько

Обнаружение шлейфа

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

Технологический процессФункцияОписание
Создание пакета визуальных словbagOfFeaturesСоздайте пакет визуальных слов для распознавания места.
Создание базы данных распознаванияindexImagesСоздание базы данных распознавания, invertedImageIndex, для отображения визуальных слов на изображения.
Определение кандидатов на замыкание шлейфаretrieveImagesПоиск изображений, аналогичных текущему ключевому кадру. Идентифицируйте последовательные изображения как кандидаты на замыкание цикла, если они аналогичны текущему кадру. В противном случае добавьте текущий ключевой кадр в базу данных распознавания.
Вычислить относительную позу камеры для кандидатов на замыкание петлиestimateGeometricTransform3DВычислить относительную позу камеры между возможным ключевым кадром и текущим ключевым кадром для каждого кандидата на замыкание контура
Замкнуть петлюaddConnectionЗамкните контур, добавив кромку замыкания контура с соответствующей позой камеры к imageviewset объект.

Коррекция дрейфа

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

Вы можете использовать createPoseGraph функция для возврата графика позы в виде MATLAB ®digraph объект. Алгоритмы графика в MATLAB можно использовать для проверки, просмотра или изменения графика позы. Используйте optimizePoseGraph(Панель инструментов навигации) из Toolbox™ навигации, чтобы оптимизировать измененный график позы, а затем использовать updateView для обновления позиций камеры в наборе видов.

Визуализация

Для разработки визуальной системы SLAM можно использовать следующие функции визуализации.

ФункцияОписание
imshowОтображение изображения
showMatchedFeaturesОтображение совпадающих характерных точек на двух изображениях
plotПечать вида изображения: набор видов и соединений
plotCameraПечать камеры в 3-D координатах
pcshowПечать 3-D облако точек
pcplayerВизуализация потоковой передачи 3-D данных облака точек

Ссылки

[1] Хартли, Ричард и Эндрю Зиссерман. Геометрия нескольких видов в компьютерном видении. 2-й ред. Кембридж: Cambridge University Press, 2003.

[2] Фраундорфер, Фридрих и Давиде Скарамуцца. «Визуальная одометрия: часть II: соответствие, надежность, оптимизация и приложения». IEEE Robotics & Automation Magazine 19, No 2 (июнь 2012): 78-90. https://doi.org/10.1109/MRA.2012.2182810.

[3] Мур-Артал, Рауль, Дж. М. М. Монтьель и Хуан Д. Тардос. «ORB-SLAM: универсальная и точная монокулярная система SLAM». Транзакции IEEE по робототехнике 31, № 5 (октябрь 2015 г.): 1147-63. https://doi.org/10.1109/TRO.2015.2463671.

[4] Кюмерле, Райнер, Джорджо Гризетти, Хауке Страсдат, Курт Конолиже и Вольфрам Бургард. «G2o: Общая структура оптимизации графов». В 2011 году Международная конференция IEEE по робототехнике и автоматизации (ICRA 2011), Шанхай, 9-13 мая 2011 года, 3607-13. Нью-Йорк: Институт инженеров по электротехнике и электронике. https://doi.org//10.1109/ICRA.2011.5979949.

См. также

Функции

Объекты

Связанные темы