matchFeatures

Поиск соответствующих функций

Описание

пример

indexPairs = matchFeatures(features1,features2) возвращает индексы совпадающих функций в двух входных наборах функций. Вход должна быть либо binaryFeatures объекты или матрицы.

[indexPairs,matchmetric] = matchFeatures(features1,features2) также возвращает расстояние между соответствующими функциями, индексируемое indexPairs.

[indexPairs,matchmetric] = matchFeatures(features1,features2,Name,Value) включает дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

Найдите соответствующие процентные точки между парой изображений, используя локальные соседства и алгоритм Харриса.

Чтение стерео изображений.

I1 = im2gray(imread('viprectification_deskLeft.png'));
I2 = im2gray(imread('viprectification_deskRight.png'));

Найдите углы.

points1 = detectHarrisFeatures(I1);
points2 = detectHarrisFeatures(I2);

Извлечение функций.

[features1,valid_points1] = extractFeatures(I1,points1);
[features2,valid_points2] = extractFeatures(I2,points2);

Соответствовать функциям.

indexPairs = matchFeatures(features1,features2);

Найдите местоположения соответствующих точек для каждого изображения.

matchedPoints1 = valid_points1(indexPairs(:,1),:);
matchedPoints2 = valid_points2(indexPairs(:,2),:);

Визуализируйте соответствующие точки. Вы можете увидеть эффект перевода между двумя изображениями, несмотря на несколько ошибочных совпадений.

figure; 
showMatchedFeatures(I1,I2,matchedPoints1,matchedPoints2);

Figure contains an axes. The axes contains 4 objects of type image, line.

Используйте функцию SURF локального признака detector, чтобы найти соответствующие точки между двумя изображениями, которые поворачиваются и масштабируются относительно друг друга.

Прочтите два изображения.

I1 = imread('cameraman.tif');
I2 = imresize(imrotate(I1,-20),1.2);

Найдите функции SURF.

points1 = detectSURFFeatures(I1);
points2 = detectSURFFeatures(I2);

Извлеките функции.

[f1,vpts1] = extractFeatures(I1,points1);
[f2,vpts2] = extractFeatures(I2,points2);

Найдите местоположения совпадающих точек.

indexPairs = matchFeatures(f1,f2) ;
matchedPoints1 = vpts1(indexPairs(:,1));
matchedPoints2 = vpts2(indexPairs(:,2));

Отобразите совпадающие точки. Данные по-прежнему включают несколько выбросов, но можно увидеть эффекты поворота и масштабирования на отображении совпадающих функций.

figure; showMatchedFeatures(I1,I2,matchedPoints1,matchedPoints2);
legend('matched points 1','matched points 2');

Figure contains an axes. The axes contains 4 objects of type image, line. These objects represent matched points 1, matched points 2.

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

свернуть все

Набор функций 1, заданный как binaryFeatures объект или M1 -by - N матрица. Матрица содержит M1 функций, и N соответствует длине каждого вектора функции. Вы можете получить binaryFeatures использование объекта extractFeatures функция с помощью быстрой точки ключа сетчатки (FREAK), ориентированного FAST и вращенного BRIEF (ORB) или бинарного устойчивого инвариантного дескриптора масштабируемых точек ключа (BRISK).

Набор функций 2, заданный как binaryFeatures объект или M2 -by - N матрица. Матрица содержит M2 функций и N соответствует длине каждого вектора функции. Вы можете получить binaryFeatures использование объекта extractFeatures функция с помощью быстрой точки ключа сетчатки (FREAK), ориентированного FAST и вращенного BRIEF (ORB) или бинарного устойчивого инвариантного дескриптора масштабируемых точек ключа (BRISK).

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

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

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

Метод соответствия, заданный как разделенная разделенными запятой парами, состоящая из 'Method'и любой из них 'Exhaustive' или 'Approximate'. Метод задает, как ближайшие соседи между features1 и features2 найдены. Два вектора функций совпадают, когда расстояние между ними меньше порога, заданного MatchThreshold параметр.

'Exhaustive'

Вычислите парное расстояние между векторами функций в features1 и features2.

'Approximate'

Используйте эффективный аппроксимационный поиск по ближайшему соседу. Используйте этот метод для больших наборов функций. [3]

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

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

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

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

Метрика соответствия функций, заданная как разделенная разделенными запятой парами, состоящая из 'Metric'и любой из них 'SAD' или 'SSD'.

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

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

Уникальные совпадения, заданные как разделенная разделенными запятой парами, состоящая из 'Unique'и любой из них false или true. Установите это значение равным true чтобы вернуть только уникальные совпадения между features1 и features2.

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

column representing features 1 with entry 1 and 3 circled and pointing to entry 2 of a column representing features 2

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

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

свернуть все

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

Расстояние между совпадающими функциями, возвращенное как p-на-1 вектор. Значение расстояний основано на выбранной метрике. Каждый i й элемент в matchmetric соответствует i-й строке в indexPairs выходная матрица. Когда Metric задано значение либо SAD или SSDвекторы функций нормированы к единичным векторам перед расчетом.

МетрикаОбласть значенийИдеальное значение соответствия
SAD[0, 2*sqrt(size(features1, 2))]. 0
SSD[0, 4]0
Hamming[0, features1.NumBits]0

Примечание

Вы не можете выбрать Hamming метрический. Он вызывается автоматически при features1 и features2 входы binaryFeatures.

Ссылки

[1] Lowe, David G. «Отличительные функции изображений из точек ключа с инвариантной шкалой». Международный журнал компьютерного зрения. Том 60, номер 2, стр. 91-110.

[2] Muja, M., and D. G. Lowe. "Быстрое соответствие двоичных функций. "Конференция по компьютеру и видению роботов. CRV, 2012.

[3] Muja, M., and D. G. Lowe. «Быстрая аппроксимация ближайших соседей с автоматическим строением алгоритма». Международная конференция по теории компьютерного зрения и применения.VISAPP, 2009.

[4] Rublee, E., V. Rabaud, K. Konolige and G. Bradski. ORB: Эффективная альтернатива SIFT или SURF. В работе 2011 международной конференции по компьютерному зрению, 2564-2571. Барселона, Испания, 2011.

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

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