matchFeaturesInRadius

Найдите соответствие с функциями в заданном радиусе

Описание

пример

indexPairs = matchFeaturesInRadius(features1,features2,points2,centerPoints,radius) возвращает индексы функций, скорее всего, чтобы соответствовать между входными наборами функций в заданном радиусе или радиусах вокруг каждого ожидаемого местоположения соответствия.

[indexPairs,matchMetric] = matchFeaturesInRadius(___) также возвращает расстояние между функциями в совпадающей паре в indexPairs.

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

Примеры

свернуть все

Загрузите файл MAT, содержащий изображение и данные о камере в рабочую область.

data = load('matchInRadiusData.mat');

Преобразуйте положение камеры в значения внешних параметров.

orientation = data.cameraPose2.Rotation;
location = data.cameraPose2.Translation;
[rotationMatrix,translationVector] = cameraPoseToExtrinsics(orientation,location);

Спроектируйте 3-D мировые точки, сопоставленные с набором функций один на второе изображение.

centerPoints = worldToImage(data.intrinsics,rotationMatrix,translationVector,data.worldPoints);

Совпадайте с функциями между этими двумя наборами функций в рамках пространственных ограничений.

indexPairs1 = matchFeaturesInRadius(data.features1,data.features2, ...
        data.points2,centerPoints,data.radius,'MatchThreshold',40, ...
        'MaxRatio',0.9);

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

indexPairs2 = matchFeatures(data.features1,data.features2, ...
        'MatchThreshold',40,'MaxRatio',0.9);

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

figure
subplot(2,1,1)
showMatchedFeatures(data.I1,data.I2,data.points1( ...
    indexPairs1(:,1)),data.points2(indexPairs1(:,2)));
title(sprintf('%d pairs matched with spatial constraints',size(indexPairs1,1)));

subplot(2,1,2)
showMatchedFeatures(data.I1,data.I2,data.points1( ...
    indexPairs2(:,1)),data.points2(indexPairs2(:,2)));
title(sprintf('%d pairs matched without spatial constraints',size(indexPairs2,1)));

Figure contains 2 axes. Axes 1 with title 144 pairs matched with spatial constraints contains 4 objects of type image, line. Axes 2 with title 130 pairs matched without spatial constraints contains 4 objects of type image, line.

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

свернуть все

Набор функций один в виде binaryFeatures возразите или M 1 N матрицей. Матрица содержит M 1 функция, и N соответствует длине каждого характеристического вектора.

Можно получить binaryFeatures объект с помощью extractFeatures функция с быстрой сетчаткой keypoint (FREAK), ориентированный быстро и вращаемое резюме (ORB) или метод дескриптора бинарного устойчивого инвариантного масштабируемого keypoints (BRISK).

Типы данных: логический | int8 | uint8 | int16 | uint16 | int32 | uint32 | single | double | binaryFeature object

Набор функций два в виде binaryFeatures возразите или M 2 N матрицей. Матрица содержит M 2 функции, и N соответствует длине каждого характеристического вектора.

Можно получить binaryFeatures объект с помощью extractFeatures функция с быстрой сетчаткой keypoint (FREAK), ориентированный быстро и вращаемое резюме (ORB) или метод дескриптора бинарного устойчивого инвариантного масштабируемого keypoints (BRISK).

Типы данных: логический | int8 | uint8 | int16 | uint16 | int32 | uint32 | single | double | binaryFeature object

Характерные точки набора функций два в виде любого M матрица 2 на 2 в формате [x y] или M массив характерной точки с 2 элементами. Для списка типов функции точки смотрите Типы Функции Точки.

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

Ожидаемые соответствующие местоположения во втором изображении, которые соответствуют характерным точкам от features1В виде M 1 2 матрица координат в формате [x y].

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

Поисковый радиус, сопоставленный с центральными точками в виде скаляра или вектора 1 элемента M. Когда вы задаете radius как скалярное значение, функция использует тот же поисковый радиус для всех центральных точек.

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

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

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

Пример: 'Metric', 'SSD' задает сумму метрики различий в квадрате для соответствия функции.

Соответствие с порогом в виде скалярного значения в области значений (0,100]. Значениями по умолчанию является 10.0 для бинарных характеристических векторов или 1.0 для небинарных характеристических векторов. Можно использовать соответствующий порог, чтобы выбрать самые сильные соответствия. Порог представляет процент расстояния от идеальной пары.

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

Входные параметры, которые являются binaryFeatures объекты обычно требуют большего значения для порога соответствия. extractFeatures функция возвращает binaryFeatures возразите при извлечении FREAK, ORB или дескрипторов BRISK.

Порог отношения в виде скалярного значения в области значений (0, 1]. Используйте отношение, чтобы отклонить неоднозначные соответствия. Увеличьте это значение, чтобы возвратить больше соответствий.

Покажите соответствие с метрикой в виде любого 'SAD' или 'SSD'.

'SAD'Сумма абсолютных разностей
'SSD'Сумма различий в квадрате

Это свойство применяется, когда вы задаете входные наборы функций, features1 и features2, как матрицы. Когда вы задаете функции как binaryFeatures объекты, функция использует Расстояние Хемминга, чтобы вычислить метрику подобия.

Уникальные соответствия в виде логического 0 ложь) или 1 TRUE). Установите это значение к true возвратить только уникальные соответствия между features1 и features2.

Когда вы устанавливаете Unique к false, функция возвращает все соответствия между features1 и features2. Несколько функций в features1 может соответствовать к одной функции в features2.

Когда вы устанавливаете Unique к true, функция выполняет прямое обратное соответствие, чтобы выбрать уникальное соответствие. После соответствия с features1 к features2, это совпадает с features2 к features1 и сохраняет лучшее соответствие.

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

свернуть все

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

Расстояние между соответствием с функциями, возвращенными как P-by-1 вектор. i th элемент в matchMetric соответствует i th строка в indexPairs выходная матрица. Значения расстояний основаны на выбранной метрике, но идеальной парой всегда является 0. Когда Metric установлен в любой SAD или SSD, характеристические векторы нормированы к единичным векторам перед расчетом. Функция возвращает matchMetric как double тип данных, когда features1 и features2 имеют тип double. В противном случае возвращенный вектор имеет тип single.

МетрикаОбласть значений
SAD[0, 2*sqrt(size(features1,2))].
SSD[0, 4]
Хэмминг[0, features1.NumBits]

Примечание

Вы не можете выбрать метрику Хэмминга. Метрика выбрана автоматически когда features1 и features2 входными параметрами является binaryFeatures.

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

Советы

  • Используйте эту функцию, когда 3-D мировые точки, которые соответствуют набору функций один features1, известны. centerPoints может быть получен путем проектирования 3-D мировой точки на второе изображение. Можно получить 3-D мировые точки путем триангулирования соответствующих точек изображений от двух стереоизображений.

  • Можно определить круговую площадь точек в наборе функций два, чтобы соответствовать с набором функций один. Задайте источник как centerPoints с радиусом, заданным radius. Задайте точки, чтобы соответствовать от набора функций два как points2

    Matched projected points from image 1 and image 2.

Ссылки

[1] Fraundorfer, Фридрих и Давиде Скарамуцца. “Визуальная Одометрия: Вторая часть: Соответствие, Робастность, Оптимизация и Приложения”. IEEE Robotics & Automation Magazine 19, № 2 (июнь 2012): 78–90. https://doi.org/10.1109/MRA.2012.2182810.

[2] Лоу, Дэвид Г. “Отличительные Функции Изображений от Инвариантного к масштабу Keypoints”. Международный журнал Компьютерного зрения 60, № 2 (ноябрь 2004): 91–110. https://doi.org/10.1023/B:VISI.0000029664.99615.94.

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

[4] Muja, Мариус и Дэвид Г. Лоу. "Быстро Соответствие Бинарных Функций". На 2 012 Девятых Конференциях по Видению Компьютера и Робота, 404–10. Нью-Йорк: Институт инженеров по электротехнике и электронике, 2012. https://doi.org/10.1109/CRV.2012.60.

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

Введенный в R2021a