В этом примере показано, как выполнить простое аффинное преобразование, называемое переводом. При преобразовании изображение сдвигается в координатном пространстве путем добавления указанного значения к координатам x и y. (Также можно использовать imtranslate функция для выполнения перевода.)
Прочитайте изображение, которое будет преобразовано. В этом примере создается изображение шахматной доски с помощью checkerboard функция.
cb = checkerboard; imshow(cb)

Получение сведений о пространственных ссылках на изображение. Эта информация полезна при отображении результата преобразования.
cb_ref = imref2d(size(cb))
cb_ref =
imref2d with properties:
XWorldLimits: [0.5000 80.5000]
YWorldLimits: [0.5000 80.5000]
ImageSize: [80 80]
PixelExtentInWorldX: 1
PixelExtentInWorldY: 1
ImageExtentInWorldX: 80
ImageExtentInWorldY: 80
XIntrinsicLimits: [0.5000 80.5000]
YIntrinsicLimits: [0.5000 80.5000]
Создание матрицы преобразования 3 на 3, называемой T в этом примере определяется преобразование. В этой матрице T(3,1) задает количество пикселов для смещения изображения в горизонтальном направлении и T(3,2) задает количество пикселов для смещения изображения в вертикальном направлении.
T = [1 0 0; 0 1 0; 20 30 1]
T = 3×3
1 0 0
0 1 0
20 30 1
Создайте объект геометрического преобразования, определяющий перемещение, которое требуется выполнить. Поскольку преобразования трансляции являются частным случаем аффинного преобразования, в примере используется affine2d объект геометрического преобразования для представления перемещения. Создание affine2d объект путем передачи матрицы преобразования 3 на 3, T, в affine2d конструктор.
tform = affine2d(T);
Выполните преобразование. Позвоните в imwarp функция, определяющая изображение, которое требуется преобразовать, и объект геометрического преобразования. imwarp возвращает преобразованное изображение, cb_translated. В этом примере также возвращается необязательный объект пространственной ссылки. cb_translated_ref, которая содержит информацию пространственной ссылки о преобразованном изображении.
[cb_translated,cb_translated_ref] = imwarp(cb,tform);
Просмотр оригинала и преобразованного изображения бок о бок с помощью subplot функция в сочетании с imshow . При просмотре переведенного изображения может показаться, что преобразование не оказало никакого влияния. Преобразованное изображение выглядит идентично исходному изображению. Причина того, что в визуализации нет видимых изменений, заключается в том, что imwarp размер выходного изображения должен быть достаточно большим, чтобы содержать все преобразованное изображение, но не все выходное координатное пространство. Однако обратите внимание, что значения координат были изменены преобразованием.
figure; subplot(1,2,1); imshow(cb,cb_ref); subplot(1,2,2); imshow(cb_translated,cb_translated_ref)

Чтобы увидеть все преобразованное изображение в той же зависимости от начала координат, что и исходное изображение, используйте imwarp с 'OutputView' параметр, указывающий объект пространственной ссылки. Объект пространственной ссылки определяет размер выходного изображения и объем выходного координатного пространства, включенного в выходное изображение. Для этого в примере создается копия объекта пространственной ссылки, связанного с исходным изображением, и изменяются пределы координат мира для соответствия полному размеру преобразованного изображения. Пример устанавливает пределы выходного изображения в мировых координатах, чтобы включить начало координат от ввода
cb_translated_ref = cb_ref;
cb_translated_ref.XWorldLimits(2) = cb_translated_ref.XWorldLimits(2)+20;
cb_translated_ref.YWorldLimits(2) = cb_translated_ref.YWorldLimits(2)+20;
[cb_translated,cb_translated_ref] = imwarp(cb,tform,'OutputView',cb_translated_ref);
figure, subplot(1,2,1);
imshow(cb,cb_ref);
subplot(1,2,2);
imshow(cb_translated,cb_translated_ref)