Fourier Slice Theorem - Reconstruction Fourier Space I've stuck in one problem. I need to perform Fourier Slice Theorem on sinogram of medical image.

I read a lot about this theorem. I write a matlab code but results are always non-sense after inverse fourier transform. But Fourier Space seems alright.

I fill Fourier space with converting polar coordinates to cartesian coordinates. I apply 1 Dimensional Fast Fourier Transform with ftt command on every sinogram lines. After for each angle (I used 180 rotation angle) and radius value I convert it to cartesian coordinates and for each corresponding values G(theta, radius) ==> F(x,y) I filled up Fourier Space. It seems logical but results is not. How can I correct my code to run this algorithm?

Circular shape is Fourier Space, other nonsenseless image is ifft. Original image is binary liver but I can't add it.

Thank you!

Plus, my matlab code!



  

[![I=imread('binaryliver.png');

% I = im2bw(I, 0.1);
%Sinogram was calculated before for 180 angle!
\[w,h\] = size(I); 

theta = 0:1:179;][1]][1]

xorg = floor(h/2);
yorg = floor(w/2);  %for find origin of matrix

F = zeros(w,h);     %fourier space assigment

for i = 1:length(theta)

    E(:,:,i) = fft(sinogram(i,:));  %calculate FFT for each line of sinogram

end

for i = 1:length(theta)

    for r = 1: length(E(:,:,1)) %Convert polar coordinates to cartesian coordinates



        x = xorg + (r-h/2+1)*cosd(-theta(i));
        y = yorg + (r-w/2+1)*sind(-theta(i));

        if x == 0 &amp;&amp; y == 0   %                               

        else
            yy = round(y); xx = round(x);

            if yy &lt;= 0

                yy = 1;

            elseif yy &gt; h
                yy = h;

            end

            if xx &lt;= 0

                xx = 1;

            elseif xx &gt; w


                xx = w;

            end
        value = E(1,r,i);
        F(xx, yy) = value;
        end
    end 

end

Im2=abs(ifft2(F));
figure; imshow(log(1+abs(F)),[]);

figure; imshow(Im2, []);
Fourier slice theorem states that Fourier Transform of your projections are equal to slices of 2D Fourier transform. 

When you sample the projections over discrete angles the FT of projections become samples of 2D Fourier transform.

So you have to use your obtained samples to interpolate the remaining points.

in your code you put the samples in their position but the remaining points remain zero.