Можно использовать геометрическую матрицу преобразования, чтобы выполнить глобальное преобразование изображения. Во-первых, задайте матрицу преобразования и используйте ее, чтобы создать геометрический объект преобразования. Затем примените глобальное преобразование к изображению путем вызова 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