Как получить размер повернутого изображения, зная только угол поворота и размер исходного изображения, используя Matlab?

У меня есть изображение Im размера 50x129 :

введите здесь описание изображения

Это часть большого круга желтого цвета и пространство синего цвета.


Я повернул это изображение Im, используя imrotate() с углом -45° я получаю 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;

person Community    schedule 04.07.2015    source источник


Ответы (1)


Вычислите положение углов повернутого изображения, используя матрицу вращения. И поместите их все в матрицу следующим образом:

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);
person AlexanderF    schedule 04.07.2015
comment
Я реализовал это, он дает значения ниже ... странно, это выглядит правильным решением: UPVOTE! - person ; 04.07.2015
comment
@OSryx, рад, что это сработало для вас. Как понять ниже? Числа должны получиться «реальными», а не целыми пикселями, потому что вы используете матрицу вращения, чтобы найти расположение углов. Если вы floor/ceil/round их, общая разница может оказаться меньше, чем предполагалось, на 1 или 2 пикселя. Это то, что вы имели в виду? - person AlexanderF; 05.07.2015
comment
да, именно это я и имел в виду. результирующее значение меньше на 2 пикселя, я проверю это ... и вернусь к вам - person ; 05.07.2015