affine2d

2D аффинное геометрическое преобразование

Описание

affine2d информация об объектно-ориентированной памяти о 2D аффинном геометрическом преобразовании и включает вперед и обратные преобразования.

Создание

Можно создать affine2d объект с помощью следующих методов:

  • imregtform — Оцените геометрическое преобразование, которое сопоставляет движущееся изображение с фиксированным изображением с помощью оптимизации подобия.

  • imregcorr — Оцените геометрическое преобразование, которое сопоставляет движущееся изображение с фиксированной корреляцией фазы использования изображений.

  • fitgeotrans — Оцените геометрическое преобразование, которое сопоставляет пары контрольных точек между двумя изображениями.

  • randomAffine2d — Создайте рандомизированное 2D аффинное преобразование.

  • affine2d функция описана здесь.

Описание

tform = affine2d создает affine2d объект с настройками свойства по умолчанию, которые соответствуют единичному преобразованию.

пример

tform = affine2d(T) устанавливает свойство T как заданная допустимая матрица аффинного преобразования.

Свойства

развернуть все

Передайте 2D аффинное преобразование в виде несингулярной 3х3 числовой матрицы.

Матричный T использование соглашение:

[x y 1] = [u v 1] * T

где T имеет форму:

 [a b 0;
  c d 0;
  e f 1];

Значение по умолчанию T единичное преобразование.

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

Размерность геометрического преобразования для обеих точек ввода и вывода в виде значения 2.

Функции объекта

invertИнвертируйте геометрическое преобразование
isRigidОпределите, является ли преобразование твердым преобразованием
isSimilarityОпределите, является ли преобразование преобразованием подобия
isTranslationОпределите, является ли преобразование чистым переводом
outputLimitsНайдите выход, пространственные данные пределы вводят пространственные пределы
transformPointsForwardПримените прямое геометрическое преобразование
transformPointsInverseПримените обратное геометрическое преобразование

Примеры

свернуть все

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

theta = 30;
tform = affine2d([ ...
    cosd(theta) sind(theta) 0;...
    -sind(theta) cosd(theta) 0; ...
    0 0 1])
tform = 
  affine2d with properties:

    Dimensionality: 2
                 T: [3x3 double]

Примените прямое геометрическое преобразование к точке (10,0).

[x,y] = transformPointsForward(tform,10,0)
x = 8.6603
y = 5

Подтвердите преобразование путем графического вывода исходной точки (в синем) и преобразованной точки (в красном).

plot(10,0,'bo',x,y,'ro')
axis([0 12 0 12])
axis square

Считайте и отобразите изображение.

I = imread('kobi.png');
imshow(I)

Создайте affine2d объект преобразования, который вращает изображения. randomAffine2d функционируйте выбирает угол поворота случайным образом от непрерывного равномерного распределения в интервале [35, 55] степени.

tform1 = randomAffine2d('Rotation',[35 55]);

Вращайте изображение и отобразите результат.

J = imwarp(I,tform1);
imshow(J)

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

tform2 = randomAffine2d('Rotation',[-10 10]);
J2 = imwarp(I,tform2);
imshow(J2)

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

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

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

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

Введенный в R2013a