exponenta event banner

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. Локальное взвешенное среднее преобразование создает отображение путем вывода полинома в каждой контрольной точке с использованием соседних управляющих точек. Отображение в любом месте зависит от средневзвешенного значения этих многочленов. 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] Гоштасби, Ардешир, «Кусочно-линейные картографические функции для регистрации изображения», Распознавание образов, том 19, 1986, стр. 459-466.

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

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

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