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