STIR  6.2.0
ArcCorrection.h
Go to the documentation of this file.
1 //
2 //
3 /*
4  Copyright (C) 2005- 2005, Hammersmith Imanet Ltd
5  This file is part of STIR.
6 
7  SPDX-License-Identifier: Apache-2.0
8 
9  See STIR/LICENSE.txt for details
10 */
19 #ifndef __stir_ArcCorrection_H__
20 #define __stir_ArcCorrection_H__
21 
22 #include "stir/ProjDataInfo.h"
23 #include "stir/Array.h"
24 #include "stir/shared_ptr.h"
25 
26 START_NAMESPACE_STIR
27 
28 class Succeeded;
29 class ProjDataInfoCylindricalArcCorr;
30 class ProjDataInfoCylindricalNoArcCorr;
31 template <class elemT>
32 class Sinogram;
33 template <class elemT>
34 class Viewgram;
35 template <class elemT>
36 class RelatedViewgrams;
37 template <class elemT>
38 class SegmentBySinogram;
39 template <class elemT>
41 class ProjData;
61 {
62 public:
63  ArcCorrection();
64 
66 
72  Succeeded set_up(const shared_ptr<const ProjDataInfo>& proj_data_info_sptr,
74  const int num_arccorrected_tangential_poss,
75  const float bin_size);
76 
78 
82  Succeeded set_up(const shared_ptr<const ProjDataInfo>& proj_data_info_sptr, const int num_arccorrected_tangential_poss);
84 
91  Succeeded set_up(const shared_ptr<const ProjDataInfo>& proj_data_info_sptr);
93 
98  const ProjDataInfoCylindricalArcCorr& get_arc_corrected_proj_data_info() const;
100 
103  shared_ptr<const ProjDataInfo> get_arc_corrected_proj_data_info_sptr() const;
105 
110  const ProjDataInfoCylindricalNoArcCorr& get_not_arc_corrected_proj_data_info() const;
112 
115  shared_ptr<const ProjDataInfo> get_not_arc_corrected_proj_data_info_sptr() const;
117 
119 
130  Sinogram<float> do_arc_correction(const Sinogram<float>& in) const;
131  void do_arc_correction(Sinogram<float>& out, const Sinogram<float>& in) const;
132  Viewgram<float> do_arc_correction(const Viewgram<float>& in) const;
133  void do_arc_correction(Viewgram<float>& out, const Viewgram<float>& in) const;
134  RelatedViewgrams<float> do_arc_correction(const RelatedViewgrams<float>& in) const;
135  void do_arc_correction(RelatedViewgrams<float>& out, const RelatedViewgrams<float>& in) const;
136  SegmentBySinogram<float> do_arc_correction(const SegmentBySinogram<float>& in) const;
137  void do_arc_correction(SegmentBySinogram<float>& out, const SegmentBySinogram<float>& in) const;
138  SegmentByView<float> do_arc_correction(const SegmentByView<float>& in) const;
139  void do_arc_correction(SegmentByView<float>& out, const SegmentByView<float>& in) const;
140  Succeeded do_arc_correction(ProjData& out, const ProjData& in) const;
142 
143 private:
144  shared_ptr<const ProjDataInfo> _noarc_corr_proj_data_info_sptr;
145  shared_ptr<const ProjDataInfo> _arc_corr_proj_data_info_sptr;
146  Array<1, float> _arccorr_coords;
147  Array<1, float> _noarccorr_coords;
148  Array<1, float> _noarccorr_bin_sizes;
149  float tangential_sampling;
150 
151  void do_arc_correction(Array<1, float>& out, const Array<1, float>& in) const;
152 };
153 
154 END_NAMESPACE_STIR
155 #endif
A class for 2d projection data.
Definition: FBP3DRPReconstruction.h:39
A class for storing viewgrams which are related by symmetry.
Definition: FBP3DRPReconstruction.h:37
Declaration of class stir::ProjDataInfo.
A class for storing (3d) projection data with fixed SegmentIndices.
Definition: FBP3DRPReconstruction.h:41
Projection data info for arc-corrected data.
Definition: ProjDataInfoCylindricalArcCorr.h:40
A class to arc-correct projection data.
Definition: ArcCorrection.h:60
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast (or corresponding b...
defines the Array class for multi-dimensional (numeric) arrays
A class for storing (3d) projection data with fixed SegmentIndices.
Definition: ArcCorrection.h:40
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43
Projection data info for data which are not arc-corrected.
Definition: ProjDataInfoCylindricalNoArcCorr.h:82
A class for 2d projection data.
Definition: ArcCorrection.h:34
The (abstract) base class for the projection data.
Definition: ProjData.h:103