matchFeatures

Найдите соответствующие признаки

Описание

пример

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

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

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

Примеры

свернуть все

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

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

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 object. The axes object contains 4 objects of type image, line.

Используйте функцию детектора локального признака 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');

Figure contains an axes object. The axes object 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 функция с быстрой сетчаткой keypoint (FREAK), Ориентированный FAST и Вращаемый BRIEF (ORB) или метод дескриптора бинарного устойчивого инвариантного масштабируемого keypoints (BRISK).

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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]. Используйте макс. отношение для отклонения неоднозначных соответствий. Увеличьте это значение, чтобы возвратить больше соответствий.

Покажите соответствие с метрикой в виде разделенной запятой пары, состоящей из '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-by-2 матрица количества P индексов. Каждая пара индекса соответствует совпадающей функции между features1 и features2 входные параметры. Первый элемент индексирует функцию в 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

Ссылки

[1] Лоу, Дэвид Г. "Отличительные Функции Изображений от Инвариантного к масштабу Keypoints". Международный журнал Компьютерного зрения. Объем 60, Номер 2, стр 91–110.

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

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

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

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

Введенный в R2011a