STIR  6.3.0
Public Member Functions | Static Public Attributes | List of all members

Multithreaded CPU Implementation of the Quadratic Gibbs prior. More...

#include "stir/recon_buildblock/GibbsQuadraticPenalty.h"

Inheritance diagram for stir::GibbsQuadraticPenalty< elemT >:
Inheritance graph
[legend]

Public Member Functions

 GibbsQuadraticPenalty (const bool only_2D, float penalisation_factor)
 
- Public Member Functions inherited from stir::RegisteredParsingObject< GibbsQuadraticPenalty< elemT >, GeneralisedPrior< DiscretisedDensity< 3, elemT > >, GibbsPenalty< elemT, QuadraticPotential< elemT > > >
std::string get_registered_name () const override
 Returns Derived::registered_name.
 
std::string parameter_info () override
 Returns a string with all parameters and their values, in a form suitable for parsing again.
 
- Public Member Functions inherited from stir::GibbsPenalty< elemT, QuadraticPotential< elemT > >
 GibbsPenalty ()
 Default constructor.
 
 GibbsPenalty (const bool only_2D, float penalization_factor)
 Explicit Constructor with 2D/3D option and penalization factor.
 
double compute_value (const DiscretisedDensity< 3, elemT > &current_image_estimate) override
 Compute the value of the prior for the current image estimate.
 
void compute_gradient (DiscretisedDensity< 3, elemT > &prior_gradient, const DiscretisedDensity< 3, elemT > &current_image_estimate) override
 Compute the gradient of the prior for the current image estimate.
 
double compute_gradient_times_input (const DiscretisedDensity< 3, elemT > &input, const DiscretisedDensity< 3, elemT > &current_image_estimate) override
 Compute the dot product of the prior gradient and an input image.
 
void compute_Hessian (DiscretisedDensity< 3, elemT > &prior_Hessian_for_single_densel, const BasicCoordinate< 3, int > &coords, const DiscretisedDensity< 3, elemT > &current_image_estimate) const override
 Compute the Hessian row of the prior at (coords).
 
void compute_Hessian_diagonal (DiscretisedDensity< 3, elemT > &Hessian_diagonal, const DiscretisedDensity< 3, elemT > &current_estimate) const override
 Compute the diagonal of the Hessian matrix.
 
void accumulate_Hessian_times_input (DiscretisedDensity< 3, elemT > &output, const DiscretisedDensity< 3, elemT > &current_estimate, const DiscretisedDensity< 3, elemT > &input) const override
 Accumulate Hessian times input image into output.
 
const Array< 3, float > & get_weights () const
 Get the current weights array. More...
 
virtual void set_weights (const Array< 3, float > &)
 Set the weights array for the prior. More...
 
shared_ptr< const DiscretisedDensity< 3, elemT > > get_kappa_sptr () const
 get current kappa image More...
 
virtual void set_kappa_sptr (const shared_ptr< const DiscretisedDensity< 3, elemT >> &)
 Set the kappa image (spatially-varying penalty factors). More...
 
Succeeded set_up (shared_ptr< const DiscretisedDensity< 3, elemT >> const &target_sptr) override
 Set up the prior for a target image. Must be called before use.
 
virtual std::string get_parsing_name () const
 Getter method to retrieve the parsing name. More...
 
bool is_convex () const override
 Return whether the prior is convex or not.
 
- Public Member Functions inherited from stir::GeneralisedPrior< DiscretisedDensity< 3, elemT > >
virtual double compute_gradient_times_input (const DiscretisedDensity< 3, elemT > &input, const DiscretisedDensity< 3, elemT > &current_estimate)
 compute the dot product of the gradient of the log of the prior function at the current_estimate with input More...
 
virtual void compute_Hessian (DiscretisedDensity< 3, elemT > &prior_Hessian_for_single_densel, const BasicCoordinate< 3, int > &coords, const DiscretisedDensity< 3, elemT > &current_image_estimate) const
 This computes a single row of the Hessian. More...
 
virtual void compute_Hessian_diagonal (DiscretisedDensity< 3, elemT > &Hessian_diagonal, const DiscretisedDensity< 3, elemT > &current_estimate) const
 This computes the diagonal of the Hessian of the log of the prior function at the current_estimate and stores it in Hessian_diagonal. More...
 
virtual void add_multiplication_with_approximate_Hessian (DiscretisedDensity< 3, elemT > &output, const DiscretisedDensity< 3, elemT > &input) const
 This should compute the multiplication of the Hessian with a vector and add it to output. More...
 
virtual void accumulate_Hessian_times_input (DiscretisedDensity< 3, elemT > &output, const DiscretisedDensity< 3, elemT > &current_estimate, const DiscretisedDensity< 3, elemT > &input) const
 This should compute the multiplication of the Hessian with a vector and add it to output. More...
 
float get_penalisation_factor () const
 
void set_penalisation_factor (float new_penalisation_factor)
 
virtual Succeeded set_up (shared_ptr< const DiscretisedDensity< 3, elemT > > const &target_sptr)
 Has to be called before using this object.
 
- Public Member Functions inherited from stir::ParsingObject
 ParsingObject (const ParsingObject &)
 
ParsingObjectoperator= (const ParsingObject &)
 
void ask_parameters ()
 
bool parse (std::istream &f)
 
bool parse (const char *const filename)
 

Static Public Attributes

static constexpr const char *const registered_name = "Gibbs Quadratic"
 Name which will be used when parsing a GeneralisedPrior object.
 

Additional Inherited Members

- Static Public Member Functions inherited from stir::RegisteredParsingObject< GibbsQuadraticPenalty< elemT >, GeneralisedPrior< DiscretisedDensity< 3, elemT > >, GibbsPenalty< elemT, QuadraticPotential< elemT > > >
static GeneralisedPrior< DiscretisedDensity< 3, elemT > > * read_from_stream (std::istream *)
 Construct a new object (of type Derived) by parsing the istream. More...
 
- Static Public Member Functions inherited from stir::RegisteredObject< GeneralisedPrior< DiscretisedDensity< 3, elemT > > >
static GeneralisedPrior< DiscretisedDensity< 3, elemT > > * read_registered_object (std::istream *in, const std::string &registered_name)
 Construct a new object (of a type derived from Root, its actual type determined by the registered_name parameter) by parsing the istream. More...
 
static GeneralisedPrior< DiscretisedDensity< 3, elemT > > * ask_type_and_parameters ()
 ask the user for the type, and then calls read_registered_object(0, type) More...
 
static void list_registered_names (std::ostream &stream)
 List all possible registered names to the stream. More...
 
- Protected Types inherited from stir::RegisteredObject< GeneralisedPrior< DiscretisedDensity< 3, elemT > > >
typedef GeneralisedPrior< DiscretisedDensity< 3, elemT > > *(* RootFactory) (std::istream *)
 The type of a root factory is a function, taking an istream* as argument, and returning a Root*.
 
typedef FactoryRegistry< std::string, RootFactory, interfile_lessRegistryType
 The type of the registry.
 
- Protected Member Functions inherited from stir::GibbsPenalty< elemT, QuadraticPotential< elemT > >
void compute_default_weights (const CartesianCoordinate3D< float > &grid_spacing, bool only_2D)
 Compute default weights for the prior.
 
void check (DiscretisedDensity< 3, elemT > const &current_image_estimate) const override
 Check that the prior is ready to be used.
 
void set_defaults () override
 Set defaults before parsing.
 
void initialise_keymap () override
 Initialise all keywords.
 
bool post_processing () override
 This will be called at the end of the parsing. More...
 
- Protected Member Functions inherited from stir::GeneralisedPrior< DiscretisedDensity< 3, elemT > >
virtual void check (DiscretisedDensity< 3, elemT > const &current_estimate) const
 Check that the prior is ready to be used.
 
- Protected Member Functions inherited from stir::ParsingObject
virtual void set_key_values ()
 This will be called before parsing or parameter_info is called. More...
 
- Static Protected Member Functions inherited from stir::RegisteredObject< GeneralisedPrior< DiscretisedDensity< 3, elemT > > >
static RegistryTyperegistry ()
 Static function returning the registry. More...
 
- Protected Attributes inherited from stir::GibbsPenalty< elemT, QuadraticPotential< elemT > >
Array< 3, float > weights
 The weights for the neighbourhood.
 
bool only_2D
 can be set during parsing to restrict the weights to the 2D case
 
std::string gradient_filename_prefix
 filename prefix for outputing the gradient whenever compute_gradient() is called. More...
 
std::string kappa_filename
 Filename for the $\kappa$ image that will be read by post_processing()
 
QuadraticPotential< elemT > potential
 Gibbs Potential Function.
 
shared_ptr< const DiscretisedDensity< 3, elemT > > kappa_ptr
 The kappa image (spatially-varying penalty factors).
 
CartesianCoordinate3D< int > image_dim
 Image dimensions.
 
CartesianCoordinate3D< int > image_max_indices
 Maximum image indices.
 
CartesianCoordinate3D< int > image_min_indices
 Minimum image indices.
 
- Protected Attributes inherited from stir::GeneralisedPrior< DiscretisedDensity< 3, elemT > >
float penalisation_factor
 
bool _already_set_up
 
- Protected Attributes inherited from stir::ParsingObject
KeyParser parser
 

Detailed Description

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

Multithreaded CPU Implementation of the Quadratic Gibbs prior.

Parsing
These are the keywords that can be used in addition to the ones in GibbsPrior.
Gibbs Quadratic Penalty Parameters:=
; keywords from GibbsPrior
END Gibbs Quadratic Penalty Parameters:=

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