Skip to main content

GPU-CuPy accelerated regularisation routines of CCPi-regularisation toolkit

Project description

CCPi-Regularisation Toolkit (Software X paper)

CI status conda version conda date conda platforms conda downloads License

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

  • Python (3.7+) and/or MATLAB
  • 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[^1]
  2. Fast-Gradient-Projection (FGP) Total Variation 2D/3D CPU/GPU[^2]
  3. Split-Bregman (SB) Total Variation 2D/3D CPU/GPU[^5]
  4. Primal-Dual (PD) Total Variation 2D/3D CPU/GPU + CuPy[^13]
  5. Total Generalised Variation (TGV) model for higher-order regularisation 2D/3D CPU/GPU[^6][^13]
  6. Linear and nonlinear diffusion (explicit PDE minimisation scheme) 2D/3D CPU/GPU[^8]
  7. Anisotropic Fourth-Order Diffusion (explicit PDE minimisation) 2D/3D CPU/GPU[^9]
  8. A joint ROF-LLT (Lysaker-Lundervold-Tai) model for higher-order regularisation 2D/3D CPU/GPU[^10][^11]
  9. Nonlocal Total Variation regularisation (GS fixed point iteration) 2D CPU/GPU[^12]

Multi-channel (vectorial)

  1. Fast-Gradient-Projection (FGP) Directional Total Variation 2D/3D CPU/GPU[^3][^4][^2]
  2. Total Nuclear Variation (TNV) penalty 2D+channels CPU[^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 package in one environment, but please be aware that the functions carry the identical names.

References

[^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)

Software (please cite if used)

Applications

License

License

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccpi_regularisation_cupy-24.1.0.tar.gz (29.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ccpi_regularisation_cupy-24.1.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file ccpi_regularisation_cupy-24.1.0.tar.gz.

File metadata

File hashes

Hashes for ccpi_regularisation_cupy-24.1.0.tar.gz
Algorithm Hash digest
SHA256 1d6c7ea80fe250810740b35dade4b37c146ec69fb8ebec7ad49b13fc61125e6a
MD5 7ce79df2eb17aedb77ce8aec7c5aa661
BLAKE2b-256 ae5f777b2a1d22642873df70a1ec57b5a13262a760dacd23ed83f9b516ab4858

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccpi_regularisation_cupy-24.1.0.tar.gz:

Publisher: ccpi_regulariser_pypi_publish.yml on dkazanc/CCPi-Regularisation-Toolkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ccpi_regularisation_cupy-24.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ccpi_regularisation_cupy-24.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 94b2af49a6447aa0d243d7e85b9ce80ab11b86509f016b410dfcb09d2a371469
MD5 6a0d72305baf8747a2de728505eadf71
BLAKE2b-256 b23783593f20db972538914928e831042032a475605666e2d8493a5811d31d24

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccpi_regularisation_cupy-24.1.0-py3-none-any.whl:

Publisher: ccpi_regulariser_pypi_publish.yml on dkazanc/CCPi-Regularisation-Toolkit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page