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 object. The axes object with title Matched Points contains 5 objects of type scatter, line.

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

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

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

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

  • Синяя звездочка — Совпадающие точки в облаке фиксированной точки.

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

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

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 object. The axes object 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 имя аргумента и 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