23 #ifndef __stir_recon_buildblock_GibbsQuadraticPenalty_H__ 24 #define __stir_recon_buildblock_GibbsQuadraticPenalty_H__ 48 template <
typename elemT>
53 __host__ __device__
inline double value(
const elemT& val_center,
const elemT val_neigh,
int z,
int y,
int x)
const 55 const elemT diff = val_center - val_neigh;
56 return static_cast<double>(diff * diff) / 4.0;
59 __host__ __device__
inline double derivative_10(
const elemT val_center,
const elemT val_neigh,
int z,
int y,
int x)
const 61 return static_cast<double>(val_center - val_neigh) / 2.0;
64 __host__ __device__
inline double derivative_20(
const elemT val_center,
const elemT val_neigh,
int z,
int y,
int x)
const 66 return static_cast<double>(0.5);
69 __host__ __device__
inline double derivative_11(
const elemT val_center,
const elemT val_neigh,
int z,
int y,
int x)
const 71 return static_cast<double>(-0.5);
100 template <
typename elemT>
102 GeneralisedPrior<DiscretisedDensity<3, elemT>>,
103 GibbsPenalty<elemT, QuadraticPotential<elemT>>>
113 static constexpr
const char*
const registered_name =
"Gibbs Quadratic";
117 : base_type(only_2D, penalisation_factor)
121 #ifdef STIR_WITH_CUDA 134 template <
typename elemT>
136 GeneralisedPrior<DiscretisedDensity<3, elemT>>,
137 CudaGibbsPenalty<elemT, QuadraticPotential<elemT>>>
147 static constexpr
const char*
const registered_name =
"Cuda Gibbs Quadratic";
149 CudaGibbsQuadraticPenalty() { this->set_defaults(); }
150 CudaGibbsQuadraticPenalty(
const bool only_2D,
float penalisation_factor)
151 : base_type(only_2D, penalisation_factor)
A class to parse Interfile headers.
Definition: KeyParser.h:161
static bool is_convex()
method to indicate whether the the prior defined by this potential is convex
Definition: GibbsQuadraticPenalty.h:75
void initialise_keymap(KeyParser &parser)
Method for setting up parsing additional parameters.
Definition: GibbsQuadraticPenalty.h:77
A base class with CUDA-accelerated implementation of the GibbsPenalty class.
Definition: CudaGibbsPenalty.h:50
Declaration of the stir::GibbsPenalty class.
A base class for 'generalised' priors, i.e. priors for which at least a 'gradient' is defined...
Definition: GeneralisedPrior.h:42
Multithreaded CPU Implementation of the Quadratic Gibbs prior.
Definition: GibbsQuadraticPenalty.h:101
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files...
Definition: RegisteredParsingObject.h:77
A base class for Gibbs type penalties in the GeneralisedPrior hierarchy.
Definition: GibbsPenalty.h:98
Declaration of the stir::CudaGibbsPenalty class.
some utilities for STIR and CUDA
Declaration of class stir::RegisteredParsingObject.
void set_defaults()
Set default values for potential-specific parameters.
Definition: GibbsQuadraticPenalty.h:82
Implementation of the Quadratic penalty potential.
Definition: GibbsQuadraticPenalty.h:49