Tomobar Recon 3D¶
Description¶
A Plugin to reconstruct tomographic projection data using analytical or state-of-the-art regularised iterative algorithms from the ToMoBAR package. ToMoBAR depends on the ASTRA toolbox and the CCPi RGL toolkit for regularisation.
Parameters
in_datasets:
visibility: datasets
dtype: "[list[],list[str]]"
description:
summary: A list of the dataset(s) to process.
verbose: A list of strings, where each string gives the name of a dataset that was either specified by a loader plugin or created as output to a previous plugin. The length of the list is the number of input datasets requested by the plugin. If there is only one dataset and the list is left empty it will default to that dataset.
default: "[]"
out_datasets:
visibility: datasets
dtype: "[list[],list[str]]"
description:
summary: A list of the dataset(s) to create.
verbose: A list of strings, where each string is a name to be assigned to a dataset output by the plugin. If there is only one input dataset and one output dataset and the list is left empty, the output will take the name of the input dataset. The length of the list is the number of output datasets created by the plugin.
default: "[]"
centre_of_rotation:
visibility: basic
dtype: "[float, str, dict{int:float}]"
description: Centre of rotation to use for the reconstruction.
default: "0.0"
example: It could be a fixed value, a dictionary of (sinogram number, value) pairs for a polynomial fit of degree 1, or a dataset name.
init_vol:
visibility: intermediate
dtype: "[None, str]"
description: Dataset to use as volume initialiser (does not currently work with preview)
default: None
example: "Type the name of the initialised dataset e.g. ['tomo']"
log:
visibility: intermediate
dtype: bool
description:
summary: Option to take the log of the data before reconstruction.
verbose: Should be set to false if you use PaganinFilter
default: "True"
example: Set to True to take the log of the data before reconstruction.
preview:
visibility: intermediate
dtype: preview
description: A slice list of required frames.
default: "[]"
force_zero:
visibility: intermediate
dtype: "[list[float,float],list[None,None]]"
description: Set any values in the reconstructed image outside of this range to zero.
default: "['None', 'None']"
example: "[0, 1]"
ratio:
visibility: intermediate
dtype: "[float, list[float, float]]"
description: Ratio of the masks diameter in pixels to the smallest edge size along given axis. If a list of two floats is given, the second value is used to fill up the area outside the mask.
default: "0.95"
log_func:
visibility: advanced
dtype: str
description: Override the default log function with a numpy statement
default: np.nan_to_num(-np.log(sino))
vol_shape:
visibility: intermediate
dtype: "[str, int]"
description:
summary: Override the size of the reconstruction volume with an integer value.
verbose: When fixed, you get the dimension of the horizontal detector or you can specify any reconstruction size you like with an integer.
default: fixed
reconstruction_method:
visibility: basic
dtype: str
description: The name of the reconstruction method.
options:
FBP3D: Filtered Backprojection method
CGLS3D: Conjugate Gradient Least Squares
FISTA3D: Model-Based iterative with regularisation
default: FBP3D
algorithm_iterations:
visibility: basic
dtype: int
default: "15"
description:
summary: Number of (outer) iterations for iterative algorithm.
verbose: Less than 10 iterations for the iterative method (FISTA3D) can deliver a blurry reconstruction. The suggested value is 15 iterations, however the algorithm can stop prematurely based on the tolerance value.
dependency:
reconstruction_method: FISTA3D CGLS3D
regularisation_parameter:
visibility: basic
dtype: float
description:
summary: Regularisation (filter) parameter. The higher the value, the stronger the smoothing effect
range: Recommended between 1e-06 and 1e-04
default: "3e-06"
dependency:
reconstruction_method: FISTA3D
padding:
visibility: advanced
dtype: int
description: The amount of pixels to pad each slab of the cropped projection data.
default:
reconstruction_method:
FBP3D: "2"
CGLS3D: "3"
FISTA3D: "5"
dependency: reconstruction_method
data_fidelity:
visibility: advanced
dtype: str
description: A data fidelity model for model-based iterative method.
options:
LS: Least-Squares
PWLS: Penalised Weighted Least-Squares (raw data required as input)
SWLS: Stripe weighted Least-Squares (raw data required as input)
KL: Kullback-Leibler
default: LS
dependency:
reconstruction_method: FISTA3D
data_Huber_thresh:
visibility: advanced
dtype: "[None,float]"
description: Threshold parameter for __Huber__ data fidelity.
default: None
dependency:
reconstruction_method: FISTA3D
data_beta_SWLS:
visibility: advanced
dtype: float
description: A parameter for stripe-weighted SWLS model
default: "0.1"
dependency:
reconstruction_method: FISTA3D
data_full_ring_GH:
visibility: advanced
dtype: "[None,str]"
description: Regularisation variable for full constant ring removal (Group-Huber model).
default: None
dependency:
reconstruction_method: FISTA3D
data_full_ring_accelerator_GH:
visibility: advanced
dtype: float
description: Acceleration constant for Group-Huber ring removal (use with care).
default: "10.0"
dependency:
reconstruction_method: FISTA3D
algorithm_verbose:
visibility: advanced
dtype: str
description: Print iterations number and other messages (off by default).
options: "['on', 'off']"
default: off
dependency:
reconstruction_method: FISTA3D
algorithm_mask:
visibility: intermediate
dtype: float
description: set to 1.0 to enable a circular mask diameter or < 1.0 to shrink the mask.
default: "1.0"
dependency:
reconstruction_method: FISTA3D
algorithm_ordersubsets:
visibility: advanced
dtype: int
description: The number of ordered-subsets to accelerate reconstruction.
default: "6"
dependency:
reconstruction_method: FISTA3D
algorithm_nonnegativity:
visibility: advanced
dtype: str
options: "['ENABLE', 'DISABLE']"
description:
summary: ENABLE or DISABLE nonnegativity constraint.
default: ENABLE
dependency:
reconstruction_method: FISTA3D
regularisation_method:
visibility: intermediate
dtype: str
options: "['ROF_TV', 'FGP_TV', 'PD_TV', 'SB_TV', 'LLT_ROF', 'NDF', 'TGV', 'NLTV', 'Diff4th']"
description:
summary: The regularisation (denoising) method to stabilise the iterative recovery
verbose: Iterative methods can help to solve ill-posed inverse problems by choosing a suitable noise model for the measurement
options:
ROF_TV: Rudin-Osher-Fatemi Total Variation model
FGP_TV: Fast Gradient Projection Total Variation model
PD_TV: Primal-Dual Total Variation
SB_TV: Split Bregman Total Variation model
LLT_ROF: Lysaker, Lundervold and Tai model combined with Rudin-Osher-Fatemi
NDF: Nonlinear/Linear Diffusion model (Perona-Malik, Huber or Tukey)
TGV: Total Generalised Variation
NLTV: Non Local Total Variation
Diff4th: Fourth-order nonlinear diffusion model
default: FGP_TV
dependency:
reconstruction_method: FISTA3D
regularisation_iterations:
visibility: intermediate
dtype: int
description:
summary: Total number of regularisation iterations. The smaller the number of iterations, the smaller the effect of the filtering is. A larger number will affect the speed of the algorithm.
default:
regularisation_method:
ROF_TV: "300"
FGP_TV: "100"
PD_TV: "100"
SB_TV: "100"
LLT_ROF: "300"
NDF: "300"
Diff4th: "300"
TGV: "150"
NLTV: "30"
dependency:
reconstruction_method: FISTA3D
regularisation_device:
visibility: hidden
dtype: str
description: The device for regularisation
default: gpu
regularisation_PD_lip:
visibility: advanced
dtype: int
description: Primal-dual parameter for convergence.
default: "8"
dependency:
reconstruction_method: FISTA3D
regularisation_methodTV:
visibility: advanced
dtype: int
description: 0/1 - TV specific isotropic/anisotropic choice.
default: "0"
dependency:
regularisation_method:
ROF_TV
FGP_TV
SB_TV
NLTV
regularisation_timestep:
visibility: advanced
dtype: float
dependency:
regularisation_method:
ROF_TV
LLT_ROF
NDF
Diff4th
description:
summary: Time marching parameter
range: Recommended between 0.0001 and 0.003
default: "0.003"
regularisation_edge_thresh:
visibility: advanced
dtype: float
dependency:
regularisation_method:
NDF
Diff4th
description:
summary: Edge (noise) related parameter
default: "0.01"
regularisation_parameter2:
visibility: advanced
dtype: float
dependency:
regularisation_method: LLT_ROF
description:
summary: Regularisation (smoothing) value
verbose: The higher the value stronger the smoothing effect
default: "0.005"
regularisation_NDF_penalty:
visibility: advanced
dtype: str
options: "['Huber', 'Perona', 'Tukey']"
description:
summary: Penalty dtype
verbose: Nonlinear/Linear Diffusion model (NDF) specific penalty type.
options:
Huber: Huber
Perona: Perona-Malik model
Tukey: Tukey
dependency:
regularisation_method: NDF
default: Huber
Key
visibility: The visibility level of the parameter
dtype: The type of data
description: A short explanation of the parameter
default: The default value
options: A list of permitted values
dependency: The name of the parameter and value which this parameter depends upon
range: A guide for the range of the parameter
Citations
A fast iterative shrinkage-thresholding algorithm for linear inverse problems by Beck, Amir et al.
Bibtex
@article{beck2009fast,
title={A fast iterative shrinkage-thresholding algorithm for linear inverse problems},
author={Beck, Amir and Teboulle, Marc},
journal={SIAM journal on imaging sciences},
volume={2},
number={1},
pages={183--202},
year={2009},
publisher={SIAM}
}
Endnote
%0 Journal Article
%T A fast iterative shrinkage-thresholding algorithm for linear inverse problems
%A Beck, Amir
%A Teboulle, Marc
%J SIAM journal on imaging sciences
%V 2
%N 1
%P 183-202
%@ 1936-4954
%D 2009
%I SIAM
Nonlinear total variation based noise removal algorithms by Rudin, Leonid I et al.
(Please use this citation if you are using the ROF_TV regularisation_method
Bibtex
@article{rudin1992nonlinear,
title={Nonlinear total variation based noise removal algorithms},
author={Rudin, Leonid I and Osher, Stanley and Fatemi, Emad},
journal={Physica D: nonlinear phenomena},
volume={60},
number={1-4},
pages={259--268},
year={1992},
publisher={North-Holland}
}
Endnote
%0 Journal Article
%T Nonlinear total variation based noise removal algorithms
%A Rudin, Leonid I
%A Osher, Stanley
%A Fatemi, Emad
%J Physica D: nonlinear phenomena
%V 60
%N 1-4
%P 259-268
%@ 0167-2789
%D 1992
%I North-Holland
Fast gradient-based algorithms for constrained total variation image denoising and deblurring problems by Beck, Amir et al.
(Please use this citation if you are using the FGP_TV regularisation_method
Bibtex
@article{beck2009fast,
title={Fast gradient-based algorithms for constrained total variation image denoising and deblurring problems},
author={Beck, Amir and Teboulle, Marc},
journal={IEEE transactions on image processing},
volume={18},
number={11},
pages={2419--2434},
year={2009},
publisher={IEEE}
}
Endnote
%0 Journal Article
%T Fast gradient-based algorithms for constrained total variation image denoising and deblurring problems
%A Beck, Amir
%A Teboulle, Marc
%J IEEE transactions on image processing
%V 18
%N 11
%P 2419-2434
%@ 1057-7149
%D 2009
%I IEEE
The split Bregman method for L1-regularized problems by Goldstein, Tom et al.
(Please use this citation if you are using the SB_TV regularisation_method
Bibtex
@article{goldstein2009split,
title={The split Bregman method for L1-regularized problems},
author={Goldstein, Tom and Osher, Stanley},
journal={SIAM journal on imaging sciences},
volume={2},
number={2},
pages={323--343},
year={2009},
publisher={SIAM}
}
Endnote
%0 Journal Article
%T The split Bregman method for L1-regularized problems
%A Goldstein, Tom
%A Osher, Stanley
%J SIAM journal on imaging sciences
%V 2
%N 2
%P 323-343
%@ 1936-4954
%D 2009
%I SIAM
Total generalized variation by Bredies, Kristian et al.
(Please use this citation if you are using the TGV regularisation_method
Bibtex
@article{bredies2010total,
title={Total generalized variation},
author={Bredies, Kristian and Kunisch, Karl and Pock, Thomas},
journal={SIAM Journal on Imaging Sciences},
volume={3},
number={3},
pages={492--526},
year={2010},
publisher={SIAM}
}
Endnote
%0 Journal Article
%T Total generalized variation
%A Bredies, Kristian
%A Kunisch, Karl
%A Pock, Thomas
%J SIAM Journal on Imaging Sciences
%V 3
%N 3
%P 492-526
%@ 1936-4954
%D 2010
%I SIAM
Model-based iterative reconstruction using higher-order regularization of dynamic synchrotron data by Kazantsev, Daniil et al.
(Please use this citation if you are using the LLT_ROF regularisation_method
Bibtex
@article{kazantsev2017model,
title={Model-based iterative reconstruction using higher-order regularization of dynamic synchrotron data},
author={Kazantsev, Daniil and Guo, Enyu and Phillion, AB and Withers, Philip J and Lee, Peter D},
journal={Measurement Science and Technology},
volume={28},
number={9},
pages={094004},
year={2017},
publisher={IOP Publishing}
}
Endnote
%0 Journal Article
%T Model-based iterative reconstruction using higher-order regularization of dynamic synchrotron data
%A Kazantsev, Daniil
%A Guo, Enyu
%A Phillion, AB
%A Withers, Philip J
%A Lee, Peter D
%J Measurement Science and Technology
%V 28
%N 9
%P 094004
%@ 0957-0233
%D 2017
%I IOP Publishing
Scale-space and edge detection using anisotropic diffusion by Perona, Pietro et al.
(Please use this citation if you are using the NDF regularisation_method
Bibtex
@article{perona1990scale,
title={Scale-space and edge detection using anisotropic diffusion},
author={Perona, Pietro and Malik, Jitendra},
journal={IEEE Transactions on pattern analysis and machine intelligence},
volume={12},
number={7},
pages={629--639},
year={1990},
publisher={IEEE}}
Endnote
%0 Journal Article
%T Scale-space and edge detection using anisotropic diffusion
%A Perona, Pietro
%A Malik, Jitendra
%J IEEE Transactions on pattern analysis and machine intelligence
%V 12
%N 7
%P 629-639
%@ 0162-8828
%D 1990
%I IEEE
An anisotropic fourth-order diffusion filter for image noise removal by Hajiaboli, Mohammad Reza et al.
(Please use this citation if you are using the Diff4th regularisation_method
Bibtex
@article{hajiaboli2011anisotropic,
title={An anisotropic fourth-order diffusion filter for image noise removal},
author={Hajiaboli, Mohammad Reza},
journal={International Journal of Computer Vision},
volume={92},
number={2},
pages={177--191},
year={2011},
publisher={Springer}
}
Endnote
%0 Journal Article
%T An anisotropic fourth-order diffusion filter for image noise removal
%A Hajiaboli, Mohammad Reza
%J International Journal of Computer Vision
%V 92
%N 2
%P 177-191
%@ 0920-5691
%D 2011
%I Springer
Nonlocal discrete regularization on weighted graphs, a framework for image and manifold processing by Elmoataz, Abderrahim et al.
(Please use this citation if you are using the NLTV regularisation_method
Bibtex
@article{elmoataz2008nonlocal,
title={Nonlocal discrete regularization on weighted graphs: a framework for image and manifold processing},
author={Elmoataz, Abderrahim and Lezoray, Olivier and Bougleux, S{'e}bastien},
journal={IEEE transactions on Image Processing},
volume={17},
number={7},
pages={1047--1060},
year={2008},
publisher={IEEE}
}
Endnote
%0 Journal Article
%T Nonlocal discrete regularization on weighted graphs, a framework for image and manifold processing
%A Elmoataz, Abderrahim
%A Lezoray, Olivier
%A Bougleux, Sebastien
%J IEEE transactions on Image Processing
%V 17
%N 7
%P 1047-1060
%@ 1057-7149
%D 2008
%I IEEE
API
-
class
TomobarRecon3d
[source] -
nClone_datasets
()[source] The number of output datasets that have an clone - i.e. they take it in turns to be used as output in an iterative plugin.
-
nInput_datasets
()[source] The number of datasets required as input to the plugin
- Returns
Number of input datasets
-
nOutput_datasets
()[source] The number of datasets created by the plugin
- Returns
Number of output datasets
-
pre_process
()[source] This method is called immediately after base_pre_process().
-
process_frames
(data)[source] This method is called after the plugin has been created by the pipeline framework and forms the main processing step
- Parameters
data (list(np.array)) – A list of numpy arrays for each input dataset.
-
set_filter_padding
(**kwargs) Should be overridden to define how wide the frame should be for each input data set
-
setup
(**kwargs) This method is first to be called after the plugin has been created. It determines input/output datasets and plugin specific dataset information such as the pattern (e.g. sinogram/projection).
-