exponenta event banner

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

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

свернуть все

Первый набор элементов, заданный как матрица M1-by-N. Матрица содержит M1 элемента, а N - длина каждого вектора элемента. Каждая строка представляет один элемент.

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

Второй набор элементов, заданный как матрица M2-by-N. Матрица содержит M2 элемента, а 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++ с помощью MATLAB ® Coder™

.

См. также

Функции

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