matchFeatures

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

Синтаксис

indexPairs = matchFeatures(features1,features2)
[indexPairs,matchmetric] = matchFeatures(features1,features2)
[indexPairs,matchmetric] = matchFeatures(features1,features2,Name,Value)

Описание

пример

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

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

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

Примеры

свернуть все

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

Считайте стереоизображения.

I1 = rgb2gray(imread('viprectification_deskLeft.png'));
I2 = rgb2gray(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);

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

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

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');

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

свернуть все

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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 при извлечении ПЯТНА, ORB или дескрипторов BRISK.

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

Покажите соответствие с метрикой, заданной как пара, разделенная запятой, состоящая из 'Metric' и или 'SAD' или 'SSD'.

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

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

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

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

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

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

свернуть все

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

Расстояние между соответствием с функциями, возвращенными как p-by-1 вектор. Значение расстояний основано на выбранной метрике. Каждый i th элемент в matchmetric соответствует i th строка в выходной матрице 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] Лоу, Дэвид Г. "Отличительные Функции Изображений от Инвариантного к масштабу Keypoints". Международный журнал Компьютерного зрения. Объем 60, Номер 2, стр 91–110.

[2] Muja, M. и Д. Г. Лоу. "Быстро соответствие бинарных функций. "Конференция по видению компьютера и робота. CRV, 2012.

[3] Muja, M. и Д. Г. Лоу. "Быстро аппроксимируйте самых близких соседей с автоматической настройкой алгоритма". Международная конференция по вопросам теории компьютерного зрения и приложений. VISAPP, 2009.

[4] Rublee, E., В. Рабо, К. Конолидж и Г. Брадский. "ORB: эффективная альтернатива, чтобы ОТСЕЯТЬ или SURF". В Продолжениях 2 011 Международных конференций по вопросам Компьютерного зрения, 2564–2571. Барселона, Испания, 2011.

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

Введенный в R2011a

Для просмотра документации необходимо авторизоваться на сайте