extractFPFHFeatures

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

Описание

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

пример

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

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

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

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

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

Примеры

свернуть все

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

ptObj = pcread('teapot.ply');

Downsample данные об облаке точек.

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] Rusu, Раду Богдан, Нико Блодоу и Майкл Биц. "Быстро укажите гистограммы функции (FPFH) для 3D регистрации". На 2 009 Международных конференциях IEEE по вопросам Робототехники и Автоматизации, стр 3212-3217. IEEE, 2009.

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

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

Смотрите также

Функции

Объекты

Введенный в R2020b