pcregistercpd

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

Описание

пример

tform = pcregistercpd(moving,fixed) возвращает преобразование, которое указывает движущееся облако точек с облаком фиксированной точки с помощью алгоритма когерентного дрейфа точки (CPD) [1].

Примечание

Рассмотрите облака точек субдискретизации с помощью pcdownsample перед использованием pcregistercpd, чтобы повысить эффективность регистрации.

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

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

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

Примеры

свернуть все

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

handData = load('hand3d.mat');
moving = handData.moving;
fixed = handData.fixed;

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

movingDownsampled = pcdownsample(moving,'gridAverage',0.03);
fixedDownsampled = pcdownsample(fixed,'gridAverage',0.03);

Отобразите прореженные облака точек перед регистрацией.

figure
pcshowpair(movingDownsampled,fixedDownsampled,'MarkerSize',50)
xlabel('X')
ylabel('Y')
zlabel('Z')
title('Point clouds before registration')
legend({'Moving point cloud','Fixed point cloud'},'TextColor','w')
legend('Location','southoutside')

Выполните нетвердую регистрацию с помощью алгоритма CPD.

tform = pcregistercpd(movingDownsampled,fixedDownsampled);
movingReg = pctransform(movingDownsampled,tform);

Отобразите прореженные облака точек после регистрации.

figure
pcshowpair(movingReg,fixedDownsampled,'MarkerSize',50)
xlabel('X')
ylabel('Y')
zlabel('Z')
title('Point clouds after registration')
legend({'Moving point cloud','Fixed point cloud'},'TextColor','w')
legend('Location','southoutside')

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

свернуть все

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

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

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

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

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

Тип преобразования, заданного как разделенная запятой пара, состоящая из 'Transform' и 'Nonrigid', 'Rigid', или 'Affine' векторы символов или скаляры строки.

Типы данных: char | string

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

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

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

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

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

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

Взаимодействие между точками, заданными как разделенная запятой пара, состоящая из 'InteractionSigma' и положительная скалярная величина, которая представляет стандартное отклонение Гауссова фильтра. Типичные значения находятся в области значений [1.5,3]. Увеличение этого взаимодействия повышений стоимости между точками в облаке точек. В результате можно наблюдать когерентное движение в облаке точек, и каждая точка подвергается тому же смещению. В качестве альтернативы уменьшение этого значения уменьшает взаимодействие между точками в облаке точек. В результате можно наблюдать локализованное смещение точек и выходных полевых выставок смещения локализованная деформация.

Примечание

Использовать эту пару "имя-значение", 'Transform' должен быть 'Nonrigid'.

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

Вес сглаживания движения, заданный как разделенная запятой пара, состоящая из 'SmoothingWeight' и положительная скалярная величина. Типичные значения находятся в области значений [0.1,10]. Увеличьте это значение, чтобы произвести более когерентное движение в выходном поле смещения.

Примечание

Использовать эту пару "имя-значение", 'Transform' должен быть 'Nonrigid'.

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

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

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

Примечание

Оба 'MaxIterations' и 'Tolerance' используются в качестве критерия остановки. Алгоритм останавливается, когда любому из останавливающихся условий, т.е. удовлетворяет, когда количество итерации достигает MaxIterations или абсолютное процентное изменение в логарифмической функции правдоподобия меньше чем или равно Tolerance.

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

свернуть все

Преобразование, возвращенное как affine3d возразите или поле смещения. tform 3-D преобразование, которое указывает движущееся облако точек, moving к облаку фиксированной точки, fixed. Когда 'Transform' 'Nonrigid', функция возвращает поле смещения. Возвращенное поле смещения является числовой матрицей того же размера и типа данных как Location свойство движущегося объекта облака точек, moving.

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

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

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

Алгоритмы

Ссылки

[1] Мыроненко, A., и X. Песня. "Укажите Регистрацию Набора: Когерентный Дрейф Точки. "Продолжения Транзакций IEEE согласно Анализу Шаблона и Искусственному интеллекту (TPAMI). Vol 32, Номер 12, декабрь 2010, стр 2262–2275.

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

Введенный в R2018b

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