|
STIR
6.3.0
|
a base class for LogLikelihood of independent Poisson variables where the mean values are linear combinations of the gated images. More...
#include "stir/recon_buildblock/PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.h"

Public Member Functions | |
| TargetT * | construct_target_ptr () const override |
| Returns a pointer to a newly allocated target object (with 0 data). More... | |
| void | actual_compute_subset_gradient_without_penalty (TargetT &gradient, const TargetT ¤t_estimate, const int subset_num, const bool add_sensitivity) override |
| computes the subset gradient of the objective function without the penalty (optional: add subset sensitivity) More... | |
| double | actual_compute_objective_function_without_penalty (const TargetT ¤t_estimate, const int subset_num) override |
| Implementation of function that computes the objective function for the current subset. More... | |
| Succeeded | set_up_before_sensitivity (shared_ptr< const TargetT > const &target_sptr) override |
| set-up specifics for the derived class | |
| void | add_subset_sensitivity (TargetT &sensitivity, const int subset_num) const override |
| Add subset sensitivity to existing data. | |
| Succeeded | actual_add_multiplication_with_approximate_sub_Hessian_without_penalty (TargetT &output, const TargetT &input, const int subset_num) const override |
| Implementation of the function that multiplies the approximate sub-Hessian with a vector. More... | |
| Succeeded | actual_accumulate_sub_Hessian_times_input_without_penalty (TargetT &output, const TargetT ¤t_image_estimate, const TargetT &input, const int subset_num) const override |
| Implementation of the function computes the sub-Hessian and multiplies by a vector. More... | |
| void | set_time_gate_definitions (const TimeGateDefinitions &time_gate_definitions) |
| PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion () | |
| Default constructor calls set_defaults() | |
| virtual TargetT * | construct_target_ptr () const |
| Creates a suitable target as determined by the parameters. More... | |
| virtual void | compute_sub_gradient_without_penalty_plus_sensitivity (TargetT &gradient, const TargetT &target, const int subset_num) |
| This should compute the subset gradient of the (unregularised) objective function plus the subset sensitivity. More... | |
Functions to get parameters | |
| |
| const GatedProjData & | get_gated_proj_data () const |
| const shared_ptr< GatedProjData > & | get_gated_proj_data_sptr () const |
| const int | get_max_segment_num_to_process () const |
| const bool | get_zero_seg0_end_planes () const |
| const GatedProjData & | get_additive_gated_proj_data () const |
| const shared_ptr< GatedProjData > & | get_additive_gated_proj_data_sptr () const |
| const GatedProjData & | get_normalisation_gated_proj_data () const |
| const shared_ptr< GatedProjData > & | get_normalisation_gated_proj_data_sptr () const |
| const ProjectorByBinPair & | get_projector_pair () const |
| const shared_ptr< ProjectorByBinPair > & | get_projector_pair_sptr () const |
Functions to set parameters | |
This can be used as alternative to the parsing mechanism.
| |
| void | set_recompute_sensitivity (const bool) |
| void | set_sensitivity_sptr (const shared_ptr< TargetT > &) |
| int | set_num_subsets (const int num_subsets) override |
| Attempts to change the number of subsets. More... | |
| void | set_normalisation_sptr (const shared_ptr< BinNormalisation > &) override |
| set_normalisation_sptr More... | |
| void | set_additive_proj_data_sptr (const shared_ptr< ExamData > &) override |
| set_additive_proj_data_sptr More... | |
| void | set_input_data (const shared_ptr< ExamData > &) override |
| set_input_data More... | |
| const GatedProjData & | get_input_data () const override |
| get input data More... | |
| void | set_proj_data_sptr (const shared_ptr< GatedProjData > &) |
| void | set_max_segment_num_to_process (const int) |
| void | set_zero_seg0_end_planes (const bool) |
| void | set_additive_proj_data_sptr (const shared_ptr< GatedProjData > &) |
| void | set_projector_pair_sptr (const shared_ptr< ProjectorByBinPair > &) |
| void | set_frame_num (const int) |
| void | set_frame_definitions (const TimeFrameDefinitions &) |
Public Member Functions inherited from stir::RegisteredParsingObject< PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion< TargetT >, GeneralisedObjectiveFunction< TargetT >, SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > > > | |
| 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::SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > > | |
| SumOfGeneralisedObjectiveFunctions (IterT begin, IterT end) | |
| void | set_functions (IterT begin, IterT end) |
| virtual Succeeded | set_up (shared_ptr< TargetT > const &target_sptr) |
| Has to be called before using this object. More... | |
| virtual void | compute_sub_gradient_without_penalty (TargetT &gradient, const TargetT ¤t_estimate, const int subset_num) |
| This computes the gradient of the unregularised objective function at the current_estimate. More... | |
Public Member Functions inherited from stir::PoissonLogLikelihoodWithLinearModelForMean< TargetT > | |
| const TargetT & | get_sensitivity () const |
| Get a const reference to the total sensitivity. | |
| const TargetT & | get_subset_sensitivity (const int subset_num) const |
| Get a const reference to the sensitivity for a subset. | |
| bool | get_use_subset_sensitivities () const |
| find out if subset_sensitivities are used More... | |
| bool | get_recompute_sensitivity () const |
| find current value of recompute_sensitivity | |
| std::string | get_sensitivity_filename () const |
| get filename to read (or write) the total sensitivity More... | |
| std::string | get_subsensitivity_filenames () const |
| get filename pattern to read (or write) the subset sensitivities More... | |
| std::string | get_subsensitivity_filename (const int subset_num) const |
| Return the filename for a particular subset. More... | |
| void | fill_nonidentifiable_target_parameters (TargetT &target, const float value) const override |
| void | set_recompute_sensitivity (const bool) |
| void | set_subset_sensitivity_sptr (const shared_ptr< TargetT > &, const int subset_num) |
| void | set_use_subset_sensitivities (const bool) |
| See get_use_subset_sensitivities() | |
| void | set_sensitivity_filename (const std::string &) |
| set filename to read (or write) the total sensitivity More... | |
| void | set_subsensitivity_filenames (const std::string &) |
| set filename pattern to read (or write) the subset sensitivities More... | |
Public Member Functions inherited from stir::GeneralisedObjectiveFunction< TargetT > | |
| virtual void | compute_sub_gradient (TargetT &gradient, const TargetT ¤t_estimate, const int subset_num) |
| Compute the subset-gradient of the objective function at current_estimate. More... | |
| virtual void | compute_gradient (TargetT &gradient, const TargetT ¤t_estimate) |
| Compute the gradient of the objective function at the current_estimate. More... | |
| virtual void | compute_gradient_without_penalty (TargetT &gradient, const TargetT ¤t_estimate) |
| Compute the gradient of the unregularised objective function at the current_estimate. More... | |
| virtual double | compute_objective_function_without_penalty (const TargetT ¤t_estimate, const int subset_num) |
| Compute the value of the unregularised sub-objective function at the current_estimate. More... | |
| virtual double | compute_objective_function_without_penalty (const TargetT ¤t_estimate) |
| Compute the value of the unregularised objective function at the current_estimate. More... | |
| double | compute_penalty (const TargetT ¤t_estimate, const int subset_num) |
| Compute the value of the sub-penalty at the current_estimate. More... | |
| double | compute_penalty (const TargetT ¤t_estimate) |
| Compute the value of the penalty at the current_estimate. More... | |
| double | compute_objective_function (const TargetT ¤t_estimate, const int subset_num) |
| Compute the value of the sub-objective function at the current_estimate. More... | |
| double | compute_objective_function (const TargetT ¤t_estimate) |
| Compute the value of the objective function at the current_estimate. More... | |
| double | compute_value (const TargetT ¤t_estimate) |
| Alias for compute_objective_function(const TargetT&) | |
| std::string | get_objective_function_values_report (const TargetT ¤t_estimate) |
| Construct a string with info on the value of objective function with and without penalty. | |
| int | get_num_subsets () const |
| Return the number of subsets in-use. | |
| virtual std::unique_ptr< ExamInfo > | get_exam_info_uptr_for_target () const |
| bool | subsets_are_approximately_balanced () const |
| Checks of the current subset scheme is approximately balanced. More... | |
| bool | subsets_are_approximately_balanced (std::string &warning_message) const |
| Checks of the current subset scheme is approximately balanced and constructs a warning message. More... | |
| bool | prior_is_zero () const |
| check if the prior is set (or the penalisation factor is 0) | |
| GeneralisedPrior< TargetT > *const | get_prior_ptr () const |
| Read-only access to the prior. More... | |
| shared_ptr< GeneralisedPrior< TargetT > > | get_prior_sptr () |
| void | set_prior_sptr (const shared_ptr< GeneralisedPrior< TargetT >> &) |
| Change the prior. More... | |
| Succeeded | add_multiplication_with_approximate_sub_Hessian_without_penalty (TargetT &output, const TargetT &input, const int subset_num) const |
| Functions that multiply the approximate (sub)Hessian with a \'vector\'. More... | |
| Succeeded | add_multiplication_with_approximate_sub_Hessian (TargetT &output, const TargetT &input, const int subset_num) const |
| Succeeded | add_multiplication_with_approximate_Hessian_without_penalty (TargetT &output, const TargetT &input) const |
| Succeeded | add_multiplication_with_approximate_Hessian (TargetT &output, const TargetT &input) const |
| Succeeded | accumulate_Hessian_times_input (TargetT &output, const TargetT ¤t_image_estimate, const TargetT &input) const |
| Functions that multiply the True (sub)Hessian with a \'vector\'. More... | |
| Succeeded | accumulate_Hessian_times_input_without_penalty (TargetT &output, const TargetT ¤t_image_estimate, const TargetT &input) const |
| Succeeded | accumulate_sub_Hessian_times_input (TargetT &output, const TargetT ¤t_image_estimate, const TargetT &input, const int subset_num) const |
| Succeeded | accumulate_sub_Hessian_times_input_without_penalty (TargetT &output, const TargetT ¤t_image_estimate, const TargetT &input, const int subset_num) const |
Public Member Functions inherited from stir::ParsingObject | |
| ParsingObject (const ParsingObject &) | |
| ParsingObject & | operator= (const ParsingObject &) |
| void | ask_parameters () |
| bool | parse (std::istream &f) |
| bool | parse (const char *const filename) |
Public Member Functions inherited from stir::RegisteredParsingObject< PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion< TargetT >, GeneralisedObjectiveFunction< TargetT >, PoissonLogLikelihoodWithLinearModelForMean< TargetT > > | |
| 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. | |
Static Public Attributes | |
| static const char *const | registered_name = "PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion" |
| Name which will be used when parsing a GeneralisedObjectiveFunction object. | |
Protected Member Functions | |
| const TimeGateDefinitions & | get_time_gate_definitions () const |
| bool | actual_subsets_are_approximately_balanced (std::string &warning_message) const override |
| Implementation of function that checks subset balancing. More... | |
| void | set_defaults () override |
| Sets defaults before parsing. | |
| void | initialise_keymap () override |
| sets parsing keys More... | |
| bool | post_processing () override |
| This will be called at the end of the parsing. More... | |
| virtual Succeeded | set_up_before_sensitivity (shared_ptr< TargetT > const &target_sptr) |
| virtual void | add_subset_sensitivity (TargetT &sensitivity, const int subset_num) const |
| Add subset sensitivity to existing data. | |
Protected Member Functions inherited from stir::PoissonLogLikelihoodWithLinearModelForMean< TargetT > | |
| void | compute_sensitivities () |
| compute subset and total sensitivity More... | |
Protected Member Functions inherited from stir::ParsingObject | |
| virtual void | set_key_values () |
| This will be called before parsing or parameter_info is called. More... | |
Protected Attributes | |
| std::string | _input_filename |
| Filename with input projection data. | |
| std::string | _motion_vectors_filename_prefix |
| std::string | _reverse_motion_vectors_filename_prefix |
| std::string | _gate_definitions_filename |
| shared_ptr< GatedProjData > | _gated_proj_data_sptr |
| points to the object for the total input projection data | |
| int | _max_segment_num_to_process |
| the maximum absolute ring difference number to use in the reconstruction More... | |
| ParseAndCreateFrom< TargetT, GatedProjData > | target_parameter_parser |
| std::string | _additive_gated_proj_data_filename |
| name of file in which additive projection data are stored | |
| std::string | _normalisation_gated_proj_data_filename |
| name of file in which normalisation projection data are stored | |
| shared_ptr< GatedProjData > | _additive_gated_proj_data_sptr |
| points to the additive projection data More... | |
| shared_ptr< GatedProjData > | _normalisation_gated_proj_data_sptr |
| std::string | _normalisation_filename_prefix |
| shared_ptr< ProjectorByBinPair > | _projector_pair_ptr |
| Stores the projectors that are used for the computations. | |
| bool | _zero_seg0_end_planes |
| signals whether to zero the data in the end planes of the projection data | |
| int | _motion_correction_type |
| GatedSpatialTransformation | _motion_vectors |
| GatedSpatialTransformation | _reverse_motion_vectors |
| GatedDiscretisedDensity | _gated_image_template |
| gated image template | |
| int | max_segment_num_to_process |
| the maximum absolute ring difference number to use in the reconstruction More... | |
| int | output_image_size_xy |
| the output image size in x and y direction More... | |
| int | output_image_size_z |
| the output image size in z direction More... | |
| double | zoom |
| the zoom factor | |
| double | Xoffset |
| offset in the x-direction | |
| double | Yoffset |
| offset in the y-direction | |
| double | Zoffset |
| offset in the z-direction | |
| shared_ptr< ProjectorByBinPair > | projector_pair_ptr |
| Stores the projectors that are used for the computations. | |
| bool | zero_seg0_end_planes |
| signals whether to zero the data in the end planes of the projection data | |
| std::string | _additive_projection_data_filename |
| name of file in which loglikelihood measurements are stored | |
| int | frame_num |
| std::string | frame_definition_filename |
| TimeFrameDefinitions | frame_defs |
| VectorWithOffset< shared_ptr< BinNormalisation > > | _normalisation_sptrs |
Protected Attributes inherited from stir::SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > > | |
| _functions_type | _functions |
Protected Attributes inherited from stir::GeneralisedObjectiveFunction< TargetT > | |
| int | num_subsets |
| bool | already_set_up |
| shared_ptr< GeneralisedPrior< TargetT > > | prior_sptr |
Protected Attributes inherited from stir::ParsingObject | |
| KeyParser | parser |
Additional Inherited Members | |
Static Public Member Functions inherited from stir::RegisteredParsingObject< PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion< TargetT >, GeneralisedObjectiveFunction< TargetT >, SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > > > | |
| static GeneralisedObjectiveFunction< TargetT > * | 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< GeneralisedObjectiveFunction< TargetT > > | |
| static GeneralisedObjectiveFunction< TargetT > * | read_registered_object (std::istream *in, const std::string ®istered_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 GeneralisedObjectiveFunction< TargetT > * | 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... | |
Static Public Member Functions inherited from stir::RegisteredParsingObject< PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion< TargetT >, GeneralisedObjectiveFunction< TargetT >, PoissonLogLikelihoodWithLinearModelForMean< TargetT > > | |
| static GeneralisedObjectiveFunction< TargetT > * | read_from_stream (std::istream *) |
| Construct a new object (of type Derived) by parsing the istream. More... | |
Protected Types inherited from stir::SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > > | |
| typedef std::vector< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT > > | _functions_type |
| typedef _functions_type::iterator | _functions_iterator_type |
| typedef _functions_type::const_iterator | _functions_const_iterator_type |
Protected Types inherited from stir::RegisteredObject< GeneralisedObjectiveFunction< TargetT > > | |
| typedef GeneralisedObjectiveFunction< TargetT > *(* | 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_less > | RegistryType |
| The type of the registry. | |
Static Protected Member Functions inherited from stir::RegisteredObject< GeneralisedObjectiveFunction< TargetT > > | |
| static RegistryType & | registry () |
| Static function returning the registry. More... | |
a base class for LogLikelihood of independent Poisson variables where the mean values are linear combinations of the gated images.
For more information: Tsoumpas et al (2013) Physics in Medicine and Biology
|
overridevirtual |
Returns a pointer to a newly allocated target object (with 0 data).
Dimensions etc are set from the gated_proj_data_sptr and other information set by parsing, such as zoom, output_image_size_z etc.
Implements stir::GeneralisedObjectiveFunction< TargetT >.
References stir::warning().
|
overridevirtual |
computes the subset gradient of the objective function without the penalty (optional: add subset sensitivity)
If add_sensitivity is true, this computes
(see the class general documentation). The sum will however be restricted to a subset.
However, if add_sensitivity is false, this function will instead compute only the gradient
Implements stir::PoissonLogLikelihoodWithLinearModelForMean< TargetT >.
|
overridevirtual |
Implementation of function that computes the objective function for the current subset.
The reason we have this function is that overloading a function in a derived class, hides all functions of the same name.
Reimplemented from stir::SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > >.
|
overridevirtual |
Implementation of the function that multiplies the approximate sub-Hessian with a vector.
The reason we have this function is that overloading a function in a derived class, hides all functions of the same name.
Reimplemented from stir::GeneralisedObjectiveFunction< TargetT >.
|
overridevirtual |
Implementation of the function computes the sub-Hessian and multiplies by a vector.
The reason we have this function is that overloading a function in a derived class, hides all functions of the same name.
Reimplemented from stir::GeneralisedObjectiveFunction< TargetT >.
|
overridevirtual |
Attempts to change the number of subsets.
Reimplemented from stir::SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > >.
|
overridevirtual |
set_normalisation_sptr
In the case the reconstruction process is called from another piece of code, the user should be able to set any additive sinogram
Implements stir::GeneralisedObjectiveFunction< TargetT >.
|
overridevirtual |
set_additive_proj_data_sptr
In the case the reconstruction process is called from another piece of code, the user should be able to set any additive sinogram
Implements stir::GeneralisedObjectiveFunction< TargetT >.
|
overridevirtual |
set_input_data
It can be used to set the data to be reconstructed within some other code, as opposed to via parsing.
Implements stir::GeneralisedObjectiveFunction< TargetT >.
|
overridevirtual |
get input data
Will throw an exception if it wasn't set first
Implements stir::GeneralisedObjectiveFunction< TargetT >.
|
overrideprotectedvirtual |
Implementation of function that checks subset balancing.
Reimplemented from stir::SumOfGeneralisedObjectiveFunctions< PoissonLogLikelihoodWithLinearModelForMeanAndProjData< TargetT >, TargetT, PoissonLogLikelihoodWithLinearModelForMean< TargetT > >.
|
overrideprotectedvirtual |
sets parsing keys
Has to be called by initialise_keymap in the leaf-class
Reimplemented from stir::PoissonLogLikelihoodWithLinearModelForMean< TargetT >.
|
overrideprotectedvirtual |
This will be called at the end of the parsing.
Reimplemented from stir::PoissonLogLikelihoodWithLinearModelForMean< TargetT >.
References stir::read_from_file(), and stir::warning().
|
virtual |
Creates a suitable target as determined by the parameters.
already_set_up (unfortunately), as it is currently called in Reconstruction::reconstruct() before calling set_up(). Implements stir::GeneralisedObjectiveFunction< TargetT >.
|
virtual |
This should compute the subset gradient of the (unregularised) objective function plus the subset sensitivity.
Implementation in terms of actual_compute_sub_gradient_without_penalty(). This function is used for instance by OSMAPOSL.
This computes
(see the class general documentation). The sum will however be restricted to a subset.
Reimplemented from stir::PoissonLogLikelihoodWithLinearModelForMean< TargetT >.
|
protected |
the maximum absolute ring difference number to use in the reconstruction
convention: if -1, use get_max_segment_num()
|
protected |
points to the additive projection data
the projection data in this file is bin-wise added to forward projection results
|
protected |
the normalisation or/and attenuation data
|
protected |
the motion vectors where all information is stored
|
protected |
the maximum absolute ring difference number to use in the reconstruction
convention: if -1, use get_max_segment_num()
|
protected |
the output image size in x and y direction
convention: if -1, use a size such that the whole FOV is covered
|
protected |
the output image size in z direction
convention: if -1, use default as provided by VoxelsOnCartesianGrid constructor
1.8.13