STIR  6.2.0
List of all members
stir::ArcCorrection Class Reference

A class to arc-correct projection data. More...

#include "stir/ArcCorrection.h"

Public Member Functions

set_up() functions
Succeeded set_up (const shared_ptr< const ProjDataInfo > &proj_data_info_sptr, const int num_arccorrected_tangential_poss, const float bin_size)
 Most general version. More...
 
Succeeded set_up (const shared_ptr< const ProjDataInfo > &proj_data_info_sptr, const int num_arccorrected_tangential_poss)
 Using default bin-size of the scanner. More...
 
Succeeded set_up (const shared_ptr< const ProjDataInfo > &proj_data_info_sptr)
 Using default bin-size of the scanner and covering the FOV. More...
 
functions returning a ProjDataInfoCylindricalArcCorr

object describing to the arc-corrected data.

const ProjDataInfoCylindricalArcCorrget_arc_corrected_proj_data_info () const
 
shared_ptr< const ProjDataInfoget_arc_corrected_proj_data_info_sptr () const
 Returning a shared_ptr to the object. More...
 
const ProjDataInfoCylindricalNoArcCorrget_not_arc_corrected_proj_data_info () const
 
shared_ptr< const ProjDataInfoget_not_arc_corrected_proj_data_info_sptr () const
 Returning a shared_ptr to the object. More...
 
functions to do the arc-correction
Sinogram< float > do_arc_correction (const Sinogram< float > &in) const
 
void do_arc_correction (Sinogram< float > &out, const Sinogram< float > &in) const
 
Viewgram< float > do_arc_correction (const Viewgram< float > &in) const
 
void do_arc_correction (Viewgram< float > &out, const Viewgram< float > &in) const
 
RelatedViewgrams< float > do_arc_correction (const RelatedViewgrams< float > &in) const
 
void do_arc_correction (RelatedViewgrams< float > &out, const RelatedViewgrams< float > &in) const
 
SegmentBySinogram< float > do_arc_correction (const SegmentBySinogram< float > &in) const
 
void do_arc_correction (SegmentBySinogram< float > &out, const SegmentBySinogram< float > &in) const
 
SegmentByView< float > do_arc_correction (const SegmentByView< float > &in) const
 
void do_arc_correction (SegmentByView< float > &out, const SegmentByView< float > &in) const
 
Succeeded do_arc_correction (ProjData &out, const ProjData &in) const
 

Detailed Description

A class to arc-correct projection data.

Arc-correction is a common name for converting the non-uniform tangential sampling from a cylindrical PET scanner to a uniform one. (GE terminology is 'geometric correction').

This class assumes that the input projection data have already been normalised.

For given non-arccorrected data, the data will be first multiplied by the bin-sizes, then interpolated to the desired uniform sampling using overlap_interpolate, and then divided by the new sampling. This ensures that the normalisation is preserved. Also, uniform data will result in uniform output.

Warning
You have to call one of the set_up() functions before use of any other member function.

Member Function Documentation

◆ set_up() [1/3]

Succeeded stir::ArcCorrection::set_up ( const shared_ptr< const ProjDataInfo > &  proj_data_info_sptr,
const int  num_arccorrected_tangential_poss,
const float  bin_size 
)

Most general version.

Set-up the arc-correction object. The parameter proj_data_info_sptr has to be a shared_ptr to a ProjDataInfoCylindricalNoArcCorr object.

Different versions are available to allow using default parameters.

References stir::warning().

Referenced by stir::ArcCorrectionTests::run_tests().

◆ set_up() [2/3]

Succeeded stir::ArcCorrection::set_up ( const shared_ptr< const ProjDataInfo > &  proj_data_info_sptr,
const int  num_arccorrected_tangential_poss 
)

Using default bin-size of the scanner.

If the default bin-size is 0, the tangential size of the central bin (i.e. Bin(0,0,0,0)) of the non-arccorrected data will be used.

References stir::warning().

◆ set_up() [3/3]

Succeeded stir::ArcCorrection::set_up ( const shared_ptr< const ProjDataInfo > &  proj_data_info_sptr)

Using default bin-size of the scanner and covering the FOV.

If the default bin-size is 0, the tangential size of the central bin (i.e. Bin(0,0,0,0)) of the non-arccorrected data will be used.

num_arccorrected_bins is chosen such that the new (radial) FOV is slightly larger than the one covered by the original data.

References stir::VectorWithOffset< T >::begin(), stir::VectorWithOffset< T >::end(), stir::Sinogram< elemT >::get_axial_pos_num(), stir::VectorWithOffset< T >::get_max_index(), stir::Sinogram< elemT >::get_max_view_num(), stir::VectorWithOffset< T >::get_min_index(), stir::Sinogram< elemT >::get_min_view_num(), stir::Sinogram< elemT >::get_proj_data_info_sptr(), stir::Sinogram< elemT >::get_segment_num(), stir::Sinogram< elemT >::get_timing_pos_num(), stir::overlap_interpolate(), and stir::warning().

◆ get_arc_corrected_proj_data_info_sptr()

shared_ptr< const ProjDataInfo > stir::ArcCorrection::get_arc_corrected_proj_data_info_sptr ( ) const

Returning a shared_ptr to the object.

Todo:
return a shared_ptr<ProjDataInfoCylindricalArcCorr> after switching to boost::shared_ptr.

◆ get_not_arc_corrected_proj_data_info_sptr()

shared_ptr< const ProjDataInfo > stir::ArcCorrection::get_not_arc_corrected_proj_data_info_sptr ( ) const

Returning a shared_ptr to the object.

Todo:
return a shared_ptr<ProjDataInfoCylindricalNoArcCorr> after switching to boost::shared_ptr.

◆ do_arc_correction()

Sinogram< float > stir::ArcCorrection::do_arc_correction ( const Sinogram< float > &  in) const

Almost all these functions come in pairs (the exception being the function that arc-corrects a whole ProjData). The 1 argument version returns the arc-corrected data. In the 2 argument version, the first argument will be filled with the arc-corrected data.

Warning
In the 2 argument version, the output argument has to have a projection data info corresponding to the one returned by get_arc_corrected_proj_data_info(). This is (only) checked using assert().

References stir::RelatedViewgrams< elemT >::begin(), stir::RelatedViewgrams< elemT >::end(), stir::Sinogram< elemT >::get_axial_pos_num(), stir::RelatedViewgrams< elemT >::get_basic_timing_pos_num(), stir::RelatedViewgrams< elemT >::get_basic_view_segment_num(), stir::SegmentBySinogram< elemT >::get_max_axial_pos_num(), stir::SegmentByView< elemT >::get_max_axial_pos_num(), stir::Viewgram< elemT >::get_max_axial_pos_num(), stir::ProjData::get_max_segment_num(), stir::ProjData::get_max_tof_pos_num(), stir::SegmentByView< elemT >::get_max_view_num(), stir::SegmentBySinogram< elemT >::get_max_view_num(), stir::ProjData::get_max_view_num(), stir::SegmentBySinogram< elemT >::get_min_axial_pos_num(), stir::SegmentByView< elemT >::get_min_axial_pos_num(), stir::Viewgram< elemT >::get_min_axial_pos_num(), stir::ProjData::get_min_segment_num(), stir::ProjData::get_min_tof_pos_num(), stir::SegmentByView< elemT >::get_min_view_num(), stir::SegmentBySinogram< elemT >::get_min_view_num(), stir::ProjData::get_min_view_num(), stir::Segment< elemT >::get_proj_data_info_sptr(), stir::Viewgram< elemT >::get_proj_data_info_sptr(), stir::ProjData::get_proj_data_info_sptr(), stir::Segment< elemT >::get_segment_num(), stir::Sinogram< elemT >::get_segment_num(), stir::Viewgram< elemT >::get_segment_num(), stir::RelatedViewgrams< elemT >::get_symmetries_sptr(), stir::Segment< elemT >::get_timing_pos_num(), stir::Sinogram< elemT >::get_timing_pos_num(), stir::Viewgram< elemT >::get_timing_pos_num(), stir::Viewgram< elemT >::get_view_num(), stir::ProjData::get_viewgram(), and stir::ProjData::set_viewgram().


The documentation for this class was generated from the following files: