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 измеряет угловое различие в градусах. Алгоритм останавливается, когда средняя разница между предполагаемыми твердыми преобразованиями в трех новых последовательных итерациях падает ниже заданного значения допуска.

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

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

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

свернуть все

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

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

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

Алгоритмы

Ссылки

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

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

Введенный в R2018a

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