pcregistericp

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

Описание

пример

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

Регистрационный алгоритм основан на "итеративной самой близкой точке" (ICP) алгоритм. Лучшая производительность этого итеративного процесса требует настраивающих свойств для ваших данных. Рассмотрите облака точек субдискретизации с помощью pcdownsample перед использованием pcregistericp улучшить точность и КПД регистрации.

Нормали облака точек требуются регистрационным алгоритмом, когда вы выбираете 'pointToPlane' метрика. Поэтому, если облако точки ввода Normal свойство пусто, функция заполняет его. Когда функция заполняет Normal свойство, это использует 6 точек, чтобы соответствовать локальной плоскости. Шесть точек не могут работать при всех обстоятельствах. Если регистрация с 'pointToPlane' метрические сбои, рассмотрите вызов pcnormals функция, которая позволяет вам выбирать число точек, чтобы использовать.

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

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

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

Примеры

свернуть все

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

ptCloud = pcread('teapot.ply');

pcshow(ptCloud); 
title('Teapot');

Создайте объект преобразования с 30 вращениями степени вдоль z - ось и перевод [5,5,10].

A = [cos(pi/6) sin(pi/6) 0 0; ...
    -sin(pi/6) cos(pi/6) 0 0; ...
            0         0  1 0; ...
            5         5 10 1];
tform1 = affine3d(A);

Преобразуйте облако точек.

ptCloudTformed = pctransform(ptCloud,tform1);

pcshow(ptCloudTformed);
title('Transformed Teapot');

Примените твердую регистрацию.

tform = pcregistericp(ptCloudTformed,ptCloud,'Extrapolate',true);

Сравните результат с истинным преобразованием.

disp(tform1.T);
    0.8660    0.5000         0         0
   -0.5000    0.8660         0         0
         0         0    1.0000         0
    5.0000    5.0000   10.0000    1.0000
tform2 = invert(tform);
disp(tform2.T);
    0.8660    0.5000    0.0000         0
   -0.5000    0.8660    0.0000         0
    0.0000   -0.0000    1.0000         0
    5.0000    5.0000   10.0000    1.0000

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

свернуть все

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

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

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

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

Пример: 'Metric', 'pointToPoint' устанавливает метрику для алгоритма ICP к 'pointToPoint' символьный вектор.

Метрика минимизации в виде разделенной запятой пары, состоящей из 'Metric'pointToPoint' или 'pointToPlane' символьный вектор. Твердое преобразование между перемещением и облаками фиксированной точки оценивается алгоритмом итеративной самой близкой точки (ICP). Алгоритм ICP минимизирует расстояние между этими двумя облаками точек согласно данной метрике.

Установка 'Metric'pointToPlane' может сократить количество итераций к процессу. Однако эта метрика требует дополнительных алгоритмических шагов в каждой итерации. 'pointToPlane' метрика улучшает регистрацию плоских поверхностей.

Выбор метода Downsample:
Downsample облака точек с помощью pcdownsample функция. Используйте любого 'random' или 'gridAverage' введите для pcdownsample функция согласно Metric приведенная ниже таблица.

МетрикаПеремещение метода PointCloud DownsampleМетод Downsample облака фиксированной точки
'pointToPoint''random''random'
'gridAverage''gridAverage'
'pointToPlane''gridAverage''gridAverage'
'random''nonuniformGridSample'

Экстраполяция в виде разделенной запятой пары, состоящей из 'Extrapolate'и булев true или false. Когда вы устанавливаете это свойство на true, функция добавляет шаг экстраполяции, который прослеживает путь в регистрационном пространстве состояний, которое описано в [2]. Установка этого свойства к true может сократить количество итераций, чтобы сходиться.

Процент inliers в виде разделенной запятой пары, состоящей из 'InlierRatio'и скалярное значение. Используйте это значение, чтобы установить процент совпадающих пар как inliers. Пара совпадающих точек рассматривается inlier, если его Евклидово расстояние находится в пределах набора процента соответствия с расстояниями. По умолчанию все пары соответствия используются.

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

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

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

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

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

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

свернуть все

Твердое преобразование, возвращенное как rigid3d объект. Твердое преобразование указывает движущееся облако точек к облаку фиксированной точки. rigid3d объект описывает твердое 3-D преобразование. Алгоритм итеративной самой близкой точки (ICP) оценивает твердое преобразование между облаками фиксированной точки и перемещением.

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

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

Алгоритмы

Вопросы совместимости

развернуть все

Поведение изменяется в R2020a

Ссылки

[1] Чен, Y. и Г. Медьони. “Объектное моделирование Регистрацией Нескольких Изображений Области значений”. Отобразите Вычисление Видения. Баттерворт-Хейнеманн. Издание 10, Выпуск 3, апрель 1992, стр 145-155.

[2] Besl, Пол Дж., Н. Д. Маккей. “Метод для Регистрации 3-D Форм”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Лос-Аламитос, CA: Общество эпохи компьютеризации IEEE. Издание 14, Выпуск 2, 1992, стр 239-256.

Введенный в R2018a

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