pcmatchfeatures

Поиск соответствующих функций между облаками точек

Описание

indexPairs = pcmatchfeatures(features1,features2) находит совпадающие функции между входными матрицами извлеченных элементов облака точек и возвращает их индексы в каждой матрице функций.

пример

indexPairs = pcmatchfeatures(features1,features2,ptCloud1,ptCloud2) отклоняет неоднозначные совпадения функций на основе информации о пространственном соотношении из облаков точек, соответствующих матрицам функций.

[indexPairs,scores] = pcmatchfeatures(___) возвращает нормированные евклидовы расстояния между совпадающими функциями с помощью любой комбинации входных параметров из предыдущих синтаксисов.

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

Примеры

свернуть все

В этом примере показано, как соответствовать соответствующим функциям облака точек с помощью pcmatchfeatures функция.

Предварительная обработка

Считывайте данные облака точек в рабочую область.

ptCld = pcread('teapot.ply');

Понизьте значение облака точек.

ptCloud = pcdownsample(ptCld,'gridAverage',0.05);

Преобразуйте и создайте новое облако точек с помощью матрицы преобразования A.

A = [cos(pi/6) sin(pi/6) 0 0; ...
    -sin(pi/6) cos(pi/6) 0 0; ...
            0         0  1 0; ...
            5         5 10 1];     
tform = affine3d(A);
ptCloudTformed = pctransform(ptCloud,tform);

Визуализация двух облаков точек.

pcshowpair(ptCloud,ptCloudTformed);
legend("Original", "Transformed","TextColor",[1 1 0]);

Figure contains an axes. The axes contains 2 objects of type scatter. These objects represent Original, Transformed.

Соответствие соответствующим функциям

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

Извлечение функций из обоих облаков точек с помощью extractFPFHFeatures функция.

fixedFeature = extractFPFHFeatures(ptCloud);
movingFeature = extractFPFHFeatures(ptCloudTformed);
length(movingFeature)
ans = 16578

Поиск соответствующих функций.

[matchingPairs,scores] = pcmatchfeatures(fixedFeature,movingFeature,ptCloud,ptCloudTformed);
length(matchingPairs)
ans = 3422

Счет, близкий к нулю, означает, что алгоритм уверен в соответствии и наоборот. Рассчитать средний счет для всех матчей используя scores вектор.

mean(scores)
ans = 0.0016

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

свернуть все

Первый набор функции, заданный как M 1-бай- N матрица. Матрица содержит M 1 функций, и N является длиной каждого вектора функции. Каждая строка представляет одну функцию.

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

Второй набор функции, заданный как M 2-бай- N матрица. Матрица содержит M 2 функций, и N является длиной каждого вектора функции. Каждая строка представляет одну функцию.

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

Первое облако точек, заданное как pointCloud объект.

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

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

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

Пример: 'MatchThreshold',0.03 устанавливает нормированный порог расстояния для совпадающих функций равным 0.03.

Метод соответствия, заданный как разделенная разделенными запятой парами, состоящая из 'Method' и любой из них 'Exhaustive' или 'Approximate'. Метод определяет, как функция находит ближайшие соседи между features1 и features2. Два вектора функций совпадают, когда расстояние между ними меньше или равно совпадающему порогу.

  • 'Exhaustive' - Вычислите парное расстояние между заданными векторами функций.

  • 'Approximate' - Используйте эффективный аппроксимационный поиск по ближайшему соседу. Используйте этот метод для больших наборов функций. Для получения дополнительной информации об алгоритме см. [1]

Типы данных: char | string

Соответствующий порог, заданный как разделенная разделенными запятой парами, состоящая из 'MatchThreshold' и скаляром в области значений (0, 1].

Два вектора функций совпадают, когда нормированное евклидово расстояние между ними меньше или равно совпадающему порогу. Более высокое значение может привести к дополнительным соответствиям, но увеличивает риск ложных срабатываний.

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

Пространственный порог отношения, заданный как разделенная разделенными запятой парами, состоящая из 'RejectRatio' и скаляром в области значений (0,1).

Функция использует данные облака точек, чтобы оценить пространственное отношение между точками, сопоставленными с потенциальными совпадениями признаков, и отклонить соответствия на основе порога пространственного отношения. Более низкий порог пространственного отношения может привести к дополнительным соответствиям, но увеличивает риск ложных срабатываний.

Функция не рассматривает порог пространственного отношения, если вы не задаете значения для ptCloud1 и ptCloud2 входные параметры.

Примечание

По крайней мере три функции должны совпадать между матрицами функций, чтобы учесть пространственное отношение.

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

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

свернуть все

Индексы совпадающих функций, возвращенные как матрица P -by-2. P - количество совпадающих функций. Каждая строка соответствует совпадающей функции между features1 и features2 входы, где первый элемент является индексом функции в features1 и второй элемент является индексом совпадающей функции в features2.

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

Нормированное евклидово расстояние между совпадающими функциями, возвращенное как P вектор-столбец. i-й элемент вектора является расстоянием между совпадающими функциями в i-й строке indexPairs выход.

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

Ссылки

[1] Муха, Мариус и Дэвид Г. Лоу. «Быстрая аппроксимация ближайших соседей с автоматическим строением алгоритма». В работе четвертой Международной конференции по теории и применению компьютерного зрения, 331-40. Лисбоа, Португалия: SciTePress - Научно-технические публикации, 2009. https://doi.org/10.5220/0001787803310340.

[2] Чжоу, Цянь-И, парк Яэсик, и Владлен Колтун. «Быстрая глобальная регистрация». В Европейской конференции по компьютерному зрению, стр. 766-782. Спрингер, Чэм, 2016.

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

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

.

См. также

Функции

Введенный в R2020b