fitgeotrans

Подходящее геометрическое преобразование к парам контрольной точки

Синтаксис

tform = fitgeotrans(movingPoints,fixedPoints,transformationType)
tform = fitgeotrans(movingPoints,fixedPoints,'polynomial',degree)
tform = fitgeotrans(movingPoints,fixedPoints,'pwl')
tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n)

Описание

пример

tform = fitgeotrans(movingPoints,fixedPoints,transformationType) берет пары контрольных точек, movingPoints и fixedPoints, и использует их, чтобы вывести геометрическое преобразование, заданное transformationType.

tform = fitgeotrans(movingPoints,fixedPoints,'polynomial',degree) соответствует объекту PolynomialTransformation2D к парам контрольной точки movingPoints и fixedPoints. Задайте степень полиномиального преобразования degree, который может быть 2, 3, или 4.

tform = fitgeotrans(movingPoints,fixedPoints,'pwl') соответствует объекту PiecewiseLinearTransformation2D к парам контрольной точки movingPoints и fixedPoints. Это преобразование сопоставляет контрольные точки путем разбивания плоскости в локальные кусочно-линейные области. Различное аффинное преобразование сопоставляет контрольные точки в каждой локальной области.

tform = fitgeotrans(movingPoints,fixedPoints,'lwm',n) соответствует объекту LocalWeightedMeanTransformation2D к парам контрольной точки movingPoints и fixedPoints. Локальное преобразование взвешенного среднего создает отображение путем выведения полинома при каждом использовании контрольной точки, граничащем с контрольными точками. Отображение в любом местоположении зависит от взвешенного среднего этих полиномов. n самые близкие точки используется, чтобы вывести второе преобразование полинома степени для каждой пары контрольной точки.

Примеры

свернуть все

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

Создайте изображение шахматной доски и вращайте его, чтобы создать неправильно выровненное изображение.

I = checkerboard(40);
J = imrotate(I,30);
imshowpair(I,J,'montage')

Задайте некоторые соответствующие контрольные точки на фиксированном изображении (шахматная доска) и движущееся изображение (вращаемая шахматная доска). Можно задать точки в интерактивном режиме с помощью инструмента Control Point Selection.

fixedPoints = [41 41; 281 161];
movingPoints = [56 175; 324 160];

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

tform = fitgeotrans(movingPoints,fixedPoints,'NonreflectiveSimilarity')
tform = 
  affine2d with properties:

    Dimensionality: 2
                 T: [3x3 double]

Используйте оценку tform, чтобы передискретизировать вращаемое изображение, чтобы указать его с фиксированным изображением. Области цвета (зеленый и пурпурный) в изображении наложения фиктивного цвета указывают на ошибку в регистрации. Эта ошибка прибывает из отсутствия точного соответствия в контрольных точках.

Jregistered = imwarp(J,tform,'OutputView',imref2d(size(I)));
figure
imshowpair(I,Jregistered)

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

u = [0 1]; 
v = [0 0]; 
[x, y] = transformPointsForward(tform, u, v); 
dx = x(2) - x(1); 
dy = y(2) - y(1); 
angle = (180/pi) * atan2(dy, dx) 
angle = 29.7686
scale = 1 / sqrt(dx^2 + dy^2)
scale = 1.0003

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

свернуть все

x - и y - координаты контрольных точек в изображении вы хотите преобразовать, заданный как m-by-2 двойная матрица.

Пример: movingPoints = [11 11; 41 71];

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

x - и y - координаты контрольных точек в фиксированном изображении, заданном как m-by-2, удваивают матрицу.

Пример: fixedPoints = [14 44; 70 81];

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

Тип преобразования, заданного как одно из следующего: 'nonreflectivesimilarity', 'similarity', 'affine' или 'projective'. Для получения дополнительной информации смотрите Типы Преобразования.

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

Степень полинома, заданного как целое число 2, 3, или 4.

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

Число точек, чтобы использовать в локальном вычислении взвешенного среднего, заданном как числовое значение. n может быть всего 6, но создание n маленькие риски, генерирующие плохо обусловленные полиномы

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

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

свернуть все

Преобразование, возвращенное как объект преобразования. Тип объекта зависит от типа преобразования. Например, если вы указываете, что преобразование вводит 'affine', затем tform является объектом affine2d. Если вы задаете 'pwl', то tform является объектом image.geotrans.PiecewiseLinearTransformation2d.

Больше о

свернуть все

Типы преобразования

Таблица приводит все типы преобразования, поддержанные fitgeotrans в порядке сложности.

Тип преобразования

ОписаниеМинимальное количество пар контрольной точкиПример
'nonreflective similarity'Используйте это преобразование, когда формы в движущемся изображении неизменны, но изображение искажено некоторой комбинацией перевода, вращения и масштабирования. Прямые линии остаются прямыми, и параллельны строкам, все еще параллельны. 2

'similarity'То же самое как 'nonreflective similarity' со сложением дополнительного отражения.3

'affine'Используйте это преобразование когда формы в сдвиге выставки движущегося изображения. Прямые линии остаются прямыми, и параллельны строкам, остаются параллельными, но прямоугольники становятся параллелограммами.3

'projective'Используйте это преобразование, когда сцена будет казаться наклоненной. Прямые линии остаются прямыми, но параллельны строкам, сходятся к пределу.4

'polynomial'Используйте это преобразование, когда объекты в изображении будут изогнуты. Чем выше порядок полинома, тем лучше подгонка, но результат может содержать больше кривых, чем фиксированное изображение.

6 (порядок 2)

10 (порядок 3)

15 (порядок 4)

'pwl'Используйте это преобразование (кусочный линейный), когда части изображения будут казаться искаженными по-другому.4

'lwm'Используйте это преобразование (локальное взвешенное среднее), когда искажение отличается локально, и кусочный линейный не достаточно. 6 (12 рекомендуемых)

Ссылки

[1] Goshtasby, Ardeshir, "Кусочное линейное отображение функционирует для регистрации изображений", Распознавание образов, Издание 19, 1986, стр 459-466.

[2] Goshtasby, Ardeshir, "Регистрация изображений локальными методами приближения", Изображение и Вычисление Видения, Издание 6, 1988, стр 255-261.

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

Введенный в R2013b

Для просмотра документации необходимо авторизоваться на сайте