0

我正在尝试使用 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!!!

当我对旋转仿射矩阵执行相同操作时,它起作用了。为什么这不起作用?

这是我打印两张照片时发生的情况: 在此处输入图像描述

4

1 回答 1

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')

结果:

在此处输入图像描述

于 2018-01-28T11:30:40.373 回答