exponenta event banner

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 объект или матрица M1-by-N. Матрица содержит M1 признаков, а N соответствует длине каждого вектора признаков.

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

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

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

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

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

Характерные точки набора элементов два, заданные как матрица M2-by-2 в формате [x y] или массив M2-element характерных точек. Список типов точечных элементов см. в разделе Типы точечных элементов.

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

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

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

Радиус поиска, связанный с центральными точками, задается как скаляр или вектор M1-element. При указании 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-by-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]

Примечание

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

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

Совет

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

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

    Matched projected points from image 1 and image 2.

Ссылки

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

[2] Лоу, Дэвид Г. «Отличительные особенности изображения от инвариантных по масштабу ключевых точек». Международный журнал компьютерного зрения 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. Нью-Йорк: Институт инженеров по электротехнике и электронике, 2012. https://doi.org/10.1109/CRV.2012.60.

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

.
Представлен в R2021a