STIR 6.4.0
GeneralisedPrior.h
Go to the documentation of this file.
1//
2//
3/*
4 Copyright (C) 2000- 2007, Hammersmith Imanet Ltd
5 This file is part of STIR.
6
7 SPDX-License-Identifier: Apache-2.0
8
9 See STIR/LICENSE.txt for details
10*/
20
21#ifndef __stir_recon_buildblock_GeneralisedPrior_H__
22#define __stir_recon_buildblock_GeneralisedPrior_H__
23
25#include "stir/ParsingObject.h"
26#include "stir/Succeeded.h"
27
28START_NAMESPACE_STIR
29
30class Succeeded;
31
41template <typename DataT>
42class GeneralisedPrior : public RegisteredObject<GeneralisedPrior<DataT>>
43
44{
45public:
46 inline GeneralisedPrior();
47
49
51 virtual double compute_value(const DataT& current_estimate) = 0;
52
54
57 virtual void compute_gradient(DataT& prior_gradient, const DataT& current_estimate) = 0;
58
60
66 virtual double compute_gradient_times_input(const DataT& input, const DataT& current_estimate);
67
69
76 virtual void compute_Hessian(DataT& prior_Hessian_for_single_densel,
77 const BasicCoordinate<3, int>& coords,
78 const DataT& current_image_estimate) const;
79
82
87 virtual void compute_Hessian_diagonal(DataT& Hessian_diagonal, const DataT& current_estimate) const;
88
90
96 virtual void add_multiplication_with_approximate_Hessian(DataT& output, const DataT& input) const;
97
99
103 virtual void accumulate_Hessian_times_input(DataT& output, const DataT& current_estimate, const DataT& input) const;
104
105 inline float get_penalisation_factor() const;
106 inline void set_penalisation_factor(float new_penalisation_factor);
107
109 virtual Succeeded set_up(shared_ptr<const DataT> const& target_sptr);
110
112
113 virtual bool is_convex() const = 0;
114
115protected:
116 float penalisation_factor;
118
119 void set_defaults() override;
121
122 void initialise_keymap() override;
123
125 virtual void check(DataT const& current_estimate) const;
126
127 bool _already_set_up;
128};
129
130END_NAMESPACE_STIR
131
133
134#endif
Inline implementations for class stir::GeneralisedPrior.
Declaration of class stir::ParsingObject.
Declaration of class stiir::RegisteredObject.
Declaration of class stir::Succeeded.
class BasicCoordinate<int num_dimensions, typename coordT> defines num_dimensions -dimensional coordi...
Definition BasicCoordinate.h:57
virtual double compute_gradient_times_input(const DataT &input, const DataT &current_estimate)
compute the dot product of the gradient of the log of the prior function at the current_estimate with...
Definition GeneralisedPrior.inl:71
virtual void compute_Hessian(DataT &prior_Hessian_for_single_densel, const BasicCoordinate< 3, int > &coords, const DataT &current_image_estimate) const
This computes a single row of the Hessian.
Definition GeneralisedPrior.inl:79
void set_penalisation_factor(float new_penalisation_factor)
Definition GeneralisedPrior.inl:41
virtual void add_multiplication_with_approximate_Hessian(DataT &output, const DataT &input) const
This should compute the multiplication of the Hessian with a vector and add it to output.
Definition GeneralisedPrior.inl:98
virtual Succeeded set_up(shared_ptr< const DataT > const &target_sptr)
Has to be called before using this object.
Definition GeneralisedPrior.inl:63
virtual void compute_Hessian_diagonal(DataT &Hessian_diagonal, const DataT &current_estimate) const
This computes the diagonal of the Hessian of the log of the prior function at the current_estimate an...
Definition GeneralisedPrior.inl:91
virtual void check(DataT const &current_estimate) const
Check that the prior is ready to be used.
Definition GeneralisedPrior.inl:116
virtual void compute_gradient(DataT &prior_gradient, const DataT &current_estimate)=0
This should compute the gradient of the log of the prior function at the current_estimate.
void initialise_keymap() override
sets key for penalisation factor
Definition GeneralisedPrior.inl:48
virtual void accumulate_Hessian_times_input(DataT &output, const DataT &current_estimate, const DataT &input) const
This should compute the multiplication of the Hessian with a vector and add it to output.
Definition GeneralisedPrior.inl:106
void set_defaults() override
sets value for penalisation factor
Definition GeneralisedPrior.inl:55
virtual bool is_convex() const =0
Indicates if the prior is a smooth convex function.
virtual double compute_value(const DataT &current_estimate)=0
compute the value of the function
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition Succeeded.h:44