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

Примеры

свернуть все

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

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

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

Figure contains an axes. The axes contains an object of type image.

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

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

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

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

                 T: [3x3 double]
    Dimensionality: 2

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

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

Figure contains an axes. The axes contains an object of type image.

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

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

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

'similarity'То же, что и 'nonreflectivesimilarity' с сложением необязательного отражения.3

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

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

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

6 (порядок 2)

10 (порядок 3)

15 (порядок 4)

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

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

Ссылки

[1] Goshtasby, Ardeshir, «Кусочно-линейные функции отображения для регистрации изображений», Pattern Recognition, Vol. 19, 1986, pp. 459-466.

[2] Goshtasby, Ardeshir, «Регистрация изображений локальными методами приближения», Image and Vision Computing, Vol. 6, 1988, pp. 255-261.

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

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