Table of Contents |
---|
Summary
TomopyRecon | |||||
Process category | Brief description | Computational demand for typical tomography data (low, medium, high) | Comment(s) | Reference(s) | Common alternative process(es) |
---|---|---|---|---|---|
reconstructor | TOmographic MOdel-BAsed Reconstruction (ToMoBAR) software. | medium-high. Note that there is 2D and 3D version of the plugin. 3D is more computationally demanding and doesn't exploit the MPI fully. | ToMoBAR is a library of direct and model-based regularised iterative reconstruction algorithms with a plug-and-play capability. Current Savu wrapper uses the regularised FISTA algorithm | ToMoBAR |
|
Parameters
Brief description |
---|
Code Block | ||
---|---|---|
| ||
>>> disp -avv
-------------------------------------------------------------------------------------
TomobarRecon3d(savu.plugins.reconstructions.tomobar_recon_3D)
A wrapper around TOmographic MOdel-BAsed Reconstruction (ToMoBAR) software for
advanced iterative image reconstruction using _3D_ capabilities of regularisation.
The plugin will run on one cluster node, i.e. it can be slow.
1) init_vol : None
Dataset to use as volume initialiser (doesn't currently work with preview).
2) preview : []
A slice list of required frames.
3) log : True
Take the log of the data before reconstruction (True or False).
4) centre_of_rotation : 0.0
Centre of rotation to use for the reconstruction.
5) in_datasets : []
Create a list of the dataset(s) to process.
6) ring_accelerator : 50.0
Acceleration constant for ring removal (use with care).
7) output_size : auto
The dimension of the reconstructed volume (only X-Y dimension).
8) nonnegativity : ENABLE
Nonnegativity constraint, choose Enable or None.
9) regularisation : ROF_TV
To regularise choose methods ROF_TV, FGP_TV, SB_TV, LLT_ROF, NDF, Diff4th.
10) iterations : 15
Number of outer iterations for FISTA method.
11) edge_param : 0.01
Edge (noise) related parameter, relevant for NDF and Diff4th.
12) ratio : 0.95
Ratio of the m2asks diameter in pixels to the smallest edge size along given
axis.
13) log_func : np.nan_to_num(-np.log(sino))
Override the default log function.
14) regularisation_parameter2 : 0.005
Regularisation (smoothing) value for LLT_ROF method.
15) NDF_penalty : Huber
NDF specific penalty type Huber, Perona, Tukey.
16) tolerance : 1e-10
Tolerance to stop outer iterations earlier.
17) ordersubsets : 6
The number of ordered-subsets to accelerate reconstruction.
18) out_datasets : []
Create a list of the dataset(s) to create.
19) centre_pad : False
Pad the sinogram to centre it in order to fill the reconstructed volume ROI for
asthetic purposes. NB: Only available for selected algorithms and will be ignored
otherwise. WARNING: This will significantly increase the size of the data and the
time to compute the reconstruction).
20) regularisation_iterations : 400
The number of regularisation iterations.
21) regularisation_parameter : 0.0002
Regularisation (smoothing) value, higher the value stronger the smoothing effect.
22) force_zero : [None, None]
Set any values in the reconstructed image outside of this range to zero.
23) vol_shape : fixed
Override the size of the reconstuction volume with an integer value.
24) converg_const : power
Lipschitz constant, can be set to a scalar value or automatic calculation using
power methods.
25) time_marching_parameter : 0.002
Time marching parameter, relevant for (ROF_TV, LLT_ROF, NDF, Diff4th) penalties.
26) datafidelity : LS
Data fidelity, Least Squares (LS) or PWLS.
27) outer_pad : False
Pad the sinogram width to fill the reconstructed volume for asthetic purposes.
Choose from True (defaults to sqrt(2)), False or float <= 2.1. NB: Only available
for selected algorithms and will be ignored otherwise. WARNING: This will
increase the size of the data and the time to compute the reconstruction).
28) ring_variable : 0.0
Regularisation variable for ring removal.
-------------------------------------------------------------------------------------
>>> |
Additional notes |
---|
For basic information on this process, please use the disp -av (or disp -avv or disp-v[v] <process index>) command in Savu Configurator (see above). The table below is intended to provide some additional notes on a number of selected topics:
Item | Parameter name | Parameter format | Example(s) | Comment(s) | |
---|---|---|---|---|---|
Parameter value | Effect | ||||
1 | regularisation_parameter | float | 0.0002 | Should be chosen for a specific dataset. Higher the value stronger the smoothing effect. | The value depends on the data. If zero is passed, no regularisation will be applied (reconstruction without filtering). |
2 | regularisation | string | ROF_TV, FGP_TV, SB_TV, LLT_ROF, NDF, Diff4th, TGV | ROF_TV, FGP_TV, SB_TV, NDF - deliver piecewise-constant recovery (regions with uniform intensity) LLT_ROF, Diff4th, TGV - piecewise-smooth recovery. | The plugin uses the CCPi-Regularisation toolkit which is available here: https://github.com/vais-ral/CCPi-Regularisation-Toolkit and based on this paper: https://www.sciencedirect.com/science/article/pii/S2352711018301912 |
3 | iterations | integer | 15-20 | Less than 10 iterations for the iterative method (FISTA) can deliver a blurry reconstruction | The suggested value is 15 iterations, however the algorithm can stop prematurely based on the tolerance value (see bellow) |
4 | tolerance | float | 1e-10 | can stop iterations prematurely when the solution is changing "slowly" | |
5 | regularisation_iterations | integer | 400 for OS methods, 70 for non-OS | Less iterations - less effect of filtering. | One needs to iterate "long enough" in order to get to the filtered solution. The number of iterations for regularisation (filtering) method is set to 400/OS number or 400 for non-OS method. It is not harmful to over-iterate, this, however will effect the speed of the algorithm. |
6 | centre_of_rotation | The default value of the centre_of_rotation parameter is 0.0, which normally needs to be manually modified to a more appropriate value or, if VoCentering is used beforehand in the process chain, then this parameter is automatically set to a value determined by this auto-centring process. | |||
7 | ordersubsets | integer | 6 | effects the final solution by accelerating reconstruction process. | This directly effect the number of iterations to run. The high value (> 12), however, can result in the algorithm to diverge. |
8 | ratio | ||||
9 | out_datasets | ||||
10 | centre_pad | ||||
11 | outer_pad | ||||
12 | n_iterations | ||||
13 | force_zero |
Usage
There are 2D versions of the tomobar plugin - for 2D and 3D reconstruction. 2D version is fully MPI-ed while 3D work on a single GPU provided. Although 3D version can be significantly slower than 2D, the results are normally much better using 3D versus slice-by-slice 2D. Note, however, the passed data dimensions and the available GPU memory before running tomobar3D, the memory overflow can be easily reached.