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. |
No comments:
Post a Comment