Image Transformation to Polar
조회 수: 9(최근 30일)
표시 이전 댓글
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: 

And that works fine, but my image goes from this: 

to this: 

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
댓글 수: 0
답변(1개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!