exponenta event banner

estimateGeometricTransform2D

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

Описание

пример

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

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

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

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

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

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

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

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

Алгоритмы

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

Ссылки

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

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

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

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