exponenta event banner

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

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

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-by-33 матрица положительных вещественных значений. N - количество допустимых точек, из которых функция извлекает дескрипторы FPFH. Каждый столбец содержит дескрипторы FPFH для допустимой точки в облаке точек. Для дополнительного возврата индексов извлеченных точек используйте validIndices выходной аргумент.

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

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

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

Ссылки

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

Функции

Объекты

Представлен в R2020b