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');

Downsample облако точек.

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 object. The axes object 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 имя аргумента и 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 th элемент вектора является расстоянием между совпадающими функциями в i th строка indexPairs вывод .

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

Ссылки

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

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

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

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

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

Функции

Введенный в R2020b