Применить 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)

Регистрация изображения. 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