23 #ifndef __BackProjectorByBinUsingInterpolation_h_ 24 #define __BackProjectorByBinUsingInterpolation_h_ 32 template <
typename elemT>
34 template <
typename elemT>
35 class RelatedViewgrams;
36 template <
typename elemT>
37 class VoxelsOnCartesianGrid;
38 template <
int num_dimensions,
typename elemT>
41 class ProjDataInfoCylindricalArcCorr;
42 class DataSymmetriesForBins_PET_CartesianGrid;
64 const float ring_spacing2;
70 const float backprojection_normalisation;
72 const bool use_exact_Jacobian_now;
75 explicit JacobianForIntBP(
const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
bool exact);
77 float operator()(
const float delta,
const float s)
const 80 if (use_exact_Jacobian_now)
81 tmp = 4 * (R2 - dxy2 * s * s);
84 return tmp / pow(tmp + ring_spacing2 * delta * delta, 1.5F) * backprojection_normalisation;
136 const bool use_exact_Jacobian =
true);
142 const bool use_piecewise_linear_interpolation =
true,
143 const bool use_exact_Jacobian =
true);
148 void set_up(
const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
164 void use_exact_Jacobian(
const bool use_exact_Jacobian);
170 void use_piecewise_linear_interpolation(
const bool use_piecewise_linear_interpolation);
176 shared_ptr<DataSymmetriesForBins_PET_CartesianGrid> symmetries_ptr;
179 bool use_piecewise_linear_interpolation_now;
181 bool use_exact_Jacobian_now;
186 bool do_symmetry_90degrees_min_phi;
187 bool do_symmetry_180degrees_min_phi;
188 bool do_symmetry_swap_segment;
189 bool do_symmetry_swap_s;
190 bool do_symmetry_shift_z;
195 struct ProjDataForIntBP
202 float min90__pos_sp1;
204 float min90__neg_sp1;
206 float plus90__pos_sp1;
208 float plus90__neg_sp1;
210 float min180__pos_sp1;
212 float min180__neg_sp1;
218 const int min_axial_pos_num,
219 const int max_axial_pos_num,
220 const int min_tangential_pos_num,
221 const int max_tangential_pos_num)
override;
234 const int min_axial_pos_num,
235 const int max_axial_pos_num,
236 const int min_tangential_pos_num,
237 const int max_tangential_pos_num);
252 const int min_axial_pos_num,
253 const int max_axial_pos_num,
254 const int min_tangential_pos_num,
255 const int max_tangential_pos_num);
271 static void piecewise_linear_interpolation_backproj3D_Cho_view_viewplus90(
274 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
280 const int num_planes_per_axial_pos,
281 const float axial_pos_to_z_offset);
283 static void piecewise_linear_interpolation_backproj3D_Cho_view_viewplus90_180minview_90minview(
286 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
292 const int num_planes_per_axial_pos,
293 const float axial_pos_to_z_offset);
296 linear_interpolation_backproj3D_Cho_view_viewplus90(
Array<4, float> const& Projptr,
298 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
304 const int num_planes_per_axial_pos,
305 const float axial_pos_to_z_offset);
307 static void linear_interpolation_backproj3D_Cho_view_viewplus90_180minview_90minview(
310 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
316 const int num_planes_per_axial_pos,
317 const float axial_pos_to_z_offset);
329 void set_defaults()
override;
330 void initialise_keymap()
override;
335 #endif // __BackProjectorByBinUsingInterpolation_h_ This class is used to represent voxelised densities on a cuboid grid (3D).
Definition: FBP3DRPReconstruction.h:43
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast (or corresponding b...
does backprojection by interpolating between the bins.
Definition: BackProjectorByBinUsingInterpolation.h:126
A class for encoding/finding symmetries. Works only on ViewSegmentNumbers (instead of Bin)...
Definition: DataSymmetriesForViewSegmentNumbers.h:49
The next class is used in BackProjectorByBinUsingInterpolation to take geometric things into account...
Definition: BackProjectorByBinUsingInterpolation.h:58
A class for storing coordinates and value of a single projection bin.
Definition: Bin.h:48
Parent class for all leaves in a RegisteredObject hierarchy that do parsing of parameter files...
Definition: RegisteredParsingObject.h:77
static const char *const registered_name
Name which will be used when parsing a BackProjectorByBin object.
Definition: BackProjectorByBinUsingInterpolation.h:132
Declares class stir::BackProjectorByBin.
Declaration of class stir::RegisteredParsingObject.