STIR 6.4.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.

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