Можно использовать матрицу геометрического преобразования, чтобы выполнить глобальное преобразование изображения. Во-первых, задайте матрицу преобразования и используйте ее, чтобы создать объект геометрического преобразования. Затем примените глобальное преобразование к изображению путем вызова imwarp
с объектом геометрического преобразования. Для примера смотрите, Выполняют Простое 2D Преобразование Перевода.
Таблица приводит 2D аффинные преобразования с матрицей преобразования, используемой, чтобы задать их. Для 2D аффинных преобразований последний столбец должен содержать [0 0 1] однородные координаты.
Используйте матрицу преобразования, чтобы создать объект геометрического преобразования affine2d
.
2D аффинное преобразование | Пример (Оригинальное и преобразованное изображение) | Матрица преобразования | |
---|---|---|---|
Перевод |
Для получения дополнительной информации о пиксельных координатах, смотрите Системы координат Изображений. | ||
Шкала |
|
| |
Сдвиг |
|
| |
Вращение |
|
|
Проективное преобразование позволяет плоскости изображения наклониться. Параллельные строки могут сходиться к пределу, создавая видимость глубины.
Преобразование является 3х3 матрицей. В отличие от аффинных преобразований, нет никаких ограничений на последний столбец матрицы преобразования.
2D проективное преобразование | Пример | Матрица преобразования | |
---|---|---|---|
Наклон |
|
Когда Обратите внимание на то, что, когда |
Проективные преобразования часто используются, чтобы указать изображения, которые являются неровно. Если бы у вас есть два изображения, которые требуется выровнять, первые избранные пары контрольной точки с помощью cpselect
. Затем соответствуйте проективной матрице преобразования к парам контрольной точки с помощью fitgeotrans
и устанавливая transformationType
на 'projective'
. Это автоматически создает объект геометрического преобразования projective2d
. Матрица преобразования хранится как свойство в объекте projective2d
. Преобразование может затем быть применено к другим изображениям с помощью imwarp
.
Можно объединить несколько преобразований в одну матрицу с помощью умножения матриц. Порядок вопросов умножения матриц.
Этот пример показывает, как создать составной объект 2D преобразований перевода и вращения.
Создайте изображение шахматной доски, которое подвергнется преобразованию. Также создайте пространственный ссылочный объект для изображения.
cb = checkerboard(4,2); cb_ref = imref2d(size(cb));
Чтобы проиллюстрировать пространственное положение изображения, создайте плоское фоновое изображение. Наложите шахматную доску по фону, подсветив положение шахматной доски зеленого цвета.
background = zeros(150); imshowpair(cb,cb_ref,background,imref2d(size(background)))
Создайте матрицу перевода и сохраните ее как объект геометрического преобразования affine2d
. Этот перевод переключит изображение горизонтально на 100 пикселей.
T = [1 0 0;0 1 0;100 0 1]; tform_t = affine2d(T);
Создайте матрицу вращения и сохраните ее как объект геометрического преобразования affine2d
. Этот перевод будет вращать изображение 30 градусов по часовой стрелке вокруг начала координат.
R = [cosd(30) sind(30) 0;-sind(30) cosd(30) 0;0 0 1]; tform_r = affine2d(R);
Перевод, вместе с попеременно
Выполните перевод сначала и второе вращение. В умножении матриц преобразования матрица перевода T
слева, и матрица вращения, которая R
справа.
TR = T*R; tform_tr = affine2d(TR); [out,out_ref] = imwarp(cb,cb_ref,tform_tr); imshowpair(out,out_ref,background,imref2d(size(background)))
Вращение, вместе с переводом
Инвертируйте порядок преобразований: выполните вращение сначала и второй перевод. В умножении матриц преобразования матрица вращения R
слева, и матрица перевода, которая T
справа.
RT = R*T; tform_rt = affine2d(RT); [out,out_ref] = imwarp(cb,cb_ref,tform_rt); imshowpair(out,out_ref,background,imref2d(size(background)))
Заметьте, как пространственное положение преобразованного изображения отличается чем тогда, когда перевод сопровождался попеременно.
В следующей таблице перечислены 3-D аффинные преобразования с матрицей преобразования, используемой, чтобы задать их. Обратите внимание на то, что в 3-D случае, существует несколько матриц, в зависимости от того, как вы хотите вращать или сдвинуть изображение. Последний столбец должен содержать [0 0 0 1].
Используйте матрицу преобразования, чтобы создать объект геометрического преобразования affine3d
.
3-D аффинное преобразование | Матрица преобразования | ||
---|---|---|---|
Перевод |
| ||
Шкала |
| ||
Сдвиг | Сдвиг x,y:
| Сдвиг x,z:
| Сдвиг y, z:
|
Вращение | Об оси x:
| Об оси y:
| Об оси z:
|
Для аффинных преобразований N-D последний столбец должен содержать [zeros(N,1); 1]
. imwarp
не поддерживает преобразования больше, чем трех измерений.