How can I get the new coordinates of a point after rotation of an image (2D)?
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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?
4 comentarios
Marco A.
el 20 de En. de 2025
Movida: Matt J
el 20 de En. de 2025
I know this is a thread from more than 5 years ago but, after transformation, I encountered a +/-1 px shift between the image and the coordinates of the points (when they are at the corners of the image input). In this script, I use the corners of the input to re-locate an extracted (and transformed) patch in its original position (before the transformation). I have managed to improve the shift to a minimum.
See attached.
I hope this script helps someone trying to reconstruct and image from its pieces. :)
Cheers,
Marco
Matt J
el 20 de En. de 2025
That might be because the OP defined the center of the rotation as
ImCenter = (size(im)/2)';
when really, in 1-based pixel coordinates, the geometric center of the image grid would be at
ImCenter = ((size(im)+1)/2)';
Respuesta aceptada
Matt J
el 3 de Oct. de 2018
Editada: Matt J
el 3 de Oct. de 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;
1 comentario
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!