exponenta event banner

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 Velodine.

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.

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

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

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

Соответствующие центроиды во втором сегменте, заданные как вектор М-элемента 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