【发布时间】:2019-07-03 16:29:57
【问题描述】:
在下面的 MWE 代码中(取自 Matlab documentation),T 后跟 R 的转换由 T*R 给出,而不是像大多数计算机图形学或视觉教科书中的 R*T。
cb = checkerboard(4,2);
cb_ref = imref2d(size(cb));
background = zeros(150);
imshowpair(cb,cb_ref,background,imref2d(size(background)))
T = [1 0 0;0 1 0;100 0 1];
tform_t = affine2d(T);
R = [cosd(30) sind(30) 0;-sind(30) cosd(30) 0;0 0 1];
tform_r = affine2d(R);
TR = T*R; % This line
tform_tr = affine2d(TR);
[out,out_ref] = imwarp(cb,cb_ref,tform_tr);
imshowpair(out,out_ref,background,imref2d(size(background)))
如果我们想将图像x 转换为x',首先通过T,然后通过R,我们不应该使用x'=R(T(x))=R*T*x吗?
从代码来看,在我看来,我们正在做x'=T*R*x。这没有意义,因为输出确实在做x'=R*T*x。文档中未解释此行为。
改造前:
改造后:
【问题讨论】: