Monday, December 3, 2012

Learning Tomography: WBP 3D reconstruction

In this series Learning Tomography, I always work with 2D slice ... Here is an example of a 3D reconstruction calculated with the weighted (or filtered) back-projection algorithm. The input data correspond to the stack of sinograms (previously calculated here [Link]).

1- Modifying and improving the script

Compared to the previous scripts I published, I just add another loop to scan all the slices of the sinogram stack. Here is a synopsis of the script in pseudo-code:

  3D_rec = new stack
  for each sinogram
    2D_rec = new slice
    for each row of this sinogram
      bp = back-project(row)
      2D_rec = 2D_rec + bp
    end for
  end for
Moreover, I tried to optimize the JavaScript code to speed up the process of 2D reconstruction. This new version − detailed in this post [Link] − is located in the function calcRec2D(one_sinogram, proj_num, angles_array).

Here is the script.

+++ IJ JavaScript snippet: WBP_3Drec.js +++ +++ End of IJ JavaScript snippet: WBP_3Drec.js +++

2- Computing the 3D reconstruction

  1. Copy and paste the script in a JavaScript window (Plugins > New > JavaScript), click on the sinogram stack (available as a 32-bit TIFF ramp-filtered stack [Link] or web page [Link]) and run the script (in JavaScript window, Macros > Run Macro). 
  2. Once executed, choose the middle slice of the Rec3D window, draw a small circle in the center, and normalize all the slices of the volume at 0% of saturated pixels (Process > Enhance Contrast... > Normalize ).
Note: The stack was previously filtered with a truncated ramp filter with the following formula [if d < 100.0) v=d;]. You can try with more sophisticated filters.
Here is a surface representation calculated with Volume Viewer plugin of the final volume 3DRec.

<< Previous: Computing the sinograms

Other crazybiocomputing posts

Further readings are available in ...
  • Learning Tomography Series  [Link]
  • Image Processing TOC [Link]

No comments:

Post a Comment