STIR 6.5.0

Implementation of the Relative Difference penalty potential. More...

#include "stir/recon_buildblock/GibbsRelativeDifferencePenalty.h"

Public Member Functions

__host__ __device__ double value (const elemT val_center, const elemT val_neigh, int z, int y, int x) const
 Method for computing the potential value.
__host__ __device__ double derivative_10 (const elemT val_center, const elemT val_neigh, int z, int y, int x) const
 Method for computing the first derivative with respect to val_center.
__host__ __device__ double derivative_20 (const elemT val_center, const elemT val_neigh, int z, int y, int x) const
 Method for computing the second derivative with respect to val_center.
__host__ __device__ double derivative_11 (const elemT val_center, const elemT val_neigh, int z, int y, int x) const
 Method for computing the mixed second derivative.
void initialise_keymap (KeyParser &parser)
 Method for setting up parsing additional parameters.
void set_defaults ()
 Set default values for potential-specific parameters.

Static Public Member Functions

static bool is_convex ()
 method to indicate whether the the prior defined by this potential is convex

Public Attributes

float gamma
float epsilon

Detailed Description

template<typename elemT>
class stir::RelativeDifferencePotential< elemT >

Implementation of the Relative Difference penalty potential.

The prior energy is:

\‍[\sum_{r,dr} \kappa_{r} \kappa_{r+dr} w_{dr} \frac{(\lambda_r - \lambda_{r+dr})^2}{2(\lambda_r + \lambda_{r+dr} + \gamma
|\lambda_r - \lambda_{r+dr}| + \epsilon)} \‍]

Where:

  • $\lambda_r$ and $\lambda_{r+dr}$ are pixel values at positions $r$ and $r+dr$
  • $\gamma$ is a smoothing parameter for the prior (default: 2.0)
  • $\epsilon$ prevents division by zero (default: 1e-7)
  • $w_{dr}$ are distance-dependent weights
  • $\kappa$ provides spatially-varying penalty weights (optional)
Warning
Only well-defined for non-negative voxel values. With $\epsilon=0$, gradient algorithms may have issues near zero values, as the Hessian becomes singular.
See also
Nuyts et al., "A Concave Prior Penalizing Relative Differences for Maximum-a-Posteriori Reconstruction in Emission Tomography," IEEE TNS, vol. 49(1), pp. 56-60, 2002.

Member Function Documentation

◆ initialise_keymap()

template<typename elemT>
void stir::RelativeDifferencePotential< elemT >::initialise_keymap ( KeyParser & parser)
inline

Method for setting up parsing additional parameters.

References stir::KeyParser::add_key().


The documentation for this class was generated from the following file: