23 #ifndef __BackProjectorByBinUsingInterpolation_h_ 24 #define __BackProjectorByBinUsingInterpolation_h_ 33 template <
typename elemT>
35 template <
typename elemT>
36 class RelatedViewgrams;
37 template <
typename elemT>
38 class VoxelsOnCartesianGrid;
40 class ProjDataInfoCylindricalArcCorr;
41 class DataSymmetriesForBins_PET_CartesianGrid;
63 const float ring_spacing2;
69 const float backprojection_normalisation;
71 const bool use_exact_Jacobian_now;
74 explicit JacobianForIntBP(
const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
bool exact);
76 float operator()(
const float delta,
const float s)
const 79 if (use_exact_Jacobian_now)
80 tmp = 4 * (R2 - dxy2 * s * s);
83 return tmp / pow(tmp + ring_spacing2 * delta * delta, 1.5F) * backprojection_normalisation;
135 const bool use_exact_Jacobian =
true);
141 const bool use_piecewise_linear_interpolation =
true,
142 const bool use_exact_Jacobian =
true);
147 void set_up(
const shared_ptr<const ProjDataInfo>& proj_data_info_ptr,
163 void use_exact_Jacobian(
const bool use_exact_Jacobian);
169 void use_piecewise_linear_interpolation(
const bool use_piecewise_linear_interpolation);
175 shared_ptr<DataSymmetriesForBins_PET_CartesianGrid> symmetries_ptr;
178 bool use_piecewise_linear_interpolation_now;
180 bool use_exact_Jacobian_now;
185 bool do_symmetry_90degrees_min_phi;
186 bool do_symmetry_180degrees_min_phi;
187 bool do_symmetry_swap_segment;
188 bool do_symmetry_swap_s;
189 bool do_symmetry_shift_z;
194 struct ProjDataForIntBP
201 float min90__pos_sp1;
203 float min90__neg_sp1;
205 float plus90__pos_sp1;
207 float plus90__neg_sp1;
209 float min180__pos_sp1;
211 float min180__neg_sp1;
217 const int min_axial_pos_num,
218 const int max_axial_pos_num,
219 const int min_tangential_pos_num,
220 const int max_tangential_pos_num)
override;
233 const int min_axial_pos_num,
234 const int max_axial_pos_num,
235 const int min_tangential_pos_num,
236 const int max_tangential_pos_num);
251 const int min_axial_pos_num,
252 const int max_axial_pos_num,
253 const int min_tangential_pos_num,
254 const int max_tangential_pos_num);
270 static void piecewise_linear_interpolation_backproj3D_Cho_view_viewplus90(
273 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
279 const int num_planes_per_axial_pos,
280 const float axial_pos_to_z_offset);
282 static void piecewise_linear_interpolation_backproj3D_Cho_view_viewplus90_180minview_90minview(
285 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
291 const int num_planes_per_axial_pos,
292 const float axial_pos_to_z_offset);
295 linear_interpolation_backproj3D_Cho_view_viewplus90(
Array<4, float> const& Projptr,
297 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
303 const int num_planes_per_axial_pos,
304 const float axial_pos_to_z_offset);
306 static void linear_interpolation_backproj3D_Cho_view_viewplus90_180minview_90minview(
309 const shared_ptr<const ProjDataInfoCylindricalArcCorr> proj_data_info_sptr,
315 const int num_planes_per_axial_pos,
316 const float axial_pos_to_z_offset);
328 void set_defaults()
override;
329 void initialise_keymap()
override;
334 #endif // __BackProjectorByBinUsingInterpolation_h_ This class is used to represent voxelised densities on a cuboid grid (3D).
Definition: FBP3DRPReconstruction.h:43
forward declaration of stir::Array class for multi-dimensional (numeric) arrays
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...
does backprojection by interpolating between the bins.
Definition: BackProjectorByBinUsingInterpolation.h:125
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:57
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:131
Declares class stir::BackProjectorByBin.
Declaration of class stir::RegisteredParsingObject.