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:

                 T: [3x3 double]
    Dimensionality: 2

Примените прямое геометрическое преобразование к точке (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

Figure contains an axes object. The axes object contains 2 objects of type line.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 object. The axes object 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

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

Введенный в R2013a