Пытаясь преобразовать изображение обратно из полярного в прямоугольное, я не могу заставить свой код покрывать каждый угол в полярном изображении, поэтому я попытался решить эту проблему путем преобразования изображения обратно на каждую половину, но я заканчиваю до получения линейного артефакта в середине изображения. Я хочу знать, как заставить преобразование работать для всех углов при переходе от полярного к декартовому.
img = imread('trees.tif');
% img=img';
%% Cart2pol
[m,n]=size(img);
m0=floor(m/2);
n0=floor(n/2);
% [idx,mp]=gray2double(img,32);
x=(1:n)-(n/2);
y=(1:m)-(m/2);
[xp,yp]=meshgrid(linspace(0,2*pi,3000),linspace(0,400,3000));
[xx,yy]=pol2cart(xp,yp);
img=double(img);
out=interp2(x,y,img,xx,yy);
figure(1)
imshow(out,[])
%% pol 2 cart
x=(1:n)-(n/2);
y=(1:m)-(m/2);
r=linspace(0,-2*pi,3000);
t=linspace(0,400,3000);
[xc,yc]=meshgrid(x,y);
[xx,yy]=cart2pol(xc,yc);
out1=interp2(r,t,out,xx,yy);
out1(isnan(out1))=0;
out1=flipud(out1);
out2=interp2(r,t,fliplr(out),xx,yy);
out2(isnan(out2))=0;
done = out1+out2;
figure(2)
subplot(2,2,1);imshow(out1,[])
subplot(2,2,2);imshow(out2,[])
subplot(2,2,3);imshow(img,[])
subplot(2,2,4);imshow(done,[])