STIR  6.2.0
Modules | Files | Classes | Functions
Reconstruction building blocks
Collaboration diagram for Reconstruction building blocks:

Modules

 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  General_Reconstruction.h
 Definition of class stir::General_Reconstruction.
 
file  PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.cxx
 Declaration of class stir::PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.
 
file  BinNormalisationFromML2D.cxx
 Implementation for class stir::BinNormalisationFromML2D.
 
file  BinNormalisationSinogramRescaling.cxx
 Implementation for class BinNormalisationSinogramRescaling.
 
file  BinNormalisationUsingProfile.cxx
 Implementations for class BinNormalisationUsingProfile.
 
file  local_recon_buildblock_registries.cxx
 File that registers all RegisterObject children in recon_buildblock.
 
file  ParametricQuadraticPrior.cxx
 implementation of the stir::ParametricQuadraticPrior class
 
file  ProjMatrixByBinSinglePhoton.cxx
 non-inline implementations for ProjMatrixByBinSinglePhoton
 
file  ProjMatrixByBinUsingSolidAngle.cxx
 non-inline implementations for stir::ProjMatrixByBinUsingSolidAngle
 
file  ProjMatrixByBinWithPositronRange.cxx
 non-inline implementations for stir::ProjMatrixByBinWithPositronRange
 
file  ProjMatrixByDensel.cxx
 implementation of the stir::ProjMatrixByDensel class
 
file  ProjMatrixByDenselOnCartesianGridUsingElement.cxx
 non-inline implementations for ProjMatrixByDenselOnCartesianGridUsingElement
 
file  ProjMatrixByDenselUsingRayTracing.cxx
 non-inline implementations for ProjMatrixByDenselUsingRayTracing
 
file  AnalyticReconstruction.h
 declares the stir::AnalyticReconstruction class
 
file  BinNormalisationFromECAT7.h
 Declaration of class stir::ecat::ecat7::BinNormalisationFromECAT7.
 
file  BinNormalisationFromECAT8.h
 Declaration of class stir::ecat::BinNormalisationFromECAT8.
 
file  BinNormalisationFromGEHDF5.h
 Declaration of class stir::GE_RDF_HDF5::BinNormalisationFromGEHDF5.
 
file  BinNormalisationSPECT.h
 Declaration of class BinNormalisationSPECT.
 
file  DistributedWorker.h
 declares the stir::DistributedWorker class
 
file  find_basic_vs_nums_in_subsets.h
 Implementation for stir::detail::find_basic_vs_nums_in_subset.
 
file  FourierRebinning.h
 Class for FORE Reconstruction.
 
file  IterativeReconstruction.h
 declares the stir::IterativeReconstruction class
 
file  ML_estimate_component_based_normalisation.h
 Declaration of ML_estimate_component_based_normalisation.
 
file  ProjDataRebinning.h
 declares the stir::ProjDataRebinning class
 
file  ProjMatrixElemsForOneDensel.h
 Declaration of class stir::ProjMatrixElemsForOneDensel.
 
file  RayTraceVoxelsOnCartesianGrid.h
 Declaration of stir::RayTraceVoxelsOnCartesianGrid.
 
file  Reconstruction.h
 declares the stir::Reconstruction class
 
file  RelatedBins.h
 Declaration of class stir::RelatedBins.
 
file  RelatedBins.inl
 Implementations of inline functions of class stir::RelatedBins.
 
file  SqrtHessianRowSum.h
 Declaration of class stir::SqrtHessianRowSum.
 
file  SumOfGeneralisedObjectiveFunctions.h
 Declaration of class stir::SumOfGeneralisedObjectiveFunctions.
 
file  SumOfGeneralisedObjectiveFunctions.inl
 Implementation of class stir::SumOfGeneralisedObjectiveFunctions.
 
file  PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.h
 Declaration of class stir::PoissonLogLikelihoodWithLinearModelForMeanAndGatedProjDataWithMotion.
 
file  BinNormalisationFromML2D.h
 Declaration of class stir::BinNormalisationFromML2D.
 
file  BinNormalisationSinogramRescaling.h
 Declaration of class stir::BinNormalisationSinogramRescaling.
 
file  BinNormalisationUsingProfile.h
 Declaration of class BinNormalisationUsingProfile.
 
file  DataSymmetriesForDensels_PET_CartesianGrid.h
 Declaration of class stir::DataSymmetriesForDensels_PET_CartesianGrid.
 
file  DataSymmetriesForDensels_PET_CartesianGrid.inl
 inline implementations for class DataSymmetriesForDensels_PET_CartesianGrid
 
file  ParametricQuadraticPrior.h
 Declaration of class stir::ParametricQuadraticPrior.
 
file  ProjMatrixByBinSinglePhoton.h
 ProjMatrixByBinSinglePhoton's definition.
 
file  ProjMatrixByBinUsingSolidAngle.h
 ProjMatrixByBinUsingSolidAngle's definition.
 
file  ProjMatrixByBinWithPositronRange.h
 ProjMatrixByBinWithPositronRange's definition.
 
file  ProjMatrixByDensel.h
 declaration of ProjMatrixByDensel and its helpers classes
 
file  ProjMatrixByDensel.inl
 Implementations of inline functions for class ProjMatrixByDensel.
 
file  ProjMatrixByDenselOnCartesianGridUsingElement.h
 ProjMatrixByDenselOnCartesianGridUsingElement's definition.
 
file  ProjMatrixByDenselUsingRayTracing.h
 ProjMatrixByDenselUsingRayTracing's definition.
 
file  AnalyticReconstruction.cxx
 implementation of the stir::AnalyticReconstruction class
 
file  BackProjectorByBinUsingSquareProjMatrixByBin.cxx
 non-inline implementations for stir::BackProjectorByBinUsingSquareProjMatrixByBin
 
file  BinNormalisationFromECAT7.cxx
 Implementation for class stir::ecat::ecat7::BinNormalisationFromECAT7.
 
file  BinNormalisationFromECAT8.cxx
 Implementation for class stir::ecat::BinNormalisationFromECAT8.
 
file  BinNormalisationFromGEHDF5.cxx
 Implementation for class stir::GE:RDF_HDF5::BinNormalisationFromGEHDF5.
 
file  BinNormalisationSPECT.cxx
 Implementation for class stir::BinNormalisationSPECT.
 
file  DistributedCachingInformation.cxx
 Implementation of class stir::DistributedCachingInformation.
 
file  find_basic_vs_nums_in_subset.cxx
 Implementation for stir::detail::find_basic_vs_nums_in_subset.
 
file  FourierRebinning.cxx
 FORE kernel.
 
file  IterativeReconstruction.cxx
 implementation of the stir::IterativeReconstruction class
 
file  ML_estimate_component_based_normalisation.cxx
 Implementation of ML_estimate_component_based_normalisation.
 
file  ProjDataRebinning.cxx
 implementation of the ProjDataRebinning class
 
file  RayTraceVoxelsOnCartesianGrid.cxx
 Implementation of RayTraceVoxelsOnCartesianGrid.
 
file  recon_buildblock_registries.cxx
 File that registers all stir::RegisterObject children in recon_buildblock.
 
file  Reconstruction.cxx
 implementation of the stir::Reconstruction class
 
file  SqrtHessianRowSum.cxx
 Declaration of class stir::SqrtHessianRowSum.
 
file  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 objectsThis is the base class for all iterative reconstruction methods. It provides the basic iteration mechanisms. What each iteration does has to be implemented in a derived class. More...
 
class  stir::ProjDataRebinning
 base class for all rebinning algorithms for 3D PET dataTODO describe what rebinning is and why you need it 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< ViewSegmentNumbersstir::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 subsetThis function is used by projectors and distributable_computation etc to construct a list of view/segments that are in a subset, and which are "basic" w.r.t the symmetries.
 
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. More...
 

Detailed Description

Library with 'general' reconstruction building blocks

Function Documentation

◆ 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 stir::norm(), and stir::warning().