|
| 1 | +# Two-step spectral CT reconstruction |
| 2 | + |
| 3 | +This page describes an application for two-step spectral CT reconstruction. Please start by reading the [general documentation on spectral CT](../../documentation/docs/multi_energy.md). |
| 4 | + |
| 5 | +Once measured projections have been decomposed into material projections, any reconstruction algorithm can be used to reconstruct each material. In RTK, simply splitting the material projections file (saved as an `itkVectorImage`) into one set of projections per material, and then using `rtkfdk`, `rtksart` or `rtkconjugategradient` will work. |
| 6 | + |
| 7 | +# Spectral ROOSTER |
| 8 | + |
| 9 | +RTK provides a command line application to jointly reconstruct all materials at once, allowing to apply spatial regularization in each material, but also regularization along the material dimension, as reconstructed material volumes sometimes share the same spatial structure. |
| 10 | +Since `rtkspectralrooster` uses the [ROOSTER filter](https://www.openrtk.org/Doxygen/classrtk_1_1FourDROOSTERConeBeamReconstructionFilter.html), originally designed to reconstruct 3D+time volume sequences, the material dimension is referred to as time in the command-line help and parameter names. |
| 11 | + |
| 12 | +## Dataset |
| 13 | + |
| 14 | +The data used in this documentation page can be downloaded using [Girder](https://data.kitware.com/#collection/5a7706878d777f0649e04776/folder/69a005bdf94d0dc14645a412). |
| 15 | +It is a simulation through a cylinder of water with two inserts, one empty, the other filled with cortical bone. |
| 16 | + |
| 17 | +## Command line application |
| 18 | + |
| 19 | +``` |
| 20 | +# Reconstruct a set of material volumes from all material projections, |
| 21 | +# applying Total Nuclear Variation regularization |
| 22 | +
|
| 23 | +rtkspectralrooster \ |
| 24 | + -o cl_spectralrooster.mha \ |
| 25 | + -i mat_recon.mha \ |
| 26 | + -p decomposed.mha \ |
| 27 | + -g geometry.xml \ |
| 28 | + --niter 4 \ |
| 29 | + --cgiter 2 \ |
| 30 | + --tviter 2 \ |
| 31 | + --gamma_tnv 1 |
| 32 | +``` |
| 33 | + |
| 34 | +`cl_spectralrooster.mha` should look similar to `recon_ref.mha`. You can check it with [VV](http://vv.creatis.insa-lyon.fr/) using the overlay feature. Note that `recon_ref.mha` is a 4D image, while `cl_spectralrooster.mha` is a VectorImage, so their data is not organized the same way on disk, but VV will open both a 4D images and overlay them correctly. |
| 35 | +To speed things up, it is recommended to use the CUDA version of the forward and back projectors, and by using CUDA in the conjugate gradient descent algorithm, by running this command instead: |
| 36 | + |
| 37 | +``` |
| 38 | +# Reconstruct a set of material volumes from all material projections, |
| 39 | +# applying Total Nuclear Variation regularization, using CUDA accelerations |
| 40 | +
|
| 41 | +rtkspectralrooster \ |
| 42 | + -o cl_spectralrooster.mha \ |
| 43 | + -i mat_recon.mha \ |
| 44 | + -p decomposed.mha \ |
| 45 | + -g geometry.xml \ |
| 46 | + --niter 4 \ |
| 47 | + --cgiter 2 \ |
| 48 | + --tviter 2 \ |
| 49 | + --gamma_tnv 1 |
| 50 | + --cudacg \ |
| 51 | + --fp CudaRayCast \ |
| 52 | + --bp CudaVoxelBased |
| 53 | +``` |
0 commit comments