如何将笛卡尔图像转换为极坐标图像

时间:2015-02-10 16:20:55

标签: matlab cartesian

我使用以下代码将Polar中的图像转换为笛卡儿。


for ii=1:500;
    for jj=1:500
        phase(ii,jj)=((ii-250)^2/1000+(jj-250)^2/1000);
    end
end
Cartesian=cos(phase);
[imrow,imcol]=size(Cartesian);

% choose the center of the image
rcent=250;
ccent=250;

rmax=sqrt((imrow-rcent)^2+(imcol-ccent)^2);
%prepare the gridspace in the transformed coordinate
[r,theta]=meshgrid(linspace(0,rmax,imrow),linspace(0,2*pi,imcol));
%corresponding locations in the original coordinate
x=r.*cos(theta)+ccent;
y=r.*sin(theta)+rcent;

%sample original fringe pattern using interpolation
Polar=interp2(Cartesian,x,y);

subplot(1,2,1); imagesc(Cartesian) ; axis square
subplot(1,2,2); imagesc(Polar) ; axis square

现在,我想将笛卡儿转换为极地。我非常感谢任何帮助。

此致

学家库珀

1 个答案:

答案 0 :(得分:0)

感谢您的回答。

我对MATLAB非常陌生。我已经尝试了很多Google。但是,我没有找到答案。他们与我的目标相反。上面的代码来自我拥有Google的主题之一。实际上,我曾试过这个:

r1 = sqrt(x.^2+y.^2);
theta1 = atan(y./x);   
Cartesian2 = interp2(Polar,r1,theta1); 

subplot(1,3,1); imagesc(Cartesian) ; axis square
subplot(1,3,2); imagesc(Polar) ; axis square
subplot(1,3,3); imagesc(Cartesian2) ; axis square

但它没有用。