extractFPFHFeatures

Извлеките дескрипторы быстрой функции гистограммы (FPFH) из облака точек

Описание

features = extractFPFHFeatures(ptCloudIn) извлекает дескрипторы FPFH для каждой допустимой точки во входном объекте облака точек. Функция возвращает дескрипторы как матрицу N -by-33, где N количество допустимых точек во входном облаке точек.

пример

features = extractFPFHFeatures(ptCloudIn,indices) извлекает FPFH дескрипторы для допустимых точек, расположенных в заданных линейных индексах, indices.

features = extractFPFHFeatures(ptCloudIn,row,column) извлекает FPFH дескрипторы для допустимых точек в заданных 2-D индексах входного организованного облака точек ptCloudIn. Задайте индексы строка и столбец для точек следующим row и column, соответственно.

[___,validIndices] = extractFPFHFeatures(___) возвращает линейные индексы допустимых точек в облаке точек, для которых были извлечены дескрипторы FPFH.

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

Дескрипторы могут быть извлечены с помощью метода поиска KNN, метода поиска радиуса или комбинации обоих. extractFPFHFeatures функция использует метод поиска KNN, чтобы извлечь дескрипторы по умолчанию. Пользователи могут выбрать метод извлечения с помощью аргументов пары "имя-значение". Для примера, 'NumNeighbors',8 выбирает метод поиска KNN, чтобы извлечь дескрипторы, и устанавливает максимальное количество соседей, учитываемых в методе поиска k-ближайших соседей (KNN), равным восьми.

Примеры

свернуть все

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

ptObj = pcread('teapot.ply');

Понижайте значение данных облака точек.

ptCloudIn = pcdownsample(ptObj,'gridAverage',0.05);

Извлеките дескрипторы FPFH для точек в заданных ключевых индексах.

keyInds = [6565 10000];
features = extractFPFHFeatures(ptCloudIn,keyInds);

Отображение ключевых точек на облаке точек.

ptKeyObj = pointCloud(ptCloudIn.Location(keyInds,:),'Color',[255 0 0;0 0 255]);
figure
pcshow(ptObj)
title('Selected Indices on Point Cloud')
hold on
pcshow(ptKeyObj,'MarkerSize',1000)
hold off

Figure contains an axes. The axes with title Selected Indices on Point Cloud contains 2 objects of type scatter.

Отображение извлеченных дескрипторов FPFH в ключевых точках.

figure
ax1 = subplot(2,1,1);
bar(features(1,:),'FaceColor',[1 0 0])
title('FPFH Descriptors of Selected Indices')
ax2 = subplot(2,1,2);
bar(features(2,:),'FaceColor',[0 0 1])
linkaxes([ax1 ax2],'xy')

Figure contains 2 axes. Axes 1 with title FPFH Descriptors of Selected Indices contains an object of type bar. Axes 2 contains an object of type bar.

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

свернуть все

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

Линейные индексы выбранных точек, заданные как вектор положительных целых чисел.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Индексы строк выбранных точек в организованном облаке точек, заданные как вектор положительных целых чисел.

The row и column векторы должны иметь одинаковую длину.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Индексы столбцов выбранных точек в организованном облаке точек, заданные как вектор положительных целых чисел.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

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

Пример: 'NumNeighbors', 8 устанавливает максимальное количество соседей, учитываемых в методе поиска k-ближайших соседей (KNN), равным восьми.

Количество соседей для метода поиска KNN, заданное как разделенная разделенными запятой парами, состоящая из 'NumNeighbors' и положительное целое число.

Метод поиска KNN вычисляет расстояние между точкой и ее смежными точками в облаке точек и сортирует их в порядке возрастания. Ближайшие точки рассматриваются как соседи. 'NumNeighbors' устанавливает верхний предел для количества соседей, которые нужно учитывать.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Радиус, рассматриваемый для метода поиска радиуса, задается как разделенная разделенными запятой парами, состоящая из 'Radius' и положительный реальный скаляр.

Метод поиска радиуса устанавливает конкретный радиус вокруг точки и выбирает все смежные точки в этом радиусе в качестве соседних.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Примечание

Если вы задаете значения для обоих 'NumNeighbors' и 'Radius' Аргументы пары "имя-значение", extractFPFHFeatures функция выполняет метод поиска KNN, а затем выбирает только те из этого набора в заданном радиусе.

Если вы задаете большие значения для 'NumNeighbors' и 'Radius', увеличение объема памяти и времени расчета.

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

свернуть все

FPFH дескрипторы, возвращенные как N-на-33 матрица положительных вещественных значений. N - количество допустимых точек, из которых функция извлекает дескрипторы FPFH. Каждый столбец содержит дескрипторы FPFH для допустимой точки в облаке точек. Чтобы дополнительно вернуть индексы извлеченных точек, используйте validIndices выходной аргумент.

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

Линейные индексы допустимых точек, заданные как вектор положительных целых чисел. Вектор содержит индексы только тех точек, для которых функция извлекает функции.

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

Ссылки

[1] Rusu, Radu Bogdan, Nico Blodow, and Michael Beetz. «Гистограммы функций быстрой точки (FPFH) для регистрации 3D». В 2009 году Международная конференция IEEE по робототехнике и автоматизации, стр. 3212-3217. IEEE, 2009.

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

Функции

Объекты

Введенный в R2020b