在MATLAB中执行图像转换的问题

时间:2018-01-28 09:00:18

标签: matlab matrix matrix-transform

我正在尝试使用MATLAB进行图像转换,图像根本不移动。我的代码是:

myPic = imread('pic.jpg');
x = 250;
y = 375;

trans = affine2d([1 0 0; 0 1 0; x y 1]);

outputPic = imwarp(myPic, trans);

imshow(myPic)
axis on
figure()
imshow(outputPic)
axis on
isequal(myPic,outputPic) %evaluates to 1!!!

当我为旋转仿射矩阵做同样的事情时,它起作用了。为什么这不起作用?

这是我打印两张照片时会发生什么: enter image description here

1 个答案:

答案 0 :(得分:2)

为了使其工作,您需要定义一个'OutputView'参数。 此参数使用imref2d函数设置世界坐标系中输出图像的大小和位置。

示例:

myPic = imread('peppers.png');
x = 250;
y = 375;

%defines transformations
trans = affine2d([1 0 0; 0 1 0; x y 1]);
eyeTrans= affine2d([1 0 0; 0 1 0; 0 0 1]);

%initializes imref2d object
outView = imref2d([size(myPic,1)+y,size(myPic,2)+x]);

outputPic1 = imwarp(I,trans,'OutputView',outView)
outputPic2 = imwarp(I,eyeTrans,'OutputView',outView)

%display result
figure,
subplot(1,2,1); imshow(outputPic2); title('original')
subplot(1,2,2); imshow(outputPic1); title('translated')

结果:

enter image description here