STIR 6.5.0
Reconstruction building blocks
Collaboration diagram for Reconstruction building blocks:

Topics

 Projection building blocks
 Normalisation building blocks
 Objective functions for iterative estimation of variables
 distributable building blocks
 Wrapped NiftyPET functionality in STIR
 Wrapped Parallelproj functionality in STIR

Files

file  /home/kris/devel/STIRdistrib/STIR/examples/C++/General_Reconstruction/General_Reconstruction.h
 Definition of class stir::General_Reconstruction.
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/motion/PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.cxx
 Declaration of class stir::PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/BinNormalisationFromML2D.cxx
 Implementation for class stir::BinNormalisationFromML2D.
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/BinNormalisationSinogramRescaling.cxx
 Implementation for class BinNormalisationSinogramRescaling.
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/BinNormalisationUsingProfile.cxx
 Implementations for class BinNormalisationUsingProfile.
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/local_recon_buildblock_registries.cxx
 File that registers all RegisterObject children in recon_buildblock.
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/ParametricQuadraticPrior.cxx
 implementation of the stir::ParametricQuadraticPrior class
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/ProjMatrixByBinSinglePhoton.cxx
 non-inline implementations for ProjMatrixByBinSinglePhoton
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/ProjMatrixByBinUsingSolidAngle.cxx
 non-inline implementations for stir::ProjMatrixByBinUsingSolidAngle
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/ProjMatrixByBinWithPositronRange.cxx
 non-inline implementations for stir::ProjMatrixByBinWithPositronRange
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/ProjMatrixByDensel.cxx
 implementation of the stir::ProjMatrixByDensel class
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/ProjMatrixByDenselOnCartesianGridUsingElement.cxx
 non-inline implementations for ProjMatrixByDenselOnCartesianGridUsingElement
file  /home/kris/devel/STIRdistrib/STIR/src/experimental/recon_buildblock/ProjMatrixByDenselUsingRayTracing.cxx
 non-inline implementations for ProjMatrixByDenselUsingRayTracing
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/AnalyticReconstruction.h
 declares the stir::AnalyticReconstruction class
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/BinNormalisationFromECAT7.h
 Declaration of class stir::ecat::ecat7::BinNormalisationFromECAT7.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/BinNormalisationFromECAT8.h
 Declaration of class stir::ecat::BinNormalisationFromECAT8.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/BinNormalisationFromGEHDF5.h
 Declaration of class stir::GE_RDF_HDF5::BinNormalisationFromGEHDF5.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/BinNormalisationSPECT.h
 Declaration of class BinNormalisationSPECT.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/DistributedWorker.h
 declares the stir::DistributedWorker class
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/find_basic_vs_nums_in_subsets.h
 Implementation for stir::detail::find_basic_vs_nums_in_subset.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/FourierRebinning.h
 Class for FORE Reconstruction.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/IterativeReconstruction.h
 declares the stir::IterativeReconstruction class
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/ML_estimate_component_based_normalisation.h
 Declaration of stir::ML_estimate_component_based_normalisation.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/ProjDataRebinning.h
 declares the stir::ProjDataRebinning class
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/ProjMatrixElemsForOneDensel.h
 Declaration of class stir::ProjMatrixElemsForOneDensel.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/RayTraceVoxelsOnCartesianGrid.h
 Declaration of stir::RayTraceVoxelsOnCartesianGrid.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/Reconstruction.h
 declares the stir::Reconstruction class
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/RelatedBins.h
 Declaration of class stir::RelatedBins.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/RelatedBins.inl
 Implementations of inline functions of class stir::RelatedBins.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/SqrtHessianRowSum.h
 Declaration of class stir::SqrtHessianRowSum.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/SumOfGeneralisedObjectiveFunctions.h
 Declaration of class stir::SumOfGeneralisedObjectiveFunctions.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir/recon_buildblock/SumOfGeneralisedObjectiveFunctions.inl
 Implementation of class stir::SumOfGeneralisedObjectiveFunctions.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/motion/PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.h
 Declaration of class stir::PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/BinNormalisationFromML2D.h
 Declaration of class stir::BinNormalisationFromML2D.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/BinNormalisationSinogramRescaling.h
 Declaration of class stir::BinNormalisationSinogramRescaling.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/BinNormalisationUsingProfile.h
 Declaration of class BinNormalisationUsingProfile.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/DataSymmetriesForDensels_PET_CartesianGrid.h
 Declaration of class stir::DataSymmetriesForDensels_PET_CartesianGrid.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/DataSymmetriesForDensels_PET_CartesianGrid.inl
 inline implementations for class DataSymmetriesForDensels_PET_CartesianGrid
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ParametricQuadraticPrior.h
 Declaration of class stir::ParametricQuadraticPrior.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ProjMatrixByBinSinglePhoton.h
 ProjMatrixByBinSinglePhoton's definition.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ProjMatrixByBinUsingSolidAngle.h
 ProjMatrixByBinUsingSolidAngle's definition.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ProjMatrixByBinWithPositronRange.h
 ProjMatrixByBinWithPositronRange's definition.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ProjMatrixByDensel.h
 declaration of ProjMatrixByDensel and its helpers classes
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ProjMatrixByDensel.inl
 Implementations of inline functions for class ProjMatrixByDensel.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ProjMatrixByDenselOnCartesianGridUsingElement.h
 ProjMatrixByDenselOnCartesianGridUsingElement's definition.
file  /home/kris/devel/STIRdistrib/STIR/src/include/stir_experimental/recon_buildblock/ProjMatrixByDenselUsingRayTracing.h
 ProjMatrixByDenselUsingRayTracing's definition.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/AnalyticReconstruction.cxx
 implementation of the stir::AnalyticReconstruction class
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/BackProjectorByBinUsingSquareProjMatrixByBin.cxx
 non-inline implementations for stir::BackProjectorByBinUsingSquareProjMatrixByBin
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/BinNormalisationFromECAT7.cxx
 Implementation for class stir::ecat::ecat7::BinNormalisationFromECAT7.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/BinNormalisationFromECAT8.cxx
 Implementation for class stir::ecat::BinNormalisationFromECAT8.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/BinNormalisationFromGEHDF5.cxx
 Implementation for class stir::GE:RDF_HDF5::BinNormalisationFromGEHDF5.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/BinNormalisationSPECT.cxx
 Implementation for class stir::BinNormalisationSPECT.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/DistributedCachingInformation.cxx
 Implementation of class stir::DistributedCachingInformation.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/find_basic_vs_nums_in_subset.cxx
 Implementation for stir::detail::find_basic_vs_nums_in_subset.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/FourierRebinning.cxx
 FORE kernel.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/IterativeReconstruction.cxx
 implementation of the stir::IterativeReconstruction class
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/ML_estimate_component_based_normalisation.cxx
 Implementation of ML_estimate_component_based_normalisation.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/ProjDataRebinning.cxx
 implementation of the ProjDataRebinning class
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/RayTraceVoxelsOnCartesianGrid.cxx
 Implementation of RayTraceVoxelsOnCartesianGrid.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/recon_buildblock_registries.cxx
 File that registers all stir::RegisterObject children in recon_buildblock.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/Reconstruction.cxx
 implementation of the stir::Reconstruction class
file  /home/kris/devel/STIRdistrib/STIR/src/recon_buildblock/SqrtHessianRowSum.cxx
 Declaration of class stir::SqrtHessianRowSum.
file  /home/kris/devel/STIRdistrib/STIR/src/recon_test/recontest.cxx
 Demo for Realtime reconstruction initialization.

Classes

class  stir::PrepareProjData
 A preliminary class to prepare files for iterative reconstruction. More...
class  stir::AnalyticReconstruction
 base class for all analytic reconstruction algorithmsThis class provides extra functinoality (compared to Reconstruction) as it assumes that the TargetT is really a VoxelsOnCartesianGrid. More...
class  stir::ecat::ecat7::BinNormalisationFromECAT7
 A BinNormalisation class that gets the normalisation factors from an ECAT7 3D normalisation file. More...
class  stir::ecat::BinNormalisationFromECAT8
 A BinNormalisation class that gets the normalisation factors from an ECAT8 3D normalisation file. Note that you have to point it to the "Interfile" header. More...
class  stir::GE::RDF_HDF5::BinNormalisationFromGEHDF5
 A BinNormalisation class that gets the normalisation factors from an GEHDF5 3D normalisation file. More...
class  stir::IterativeReconstruction< TargetT >
 base class for iterative reconstruction objects More...
class  stir::ProjDataRebinning
 base class for all rebinning algorithms for 3D PET data More...
class  stir::Reconstruction< TargetT >
 base class for all ReconstructionsAs there is not a lot of commonality between different reconstruction algorithms, this base class is rather basic. It essentially takes care of constructing a target image, calls the virtual reconstruct() function, and writes the result to file. More...
class  stir::RelatedBins
 This class contains all information about a set of bins related by symmetry. More...
class  stir::SqrtHessianRowSum< TargetT >
 Implementations of two square root Hessian row sum computation methods, as proposed by Tsai et al. (2020). More...
class  stir::SumOfGeneralisedObjectiveFunctions< ObjFuncT, TargetT, ParentT >
 A base class for sums of 'generalised' objective functions, i.e. objective functions for which at least a 'gradient' is defined. More...
class  stir::PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion< TargetT >
 a base class for LogLikelihood of independent Poisson variables where the mean values are linear combinations of the gated images. More...
class  stir::BinNormalisationFromML2D
 A BinNormalisation class that gets the normalisation factors from the files output by find_ML_normfactors. More...
class  stir::BinNormalisationSinogramRescaling
 The BinNormalisationSinogramRescaling class gets normaliastion factors by dividing forward projection of the fitted cyl. to the precorrecred data. More...
class  stir::DataSymmetriesForDensels_PET_CartesianGrid
 Symmetries appropriate for a (cylindrical) PET scanner, and a discretised density on a Cartesian grid. More...
class  stir::ParametricQuadraticPrior< TargetT >
 A class in the GeneralisedPrior hierarchy. This implements a quadratic Gibbs prior. More...
class  stir::ProjMatrixByBinSinglePhoton
 a 'projection matrix' to implement a model for a single photon acquisition in terms of the detector efficiencies. More...
class  stir::ProjMatrixByBinUsingSolidAngle
 Computes projection matrix elements for VoxelsOnCartesianGrid images by using a Solid Angle model. More...
class  stir::ProjMatrixByBinWithPositronRange
 Computes projection matrix elements for VoxelsOnCartesianGrid images by using a Solid Angle model. More...
class  stir::ProjMatrixByDensel
 This is the (abstract) base class for all projection matrices which are organised by 'Densel'. More...
class  stir::ProjMatrixByDenselOnCartesianGridUsingElement
 Computes projection matrix elements for VoxelsOnCartesianGrid images by using a Length of Intersection (LOI) model. More...
class  stir::ProjMatrixByDenselUsingRayTracing
 Computes projection matrix elements for VoxelsOnCartesianGrid images by using a Length of Intersection (LOI) model. More...
class  stir::FourierRebinning
 Class for Serial FORE Reconstruction. More...

Functions

std::vector< ViewSegmentNumbers > stir::detail::find_basic_vs_nums_in_subset (const ProjDataInfo &proj_data_info, const DataSymmetriesForViewSegmentNumbers &symmetries, const int min_segment_num, const int max_segment_num, const int subset_num, const int num_subsets)
 a helper function to find which view/segments are in a subset
void stir::ML_estimate_component_based_normalisation (const std::string &out_filename_prefix, const ProjData &measured_data, const ProjData &model_data, int num_eff_iterations, int num_iterations, bool do_geo, bool do_block, bool do_symmetry_per_block, bool do_KL, bool do_display)
 Find normalisation factors using a maximum likelihood approach.
void stir::RayTraceVoxelsOnCartesianGrid (ProjMatrixElemsForOneBin &lor, const CartesianCoordinate3D< float > &start_point, const CartesianCoordinate3D< float > &end_point, const CartesianCoordinate3D< float > &voxel_size, const float normalisation_constant=1.F)
 RayTraceVoxelsOnCartesianGrid finds the Length of Intersections (LOIs) of an LOR with a grid of voxels and appends them to the ProjMatrixElemsForOneBin object.

Detailed Description

Library with 'general' reconstruction building blocks

Function Documentation

◆ find_basic_vs_nums_in_subset()

std::vector< ViewSegmentNumbers > stir::detail::find_basic_vs_nums_in_subset ( const ProjDataInfo & proj_data_info,
const DataSymmetriesForViewSegmentNumbers & symmetries,
const int min_segment_num,
const int max_segment_num,
const int subset_num,
const int num_subsets )

◆ ML_estimate_component_based_normalisation()

void stir::ML_estimate_component_based_normalisation ( const std::string & out_filename_prefix,
const ProjData & measured_data,
const ProjData & model_data,
int num_eff_iterations,
int num_iterations,
bool do_geo,
bool do_block,
bool do_symmetry_per_block,
bool do_KL,
bool do_display )

◆ RayTraceVoxelsOnCartesianGrid()

void stir::RayTraceVoxelsOnCartesianGrid ( ProjMatrixElemsForOneBin & lor,
const CartesianCoordinate3D< float > & start_point,
const CartesianCoordinate3D< float > & end_point,
const CartesianCoordinate3D< float > & voxel_size,
const float normalisation_constant = 1.F )

RayTraceVoxelsOnCartesianGrid finds the Length of Intersections (LOIs) of an LOR with a grid of voxels and appends them to the ProjMatrixElemsForOneBin object.

Parameters
lorobject to which the intersected voxels and the LOI will be appended
start_pointfirst point on the LOR. The first voxel will contain this point.
end_pointlast point on the LOR. The last voxel will contain this point.
voxel_sizenormally in mm
normalisation_constantLOIs will be multiplied with this constant

start_point and end_point have to be given in 'voxel grid units' (i.e. voxels are spaced 1 unit apart). The centre of the voxels are assumed to be at integer coordinates (e.g. (0,0,0) is the centre of a voxel).

For the start voxel, the intersection length of the LOR with the whole voxel is computed, not just from the start_point to the next edge. The same is true for the end voxel.

Warning
RayTraceVoxelsOnCartesianGrid appends voxels and intersection lengths to the lor. It does NOT reset it first.

RayTraceVoxelsOnCartesianGrid is based on Siddon's algorithm.

Siddon's algorithm works by looking at intersections of the 'intra-voxel' planes with the LOR.

The LORs is parametrised as

(x,y,z) = a (1/inc_x, 1/inc_y, 1/inc_z) + start_point

Then values of 'a' are computed where the LOR intersects an intra-voxel plane. For example, 'ax' are the values where x= n + 0.5 (for integer n). Finally, we can go along the LOR and check which of the ax,ay,az is smallest, as this determines which plane the LOR intersects at this point.

References norm(), stir::ProjMatrixElemsForOneBin::push_back(), RayTraceVoxelsOnCartesianGrid(), stir::ProjMatrixElemsForOneBin::reserve(), round(), stir::ProjMatrixElemsForOneBin::size(), stir::ProjMatrixElemsForOneBin::sort(), and warning().

Referenced by RayTraceVoxelsOnCartesianGrid().