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')

Figure contains an axes object. The axes object with title Point clouds before registration contains 2 objects of type scatter. These objects represent Moving point cloud, Fixed point cloud.

Выполните нетвердую регистрацию с помощью алгоритма 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')

Figure contains an axes object. The axes object with title Point clouds after registration contains 2 objects of type scatter. These objects represent Moving point cloud, Fixed point cloud.

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

свернуть все

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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.

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

свернуть все

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

Transform Значение свойстваtform
'Rigid'rigid3d объект
'Affine'affine3d объект
'Nonrigid'Поле Displacement, числовая матрица того же размера и типа данных как Location свойство движущегося объекта облака точек, moving.

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

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

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

Алгоритмы

Ссылки

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

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

Введенный в R2018b