|
STIR
6.3.0
|
Implementation of the Ordered Subsets version of Green's MAP One Step Late algorithm. More...
#include "stir/OSMAPOSL/OSMAPOSLReconstruction.h"

Public Member Functions | |
| OSMAPOSLReconstruction () | |
| Default constructor (calling set_defaults()) | |
| OSMAPOSLReconstruction (const std::string ¶meter_filename) | |
| Constructor, initialises everything from parameter file, or (when parameter_filename == "") by calling ask_parameters(). | |
| OSMAPOSLReconstruction & | get_parameters () |
| accessor for the external parameters | |
| const OSMAPOSLReconstruction & | get_parameters () const |
| accessor for the external parameters | |
| std::string | method_info () const override |
| gives method information | |
| PoissonLogLikelihoodWithLinearModelForMean< TargetT > const & | get_objective_function () const |
| Return current objective function. | |
| void | ask_parameters () override |
| prompts the user to enter parameter values manually | |
| Succeeded | set_up (shared_ptr< TargetT > const &target_image_ptr) override |
| operations prior to the iterations | |
| void | update_estimate (TargetT ¤t_image_estimate) override |
| the principal operations for updating the image iterates at each iteration | |
Functions to set parameters | |
This can be used as alternative to the parsing mechanism.
| |
| void | set_inter_update_filter_interval (const int) |
| subiteration interval at which to apply inter-update filters | |
| void | set_inter_update_filter_ptr (const shared_ptr< DataProcessor< TargetT >> &) |
| inter-update filter object | |
| void | set_maximum_relative_change (const double) |
| restrict updates (larger relative updates will be thresholded) | |
| void | set_minimum_relative_change (const double) |
| restrict updates (smaller relative updates will be thresholded) | |
| void | set_enforce_initial_positivity (const bool) |
| void | set_write_update_image (const int) |
| boolean value to determine if the update images have to be written to disk | |
| void | set_MAP_model (const std::string &) |
| should be either additive or multiplicative | |
Public Member Functions inherited from stir::RegisteredParsingObject< OSMAPOSLReconstruction< TargetT >, Reconstruction< TargetT >, IterativeReconstruction< 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::IterativeReconstruction< TargetT > | |
| int | get_subiteration_num () const |
| accessor for the subiteration counter | |
| int | get_subset_num () |
| accessor for finding the current subset number More... | |
| virtual TargetT * | get_initial_data_ptr () const |
| Gets a pointer to the initial data. More... | |
| Succeeded | reconstruct () override |
| executes the reconstruction More... | |
| Succeeded | reconstruct (shared_ptr< TargetT > const &target_data_sptr) override |
| executes the reconstruction with target_data_sptr as initial value More... | |
| std::string | make_filename_prefix_subiteration_num (const std::string &filename_prefix) const |
| A utility function that creates a filename_prefix by appending the current subiteration number. More... | |
| std::string | make_filename_prefix_subiteration_num () const |
| A utility function that creates the output filename_prefix for the current subiteration number. More... | |
| Succeeded | set_up (shared_ptr< TargetT > const &target_data_ptr) override |
| operations prior to the reconstruction More... | |
| GeneralisedObjectiveFunction< TargetT > const & | get_objective_function () const |
| shared_ptr< GeneralisedObjectiveFunction< TargetT > > | get_objective_function_sptr () const |
| const int | get_max_num_full_iterations () const |
| the maximum allowed number of full iterations | |
| const int | get_num_subsets () const |
| the number of ordered subsets | |
| const int | get_num_subiterations () const |
| the number of subiterations | |
| const int | get_start_subiteration_num () const |
| value with which to initialize the subiteration counter | |
| const int | get_start_subset_num () const |
| the starting subset number | |
| const int | get_save_interval () const |
| subiteration interval at which data will be saved | |
| const bool | get_randomise_subset_order () const |
| signals whether to randomise the subset order in each iteration | |
| const DataProcessor< TargetT > & | get_inter_iteration_filter () const |
| inter-iteration filter | |
| shared_ptr< DataProcessor< TargetT > > | get_inter_iteration_filter_sptr () |
| const int | get_inter_iteration_filter_interval () const |
| subiteration interval at which to apply inter-iteration filters | |
| const int | get_report_objective_function_values_interval () const |
| subiteration interval at which to report the values of the objective function | |
| void | set_objective_function_sptr (const shared_ptr< GeneralisedObjectiveFunction< TargetT >> &) |
| The objective function that will be optimised. | |
| void | set_max_num_full_iterations (const int) |
| the maximum allowed number of full iterations | |
| void | set_num_subsets (const int) |
| the number of ordered subsets | |
| void | set_num_subiterations (const int) |
| the number of subiterations | |
| void | set_start_subiteration_num (const int) |
| value with which to initialize the subiteration counter | |
| void | set_start_subset_num (const int) |
| the starting subset number | |
| void | set_save_interval (const int) |
| subiteration interval at which data will be saved | |
| void | set_randomise_subset_order (const bool) |
| signals whether to randomise the subset order in each iteration | |
| void | set_inter_iteration_filter_ptr (const shared_ptr< DataProcessor< TargetT >> &) |
| inter-iteration filter | |
| void | set_inter_iteration_filter_interval (const int) |
| subiteration interval at which to apply inter-iteration filters | |
| void | set_report_objective_function_values_interval (const int) |
| subiteration interval at which to report the values of the objective function | |
| void | set_input_data (const shared_ptr< ExamData > &arg) override |
| set_input_data More... | |
| const ExamData & | get_input_data () const override |
| get input data More... | |
Public Member Functions inherited from stir::Reconstruction< TargetT > | |
| Reconstruction () | |
| default constructor (calls set_defaults()) | |
| ~Reconstruction () override | |
| virtual destructor | |
| void | set_disable_output (bool _val) |
| set_disable_output More... | |
| shared_ptr< TargetT > | get_target_image () |
| get_reconstructed_image More... | |
| void | set_output_filename_prefix (const std::string &) |
| file name for output reconstructed images | |
| void | set_output_file_format_ptr (const shared_ptr< OutputFileFormat< TargetT >> &) |
| defines the format of the output files | |
| void | set_post_processor_sptr (const shared_ptr< DataProcessor< TargetT >> &) |
| post-filter | |
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::TimedObject | |
| void | reset_timers () |
| reset all timers kept by this object | |
| void | stop_timers () const |
| stop all timers kept by this object More... | |
| void | start_timers (bool do_reset=false) const |
| start all timers kept by this object More... | |
| double | get_CPU_timer_value () const |
| get current value of the CPU timer (since first use or last reset) | |
| double | get_wall_clock_timer_value () const |
| get current value of the wall-clock timer (since first use or last reset) | |
Static Public Attributes | |
| static const char *const | registered_name = "OSMAPOSL" |
| Name which will be used when parsing a OSMAPOSLReconstruction object. | |
Protected Member Functions | |
| void | set_defaults () override |
| Set defaults before parsing. | |
| void | initialise_keymap () override |
| Initialise all keywords. | |
| bool | post_processing () override |
| used to check acceptable parameter ranges, etc... | |
| virtual void | compute_sub_gradient_without_penalty_plus_sensitivity (TargetT &gradient, const TargetT ¤t_estimate, const int subset_num) |
| virtual const TargetT & | get_subset_sensitivity (const int subset_num) |
| virtual void | apply_multiplicative_update (TargetT ¤t_image_estimate, const TargetT &multiplicative_update_image) |
Protected Member Functions inherited from stir::IterativeReconstruction< TargetT > | |
| virtual void | end_of_iteration_processing (TargetT ¤t_estimate) |
| operations for the end of the iteration More... | |
| void | set_defaults () override |
| Set defaults before parsing. | |
| void | initialise_keymap () override |
| Initialise all keywords. | |
| bool | post_processing () override |
| used to check acceptable parameter ranges, etc... | |
Protected Member Functions inherited from stir::Reconstruction< TargetT > | |
| virtual void | check (TargetT const &target_data) const |
| do consistency checks More... | |
| void | initialise (const std::string ¶meter_filename) |
| This function initialises all parameters, either via parsing, or by calling ask_parameters() (when parameter_filename is the empty string). More... | |
| void | set_defaults () override |
| Set defaults before parsing. | |
| void | initialise_keymap () override |
| Initialise all keywords. | |
| bool | post_processing () override |
| used to check acceptable parameters after parsing 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 | |
| bool | enforce_initial_positivity |
| operations prior to the iterations More... | |
| bool | do_rim_truncation |
| determines wether voxels outside a circular FOV will be set to 0 or not More... | |
| int | inter_update_filter_interval |
| subiteration interval at which to apply inter-update filters | |
| shared_ptr< DataProcessor< TargetT > > | inter_update_filter_ptr |
| inter-update filter object | |
| double | maximum_relative_change |
| restrict updates (larger relative updates will be thresholded) | |
| double | minimum_relative_change |
| restrict updates (smaller relative updates will be thresholded) | |
| int | write_update_image |
| boolean value to determine if the update images have to be written to disk | |
| std::string | MAP_model |
| should be either additive or multiplicative | |
Protected Attributes inherited from stir::IterativeReconstruction< TargetT > | |
| shared_ptr< GeneralisedObjectiveFunction< TargetT > > | objective_function_sptr |
| int | subiteration_num |
| the subiteration counter | |
| bool | terminate_iterations |
| used to abort the loop over iterations | |
| int | max_num_full_iterations |
| the maximum allowed number of full iterations | |
| int | num_subsets |
| the number of ordered subsets | |
| int | num_subiterations |
| the number of subiterations | |
| int | start_subiteration_num |
| value with which to initialize the subiteration counter | |
| std::string | initial_data_filename |
| name of the file containing the data for intializing the reconstruction | |
| int | start_subset_num |
| the starting subset number | |
| int | save_interval |
| subiteration interval at which data will be saved | |
| bool | randomise_subset_order |
| signals whether to randomise the subset order in each iteration | |
| shared_ptr< DataProcessor< TargetT > > | inter_iteration_filter_ptr |
| inter-iteration filter | |
| int | inter_iteration_filter_interval |
| subiteration interval at which to apply inter-iteration filters | |
| int | report_objective_function_values_interval |
| subiteration interval at which to report the values of the objective function More... | |
Protected Attributes inherited from stir::Reconstruction< TargetT > | |
| std::string | output_filename_prefix |
| file name for output reconstructed images | |
| shared_ptr< OutputFileFormat< TargetT > > | output_file_format_ptr |
| defines the format of the output files | |
| shared_ptr< DataProcessor< TargetT > > | post_filter_sptr |
| post-filter | |
| bool | _already_set_up |
| shared_ptr< TargetT > | target_data_sptr |
| target_data_sptr | |
| bool | _disable_output |
| _disable_output More... | |
| int | _verbosity |
| Verbosity level. | |
Protected Attributes inherited from stir::ParsingObject | |
| KeyParser | parser |
Friends | |
| void | do_sensitivity (const char *const par_filename) |
Additional Inherited Members | |
Static Public Member Functions inherited from stir::RegisteredParsingObject< OSMAPOSLReconstruction< TargetT >, Reconstruction< TargetT >, IterativeReconstruction< TargetT > > | |
| static Reconstruction< 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< Reconstruction< TargetT > > | |
| static Reconstruction< 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 Reconstruction< 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... | |
Protected Types inherited from stir::RegisteredObject< Reconstruction< TargetT > > | |
| typedef Reconstruction< 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< Reconstruction< TargetT > > | |
| static RegistryType & | registry () |
| Static function returning the registry. More... | |
Implementation of the Ordered Subsets version of Green's MAP One Step Late algorithm.
See Jacobson et al, PMB for a description of the implementation.
When no prior info is specified, this reduces to 'standard' OSEM.
Two different forms of the prior are implemented. (For background, see Mustavic&Thielemans, proc. IEEE MIC 2001).
When MAP_model == "additive" this implements the standard form of OSL (with a small modification for allowing subsets):
with
. actually, we restrict 1 + beta*prior_gradient/p_v between .1 and 10
On the other hand, when MAP_model == "multiplicative" it implements
with
. actually, we restrict 1 + beta*prior_gradient between .1 and 10.
Note that all this assumes 'balanced subsets', i.e.
|
protected |
operations prior to the iterations
determines whether non-positive values in the initial image will be set to small positive ones
|
protected |
determines wether voxels outside a circular FOV will be set to 0 or not
Currently this circular FOV is slightly smaller than the actual image size (1 pixel at each end or so).
1.8.13