STIR 6.5.0
stir::SqrtHessianRowSum< TargetT > Class Template Reference

Implementations of two square root Hessian row sum computation methods, as proposed by Tsai et al. (2020). More...

#include "stir/recon_buildblock/SqrtHessianRowSum.h"

Inheritance diagram for stir::SqrtHessianRowSum< TargetT >:

Public Member Functions

 SqrtHessianRowSum ()
 Default constructor.
 SqrtHessianRowSum (const std::string &)
void set_defaults () override
 sets default values
void process_data ()
 The main function to compute and save the sqrt of the Hessian row sum volume.
get and set methods for the objective function sptr
GeneralisedObjectiveFunction< TargetT > const & get_objective_function_sptr ()
void set_objective_function_sptr (const shared_ptr< GeneralisedObjectiveFunction< TargetT > > &obj_fun)
get and set methods for the input image
shared_ptr< TargetT > get_input_image_sptr ()
void set_input_image_sptr (shared_ptr< TargetT > const &image)
shared_ptr< TargetT > get_output_target_sptr ()
 get method for returning the sqrt row sum image
void set_up ()
get and set methods for use approximate hessian bool
bool get_use_approximate_hessian () const
void set_use_approximate_hessian (bool use_approximate)
Public Member Functions inherited from stir::ParsingObject
 ParsingObject (const ParsingObject &)
ParsingObject & operator= (const ParsingObject &)
bool parse (std::istream &f)
bool parse (const char *const filename)
void ask_parameters ()
virtual std::string parameter_info ()

get and set methods for the compute with penalty bool

bool _already_setup = false
bool get_compute_with_penalty () const
void set_compute_with_penalty (bool with_penalty)
void compute_Hessian_row_sum ()
 Computes the objective function Hessian row sum at the current image estimate. Can compute the penalty's Hessian if it exists for the selected prior.
void compute_approximate_Hessian_row_sum ()
 Computes the approximate Hessian of the objective function. Cannot use penalty's approximate Hessian, see compute_with_penalty.

Additional Inherited Members

virtual void set_key_values ()
 This will be called before parsing or parameter_info is called.
KeyParser parser

Detailed Description

template<typename TargetT>
class stir::SqrtHessianRowSum< TargetT >

Implementations of two square root Hessian row sum computation methods, as proposed by Tsai et al. (2020).

Two methods of computing the sqrt of the Hessian row sum images:

  • use an approximation of the Hessian of the log-likelihood from only the measured data
    sqrt[ backproj( forwproj(ones) / y) ]
  • use a current image estimate to compute the Hessian of the objective function (and optionally Hessian of the prior)
    sqrt[ backproj( (y / (forwproj(lambda) + b)^2 ) * forwproj(ones)) +
    beta * prior.Hessian_times_input(lambda, ones)]
    where y is the measured (input) data, b is the corrections (additive sinogram), lambda is the current image estimate, and ones is an uniform array of ones.

For more details, see: Tsai, Y.-J., Schramm, G., Ahn, S., Bousse, A., Arridge, S., Nuyts, J., Hutton, B. F., Stearns, C. W., & Thielemans, K. (2020). Benefits of Using a Spatially-Variant Penalty Strength With Anatomical Priors in PET Reconstruction. IEEE Transactions on Medical Imaging, 39(1), 11-22. https://doi.org/10.1109/TMI.2019.2913889

Constructor & Destructor Documentation

◆ SqrtHessianRowSum()

template<typename TargetT>
stir::SqrtHessianRowSum< TargetT >::SqrtHessianRowSum ( )

Default constructor.

calls set_defaults().

References set_defaults(), and SqrtHessianRowSum().

Referenced by SqrtHessianRowSum().

Member Function Documentation

◆ set_defaults()

template<typename TargetT>
void stir::SqrtHessianRowSum< TargetT >::set_defaults ( )
overridevirtual

sets default values

Sets use_approximate_hessian to true and compute_with_penalty to false

Reimplemented from stir::ParsingObject.

References stir::OutputFileFormat< DataT >::default_sptr(), and set_defaults().

Referenced by set_defaults(), and SqrtHessianRowSum().

◆ process_data()

template<typename TargetT>
void stir::SqrtHessianRowSum< TargetT >::process_data ( )

The main function to compute and save the sqrt of the Hessian row sum volume.

Different Hessian row sum methods can be used, see compute_Hessian_row_sum() and compute_approximate_Hessian_row_sum().

References compute_approximate_Hessian_row_sum(), compute_Hessian_row_sum(), stir::info(), and process_data().

Referenced by process_data().

◆ get_output_target_sptr()

template<typename TargetT>
shared_ptr< TargetT > stir::SqrtHessianRowSum< TargetT >::get_output_target_sptr ( )

get method for returning the sqrt row sum image

References get_output_target_sptr().

Referenced by get_output_target_sptr().

◆ compute_Hessian_row_sum()

template<typename TargetT>
void stir::SqrtHessianRowSum< TargetT >::compute_Hessian_row_sum ( )

Computes the objective function Hessian row sum at the current image estimate. Can compute the penalty's Hessian if it exists for the selected prior.

References compute_Hessian_row_sum(), stir::error(), and stir::info().

Referenced by compute_Hessian_row_sum(), and process_data().

◆ compute_approximate_Hessian_row_sum()

template<typename TargetT>
void stir::SqrtHessianRowSum< TargetT >::compute_approximate_Hessian_row_sum ( )

Computes the approximate Hessian of the objective function. Cannot use penalty's approximate Hessian, see compute_with_penalty.

References compute_approximate_Hessian_row_sum(), stir::error(), and stir::info().

Referenced by compute_approximate_Hessian_row_sum(), and process_data().


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