estimateGeometricTransform2D

Оцените 2-D геометрическое преобразование из совпадающих пар точек

Описание

пример

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

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

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

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

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

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

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

Типы данных: 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 к инкрустаторам в matchedPoints2. Функция возвращает объект, специфичный для типа преобразования, заданного transformType входной параметр.

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

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

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

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

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

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

Алгоритмы

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

Ссылки

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

[2] Торр, P.H.S., и А. Циссерман. MLESAC: новый робастный оценщик с приложением для оценки геометрии изображения. Компьютерное зрение и понимание изображений 78, № 1 (апрель 2000): 138-56. https://doi.org/10.1006/cviu.1999.0832.

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

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