pcregistercorr

Зарегистрируйте две облака точек, используя фазу корреляцию

Описание

пример

tform = pcregistercorr(moving,fixed,gridSize,gridStep) вычисляет твердое преобразование, которое регистрирует движущееся облако точек, moving, в облако фиксированных точек, fixed использование фазы алгоритма корреляции.

Функция выполняет регистрацию, сначала преобразуя обе облака точек в 2-D сетку заполнения в плоскости X - Y с центром в источник (0,0,0). Заполнение каждой камеры сетки определяется с помощью значений Z-coordinate точек в сетке.

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

[___,peak] = pcregistercorr(___) дополнительно возвращает пиковое значение корреляции различия фаз между двумя сетками заполнения.

[___] = pcregistercorr(___,Name,Value) задает опции, использующие один или несколько аргументов имя-значение в дополнение к входным параметрам в предыдущих синтаксисах. Для примера, 'Window',false устанавливает Window аргумент имя-значение в false .

Примеры

свернуть все

Считайте данные из файла захвата пакетов Velodyne (PCAP) в рабочую область.

veloReader = velodyneFileReader('lidarData_ConstructionRoad.pcap','HDL32E');

Считайте фиксированное и движущееся облако точек из систем координат данных лидара.

frameNumber = 1;
skipFrame   = 5;
fixed  = readFrame(veloReader,frameNumber);
moving = readFrame(veloReader,frameNumber + skipFrame);
 

Найдите наземные плоскости как для движущихся, так и для фиксированных облаков точек. Установите максимальное расстояние в метрах.

maxDistance = 0.4;
referenceVector = [0 0 1];

groundMoving = pcfitplane(moving,maxDistance,referenceVector);
groundFixed = pcfitplane(fixed,maxDistance,referenceVector);
 

Преобразуйте облака точек так, чтобы их наземные плоскости были параллельными плоскости X-Y.

tformMoving = normalRotation(groundMoving,referenceVector);
tformFixed = normalRotation(groundFixed,referenceVector);

movingCorrected = pctransform(moving,tformMoving);
fixedCorrected = pctransform(fixed,tformFixed);
 

Зарегистрируйте скользящее облако точек относительно фиксированного облака точек. Установите размер сетки заполнения равным 100 на 100 метров и размер каждой камеры сетки равным 0,5 на 0,5 метра.

gridSize = 100;
gridStep = 0.5;

tform = pcregistercorr(movingCorrected,fixedCorrected,gridSize,gridStep);
 

Преобразуйте скользящее облако точек с помощью предполагаемого твердого преобразования.

combinedTform = rigid3d(tform.T * tformMoving.T * tformFixed.T);
movingReg = pctransform(moving,combinedTform);
 

Визуализация регистрации.

figure
subplot(121)
pcshowpair(moving,fixed)
title('Before Registration')
view(2)

subplot(122)
pcshowpair(movingReg,fixed)
title('After Registration')
view(2)

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

свернуть все

Перемещение облака точек, заданное как pointCloud объект.

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

Размер квадратной сетки заполнения, заданный как скалярное значение в мировых единицах измерения. Ширина и высота сетки заполнения равны этому значению. Центр находится в источнике (0, 0, 0).

Размер каждой камеры сетки, заданный в виде скалярного значения в мировых единицах измерения.

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

Пример: 'zlim',[0 3] устанавливает нижний предел Z -оси равным 0 и верхний предел для 3.

Z предел оси для вычисления заполнения камеры сетки, заданный как вектор вида [zmin zmax], где zmin и zmax являются числовыми скалярами. Функция масштабирует точки с Z значением оси от zmin до zmax к вероятностям в области значений [0, 1]. Значениям меньше zmin присваивается значение заполнения 0. Значениям, больше zmax, присваивается значение заполнения 1.

Логический, чтобы определить, использовать ли оконную обработку для подавления спектральных эффектов утечек в частотный диапазон. Когда вы задаете Window на true, функция использует окно Блэкмана, чтобы повысить стабильность результатов регистрации. Если общие функции, которые будут выровнены в сетках заполнения, ориентированы вдоль ребер, установка Window на false может предоставить превосходные результаты регистрации.

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

свернуть все

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

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

Пиковое значение корреляции различия фаз между двумя сетками заполнения, возвращаемое как скалярное значение. Пиковое значение, меньше 0.03 указывает на плохой результат регистрации.

Совет

  • Метод фазовой корреляции лучше всего используется для регистрации облаков точек, когда преобразование может быть описано перемещением в плоскости X - Y и вращением вокруг оси Z -. Например, наземное транспортное средство с горизонтально установленным лидаром, движущимся по плоской поверхности.

  • Алгоритм фазовой корреляции ожидает, что движение будет исключительно вдоль плоскости X - Y, как и с земной плоскостью. Если движение не совсем в X - Y плоскости, можно использовать normalRotation функция для преобразования облаков точек. Например, в движении автомобиля можно уменьшить эффекты подвески транспортного средства или поверхностных функций, таких как выбоины и скоростные полицейских normalRotation функция.

  • Увеличение размера сетки заполнения увеличивает вычислительные требования этой функции. Можно управлять размером сетки заполнения путем изменения gridSize и gridStep аргументы.

  • Если вы получите плохие результаты регистрации и peak значение корреляции меньше 0.03, попробуйте задать Window аргумент в false.

Ссылки

[1] Димитриевский, Мартин, Дэвид Ван Хамме, Питер Веэлэрт и Уилфрид Филипс. «Устойчивое соответствие карт заполнения для одометрии в автономных транспортных средствах». В трудах 11-й Совместной конференции по теории и применениям компьютерного зрения, визуализации и компьютерной графики, 626-33. Рим, Италия: SCITEPRESS - Научно-технические публикации, 2016.

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