STIR
6.2.0
|
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 ProjDataInfoCylindricalArcCorr & | get_arc_corrected_proj_data_info () const |
shared_ptr< const ProjDataInfo > | get_arc_corrected_proj_data_info_sptr () const |
Returning a shared_ptr to the object. More... | |
const ProjDataInfoCylindricalNoArcCorr & | get_not_arc_corrected_proj_data_info () const |
shared_ptr< const ProjDataInfo > | get_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 |
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.
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().
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().
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().
shared_ptr< const ProjDataInfo > stir::ArcCorrection::get_arc_corrected_proj_data_info_sptr | ( | ) | const |
Returning a shared_ptr to the object.
shared_ptr< const ProjDataInfo > stir::ArcCorrection::get_not_arc_corrected_proj_data_info_sptr | ( | ) | const |
Returning a shared_ptr to the object.
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.
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().