|
STIR
6.3.0
|
does backprojection by interpolating between the bins. More...
#include "stir/recon_buildblock/BackProjectorByBinUsingInterpolation.h"

Public Member Functions | |
| BackProjectorByBinUsingInterpolation (const bool use_piecewise_linear_interpolation=true, const bool use_exact_Jacobian=true) | |
| The constructor defaults to using piecewise linear interpolation and the exact Jacobian. | |
| BackProjectorByBinUsingInterpolation (shared_ptr< const ProjDataInfo > const &, shared_ptr< const DiscretisedDensity< 3, float >> const &image_info_ptr, const bool use_piecewise_linear_interpolation=true, const bool use_exact_Jacobian=true) | |
| The constructor defaults to using piecewise linear interpolation and the exact Jacobian. More... | |
| void | set_up (const shared_ptr< const ProjDataInfo > &proj_data_info_ptr, const shared_ptr< const DiscretisedDensity< 3, float >> &density_info_ptr) override |
| Stores all necessary geometric info. More... | |
| const DataSymmetriesForViewSegmentNumbers * | get_symmetries_used () const override |
| Gets the symmetries used by this backprojector. More... | |
| void | use_exact_Jacobian (const bool use_exact_Jacobian) |
| Use this to switch between the exact Jacobian and an approximate Jacobian (valid for s << R). | |
| void | use_piecewise_linear_interpolation (const bool use_piecewise_linear_interpolation) |
| Use this to switch between ordinary linear interpolation and piece-wise linear interpolation in the axial direction. | |
| BackProjectorByBinUsingInterpolation * | clone () const override |
Public Member Functions inherited from stir::RegisteredParsingObject< BackProjectorByBinUsingInterpolation, BackProjectorByBin > | |
| 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::BackProjectorByBin | |
| BackProjectorByBin () | |
| Default constructor calls reset_timers() | |
| void | back_project (DiscretisedDensity< 3, float > &, const ProjData &, int subset_num=0, int num_subsets=1) |
| project whole proj_data into the volume More... | |
| virtual void | back_project (const ProjData &, int subset_num=0, int num_subsets=1) |
| projects the viewgrams into the volume it adds to the data backprojected since start_accumulating_in_new_target() was last called. | |
| void | back_project (const RelatedViewgrams< float > &) |
| projects the viewgrams into the volume it adds to the data backprojected since start_accumulating_in_new_target() was last called. | |
| void | back_project (const RelatedViewgrams< float > &, const int min_axial_pos_num, const int max_axial_pos_num) |
| projects the specified range of the viewgrams and axial positions into the volume it adds to the data backprojected since start_accumulating_in_new_target() was last called. | |
| void | back_project (const RelatedViewgrams< float > &, const int min_axial_pos_num, const int max_axial_pos_num, const int min_tangential_pos_num, const int max_tangential_pos_num) |
| projects the specified range of the viewgrams, axial positions and tangential positions into the volume it adds to the data backprojected since start_accumulating_in_new_target() was last called. | |
| virtual void | start_accumulating_in_new_target () |
| tell the back projector to start accumulating into a new target. This function has to be called before any back-projection is initiated. | |
| virtual void | get_output (DiscretisedDensity< 3, float > &) const |
Get output This will overwrite the array-content of the argument with the result of all backprojections since calling start_accumulating_in_new_target(). Note that the argument has to have the same characteristics as what was used when calling set_up(). | |
| void | set_post_data_processor (shared_ptr< DataProcessor< DiscretisedDensity< 3, float >>> post_data_processor_sptr) |
| Set data processor to use after back projection. | |
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) | |
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) |
Static Public Attributes | |
| static const char *const | registered_name = "Interpolation" |
| Name which will be used when parsing a BackProjectorByBin object. | |
Additional Inherited Members | |
Static Public Member Functions inherited from stir::RegisteredParsingObject< BackProjectorByBinUsingInterpolation, BackProjectorByBin > | |
| static BackProjectorByBin * | 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< BackProjectorByBin > | |
| static BackProjectorByBin * | 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 BackProjectorByBin * | 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< BackProjectorByBin > | |
| typedef BackProjectorByBin *(* | 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. | |
Protected Member Functions inherited from stir::BackProjectorByBin | |
| virtual void | actual_back_project (const RelatedViewgrams< float > &, const int min_axial_pos_num, const int max_axial_pos_num, const int min_tangential_pos_num, const int max_tangential_pos_num) |
| This actually does the back projection. There are two versions of this code to enable backwards compatibility. More... | |
| virtual void | check (const ProjDataInfo &proj_data_info) const |
| check if the argument is the same as what was used for set_up() More... | |
| virtual void | check (const ProjDataInfo &proj_data_info, const DiscretisedDensity< 3, float > &density_info) const |
| check if the arguments are the same as what was used for set_up() More... | |
Protected Member Functions inherited from stir::ParsingObject | |
| virtual bool | post_processing () |
| This will be called at the end of the parsing. More... | |
| 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< BackProjectorByBin > | |
| static RegistryType & | registry () |
| Static function returning the registry. More... | |
Protected Attributes inherited from stir::BackProjectorByBin | |
| bool | _already_set_up |
| shared_ptr< DiscretisedDensity< 3, float > > | _density_sptr |
| Clone of the density sptr set with set_up() | |
| shared_ptr< DataProcessor< DiscretisedDensity< 3, float > > > | _post_data_processor_sptr |
| shared_ptr< const ProjDataInfo > | _proj_data_info_sptr |
| ProjDataInfo set by set_up() | |
Protected Attributes inherited from stir::ParsingObject | |
| KeyParser | parser |
does backprojection by interpolating between the bins.
This implementation uses incremental backprojection
Two versions of interpolation are implemented:
The former is an implementation of "Incremental beamwise backprojection using geometrical symmetries for 3D PET reconstruction in a cylindrical scanner geometry" M L Egger, C Joseph, C Morel, Phys. Med. Biol. (1998) 43 3009-3024 http://dx.doi.org/10.1088/0031-9155/43/10/023
For the latter, see the extended abstract for 3D99 "On various approximations for the projectors in iterative reconstruction algorithms for 3D-PET", K. Thielemans, M.W. Jacobson, D. Belluzzo. Available on the STIR web-site.
The piecewise linear interpolation is only used when the axial voxel size is half the axial_sampling of the projection data (for the segment in question).
| stir::BackProjectorByBinUsingInterpolation::BackProjectorByBinUsingInterpolation | ( | shared_ptr< const ProjDataInfo > const & | proj_data_info_ptr, |
| shared_ptr< const DiscretisedDensity< 3, float >> const & | image_info_ptr, | ||
| const bool | use_piecewise_linear_interpolation = true, |
||
| const bool | use_exact_Jacobian = true |
||
| ) |
The constructor defaults to using piecewise linear interpolation and the exact Jacobian.
References stir::BackProjectorByBin::set_defaults(), and stir::BackProjectorByBin::set_up().
|
overridevirtual |
Stores all necessary geometric info.
Note that the density_info_ptr is not stored in this object. It's only used to get some info on sizes etc.
Implements stir::BackProjectorByBin.
References stir::error(), stir::VoxelsOnCartesianGrid< elemT >::get_voxel_size(), stir::round(), and stir::BackProjectorByBin::set_up().
|
overridevirtual |
Gets the symmetries used by this backprojector.
Implements stir::BackProjectorByBin.
References stir::error().
1.8.13