Image Transformation to Polar

3 次查看(过去 30 天)
Stefan Ungurea
Stefan Ungurea 2020-2-9
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

回答(1 个)

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

类别

Help CenterFile Exchange 中查找有关 Geometric Transformation and Image Registration 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by