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-by- N. Матрица содержит M 1 функций, и N соответствует длине каждого вектора функции.

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

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

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

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

Типы данных: logical | 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

Радиус поиска, сопоставленный с центральными точками, задается как скаляр или M вектор с 1 элементом. Когда вы задаете 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 (false) или 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-на-1 вектор. i-й элемент в matchMetric соответствует i-й строке в indexPairs выходная матрица. Значения расстояний основаны на выбранной метрике, но идеальное соответствие всегда 0. Когда Metric задано значение либо SAD или SSDвекторы функций нормированы к единичным векторам перед расчетом. Функция возвращается matchMetric как double тип данных при features1 и features2 имеют тип double. В противном случае возвращенный вектор имеет тип single.

МетрикаОбласть значений
ПЕЧАЛЬНЫЙ[0, 2*sqrt(size(features1, 2))].
SSD[0, 4]
Хэмминг[0, features1.NumBits]

Примечание

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

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

Совет

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

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

    Matched projected points from image 1 and image 2.

Ссылки

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

[2] Lowe, David G. «Отличительные функции изображений из шкально-инвариантных ключевых точек». Международный журнал компьютерного зрения 60, № 2 (ноябрь 2004): 91-110. https://doi.org/10.1023/B:VISI.0000029664.99615.94.

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

[4] Муха, Мариус и Дэвид Г. Лоу. «Быстрое соответствие двоичных функций». В 2012 году Девятая конференция по компьютеру и видению роботов, 404-10. New York: Institute of Electrical and Electronics Engineers, 2012. https://doi.org/10.1109/CRV.2012.60.

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

.
Введенный в R2021a