exponenta event banner

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 используется для поиска соответствующих точек между двумя изображениями, которые повернуты и масштабированы относительно друг друга.

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

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

Метрика соответствия элементов, заданная как разделенная запятыми пара, состоящая из '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-й элемент в 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] Лоу, Дэвид Г. «Отличительные особенности изображения от инвариантных по масштабу ключевых точек». Международный журнал компьютерного зрения. Том 60, номер 2, стр. 91-110.

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

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

[4] Рублее, Э., В. Рабо, К. Конолиге и Г. Брадски. «ORB: Эффективная альтернатива SIFT или SURF». В материалах Международной конференции по компьютерному зрению 2011 года, 2564-2571. Барселона, Испания, 2011.

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

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