affine2d

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

Описание

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

Создание

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

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

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

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

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

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

Описание

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

пример

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

Свойства

расширить все

Прямое 2-D аффинное преобразование, заданное как несингулярная числовая матрица 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. The axes contains 2 objects of type line.

Чтение и отображение изображения.

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

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

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

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

Поверните изображение и отобразите результат.

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

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

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

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

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

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

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

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

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

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