pcregisterndt

Укажите два облака точек с помощью алгоритма NDT

Описание

пример

tform = pcregisterndt(moving,fixed,gridStep) возвращает твердое преобразование, которое указывает движущееся облако точек с облаком фиксированной точки. Облака точек являются voxelized в кубы размера gridStep.

Регистрационный алгоритм основан [1]на [2] алгоритма нормальных распределений преобразовывают (NDT). Лучшая производительность этого итеративного процесса требует настраивающих свойств для ваших данных. Чтобы улучшить точность и КПД регистрации, рассмотрите субдискретизацию облаков точек при помощи pcdownsample перед использованием pcregisterndt.

[tform,movingReg] = pcregisterndt(moving,fixed,gridStep) также возвращает преобразованное облако точек, которое выравнивается с облаком фиксированной точки.

[___,rmse] = pcregisterndt(moving,fixed,gridStep) также возвращает среднеквадратичную ошибку Евклидова расстояния между выровненными облаками точек, с помощью любого из предыдущих синтаксисов.

[___] = pcregisterndt(moving,fixed,gridStep,Name,Value) дополнительные опции использования заданы одним или несколькими Name,Value парные аргументы.

Примеры

свернуть все

Загрузите данные об облаке точек.

ld = load('livingRoom.mat');
moving = ld.livingRoomData{1};
fixed = ld.livingRoomData{2};
pcshowpair(moving,fixed,'VerticalAxis','Y','VerticalAxisDir','Down')

Чтобы повысить эффективность и точность регистрационного алгоритма NDT, проредите движущееся облако точек.

movingDownsampled = pcdownsample(moving,'gridAverage',0.1);

Voxelize облако точек в кубы sidelength 0.5. Примените твердую регистрацию с помощью алгоритма NDT.

gridStep = 0.5;
tform = pcregisterndt(movingDownsampled,fixed,gridStep);

Визуализируйте выравнивание.

movingReg = pctransform(moving,tform);
pcshowpair(movingReg,fixed,'VerticalAxis','Y','VerticalAxisDir','Down')

Входные параметры

свернуть все

Движущееся облако точек, заданное как pointCloud объект.

Облако фиксированной точки, заданное как pointCloud объект.

Размер 3-D куба, что voxelizes облако фиксированной точки, заданное как положительная скалярная величина.

Типы данных: single | double

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'MaxIterations',20 останавливает алгоритм NDT после 20 итераций.

Начальное твердое преобразование, заданное как разделенная запятой пара, состоящая из 'InitialTransformaffine3d объект. Начальное твердое преобразование полезно, когда вы обеспечиваете внешнюю крупную оценку.

Ожидаемый процент выбросов относительно нормального распределения, заданного как разделенная запятой пара, состоящая из 'OutlierRatio'и скаляр в области значений [0, 1). Алгоритм NDT принимает, что точка сгенерирована смесью нормального распределения для inliers и равномерного распределения для выбросов. Большее значение 'OutlierRatio'уменьшает влияние выбросов.

Типы данных: single | double

Максимальное количество итераций перед остановками NDT, заданными как разделенная запятой пара, состоящая из 'MaxIterations'и неотрицательное целое число.

Типы данных: single | double

Допуск между последовательными итерациями NDT, заданными как разделенная запятой пара, состоящая из 'Tolerance'и вектор с 2 элементами с неотрицательными значениями. Вектор, [Tdiff Rdiff], представляет допуск абсолютной разности в переводе и вращении, оцененном в последовательных итерациях NDT. Tdiff измеряет Евклидово расстояние между двумя векторами сдвига. Rdiff измеряет угловое различие в градусах. Алгоритм останавливается, когда различие между предполагаемыми твердыми преобразованиями в новых последовательных итерациях падает ниже заданного значения допуска.

Типы данных: single | double

Отобразите информацию прогресса, указанную как разделенная запятой пара, состоящая из 'Verbose'и логический скаляр. Установите Verbose к true отобразить информацию о прогрессе.

Типы данных: логический

Выходные аргументы

свернуть все

Твердое преобразование, возвращенное как affine3d объект. tform описывает твердое 3-D преобразование, которое указывает движущееся облако точек, moving, к облаку фиксированной точки, fixed.

Преобразованное облако точек, возвращенное как pointCloud объект. Преобразованное облако точек выравнивается с облаком фиксированной точки, fixed.

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

Алгоритмы

Ссылки

[1] Бибер, P. и В. Стрэсер. “Преобразование Нормальных распределений: Новый Подход к Лазерному Соответствию Сканирования”. Продолжения Международной конференции IEEE/RSJ по вопросам Интеллектуальных Роботов и Систем (IROS). Лас-Вегас, NV. Издание 3, ноябрь 2003, стр 2743–2748.

[2] Магнуссон, M. “3D нормальные распределения преобразовывают — эффективное представление для регистрации, поверхностного анализа и обнаружения цикла”. Кандидатская диссертация. Университет Örebro, Örebro, Швеция, 2013.

Расширенные возможности

Введенный в R2018a

Для просмотра документации необходимо авторизоваться на сайте