How can I get the new coordinates of a point after rotation of an image (2D)?

was (view profile)

on 3 Oct 2018
Latest activity Commented on by Rik

Rik (view profile)

on 3 Oct 2018
Accepted Answer by Matt J

Matt J (view profile)

I have got the coordinates of a point (P) in my main image (2D). The main image (im) is now rotated using imrotate and the angle alpha. Now, I want to know what the coordinates of P are in the rotated image.
P = [5;8]; % coordinates of point
alpha = 45; % angle for rotation
RotatedIm = imrotate(im,alpha); % rotation of the main image (im)
RotMatrix = [cosd(alpha) -sind(alpha); sind(alpha) cosd(alpha)];
ImCenter = (size(im)/2)'; % Center of the main image
RotatedP = RotMatrix*(P-ImCenter)+ImCenter; % Rotation of point P over center of the image with angle alpha
The rotatedP coordinates are not the right ones. The problem is that there are zeros added on the borders of RotatedIm. I think that that is the reason why the coordinates of RotatedP are not correct. Can someone help me to find the coordinates of point P in the rotated image?

Rik

Rik (view profile)

on 3 Oct 2018
If you use the 'crop' switch, the method would be correct, but now you'll have to account for the shift of the image center. A sketch on paper should help a lot in finding a formula.
was

on 3 Oct 2018
Thanks!

Answer by Matt J

on 3 Oct 2018
Edited by Matt J

Matt J (view profile)

on 3 Oct 2018

P = [5;8]; % coordinates of point
alpha = 45; % angle for rotation
RotatedIm = imrotate(im,alpha); % rotation of the main image (im)
RotMatrix = [cosd(alpha) -sind(alpha); sind(alpha) cosd(alpha)];
ImCenterA = (size(im)/2)'; % Center of the main image
ImCenterB = (size(RotatedIm )/2)'; % Center of the transformed image
RotatedP = RotMatrix*(P-ImCenterA)+ImCenterB;

Rik

Rik (view profile)

on 3 Oct 2018
Nice one. It seems I was on the right track.