fitgeotrans

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

Описание

пример

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. Локальное преобразование взвешенного среднего создает отображение путем выведения полинома при каждом использовании контрольной точки, граничащем с контрольными точками. Отображение в любом местоположении зависит от взвешенного среднего этих полиномов. Затем самые близкие точки используются, чтобы вывести второе преобразование полинома степени для каждой пары контрольной точки.

Примеры

свернуть все

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

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

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