STIR
6.2.0
|
This implements the BackProjectorByBin interface, given any ProjMatrixByBin object. More...
#include "stir/recon_buildblock/BackProjectorByBinUsingProjMatrixByBin.h"
Public Member Functions | |
BackProjectorByBinUsingProjMatrixByBin (const shared_ptr< ProjMatrixByBin > &proj_matrix_ptr) | |
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 |
Informs on which symmetries the projector handles It should get data related by at least those symmetries. Otherwise, a run-time error will occur (unless the derived class has other behaviour). | |
void | actual_back_project (DiscretisedDensity< 3, float > &image, 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) override |
This actually does the back projection. There are two versions of this code to enable backwards compatibility. More... | |
shared_ptr< ProjMatrixByBin > & | get_proj_matrix_sptr () |
BackProjectorByBinUsingProjMatrixByBin * | clone () const override |
Public Member Functions inherited from stir::RegisteredParsingObject< BackProjectorByBinUsingProjMatrixByBin, 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 = "Matrix" |
Name which will be used when parsing a BackProjectorByBin object. | |
Protected Member Functions | |
void | actual_back_project (DiscretisedDensity< 3, float > &image, const Bin &bin) |
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 void | set_key_values () |
This will be called before parsing or parameter_info is called. More... | |
Protected Attributes | |
shared_ptr< ProjMatrixByBin > | proj_matrix_ptr |
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 |
Additional Inherited Members | |
Static Public Member Functions inherited from stir::RegisteredParsingObject< BackProjectorByBinUsingProjMatrixByBin, 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. | |
Static Protected Member Functions inherited from stir::RegisteredObject< BackProjectorByBin > | |
static RegistryType & | registry () |
Static function returning the registry. More... | |
This implements the BackProjectorByBin interface, given any ProjMatrixByBin object.
|
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::BackProjectorByBin::set_up().
|
overridevirtual |
This actually does the back projection. There are two versions of this code to enable backwards compatibility.
This is the older version (in which the backprojected image is not a member variable). In most cases, the new version (in which the backprojected image is a member variable) calls the old version.
If you are developing your own projector, one of these two needs to be overloaded. It doesn't matter which, but it might as well be the new one in case we one day decide to remove the old ones.
Reimplemented from stir::BackProjectorByBin.
References stir::ProjMatrixElemsForOneBin::back_project(), stir::RelatedViewgrams< elemT >::begin(), stir::RelatedViewgrams< elemT >::end(), stir::DataSymmetriesForBins::find_basic_bin(), stir::DataSymmetriesForBins::find_symmetry_operation_from_basic_bin(), stir::RelatedViewgrams< elemT >::get_basic_segment_num(), stir::RelatedViewgrams< elemT >::get_basic_timing_pos_num(), stir::RelatedViewgrams< elemT >::get_basic_view_num(), stir::DataSymmetriesForBins::get_related_bins_factorised(), stir::Viewgram< elemT >::get_segment_num(), stir::Viewgram< elemT >::get_timing_pos_num(), stir::Viewgram< elemT >::get_view_num(), and stir::Array< num_dimensions, elemT >::sum().