Мне нужно повернуть изображение вокруг оси y с помощью Matlab.Matlab - вращение вокруг оси общего назначения
Я вставляю свое изображение в трехмерный массив, а затем применяю матрицу преобразования, используя команды affine3d и imwarp.
Это пример:
c = cos(theta); s=sin(theta);
ux =0; uy=1; uz=0;
tx =0; ty=0; tz=0;
tt = [(1-c)*ux^2+c (1-c)*ux*uy-s*uz (1-c)*ux*uz+s*uy tx;...
(1-c)*ux*uy+s*uz (1-c)*uy^2+c (1-c)*uy*uz-s*ux ty;...
(1-c)*ux*uz-s*uy (1-c)*uy*uz+s*ux (1-c)*uz^2+c tz; 0 0 0 1];
tform = affine3d(tt);
R = imref3d(size(image));
imrot = imwarp(image,R,tform);
Таким образом, я получаю вращение вокруг оси происхождения, но я хочу, вращение вокруг центра изображения, так что я изменить значение ф.
ty=128
Но affine3d хочет только [0 0 0 1] как последний столбец.
Есть ли способ повернуть с помощью этих команд или мне нужно найти другой способ?
с быстрым взглядом на документ я думаю, что вам нужно использовать последнюю строку * для кодирования сдвига, а не последний столбец. –