[WPI] [CS Dept] [ECE Dept] [cs545/ee545] [Syllabus]

cs545/ee545, F97/98 Homework 10

Complete by Class 12

Tomographic Reconstruction

File test_data contains a set of tomographic projections (supplied courtesy of Prof. Michael. A. King, U. Massachusetts Medical Center), the same ones that were used to generate the dataset shown in class. This is simulated Single Photon Emission Computed Tomography (SPECT) data, and incorporates blur, attenuation, and photon statistics (Poisson random variables) such as would be found in real patient data. The simulation used a human body, and shows uptake of the radionuclide by the liver, kidney, ovaries, and heart. Unfortunately, the data is organized feet-end first and head-end last, so that it appears upside down in the following views.

The dataset is organized as 128 columns x 128 rows x 120 projections, where each of the 120 projections is a complete 128 x 128 image. Each datum is a 4 byte floating point number, following the Digital Equipment Corporation byte-ordering convention. That means that reading this dataset on another vendor's machine will not work. Not to worry ...

Program f2di.c was used to convert this large (almost 8 megs) dataset into something a bit more manageable by writing unsigned chars in place of floats. The resulting data file test_data.dat is 1/4 the size of the original. The new data file also has header information attached to it. Note that the header differs slightly from the header format used in previous programs because it needs to handle 2 or 3 dimensional data. Look at the source code to see the header format.

Here is a typical 128 x 128 projection image at projection number 1.

From the 120 projections, 24 were extracted (numbers 1, 6, 11, ...) and made into an animated gif file using a webware program located at http://www.vrl.com/Imaging/animate.html. Most browsers should be capable of displaying this movie -- it is in GIF89 format. It is recommended that you load and view the movie (262 Kbytes).

The GIF files that comprise the movie (converted from TIFFs) can be viewed individually in the image directory. Relate programs may be viewed in the software directory.

As discussed in class, a single point in (x,y) coordinates maps into a sinusoid in projection coordinates (s, theta). Program slice_at_row.c was used to extract a single row of data. The result is a 2-D dataset, indexed by column (that is, s) and view number (that is, theta). Here is an example, showing row 40.

Note that although a full 360 degrees are shown, at 3 degree intervals, the data are not quite symmetric; the sinusoidal patterns are not exact. This is because this dataset incorporates attentuation and blur, both of which depend on distance to the detector. Hence, views taken 180 degrees apart experience differing attenutation and blur. This might lead to some errors, which we will ignore, in the reconstruction.

Write a program to reconstruct a slice. You should follow these steps:

  1. Extract a slice using slice_at_row.c.
  2. Compute the 1-D Fourier Transform along s, for each theta,
  3. Multiply the FT by a reconstruction filter. Recall that the ideal filter goes as |omega|, but in practice it may be necessary to cut off or otherwise taper the ideal filter.
  4. You should now have the FT in polar coordinates of the reconstructed image, according to the Projection Slice Theorem.
  5. Resample the FT into rectangular coordinates (u,v).
  6. Inverse transform to obtain the reconstructed image.
  7. Experiment with different filters in step 3 and compare results.

WPI Home Page
[CS Dept] [ECE Dept] [cs545/ee545] [Syllabus]

Contents ©1997, Norman Wittels and Michael A. Gennert
Updated 20Nov97 by MAG