pcshowMatchedFeatures

Отображение облаков точек с совпадающими функциями точками

Описание

pcshowMatchedFeatures(ptCloud1,ptCloud2,matchedPtCloud1,matchedPtCloud2) отображает облака точек, ptCloud1 и ptCloud2, с совпадающими точками функций, matchedPtCloud1 и matchedPtCloud2. График кодируется цветом облаком точек и каждый соединяется с соответствующей точкой в другом облаке точек линией.

пример

pcshowMatchedFeatures(segments1,segments2,features1,features2) отображает сегменты облака точек, segments1 и segments2, с соответствующими им центроидами в свойстве Centroid features1 и features2. График закодирован по цвету, и соответствующие центроиды соединены линией.

ax = pcshowMatchedFeatures(___) дополнительно возвращает Axes объект с использованием входных параметров из предыдущего синтаксиса.

пример

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

Примеры

свернуть все

В этом примере показано, как визуализировать соответствующие функции облака точек с помощью pcshowMatchedFeatures функция. В примере используются функции, вычисленные с помощью extractFPFHFeatures функция.

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

load("features1.mat");
load("features2.mat");
load("ptCloud1.mat");
load("ptCloud2.mat");

Соответствие функций между двумя облаками точек.

indexPairs = pcmatchfeatures(features1,features2,ptCloud1,ptCloud2);

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

matchedPts1 = select(ptCloud1,indexPairs(:,1));
matchedPts2 = select(ptCloud2,indexPairs(:,2));

Визуализация совпадений.

pcshowMatchedFeatures(ptCloud1,ptCloud2,matchedPts1,matchedPts2, ...
    "Method","montage")
xlim([-40 210])
ylim([-50 50])
title("Matched Points")

Figure contains an axes. The axes with title Matched Points contains 5 objects of type scatter, line.

Совпадающие функции и облака точек закодированы в цвете для улучшения визуализации:

  • Пурпурный - Движущееся облако точек.

  • Зеленый - Фиксированное облако точек.

  • Красный круг - Совпадающие точки в движущемся облаке точек.

  • Голубая звездочка - Совпадающие точки в фиксированном облаке точек.

  • Желтый - линия, соединяющая совпадающие функции.

Создайте средство чтения файлов PCAP Velodyne.

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

Считайте первое и четвертое сканы из файла.

ptCloud1 = readFrame(veloReader,1);
ptCloud2 = readFrame(veloReader,4);

Снимите наземную плоскость с сканов.

maxDistance = 1; % in meters
referenceVector = [0 0 1];
[~,~,selectIdx] = pcfitplane(ptCloud1,maxDistance,referenceVector);
ptCloud1 = select(ptCloud1,selectIdx,'OutputSize','full');
[~,~,selectIdx] = pcfitplane(ptCloud2,maxDistance,referenceVector);
ptCloud2 = select(ptCloud2,selectIdx,'OutputSize','full');

Кластеризуйте облака точек с минимум 10 точками на кластер.

minDistance = 2; % in meters
minPoints = 10;
labels1 = pcsegdist(ptCloud1,minDistance,'NumClusterPoints',minPoints);
labels2 = pcsegdist(ptCloud2,minDistance,'NumClusterPoints',minPoints);

Извлеките функции собственного значения и соответствующие сегменты из каждого облака точек.

[eigFeatures1,segments1] = extractEigenFeatures(ptCloud1,labels1);
[eigFeatures2,segments2] = extractEigenFeatures(ptCloud2,labels2);

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

features1 = vertcat(eigFeatures1.Feature);
features2 = vertcat(eigFeatures2.Feature);
centroids1 = vertcat(eigFeatures1.Centroid);
centroids2 = vertcat(eigFeatures2.Centroid);

Поиск предполагаемых совпадений функций.

indexPairs = pcmatchfeatures(features1,features2, ...
    pointCloud(centroids1),pointCloud(centroids2));

Получите совпадающие сегменты и функции для визуализации.

matchedSegments1 = segments1(indexPairs(:,1));
matchedSegments2 = segments2(indexPairs(:,2));
matchedFeatures1 = eigFeatures1(indexPairs(:,1));
matchedFeatures2 = eigFeatures2(indexPairs(:,2));

Визуализация совпадений.

figure
pcshowMatchedFeatures(matchedSegments1,matchedSegments2,matchedFeatures1,matchedFeatures2)
title('Matched Segments')

Figure contains an axes. The axes with title Matched Segments contains 5 objects of type scatter, line.

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

свернуть все

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

Второе облако точек, заданное как pointCloud объект.

Совпадающие точки в первом облаке точек, заданные как pointCloud объект. Каждая точка является совпадением функций для точки с соответствующим индексом в matchedPtCloud2.

Совпадающие точки во втором облаке точек, заданные как pointCloud объект. Каждая точка является совпадением функций для точки с соответствующим индексом в matchedPtCloud1.

Сегменты облака точек, заданные как M - вектор pointCloud объекты.

Сегменты облака точек, заданные как M - вектор pointCloud объекты.

Соответствующие центроиды в функциях первого сегмента, заданные как M - вектор eigenFeature объекты. Свойство Centroid каждой функции в features1 по умолчанию нанесен красный круг.

Соответствующие центроиды во втором сегменте, заданные как M-вектор eigenFeature объекты. Свойство Centroid каждой функции в features2 по умолчанию нанесен синей звездочкой.

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

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

Пример: 'Method','montage' визуализирует облака точек рядом друг с другом в осях.

Метод отображения, заданный как разделенная разделенными запятой парами, состоящая из 'Method' и один из следующих опций:

  • 'overlay' - Наложение ptCloud2 на ptCloud1.

  • 'montage' - Отобразите ptCloud1 и ptCloud2 рядом друг с другом в одной оси.

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

Стиль линии и опции цвета, заданные как разделенная разделенными запятой парами, состоящая из 'PlotOptions' и массив ячеек из векторов символов вида {MarkerStyle1, MarkerStyle2, LineStyle}. MarkerStyle1 определяет цвет и символ маркера для совпадающих точек matchedPtCloud1 в первом облаке точек ptCloud1. MarkerStyle2 определяет цвет и символ маркера для совпадающих точек matchedPtCloud2 во втором облаке точек ptCloud2. LineStyle задает цвет и стиль линии линий, соединяющих совпадающие точки первого облака точек с совпадающими точками второго. Для получения дополнительной информации о стилях линии, символах маркера и цветах смотрите LineSpec.

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

Выходные оси, заданные как разделенная разделенными запятой парами, состоящая из 'Parent' и axes графический объект.

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

свернуть все

Указатель на ось, возвращенный как axes графический объект.

Введенный в R2020b