exponenta event banner

Матричное представление геометрических преобразований

Для глобального преобразования изображения можно использовать матрицу геометрического преобразования. Сначала определите матрицу преобразования и используйте ее для создания объекта геометрического преобразования. Затем примените глобальное преобразование к изображению путем вызова imwarp с объектом геометрического преобразования. Пример см. в разделе Выполнение простого преобразования перевода 2-D.

2-D Аффинные преобразования

В таблице перечислены 2-D аффинные преобразования с матрицей преобразования, используемой для их определения. Для 2-D аффинных преобразований последний столбец должен содержать [0 0 1] однородных координат.

Используйте любую комбинацию 2-D матриц преобразования для создания affine2d объект геометрического преобразования. Использование комбинаций матриц перемещения и поворота 2-D для создания rigid2d объект геометрического преобразования.

2-D Аффинное преобразованиеПример (исходное и преобразованное изображение)Матрица преобразования
Перевод

tx задает смещение вдоль оси x

ty задает смещение вдоль оси Y.

Дополнительные сведения о координатах пикселей см. в разделе Системы координат изображения.

Масштаб

sx задает масштабный коэффициент вдоль оси x

sy задает масштабный коэффициент вдоль оси Y.

Постричь

shx задает коэффициент сдвига вдоль оси x

shy задает коэффициент сдвига вдоль оси Y.

Вращение

q определяет угол поворота относительно начала координат.

2-D Проективные преобразования

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

Преобразование представляет собой матрицу 3 на 3. В отличие от аффинных преобразований, ограничения на последний столбец матрицы преобразования отсутствуют.

2-D Проективное преобразование ПримерМатрица преобразования
Наклон

[10E01F001]

E и F влиять на точку исчезновения.

Когда E и F велики, точка схода приближается к началу координат и, таким образом, параллельные линии, по-видимому, сходятся быстрее.

Обратите внимание, что когда E и F равны 0, преобразование становится аффинным.

Проективные преобразования часто используются для регистрации изображений, которые не выровнены. Если требуется выровнять два изображения, сначала выберите пары управляющих точек с помощью cpselect. Затем поместите матрицу проективного преобразования в пары управляющих точек с помощью fitgeotrans и установка transformationType кому 'projective'. При этом автоматически создается projective2d объект геометрического преобразования. Матрица преобразования сохраняется как свойство в projective2d объект. Затем преобразование можно применить к другим изображениям с помощью imwarp.

Создание составных 2-D аффинных преобразований

Можно объединить несколько преобразований в одну матрицу с помощью умножения матрицы. Порядок умножения матрицы имеет значение.

В этом примере показано, как создать совокупность преобразований перемещения и поворота 2-D.

Создайте изображение шахматной доски, которое будет преобразовано. Также создайте объект пространственной ссылки для изображения.

cb = checkerboard(4,2);
cb_ref = imref2d(size(cb));

Для иллюстрации пространственного положения изображения создайте плоское фоновое изображение. Наложите шашку на фон, выделяя положение шашки зеленым цветом.

background = zeros(150);
imshowpair(cb,cb_ref,background,imref2d(size(background)))

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

Создайте матрицу перевода и сохраните ее как 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)))

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

Поворот с последующим переводом

Сторнируйте порядок преобразований: выполните вращение первым и перемещение вторым. При умножении матриц преобразования матрица вращения 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)))

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

Обратите внимание на то, что пространственное положение преобразованного изображения отличается от положения, когда за перемещением следовал поворот.

3-D Аффинные преобразования

В следующей таблице перечислены 3-D аффинные преобразования с матрицей преобразования, используемой для их определения. Обратите внимание, что в 3-D случае существует несколько матриц в зависимости от способа поворота или сдвига изображения. Последний столбец должен содержать [0 0 0 1].

Используйте любую комбинацию 3-D матриц преобразования для создания affine3d объект геометрического преобразования. Использование комбинаций матриц перемещения и поворота 3-D для создания rigid3d объект геометрического преобразования.

3-D Аффинное преобразованиеМатрица преобразования  
Перевод

[100001000010txtytz1]

  
Масштаб

[sx0000sy0000sz00001]

  
Постричьx, y сдвиг :

x '= x + azy' = y + bzz '= z

[10000100ab100001]

x, z сдвиг :

x '= x + ayy' = yz '= z + cy

[1000a1c000100001]

y, z сдвиг:

x '= xy' = y + bxz '= z + cx

[1bc0010000100001]

ВращениеВокруг оси x:

[10000cos (a) грех (a) 00−sin (a), потому что (a) 00001]

Вокруг оси y:

[cos (a) 0 − sin (a) 00100sin (a) 0cos (a) 00001]

Вокруг оси z:

[cos (a) грех (a) 00−sin (a), потому что (a) 0000100001]

Для N-D аффинных преобразований последний столбец должен содержать [zeros(N,1); 1]. imwarp не поддерживает преобразования более трех измерений.

См. также

| | | | | |

Связанные примеры

Подробнее