Wednesday, November 14, 2012

Learning Tomography: Multiplicative ART




There are several variants of the Algebraic Reconstruction Techniques (ART): One of them is Multiplicative ART (MART) based on the same principle but the error is calculated as a ratio.

1- Algorithm

In MART, the algorithm becomes.

for each iteration
  for each row of sinogram
    p ← row;
    a ← calc_projection(rec, angle);
    err ← (p / a)λ;
    rec  ← rec * err;
  end for
end for

2- Implementation

Nothing special about the implementation, this is exactly the same script as ART_simple.js but step #4 replaced by ...

    // 4- Compute the error as a ratio
  ic.run("Divide",proj,a); 
  IJ.run(proj, "Macro...", "code=[v=pow(v,"+relax+");]");


And the reconstruction update is replaced by a multiplication:

  ic.run("Multiply",rec,proj);

Moreover, to avoid a division by zero at the first iteration, the 2D reconstruction image is initialized with the mean value of the sinogram.

  var stats = imp.getStatistics();
  var avg=stats.mean;
  rec.getProcessor().setValue(avg);
  rec.getProcessor().fill();


Of course, you can add the constraints as described in a previous post [Link].

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


3- Some results

From this sinogram [Link], the MART script yields the 2D reconstruction of Fig. 1.

Fig. 1: Five cycles of MART with a relaxation factor of 0.33.


Other crazybiocomputing posts

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

No comments:

Post a Comment