STIR  6.2.0
Namespaces | Typedefs | Functions
ML_norm.h File Reference

Preliminary things for ML normalisation factor estimation. More...

#include "stir/ProjData.h"
#include "stir/Array.h"
#include "stir/ProjDataInfoCylindricalNoArcCorr.h"
#include "stir/ProjDataInfoBlocksOnCylindricalNoArcCorr.h"
#include "stir/IndexRange2D.h"
#include "stir/Sinogram.h"
#include "stir/warning.h"
#include <iostream>

Go to the source code of this file.

Namespaces

 stir
 Namespace for the STIR library (and some/most of its applications)
 

Typedefs

typedef Array< 2, float > stir::GeoData
 
typedef Array< 2, float > stir::BlockData
 
typedef Array< 2, float > stir::DetectorEfficiencies
 
typedef FanProjData stir::BlockData3D
 

Functions

void stir::get_fan_info (int &num_rings, int &num_detectors_per_ring, int &max_ring_diff, int &fan_size, const ProjDataInfo &proj_data_info)
 
void stir::make_det_pair_data (DetPairData &det_pair_data, const ProjDataInfo &proj_data_info, const int segment_num, const int ax_pos_num)
 Makes a DetPairData of appropriate dimensions and fills it with 0.
 
void stir::make_det_pair_data (DetPairData &det_pair_data, const ProjData &proj_data, const int segment_num, const int ax_pos_num)
 
void stir::set_det_pair_data (ProjData &proj_data, const DetPairData &det_pair_data, const int segment_num, const int ax_pos_num)
 
void stir::apply_block_norm (DetPairData &det_pair_data, const BlockData &block_data, const bool apply)
 
void stir::apply_geo_norm (DetPairData &det_pair_data, const GeoData &geo_data, const bool apply)
 
void stir::apply_efficiencies (DetPairData &det_pair_data, const Array< 1, float > &efficiencies, const bool apply)
 
void stir::make_fan_sum_data (Array< 1, float > &data_fan_sums, const DetPairData &det_pair_data)
 
void stir::make_geo_data (GeoData &geo_data, const DetPairData &det_pair_data)
 
void stir::make_block_data (BlockData &block_data, const DetPairData &det_pair_data)
 
void stir::iterate_efficiencies (Array< 1, float > &efficiencies, const Array< 1, float > &data_fan_sums, const DetPairData &model)
 
void stir::iterate_geo_norm (GeoData &norm_geo_data, const GeoData &measured_geo_data, const DetPairData &model)
 
void stir::iterate_block_norm (BlockData &norm_block_data, const BlockData &measured_block_data, const DetPairData &model)
 
void stir::make_fan_data_remove_gaps (FanProjData &fan_data, const ProjData &proj_data)
 
void stir::set_fan_data_add_gaps (ProjData &proj_data, const FanProjData &fan_data, const float gap_value)
 
void stir::apply_block_norm (FanProjData &fan_data, const BlockData3D &block_data, const bool apply)
 
void stir::apply_geo_norm (FanProjData &fan_data, const GeoData3D &geo_data, const bool apply)
 
void stir::apply_efficiencies (FanProjData &fan_data, const DetectorEfficiencies &efficiencies, const bool apply)
 
void stir::make_fan_sum_data (Array< 2, float > &data_fan_sums, const FanProjData &fan_data)
 
void stir::make_fan_sum_data (Array< 2, float > &data_fan_sums, const ProjData &proj_data)
 
void stir::make_fan_sum_data (Array< 2, float > &data_fan_sums, const DetectorEfficiencies &efficiencies, const int max_ring_diff, const int half_fan_size)
 
void stir::make_geo_data (GeoData3D &geo_data, const FanProjData &fan_data)
 
void stir::make_block_data (BlockData3D &block_data, const FanProjData &fan_data)
 
void stir::iterate_efficiencies (DetectorEfficiencies &efficiencies, const Array< 2, float > &data_fan_sums, const FanProjData &model)
 
void stir::iterate_efficiencies (DetectorEfficiencies &efficiencies, const Array< 2, float > &data_fan_sums, const int max_ring_diff, const int half_fan_size)
 
void stir::iterate_geo_norm (GeoData3D &norm_geo_data, const GeoData3D &measured_geo_data, const FanProjData &model)
 
void stir::iterate_block_norm (BlockData3D &norm_block_data, const BlockData3D &measured_block_data, const FanProjData &model)
 
double stir::KL (const double a, const double b, const double threshold_a=0)
 
template<int num_dimensions, typename elemT >
double stir::KL (const Array< num_dimensions, elemT > &a, const Array< num_dimensions, elemT > &b, const double threshold_a=0)
 
double stir::KL (const DetPairData &d1, const DetPairData &d2, const double threshold)
 
double stir::KL (const FanProjData &d1, const FanProjData &d2, const double threshold)
 

Detailed Description

Preliminary things for ML normalisation factor estimation.

Algorithms are described in

  1. Darren Hogg, Kris Thielemans, Terence J. Spinks, and Nicolas Spyrou. 2001. <cite>Maximum-Likelihood Estimation of Normalisation Factors for PET</cite> In 2001 IEEE Nuclear Science Symposium Conference Record, 4:2065-2069. San Diego, CA, USA: IEEE. https://doi.org/10.1109/nssmic.2001.1009231.
  2. Jacobson, Matthew W., and Kris Thielemans. 2008. <cite>Optimizability of Loglikelihoods for the Estimation of Detector Efficiencies and Singles Rates in PET</cite> In 2008 IEEE Nuclear Science Symposium and Medical Imaging Conference (2008 NSS/MIC), 4580-4586. IEEE. https://doi.org/10.1109/nssmic.2008.4774352.
  3. Tahereh Niknejad, Stefaan Tavernier, Joao Varela, and Kris Thielemans, <cite>Validation of 3D Model-Based Maximum-Likelihood Estimation of Normalisation Factors for Partial Ring Positron Emission Tomography</cite> In 2016 IEEE Nuclear Science Symposium, Medical Imaging Conference and Room-Temperature Semiconductor Detector Workshop (NSS/MIC/RTSD), 1-5. DOI: 10.1109/NSSMIC.2016.8069577.
Author
Kris Thielemans
Tahereh Niknejad
Daniel Deidda