estimateGeometricTransform2D

Оцените 2D геометрическое преобразование от соответствия с парами точки

Описание

пример

tform = estimateGeometricTransform2D(matchedPoints1,matchedPoints2,transformType) оценивает 2D геометрическое преобразование между двумя изображениями путем отображения inliers в совпадающих точках от одного изображения matchedPoints1 к inliers в совпадающих точках от другого изображения matchedPoints2.

[tform,inlierIndex] = estimateGeometricTransform2D(___) дополнительно возвращает вектор, задающий каждую совпадающую пару точки или как inlier или как выброс с помощью входных параметров от предыдущего синтаксиса.

[tform,inlierIndex,status] = estimateGeometricTransform2D(___) дополнительно возвращает код статуса, указывающий, могла ли функция оценить преобразование и, в противном случае почему она перестала работать. Если вы не задаете status выведите, функция вместо этого возвращает ошибку для условий, которые не могут привести к результатам.

[___] = estimateGeometricTransform2D(___, Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение" в дополнение к любой комбинации аргументов от предыдущих синтаксисов. Например, 'Confidence',99 устанавливает значение доверия для нахождения максимального количества inliers к 99.

Примеры

свернуть все

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

original = imread('cameraman.tif');
imshow(original)
title('Base Image')

Исказите и отобразите преобразованное изображение.

distorted = imresize(original,0.7); 
distorted = imrotate(distorted,31);
figure
imshow(distorted)
title('Transformed Image')

Обнаружьте и извлеките функции из оригинала и преобразованных изображений.

ptsOriginal  = detectSURFFeatures(original);
ptsDistorted = detectSURFFeatures(distorted);
[featuresOriginal,validPtsOriginal] = extractFeatures(original,ptsOriginal);
[featuresDistorted,validPtsDistorted] = extractFeatures(distorted,ptsDistorted);

Совпадайте и отобразите функции между изображениями.

index_pairs = matchFeatures(featuresOriginal,featuresDistorted);
matchedPtsOriginal  = validPtsOriginal(index_pairs(:,1));
matchedPtsDistorted = validPtsDistorted(index_pairs(:,2));
figure 
showMatchedFeatures(original,distorted,matchedPtsOriginal,matchedPtsDistorted)
title('Matched SURF Points With Outliers');

Исключите выбросы, оцените матрицу преобразования и отобразите результаты.

[tform,inlierIdx] = estimateGeometricTransform2D(matchedPtsDistorted,matchedPtsOriginal,'similarity');
inlierPtsDistorted = matchedPtsDistorted(inlierIdx,:);
inlierPtsOriginal  = matchedPtsOriginal(inlierIdx,:);

figure 
showMatchedFeatures(original,distorted,inlierPtsOriginal,inlierPtsDistorted)
title('Matched Inlier Points')

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

outputView = imref2d(size(original));
Ir = imwarp(distorted,tform,'OutputView',outputView);
figure 
imshow(Ir); 
title('Recovered Image');

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

свернуть все

Совпадающие точки от первого изображения в виде любого KAZEPoints объект, cornerPoints объект, SURFPoints объект, MSERRegions объект, ORBPoints объект, BRISKPoints объект или M-by-2 матрица, в которой каждая строка является парой [x, y] координаты и M, является количеством совпадающих точек.

Совпадающие точки от второго изображения в виде любого KAZEPoints объект, cornerPoints объект, SURFPoints объект, MSERRegions объект, ORBPoints объект, BRISKPoints объект или M-by-2 матрица, в которой каждая строка является парой [x, y] координаты и M, является количеством совпадающих точек.

Тип преобразования в виде символьной строки. Можно установить тип преобразования на 'rigid', 'similarity', 'affine', или 'projective'. Каждый преобразовывает тип, требует, чтобы минимальное количество совпадающих пар точек оценило преобразование. Можно обычно улучшать точность преобразования при помощи большего числа совпадающих пар точек. Эта таблица показывает тип объекта, сопоставленного с каждым типом преобразования и минимальным количеством совпадающих пар точек, которых требует преобразование.

Тип преобразованияtform ОбъектМинимальное количество совпадающих пар точек
'rigid'rigid2d2
'similarity'affine2d2
'affine'affine2d3
'projective'projective2d4

Типы данных: string

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

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

Пример: 'Confidence',99 устанавливает значение доверия для нахождения максимального количества inliers к 99.

Максимальное количество случайных испытаний в виде разделенной запятой пары, состоящей из 'MaxNumTrials' и положительное целое число. Это значение задает количество рандомизированных попыток, которые функция предпринимает, чтобы найти соответствие с парами точки. Определение более высокого значения заставляет функцию выполнять дополнительные расчеты, который увеличивает вероятность нахождения inliers.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Доверие нахождения максимального количества inliers в виде разделенной запятой пары, состоящей из 'Confidence' и положительный числовой скаляр в области значений (0, 100). Увеличение этого значения заставляет функцию выполнять дополнительные расчеты, который увеличивает вероятность нахождения большего количества inliers.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Максимальное расстояние от точки до проекции соответствующей точки в виде разделенной запятой пары, состоящей из 'MaxDistance' и положительный числовой скаляр. 'MaxDistance' задает максимальное расстояние, в пикселях, что точка может отличаться от спроектированного местоположения своей соответствующей точки, которая будет рассмотрена inlier. Соответствующая проекция основана на предполагаемом преобразовании.

Функция проверяет на преобразование от matchedPoints1 к matchedPoints2, и затем вычисляет расстояние между совпадающими точками в каждой паре после применения преобразования. Если расстояние между совпадающими точками в паре больше 'MaxDistance' значение, затем пара рассматривается выбросом для того преобразования. Если расстояние меньше 'MaxDistance', затем пара рассматривается inlier.

A matched point show in image 1 and image 2. Image one shows the point from image 2 projected back onto image 1.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Геометрическое преобразование, возвращенное как rigid2d, affine2d, или projective2d объект.

Возвращенная матрица геометрического преобразования сопоставляет inliers в matchedPoints1 к inliers в matchedPoints2. Функция возвращает объект, характерный для типа преобразования, заданного transformType входной параметр.

transformTypetform
'rigid'rigid2d
'similarity'affine2d
'affine'affine2d
'projective'projective2d

Код статуса, возвращенный как 0, 1, или 2. Код статуса указывает, могла ли функция оценить преобразование и, в противном случае почему это перестало работать.

ЗначениеОписание
0Никакая ошибка
1matchedPoints1 и matchedPoints2 входные параметры не содержат достаточно точек
2Недостаточно inliers найдено

Если вы не задаете status код вывел, функция возвращает ошибку, если это не может привести к результатам.

Типы данных: int32

Индекс inliers, возвращенного как M-by-1 логический вектор, где M является количеством пар точки. Каждый элемент содержит любого логический 1 TRUE), указывая, что соответствующая пара точки является inlier или логическим 0 ложь), указывая, что соответствующая пара точки является выбросом.

Алгоритмы

Функция исключает выбросы с помощью демонстрационного согласия M-средства-оценки (MSAC) алгоритм. Алгоритм MSAC является вариантом согласия случайной выборки (RANSAC) алгоритм. Результаты не могут быть идентичными между запусками из-за рандомизированной природы алгоритма MSAC.

Ссылки

[1] Хартли, Ричард и Эндрю Зиссермен. Несколько Геометрия Представления в Компьютерном зрении. 2-й редактор Кембридж, Великобритания  ; Нью-Йорк: Издательство Кембриджского университета, 2003.

[2] Торр, P.H.S., и А. Зиссермен. “MLESAC: Новое Устойчивое Средство оценки с Приложением к Оценке Геометрии Изображений”. Компьютерное зрение и Распознавание изображений 78, № 1 (апрель 2000): 138–56. https://doi.org/10.1006/cviu.1999.0832.

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

Введенный в R2020b