По какой-то причине функция imtransform
по умолчанию игнорирует часть перевода.
Если я добавлю дополнительное пространство с помощью XData
и YData
, как указано в руководстве, я буду обрабатывать только простые случаи (т.е. только перевод).
Итак, как применить полнофункциональное аффинное преобразование в Matlab?
I = imread('cameraman.png');
imshow(I);
% does not translate
xform = [1 2 0; 2 1 0; 100 0 1];
T = maketform('affine',xform);
I2 = imtransform(I,T);
figure, imshow(I2)
% translates but cuts some portion of an image
xform = [1 2 0; 2 1 0; 100 0 1];
T = maketform('affine',xform);
I2 = imtransform(I,T,'XData',[1 size(I,2)+xform(3,1)],'YData',[1 size(I,1)+xform(3,2)]);
figure, imshow(I2)