如何使用Matlab只知道旋转角度和原始图像的大小来获得旋转图像的大小?

时间:2015-07-04 15:29:02

标签: matlab rotation matlab-figure image-rotation

我的图片 Im 大小为50x129

enter image description here

黄色的大cercle的一部分,蓝色的空间。

我使用imrotate() -45°的角度旋转此图像 Im ,我得到 ImR

enter image description here

  

我想计算图片的新尺寸 ImR

执行此操作的一种方法是使用 ImR 的函数axis

axises = axis;
w1=axises(2)-axises(1);
h1=axises(4)-axises(3);

但我希望独立于生成的图像...我的意思是,我想知道原始图像的大小和旋转角度,得到旋转图像的大小。

更新

我打算使用此代码在A点附近以t角度旋转点Origin

function Af = rotate(A,t,Origin)

% Definition of the rotation matrix (rotation around origin)
R=[ ...
    cosd(t) -sind(t)
    sind(t) cosd(t)
    ];

% translation
At = A - Origin;

% rotation of the points A and B
Ar = R*At;

1 个答案:

答案 0 :(得分:0)

使用旋转矩阵计算旋转图像的角点位置。并将它们全部放在矩阵中,如下所示:

rotImgCorners = [
  x_topLeft   ,     y_topleft;
  x_top_right ,   y_top_right;
  %//... bottom left ...
  %//... bottom right ...
]

然后新图像的大小为:

%// [horizontal size, vertical size] - you can switch it around if you whish
newImgSize = max(rotImgCorners, [], 1) - min(rotImgCorners, [], 1);