Применить 2-D пространственное преобразование к изображению
imtransform не рекомендуется. Использовать imwarp вместо этого.
преобразует изображение B = imtransform(A,tform)A согласно 2-D пространственному преобразованию, заданному tform, и возвращает преобразованное изображение, B.
Если A является цветным изображением, тогда imtransform применяет одно и то же преобразование 2-D к каждому цветовому каналу. Точно так же, если A - это объем или последовательность изображений с тремя или более размерностями, затем imtransform применяет то же 2-D преобразование ко всем плоскостям 2-D вдоль более высоких размерностей. Для произвольно-размерных преобразований массива используйте tformarray.
использует пары "имя-значение", чтобы управлять различными аспектами пространственного преобразования.B = imtransform(___,Name,Value)
[ также возвращает степень выходного изображения B,xdata,ydata] = imtransform(___)B в выходном пространстве X-Y. По умолчанию imtransform вычисляет xdata и ydata автоматически так, чтобы B содержит все преобразованное изображение A. Однако можно переопределить это автоматическое вычисление путем определения значений для XData и YData Пара "имя-значение" входных параметров.
Применить горизонтальный сдвиг к полутоновому изображению.
I = imread('cameraman.tif'); tform = maketform('affine',[1 0 0; .5 1 0; 0 0 1]); J = imtransform(I,tform); imshow(J)

Сопоставьте квадрат с четырёхугольником с проективным преобразованием. Установите вход систему координат так, чтобы вход изображение заполнило модуль квадрат вершинами (0 0), (1 0), (1 1), (0 1).
I = imread('cameraman.tif');
udata = [0 1]; vdata = [0 1];Преобразуйте в четырёхугольник с вершинами (-4 2), (-8 3), (-3 -5), (6 3).
tform = maketform('projective',[ 0 0; 1 0; 1 1; 0 1],... [-4 2; -8 -3; -3 -5; 6 3]);
Заполните серым цветом и используйте бикубическую интерполяцию. Сделайте выход сигнала таким же, как и размер входа.
[B,xdata,ydata] = imtransform(I,tform,'bicubic', ... 'udata',udata,... 'vdata',vdata,... 'size',size(I),... 'fill',128); subplot(1,2,1); imshow(I,'XData',udata,'YData',vdata) subplot(1,2,2); imshow(B,'XData',xdata,'YData',ydata)

Прочитайте воздушное фото в MATLAB® рабочей области и просмотрите ее.
unregistered = imread('westconcordaerial.png');
figure
imshow(unregistered)
Прочтите ортофото в рабочее пространство MATLAB и просмотрите его.
figure
imshow('westconcordorthophoto.png')
Загрузка ранее выбранных контрольных точек.
load westconcordpointsСоздайте структуру преобразования для проективного преобразования с помощью точек.
t_concord = cp2tform(movingPoints,fixedPoints,'projective');Получите ширину и высоту ортофото, выполните преобразование и просмотрите результат.
info = imfinfo('westconcordorthophoto.png'); registered = imtransform(unregistered,t_concord,... 'XData',[1 info.Width],'YData',[1 info.Height]); figure imshow(registered)

Регистрация изображений. The imtransform функция автоматически смещает источник вашего выходного изображения, чтобы сделать как можно больше преобразованного изображения видимым. Если вы используете imtransform для регистрации изображений синтаксис B = imtransform(A,tform) может привести к неожиданным результатам. Чтобы управлять пространственным расположением выходного изображения, установите XData и YData явно.
Чистый перевод. Вызов imtransform функция с чисто поступательным преобразованием приводит к выходному изображению, которое в точности подобно входному изображению, если вы не задаете XData и YData значения в вызове imtransform. Например, если вы хотите, чтобы выход был таким же размером, как и вход, показывающий преобразование относительно входного изображения, вызовите imtransform как показано на следующем синтаксисе:
B = imtransform(A,T,'XData',[1 size(A,2)],... 'YData',[1 size(A,1)])
Для получения дополнительной информации об этом разделе смотрите Выполнение простого преобразования 2-D перевода.
Скорость преобразования. Если вы не задаете расположение выходного пространства для B использование XData и YData, затем imtransform оценивает местоположение автоматически с помощью функции findbounds. Можно использовать findbounds как опция быстрого отображения вперед для некоторых обычно используемых преобразований, таких как аффин или проективный. Для преобразований, которые не имеют прямого отображения, таких как полиномиальные преобразования, вычисленные fitgeotrans, findbounds может занять гораздо больше времени. Если можно задать XData и YData непосредственно для таких преобразований, тогда imtransform может работать заметно быстрее.
Усечение. Автоматическая оценка XData и YData использование findbounds иногда клипсирует выходное изображение. Чтобы избежать отсечения, установите XData и YData непосредственно.
Произвольные размерные преобразования. Используйте преобразование 2-D для tform при использовании imtransform. Для произвольно-размерных преобразований массива см. tformarray.
checkerboard | cp2tform | imresize | imrotate | makeresampler | maketform | tformarray