PROJECTION SLICE THEOREM HOW TO USE THE PROJECTION SLICE THEOREM FOR 2 D IMAGES        Take a 2D function fx of the image

Project it onto a single dimensional line. Let this be PR1. Obtain a 1 D Fourier transform of the projection. Let this be FT1. Next take the same 2D function fx Find the 2D Fourier transform of the function fx. Let this be FT2. Slice the transform through the origin parallel to the projection line. Let the slice be SL1. According to the Projection Slice Theorem FT1.PR1=SL1.FT2 The above equation says that the product of the 1D Fourier transform of the function and the projection of the function is equal to the product of the 2D Fourier transform of the function and the slice of the transform through the origin. PROOF * If f(x, y) is a two-dimensional function, then the projection of f(x) onto the x axis is p(x) where

The Fourier transform of f(x,y) is

.The slice is then s(kx) *Derivation is taken from introductory reading for DSP course Elec 431 (Rice University).

.The basic problem of tomography is given a set of 1-D projections and the angles at which these projections were taken. how do we reconstruct the 2-D image from which these projections were taken? The first thing we did was to look at the nature of the projections.

Fig(1) - .

iLength) + 2. Eqn(1) All points on this line satisfy the equation: x*sin(phi) ..y).y). LengthPad = ceil(iDiag .. .iWidth) + 2. iWidth+WidthPad). To be able to study different reconstruction techniques. we first needed to write a (MATLAB) program that took projections of a known image.y*cos(phi) = s Therefore.s) is the line integral of the image intensity.Define g(phi. g(phi. along a line l that is distance s from the origin and at angle phi off the x-axis.s) at all phi is called the RADON TRANSFORM of image f(x. THETA) % pad the image with zeros so we don't lose anything when we rotate. iWidth] = size(IMG). padIMG(ceil(LengthPad/2):(ceil(LengthPad/2)+iLength-1). The projection code is function PR = projections(IMG.s) can be rewritten as Eqn(2) The collection of these g(phi. . iDiag = sqrt(iLength^2 + iWidth^2).s) as a 1-D projection at an angle . the projection function g(phi. padIMG = zeros(iLength+LengthPad. WidthPad = ceil(iDiag . f(x. Having the original image along with the projections gives us some idea of how well our algorithm performs. [iLength.

and then add up. % loop over the number of angles. rotate 90-theta (because we can easily sum % if we look at stuff from the top). n = length(THETA). 90-THETA(i). for i = 1:n tic tmpimg = imrotate(padIMG. THETA(i) toc end A dissection of the MATLAB code and the way the functions work is given below: An image is taken. It has the following syntax: . This can be done in MATLAB using imrotate and sum functions. PR(:. PR = zeros(size(padIMG. How Imrotate works in MATLAB * Imrotate The function rotates the given image.ceil(WidthPad/2):(ceil(WidthPad/2)+iWidth-1)) = IMG. 'crop'). n).i) = (sum(tmpimg))'. rotated and intensities are summed. 'bilinear'.2). Don't perform any % interpolation on the rotating.

angle.angle) rotates image A by angle degrees in a counterclockwise direction around its center point.angle.method) B = imrotate(A. To rotate the image clockwise. specify a negative value for angle. *http://www.mathworks.B = imrotate(A.method) rotates image A. imrotate uses nearest neighbor interpolation. The default value is enclosed in braces ({}). using the interpolation method specified by method.method. method is a text string that can have one of these values.angle) B = imrotate(A. imrotate makes the output image B large enough to contain the entire rotated image.angle.bbox) (1) (2) (3) B = imrotate(A. setting the values of pixels in B that are outside the rotated image to 0 (zero).html . B = imrotate(A.com/access/helpdesk/help/toolbox/images/imrotate.

2 - We can show the Fourier Slice Theorem in the following way: The 1D Fourier Transform of g is given by .Fig.

is just F(u.v) evaluated at u = w*sin(phi) and v = -w*cos(phi).Eqn(3) Now.s) was taken on. Make a change of variable from rectangular to polar coordinates and replace F(phi. we subsitute our expression for g(phi. 2) into the expression above to get Eqn(4 ) Using the sifting property of the Dirac delta function we get Eqn(5) The definition of the 2D Fourier Transform of f is Eqn(6) We can see that that Eqn 5. which is the line that the projection g(phi.w) with G (phi.w) we get .s) (Eqn.

If we look at Fig. so we can easily write a program to do the reconstruction.Eqn(8) where |w| is the determinant of the Jacobian of the change of variable from rectangular to polar coordinates. 2. and not as much at high frequencies. Notice that we have to multiply our projections by |w| in the Fourier domain. We now have a relationship between the projection functions and the image we are trying to recontruct. which is a ramp filter. compensates for this. we can see that we have a lot of information at low frequencies (near the origin). . The |w|. This product Eqn(9) is called the filtered back projection at angle phi.

With only one back projection. . not much information about the original image is revealed.

we can see some of the basic features start to emerge. and the main ellipse looks like a diamond. The two squares on the left side start to come in. .With 4 back projections.

. our image is finally starting to take shape. We can see the squares and the circles well. and we can make out the basic shape of the main ellipse.At 8 back projections.

Also. we have a lot of undesired residuals in the back ground (outside the main ellipse). and the squares and cirlces are well defined. . we can see the bounds of the main ellipse very well.With 15 back projections. The lines in the center of the ellipse appear as blurry triangles.

At 60 back projections. . and there are streaks from the edge of the squares all the way out to the edge of the image. We still have some patterns outside the ellipse. These appear because the edge of the square is such a sharp transition at 0 and 90 degrees. our reconstructed image looks very nice. These never quite seem to get smoothed out. there are sharp spikes in the filtered projections. that when we pass the projections through the ramp filter.