Можно использовать геометрическую матрицу преобразования, чтобы выполнить глобальное преобразование изображения. Во-первых, задайте матрицу преобразования и используйте ее, чтобы создать геометрический объект преобразования. Затем примените глобальное преобразование к изображению путем вызова imwarp с объектом геометрического преобразования. Для получения примера смотрите Выполните Простое 2-D Преобразование Перевода.
Таблица перечисляет 2-D аффинные преобразования с матрицей преобразования, используемой для их определения. Для 2-D аффинных преобразований последний столбец должен содержать [0 0 1] однородных координат.
Используйте любую комбинацию матриц преобразования 2-D, чтобы создать affine2d геометрический объект преобразования. Используйте комбинации матриц 2-D перемещения и вращения, чтобы создать rigid2d геометрический объект преобразования.
| 2-D аффинного преобразования | Пример (исходное и преобразованное изображение) | Матрица Преобразования | |
|---|---|---|---|
| Перевод |
|
|
Дополнительные сведения о пиксельных координатах см. в разделе «Системы координат изображений». |
| Шкала |
|
|
|
| Постричь |
|
|
|
| Вращение |
|
|
|
Проективное преобразование позволяет плоскости изображения наклоняться. Параллельные линии могут сходиться к точке исчезновения, создавая внешний вид глубины.
Преобразование является матрицей 3 на 3. В отличие от аффинных преобразований, нет никаких ограничений на последний столбец матрицы преобразования.
| 2-D проективное преобразование | Пример | Матрица Преобразования | |
|---|---|---|---|
| Наклон |
|
|
Когда Обратите внимание, что когда |
Проективные преобразования часто используются для регистрации изображений, которые находятся вне выравнивания. Если у вас есть два изображения, которые вы хотели бы выровнять, сначала выберите пары точек управления с помощью cpselect. Затем подбирайте проективную матрицу преобразования, чтобы управлять парами точек, используя fitgeotrans и установка transformationType на 'projective'. Это автоматически создает projective2d геометрический объект преобразования. Матрица преобразования сохранена как свойство в projective2d объект. Преобразование может затем применяться к другим изображениям, используя imwarp.
Можно объединить несколько преобразований в одну матрицу с помощью матричного умножения. Порядок матричного умножения имеет значение.
В этом примере показано, как создать композит 2-D преобразования перемещения и вращения.
Создайте шахматное изображение, который будет подвергаться преобразованию. Также создайте пространственный опорный объект для изображения.
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].
Используйте любую комбинацию матриц преобразования 3-D, чтобы создать affine3d геометрический объект преобразования. Используйте комбинации матриц 3-D перемещения и вращения, чтобы создать rigid3d геометрический объект преобразования.
| 3-D аффинного преобразования | Матрица Преобразования | ||
|---|---|---|---|
| Перевод |
| ||
| Шкала |
| ||
| Постричь | x,y сдвига:
| x,z сдвига:
| y, z сдвига:
|
| Вращение | О x оси:
| О y оси:
| О z оси:
|
Для N-D аффинных преобразований последний столбец должен содержать [zeros(N,1); 1]. imwarp не поддерживает преобразования более чем трёх размерностей.
affine2d | affine3d | fitgeotrans | imwarp | projective2d | rigid2d | rigid3d