Image Transformation to Polar

6 visualizaciones (últimos 30 días)
Stefan Ungurea
Stefan Ungurea el 9 de Feb. de 2020
Respondida: Puru Kathuria el 14 de Mzo. de 2021
I'm essentially trying to transform an image from cartesian to polar. My script works for an empty grid(i used this to test my function) but the output isnt exactly what I want for the image. I cannot figure out what went wrong in my function. So my grid is supposed to do this: yo.PNG
And that works fine, but my image goes from this: GrayscaleSelfie.png
to this: Rotated.png
The chin and teeth get cut out of the image. A quick note, I want to write my own transformation and do not want to use cart2pol or poltocart. I just cannot see where I went wrong in my function(below). The function takes the image as input, an angle of rotation, and a center of which to rotate about. In this case theta = 90 and xc = yc =1. Any thoughts?
function RotateImage = RotateImage(mat,theta, xc, yc)
%Define rotation coordinates
[rY, rX] = meshgrid(0:size(mat,1)-1, 0:size(mat,2)-1); % define the necessary rotation matrix locations in X and Y
y_max = max(max(rY));
%%%%% transform from polar to cartesian %%%%%
%Assuming rX maps to the radius and rY maps to the angle
%ShiftX = rX; %shift center for x
ShiftY = y_max/rY * theta; %shift center for y
X = rX .* cosd(ShiftY); %convert back to cartesian
Y = rX .* sind(ShiftY);
originalX = X+xc; %shift back to center
originalY = Y+yc;
IR = interpolate(mat,originalX,originalY); %interpolate
RotateImage = IR;
end

Respuestas (1)

Puru Kathuria
Puru Kathuria el 14 de Mzo. de 2021
Hi,
You can have a look at this file exchange and this particular thread that discuss the same problem.

Categorías

Más información sobre Geometric Transformation and Image Registration en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by