В приведенном ниже коде MWE (взятом из документации Matlab ) преобразование 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
.Это поведение не объясняется в документации.
До преобразования:
После преобразования: