converter uma imagem de cartesiano para polar

Estou tentando converter uma imagem com muitos círculos com o mesmo centro, de Cartesiano para Polar (para que a nova imagem seja os círculos, mas as linhas em vez dos círculos, veja a imagem abaixo), e está funcionando muito bem usando o seguinte código:

[r, c] = size(img);
r=floor(r/2);
c=floor(c/2);
[X, Y] = meshgrid(-c:c-1,-r:r-1);
[theta, rho] = cart2pol(X, Y); 
subplot(221), imshow(img), axis on;
hold on;
subplot(221), plot(xCenter,yCenter, 'r+');
subplot(222), warp(theta, rho, zeros(size(theta)), img);
view(2), axis square;

O problema é que eu não entendo por que isso funciona? (obviamente não é o meu código), quero dizer, quando uso a função cart2pol, nem uso a imagem, são apenas alguns vetores xey gerados a partir da função meshgrid .. e outro problema é que, de alguma forma, quero ter uma nova imagem (não apenas para poder desenhá-la com a função de quebra automática), que é a imagem original, mas pelas coordenadas theta e rho (significando os mesmos pixels, mas reorganizados) ... Não sei ao certo como perguntar isso , no final, quero ter uma imagem que seja uma matriz para que eu possa somar cada linha e transformar a matriz em um vetor de coluna ...

questionAnswers(1)

yourAnswerToTheQuestion