tomobar.regularisersCuPy

tomobar.regularisersCuPy#

Adding CuPy-enabled regularisers from the CCPi-regularisation toolkit and instantiate a proximal operator for iterative methods.

tomobar.regularisersCuPy.PD_TV_cupy(data: <cp.ndarray>, regularisation_parameter: float | None = 1e-05, iterations: int | None = 1000, methodTV: int | None = 0, nonneg: int | None = 0, lipschitz_const: float | None = 8.0, gpu_id: int | None = 0, half_precision: bool = False) <cp.ndarray>[source]#
Primal Dual algorithm for non-smooth convex Total Variation functional.

Ref: Chambolle, Pock, “A First-Order Primal-Dual Algorithm for Convex Problems with Applications to Imaging”, 2010.

Parameters:
  • data (cp.ndarray) – A 2d or 3d CuPy array.

  • regularisation_parameter (Optional[float], optional) – Regularisation parameter to control the level of smoothing. Defaults to 1e-05.

  • iterations (Optional[int], optional) – The number of iterations. Defaults to 1000.

  • methodTV (Optional[int], optional) – Choose between isotropic (0) or anisotropic (1) case for TV norm.

  • nonneg (Optional[int], optional) – Enable non-negativity in updates by selecting 1. Defaults to 0.

  • lipschitz_const (Optional[float], optional) – Lipschitz constant to control convergence.

  • gpu_id (Optional[int], optional) – A GPU device index to perform operation on. Defaults to 0.

Returns:

PD-TV filtered CuPy array.

Return type:

cp.ndarray

tomobar.regularisersCuPy.prox_regul(self, X: <cp.ndarray>, _regularisation_: dict) <cp.ndarray>[source]#

Enabling proximal operators step in iterative reconstruction.

Parameters:
  • X (cp.ndarray) – 2D or 3D CuPy array.

  • _regularisation_ (dict) – Regularisation dictionary with parameters, see tomobar.supp.dicts.

Returns:

Filtered 2D or 3D CuPy array.

Return type:

cp.ndarray