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