Radon Transform

Author: Damien Farrell
History: 2005/12/10: First version
2006/01/30: Added blackman filter and filter cutoff option, now accepts 8 bit color images.
2006/02/12: Added support for re-projecting stacks and storing stacks of projection data. Changed to use a Swing input dialog.
2006/02/28: Added ability to import projection data from sinogram images, converted to use jar file.
2016/04/09: Fixed bug that caused an exception to be thrown if the image width and were not equal and a bug that caused the progress bar to not be reset.
Source: Contained in jar file, can be opened as a zip archive.
Installation: Download Radon_Transform.jar to the ImageJ plugins folder, or subfolder. Restart ImageJ, there will be a new RadonTransform command in the Plugins menu or submenu.
Description: This plugin takes an image or image stack and performs a radon transform (by using a back projection algorithm) on it/them. The result is a set of projection data that is displayed as an 8 bit grayscale image (sometimes called a sinogram). The plugin accepts 8, 16 bit grayscale and 8 bit color images as input. (RGB color images must be converted to 8 bit grayscale before back projection).

The projection data can preferentially be re-projected using filtered back projection to produce the inverse transform. The result can be output as an 8 or 16-bit image. This may be a processor intensive and lengthy operation for large images, or large number of images in a stack. Therefore, the algorithm for calculations on stacks runs in a seperate thread and the process can be cancelled at any time.

The dialog for the plugin has the following input parameters and buttons:

  • scans - number of data bins to project across image, default is image width, power of two values give best results
  • angular increment (degrees) - increment angle, default is 1. Data is projected from 0-180 degrees, so a value of 2 here, gives 90 angular views
  • Linear Interpolation - use linear interpolation in projection, used by default, if this is off then simple nearest neighbour interpolation is used.
  • Load Data - Save projection data in a text file
  • Import Data - Can import data from an 8 or 16 bit image sinogram, angular increments must be equally spaced integer values.
  • Save Data - Save projection data in a text file

Options for performing the inverse transform (filtered back projection):

  • Filter - smoothing filters applied before back projection of each view
  • Filter Cutoff - set normalized frequency cutoff, range is 0<1<∞, default is 1
  • Zoom - reconstruction field of view, can be 0<1<∞, default is 1
  • Image size - output image size, any value allowed, width = height
  • Bit depth - output image depth, 8 or 16 bit grayscale, default is 8

The Radon Transform is used for reconstruction of data in tomographic imaging, eg. CT or PET scanners.

Reference: Kak & Slaney (1988), Principles of Computerized Tomographic Imaging, IEEE Press, ISBN 0-87942-198-3.

Figures: Input Dialog:

[0]

 

Sample shows the shepp logan phantom:
[0]

Original, 256x256 8 bit image

 

[0]

Sinogram

[0]

Inverse Transform, scans=256, views=180, hann filter, zoom=1

This sample uses the same image, with fewer angular views:

  [0]

Sinogram

[0]

Inverse, cosine filter, zoom=1, scans=256, views=45