Примените 2D пространственное преобразование, чтобы отобразить
imtransform не рекомендуется. Используйте imwarp вместо этого.
B = imtransform(A,tform)B = imtransform(A,tform,interp)B = imtransform(___,Name,Value)[B,xdata,ydata] = imtransform(___) преобразовывает отображают 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