/CCPi-Regularisation-Toolkit

The set of CPU/GPU optimised regularisation modules for iterative image reconstruction and other image processing tasks

Primary LanguageCApache License 2.0Apache-2.0

CCPi-Regularisation Toolkit (Software X paper)

Master Development Anaconda binaries
Build Status Build Status conda version conda last release conda platforms conda dowloads

Iterative image reconstruction (IIR) methods frequently require regularisation to ensure convergence and make inverse problem well-posed. The CCPi-Regularisation Toolkit (CCPi-RGL) toolkit provides a set of 2D/3D regularisation strategies to guarantee a better performance of IIR methods (higher SNR and resolution). The regularisation modules for scalar and vectorial datasets are based on the proximal operator framework and can be used with proximal splitting algorithms, such as PDHG, Douglas-Rachford, ADMM, FISTA and others. While the main target for CCPi-RGL is tomographic image reconstruction, the toolkit can be used for image denoising problems. The core modules are written in C-OMP and CUDA languages and wrappers for Matlab and Python are provided. With CuPy dependency installed for Python, one can use regularisers directly without the need for explicit compilation. We recommend this option as the simplest to start with if you've got a GPU. This software can also be used by running in parallel across multiple GPU devices on a PC or a cluster compute node.


Prerequisites:

  • MATLAB OR
  • Python (tested ver. 3.5/2.7); Cython
  • C compilers
  • nvcc (CUDA SDK) compilers
  • CuPy for the GPU-enabled methods

Package modules:

Single-channel (scalar):

  1. Rudin-Osher-Fatemi (ROF) Total Variation (explicit PDE minimisation scheme) 2D/3D CPU/GPU + CuPy (Ref. 1)
  2. Fast-Gradient-Projection (FGP) Total Variation 2D/3D CPU/GPU (Ref. 2)
  3. Split-Bregman (SB) Total Variation 2D/3D CPU/GPU (Ref. 5)
  4. Primal-Dual (PD) Total Variation 2D/3D CPU/GPU + CuPy (Ref. 13)
  5. Total Generalised Variation (TGV) model for higher-order regularisation 2D/3D CPU/GPU (Ref. 6,13)
  6. Linear and nonlinear diffusion (explicit PDE minimisation scheme) 2D/3D CPU/GPU (Ref. 8)
  7. Anisotropic Fourth-Order Diffusion (explicit PDE minimisation) 2D/3D CPU/GPU (Ref. 9)
  8. A joint ROF-LLT (Lysaker-Lundervold-Tai) model for higher-order regularisation 2D/3D CPU/GPU (Ref. 10,11)
  9. Nonlocal Total Variation regularisation (GS fixed point iteration) 2D CPU/GPU (Ref. 12)

Multi-channel (vectorial):

  1. Fast-Gradient-Projection (FGP) Directional Total Variation 2D/3D CPU/GPU (Ref. 3,4,2)
  2. Total Nuclear Variation (TNV) penalty 2D+channels CPU (Ref. 7)

Installation:

The package comes as a CMake project and additional wrappers for Python and Matlab. Please see more detailed Installation information.

Python binaries

To install precompiled binaries, you need conda and install from the ccpi channel using :

conda install ccpi-regulariser -c ccpi -c conda-forge

Python (GPU-CuPy)

One can also use some of the GPU modules with the provided CuPy interfaces. The functions in ccpi-regularisation-cupy package work with CuPy arrays as an input and return a CuPy array for output.

conda install -c httomo ccpi-regularisation-cupy

Once installed please see Demos. Please note that not all modules are yet supported as this is an ongoing development. One can install both CuPy-driven and the ccpi-regulariser packge in one environment, but please be aware that the functions carry the identical names.

References to implemented methods:

  1. Rudin, L.I., Osher, S. and Fatemi, E., 1992. Nonlinear total variation based noise removal algorithms. Physica D: nonlinear phenomena, 60(1-4)

  2. Beck, A. and Teboulle, M., 2009. Fast gradient-based algorithms for constrained total variation image denoising and deblurring problems. IEEE Transactions on Image Processing, 18(11)

  3. Ehrhardt, M.J. and Betcke, M.M., 2016. Multicontrast MRI reconstruction with structure-guided total variation. SIAM Journal on Imaging Sciences, 9(3)

  4. Kazantsev, D., Jørgensen, J.S., Andersen, M., Lionheart, W.R., Lee, P.D. and Withers, P.J., 2018. Joint image reconstruction method with correlative multi-channel prior for X-ray spectral computed tomography. Inverse Problems, 34(6) Results can be reproduced using the following SOFTWARE

  5. Goldstein, T. and Osher, S., 2009. The split Bregman method for L1-regularized problems. SIAM journal on imaging sciences, 2(2)

  6. Bredies, K., Kunisch, K. and Pock, T., 2010. Total generalized variation. SIAM Journal on Imaging Sciences, 3(3)

  7. Duran, J., Moeller, M., Sbert, C. and Cremers, D., 2016. Collaborative total variation: a general framework for vectorial TV models. SIAM Journal on Imaging Sciences, 9(1)

  8. Black, M.J., Sapiro, G., Marimont, D.H. and Heeger, D., 1998. Robust anisotropic diffusion. IEEE Transactions on image processing, 7(3)

  9. Hajiaboli, M.R., 2011. An anisotropic fourth-order diffusion filter for image noise removal. International Journal of Computer Vision, 92(2)

  10. Lysaker, M., Lundervold, A. and Tai, X.C., 2003. Noise removal using fourth-order partial differential equation with applications to medical magnetic resonance images in space and time. IEEE Transactions on image processing, 12(12)

  11. Kazantsev, D., Guo, E., Phillion, A.B., Withers, P.J. and Lee, P.D., 2017. Model-based iterative reconstruction using higher-order regularization of dynamic synchrotron data. Measurement Science and Technology, 28(9)

  12. Abderrahim E., Lezoray O. and Bougleux S. 2008. Nonlocal discrete regularization on weighted graphs: a framework for image and manifold processing. IEEE Trans. Image Processing 17(7), pp. 1047-1060.

  13. Chambolle, A. and Pock, T., 2010. A first-order primal-dual algorithm for convex problems with applications to imaging. Journal of mathematical imaging and vision 40(1)

References to software (please cite if used):

Applications:

License:

Apache License, Version 2.0

Acknowledgments:

CCPi-RGL software is a product of the CCPi group and STFC SCD software developers. Any relevant questions/comments can be e-mailed to Daniil Kazantsev at dkazanc@hotmail.com