MATLAB Answers

was
0

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

Asked by was
on 3 Oct 2018
Latest activity Commented on by Rik
on 3 Oct 2018
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?

  2 Comments

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.

Sign in to comment.

1 Answer

Answer by Matt J
on 3 Oct 2018
Edited by Matt J
on 3 Oct 2018
 Accepted Answer

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;

  1 Comment

Nice one. It seems I was on the right track.

Sign in to comment.