point cloud является набором точек в трехмерном пространстве. Облака точек обычно получаются из 3-D сканеров, таких как устройство Kinect® или лидар. У них есть приложения в навигации робота и восприятии, оценке глубины, видении стерео, визуальной регистрации и продвинутых системах помощи водителю (ADAS).
Point cloud registration является процессом выравнивания двух или больше 3-D облаков точек той же сцены в общую систему координат. Отображение является процессом создания карты среды вокруг робота или датчика. Регистрация и отображение могут использоваться, чтобы восстановить 3-D сцену или создать карту шоссе для локализации. В то время как регистрация обычно сопровождается путем отображения, существуют другие приложения с помощью регистрации, такие как деформируемое отслеживание движения, которое не может потребовать отображения. Алгоритмы Computer Vision Toolbox™ обеспечивают функции для выполнения регистрации облака точек и отображения. Рабочий процесс состоит из предварительной обработки, регистрации, коррекции дрейфа и выравнивания облаков точек.
Выполните эти шаги, чтобы выполнить регистрацию облака точек и сопоставляющий на последовательности облаков точек.
Предварительно обработайте Облака точек — Чтобы подготовить облака точек к регистрации, проредить их и удалить нежелательные функции и шум.
Укажите Облака точек — Регистр каждое облако точек против того, предшествующего ему. Эта регистрация используется в Odometry, который является процессом накопления регистрационной оценки по последовательным системам координат. Используя одну только одометрию может вести, чтобы дрейфовать между измеренными положениями и положениями основной истины.
Обнаружьте Циклы — Чтобы минимизировать дрейф, необходимо идентифицировать возврат датчика к ранее посещаемому местоположению, формируя цикл в траектории датчика. Это упоминается как loop closure detection.
Правильный Дрейф — Использование обнаруженные циклы, чтобы минимизировать дрейф через pose graph optimization, который состоит из инкрементного создания графика положения путем добавления узлов и ребер, и затем оптимизации графика положения однажды достаточные циклы, найдено. Результатом оптимизации графика положения является набор оптимизированных абсолютных положений.
Соберитесь Карта — Собирают карту путем выравнивания зарегистрированных облаков точек с помощью их оптимизированных абсолютных положений.
Используйте эти объекты управлять данными, сопоставленными с рабочим процессом отображения и регистрацией облака точек:
pointCloud
объект — объектно-ориентированная память облака точек набор точек, расположенных в трехмерном пространстве. Это использует эффективные стратегии индексации выполнить самые близкие соседние поисковые запросы, которые усилены функциями предварительной обработки и регистрации облака точек.
rigid3d
объект — твердая 3-D объектно-ориентированная память 3-D твердое геометрическое преобразование. В этом рабочем процессе это представляет относительные и абсолютные положения.
pcviewset
объект — объект набора представления облака точек управляет данными, сопоставленными с процессом отображения и одометрией. Это организует данные как набор представлений и попарных связей между представлениями. Это также создает и обновляет график положения.
Каждый view состоит из облака точек и связанного абсолютного преобразования положения. Каждое представление имеет уникальный идентификатор в наборе представления и формирует узел графика положения.
Каждый connection хранит информацию, которая соединяет одно представление с другим представлением. Это включает относительное преобразование между связанными представлениями и неопределенностью, вовлеченной в вычисление измерения. Каждая связь формирует ребро в графике положения.
Предварительная обработка включает удаляющие нежелательные функции и шум от облаков точек, также сегментируясь или прореживая их. Предварительная обработка может включать эти функции:
pcsegdist
или segmentLidarData
— Сегментируйте данные об облаке точек на кластеры, затем используйте select
функционируйте, чтобы выбрать желаемые точки.
pcfitplane
или segmentGroundFromLidarData
— Сегментируйте наземную плоскость, затем используйте select
функционируйте, чтобы выбрать желаемые точки.
pcdenoise
— Удалите нежелательный шум из облака точек.
Можно использовать pcregistericp
, pcregistercpd
, pcregisterndt
, или pcregistercorr
функционируйте, чтобы указать движущееся облако точек к облаку фиксированной точки. Регистрационные алгоритмы, используемые этими функциями, основаны на алгоритме итеративной самой близкой точки (ICP), алгоритме когерентного дрейфа точки (CPD), алгоритме нормальных распределений преобразовывают (NDT) и алгоритме корреляции фазы, соответственно. Для получения дополнительной информации об этих алгоритмах смотрите Ссылки.
При регистрации облаков точек, выберите тип преобразования, которое представляет, как объекты в сцене изменяются между ними.
Преобразование | Описание |
---|---|
Твердый | Твердое преобразование сохраняет форму и размер объектов в сцене. Объекты в сцене могут подвергнуться переводам, вращениям или обоим. То же преобразование применяется ко всем точкам. |
Аффинно | Аффинное преобразование позволяет объектам сдвинуть и изменить шкалу в дополнение к переводам и вращениям. |
Нетвердый | Нетвердое преобразование позволяет форме объектов в сцене изменяться. Точки подвергаются отличным преобразованиям. Поле смещения представляет преобразование. |
Эта таблица сравнивает опции функции регистрации облака точек, их типы преобразования и их показатели производительности. Используйте эту таблицу, чтобы помочь вам выбрать соответствующую регистрационную функцию для своего варианта использования.
Регистрационный метод (функция) | Тип преобразования | Описание | Показатели производительности |
---|---|---|---|
pcregisterndt | Твердый |
| Быстрый регистрационный метод, но обычно медленнее, чем ICP |
pcregistericp | Твердый | Локальный регистрационный метод, который использует начальную оценку преобразования | Самый быстрый регистрационный метод |
pcregistercpd | Твердый, аффинно, и нетвердый | Глобальный метод, который не использует начальную оценку преобразования | Самый медленный регистрационный метод |
pcregistercorr | Твердый | Регистрационный метод, который использует сетку заполнения, присваивая значения вероятности сетке на основе Z - координатные значения точек в каждой ячейке сетки. | Подходящий лучше всего для навигации наземного транспортного средства Увеличение размера сеток заполнения увеличивает вычислительные требования функции. |
Регистрация текущего (движущегося) облака точек против предыдущего (фиксированного) облака точек возвращает rigid3d
преобразование, которое представляет предполагаемое относительное положение движущегося облака точек в системе координат облака фиксированной точки. Создание этого относительного преобразования положения со всеми ранее накопленными относительными преобразованиями положения дает оценку абсолютного преобразования положения.
Добавьте представление, сформированное движущимся облаком точек и его абсолютным преобразованием положения. Можно добавить представление в pcviewset
объект с помощью addView
функция.
Добавьте odometry edge, ребро, заданное связью между последовательными представлениями, сформированными относительным преобразованием положения между фиксированными и движущимися облаками точек к pcviewset
объект с помощью addConnection
функция.
Используя одну только одометрию ведет, чтобы дрейфовать из-за накопления ошибок. Эти ошибки могут привести к серьезным погрешностям по большим расстояниям. Используя основанную на графике одновременную локализацию и картографию (SLAM) корректирует дрейф. Для этого обнаружьте закрытия цикла путем нахождения местоположения посещаемым в предыдущем облаке точек с помощью соответствия дескриптора. Замкните круг, чтобы откорректировать дрейф. Выполните эти шаги обнаружение цикла for и закрытие:
Используйте scanContextDescriptor
функционируйте, чтобы извлечь дескрипторы контекста скана, которые получают отчетливость представления от двух облаков точек в наборе представления.
Используйте scanContextDistance
функция, чтобы вычислить расстояние дескриптора между двумя дескрипторами контекста скана. Если расстояние между двумя дескрипторами ниже заданного порога, то это - потенциальное закрытие цикла.
Укажите облака точек, чтобы определить относительное преобразование положения между представлениями и среднеквадратичной ошибкой (RMSE) Евклидова расстояния между выровненными облаками точек. Используйте RMSE, чтобы отфильтровать недопустимые закрытия цикла. Относительное преобразование положения представляет связь между двумя представлениями. Ребро, сформированное связью между непоследовательными представлениями, называется loop closure edge. Можно добавить связь с pcviewset
объект с помощью addConnection
функция.
pcviewset
возразите внутренне обновляет график положения как представления, и связи добавляются. Чтобы минимизировать дрейф, выполните оптимизацию графика положения при помощи optimizePoses
функция, когда-то достаточное закрытие цикла. optimizePoses
функция возвращает pcviewset
объект с оптимизированными абсолютными преобразованиями положения для каждого представления.
Можно использовать createPoseGraph
функционируйте, чтобы возвратить график положения как MATLAB®
digraph
объект. Можно использовать алгоритмы графика в MATLAB, чтобы смотреть, просмотреть, или изменить график положения. Используйте optimizePoseGraph
(Navigation Toolbox) функция от Navigation Toolbox™, чтобы оптимизировать модифицированный график положения, и затем использовать updateView
функционируйте, чтобы обновить положения в наборе представления.
Используйте pcalign
функционируйте, чтобы создать карту облака точек с помощью облаков точек от набора представления и их оптимизированных абсолютных преобразований положения.
Локальные регистрационные методы, такие как те, которые используют NDT или ICP (pcregisterndt
или pcregistericp
, соответственно), потребуйте первоначальных оценок. Чтобы получить первоначальную оценку, используйте другой датчик, такой как инерциальный измерительный блок (IMU) или другие формы одометрии. Улучшение первоначальной оценки помогает регистрационному алгоритму сходиться быстрее.
Определение более высоких значений для 'MaxIterations'
значения аргументов или нижние значения для 'Tolerance'
свойство для более точных регистрационных результатов, но более медленных регистрационных скоростей.
[1] Мыроненко, Андрей и Ксубо Сонг. “Укажите Регистрацию Набора: Когерентный Дрейф Точки”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту 32, № 12 (декабрь 2010): 2262–75.
[2] Чен, Янг и Жерар Медьони. “Объектное моделирование Регистрацией Нескольких Изображений Области значений”. Изображение и Видение, Вычисляя 10, № 3 (апрель 1992): 145–55.
[3] Besl, P.J., и Нил Д. Маккей. “Метод для Регистрации 3-D Форм”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту 14, № 2 (февраль 1992): 239–56.
[4] Бибер, P. и В. Стрэссер. “Преобразование Нормальных распределений: Новый Подход к Лазерному Сопоставлению сканов”. В Продолжениях 2003 Международных конференции IEEE/RSJ по вопросам Интеллектуальных Роботов и Систем (IROS 2003) (CAT. № 03CH37453), 3:2743–48. Лас-Вегас, Невада, США: IEEE, 2003.
[5] Магнуссон, Мартин. “3D нормальные распределения преобразовывают: эффективное представление для регистрации, поверхностного анализа и обнаружения цикла”. Университет Örebro, 2009.
[6] Димитриевский, Мартин, Дэвид Ван Хэмм, Питер Вилэерт и Уилфрид Филипс. “Устойчивое Соответствие Карт Заполнения для Одометрии в Автономных Транспортных средствах”: в Продолжениях 11-й Объединенной Конференции по Компьютерному зрению, Обработке изображений и Теории Компьютерной графики и Приложениям, 626–33. Рим, Италия: SCITEPRESS - Наука и и Технологические Публикации, 2016.