Для глобального преобразования изображения можно использовать матрицу геометрического преобразования. Сначала определите матрицу преобразования и используйте ее для создания объекта геометрического преобразования. Затем примените глобальное преобразование к изображению путем вызова 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 сдвиг :
+ bzz '= z
| x, z сдвиг :
'= z + cy
| y, z сдвиг:
'= z + cx
|
| Вращение | Вокруг оси x:
(a) 00001]
| Вокруг оси y:
(a) 00001]
| Вокруг оси z:
0000100001]
|
Для N-D аффинных преобразований последний столбец должен содержать [zeros(N,1); 1]. imwarp не поддерживает преобразования более трех измерений.
affine2d | affine3d | fitgeotrans | imwarp | projective2d | rigid2d | rigid3d