Как преобразовать декартово изображение в полярное изображение

Я использую приведенный ниже код для преобразования изображения в полярном виде в декартово.


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

Теперь я хотел бы преобразовать декартово в полярное. Буду очень признателен за любую помощь.

С уважением,

Дж. Купер


person JCooper    schedule 10.02.2015    source источник
comment
Вы спрашиваете формулу преобразования декартовой системы в полярную? Потому что, если вы это знаете, преобразование его в код — самая простая вещь.   -  person Sipty    schedule 10.02.2015
comment
Я не буду делать поспешных выводов и скажу, что этот код Matlab взят из здесь, но вы действительно знаете Matlab?   -  person dmg    schedule 10.02.2015
comment
Вы даже не пробовали Google? en.wikipedia.org/wiki/   -  person rayryeng    schedule 10.02.2015


Ответы (1)


Спасибо за ваши ответы.

Я очень новичок в 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

Но это не работа.

person JCooper    schedule 12.02.2015