estimateGeometricTransform

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

Описание

пример

tform = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType) возвращает 2-D объект геометрического преобразования, tform. The tform объект отображает inliers в matchedPoints1 к инкрустаторам в matchedPoints2.

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

Примечание

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

пример

[tform,inlierpoints1,inlierpoints2] = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType) возвращает соответствующие входные точки в inlierpoints1 и inlierpoints2.

пример

[___,status] = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType) возвращает код состояния 0, 1, или 2. Если вы не запрашиваете status code output, функция возвращает ошибку для условий, которые не могут привести к результатам.

[___] = estimateGeometricTransform(matchedPoints1,matchedPoints2,transformType, Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

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

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

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

свернуть все

Совпадающие точки из изображения 1, заданные как KAZEPoints, cornerPoints объект, SURFPoints объект, MSERRegions объект, ORBPoints объект, BRISKPointsили M -by-2 матрица с координатами [x, y]. Функция исключает выбросы, используя алгоритм M-estimator SAmple Consensus (MSAC). Алгоритм MSAC является вариантом алгоритма Random Sample Consensus (RANSAC).

Совпадающие точки из изображения 2, заданные как KAZEPoints, cornerPoints объект, SURFPoints объект, MSERRegions объект, ORBPoints объект, BRISKPointsили M -by-2 матрица с координатами [x, y]. Функция исключает выбросы, используя алгоритм M-estimator SAmple Consensus (MSAC). Алгоритм MSAC является вариантом алгоритма Random Sample Consensus (RANSAC).

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

Тип преобразованияМинимальное количество совпадающих пар точек
'similarity'2
'affine'3
'projective'4

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

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

Задайте необязательные разделенные разделенными запятой парами 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'и положительный числовой скаляр. Соответствующая проекция основана на оцененном преобразовании.

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

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

свернуть все

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

Возвращенная геометрическая матрица преобразования отображает inliers в matchedPoints1 к инкрустаторам в matchedPoints2. Когда вы устанавливаете transformType вход в любой из 'similarity' или 'affine', функция возвращает affine2d объект. В противном случае возвращается projective2d объект.

Код состояния, возвращенный как значение 0, 1, или 2.

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

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

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

Точки Inlier в изображении 1, возвращенные так же, как и входные совпадающие точки.

Точки Inlier в изображении 2, возвращенные так же, как и входные совпадающие точки.

Ссылки

[1] Hartley, R. and A. Zisserman, «Multiple View Geometry in Компьютерное Зрение», Cambridge University Press, 2003.

[2] Torr, P. H. S., and A. Zisserman, «MLESAC: A New Robust Estimator with Application to Estimating Image Geometry», Компьютерное Зрение and Image Understanding, 2000.

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

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