2 #ifndef __stir_scatter_ScatterEstimation_H__ 3 #define __stir_scatter_ScatterEstimation_H__ 40 #include "stir/stir_math.h" 45 template <
class TargetT>
56 shared_ptr<PostFiltering<DiscretisedDensity<3, float>>>
filter_sptr;
98 static void upsample_and_fit_scatter_estimate(
ProjData& scaled_scatter_proj_data,
103 const float min_scale_factor,
104 const float max_scale_factor,
105 const unsigned half_filter_width,
107 const bool remove_interleaving =
true);
118 shared_ptr<ProjData> get_output()
const;
121 shared_ptr<ProjData> make_2D_projdata_sptr(
const shared_ptr<ProjData> in_3d_sptr);
122 shared_ptr<ProjData> make_2D_projdata_sptr(
const shared_ptr<ProjData> in_3d_sptr,
string template_filename);
142 inline void set_input_proj_data_sptr(
const shared_ptr<ProjData>);
145 #if STIR_VERSION < 050000 146 void set_input_data(
const shared_ptr<ProjData>& data);
148 void set_input_data(
const shared_ptr<ExamData>& data);
150 shared_ptr<const ProjData> get_input_data()
const;
157 void set_attenuation_correction_proj_data_sptr(
const shared_ptr<ProjData>);
159 void set_normalisation_sptr(
const shared_ptr<BinNormalisation>);
161 inline void set_background_proj_data_sptr(
const shared_ptr<ProjData>);
168 inline void set_mask_proj_data_sptr(
const shared_ptr<ProjData> arg);
170 void set_recompute_mask_image(
bool arg);
171 void set_recompute_mask_projdata(
bool arg);
173 inline void set_scatter_simulation_method_sptr(
const shared_ptr<ScatterSimulation>);
175 inline void set_num_iterations(
int);
177 void set_output_scatter_estimate_prefix(
const std::string&);
178 void set_export_scatter_estimates_of_each_iteration(
bool);
180 void set_max_scale_value(
float value);
181 void set_min_scale_value(
float value);
182 void set_mask_projdata_filename(std::string name);
183 void set_mask_image_filename(std::string name);
184 void set_output_additive_estimate_prefix(std::string name);
185 void set_run_debug_mode(
bool debug);
186 void set_restart_reconstruction_every_scatter_iteration(
bool setting);
187 bool get_restart_reconstruction_every_scatter_iteration()
const;
197 int get_iterations_num()
const;
200 int get_num_iterations()
const;
203 shared_ptr<const DiscretisedDensity<3, float>> get_estimated_activity_image_sptr()
const;
206 virtual bool already_setup()
const;
210 void set_defaults()
override;
211 void initialise_keymap()
override;
212 bool post_processing()
override;
249 shared_ptr<ProjData> add_projdata_sptr;
292 std::string output_additive_estimate_prefix;
299 shared_ptr<BinNormalisation> atten_norm_3d_sptr;
303 shared_ptr<BinNormalisation> multiplicative_binnorm_2d_sptr;
307 shared_ptr<BinNormalisation> multiplicative_binnorm_sptr;
310 shared_ptr<ProjData> scatter_estimate_sptr;
313 shared_ptr<const DiscretisedDensity<3, float>> mask_image_sptr;
326 void reconstruct_iterative(
int scat_iter);
330 void reconstruct_analytic(
int scat_iter);
339 void apply_to_proj_data(
ProjData&,
const pow_times_add&);
342 void create_multiplicative_binnorm_sptr();
345 shared_ptr<BinNormalisation> get_normalisation_object_sptr(
const shared_ptr<BinNormalisation>& combined_norm_sptr)
const;
348 shared_ptr<ProjData> get_attenuation_correction_factors_sptr(
const shared_ptr<BinNormalisation>& combined_norm_sptr)
const;
352 shared_ptr<ProjData> create_new_proj_data(
const std::string& filename,
353 const shared_ptr<const ExamInfo> exam_info_sptr,
354 const shared_ptr<const ProjDataInfo> proj_data_info_sptr)
const;
357 bool do_average_at_2;
359 bool remove_interleaving;
361 bool export_scatter_estimates_of_each_iteration;
363 bool run_in_2d_projdata;
366 bool override_density_image;
368 bool override_scanner_template;
373 std::string scatter_sim_par_filename;
375 shared_ptr<ScatterSimulation> scatter_simulation_sptr;
380 float max_scale_value;
382 float min_scale_value;
384 bool downsample_scanner_bool;
386 unsigned int half_filter_width;
389 bool iterative_method;
393 #include "stir/scatter/ScatterEstimation.inl" std::string output_scatter_estimate_prefix
Output file name prefix.
Definition: ScatterEstimation.h:290
A struct to hold the parameters for image masking.
Definition: ScatterEstimation.h:50
The FilePath class.
Definition: FilePath.h:45
std::string atten_coeff_filename
The file name for the attenuation coefficients. If they are to be recalculated they will be stored he...
Definition: ScatterEstimation.h:271
std::string filter_filename
filter parameter file to be used in mask calculation
Definition: ScatterEstimation.h:54
std::string input_projdata_filename
Filename of the measured emission 3D data.
Definition: ScatterEstimation.h:264
BSplineType
enum providing constants to define the type of B-Spline used for interpolation
Definition: BSplines.h:37
declares the stir::Reconstruction class
std::string tail_mask_par_filename
Optional parameter file for the tail fitting.
Definition: ScatterEstimation.h:262
std::string recon_template_par_filename
The filename for the parameters file of the reconstruction method.
Definition: ScatterEstimation.h:268
int num_scatter_iterations
Definition: ScatterEstimation.h:288
shared_ptr< ProjData > input_projdata_2d_sptr
The 2D projdata are used for the scatter estimation.
Definition: ScatterEstimation.h:243
bool restart_reconstruction_every_scatter_iteration
If set to true, the activity image will be reset to 1 in each iteration of the scatter estimation...
Definition: ScatterEstimation.h:224
shared_ptr< DiscretisedDensity< 3, float > > current_activity_image_sptr
The current activity estimate.
Definition: ScatterEstimation.h:232
A base class for objects that want to be able to parse parameter files.
Definition: ParsingObject.h:44
Declaration of class stir::ParsingObject.
shared_ptr< const DiscretisedDensity< 3, float > > atten_image_sptr
Image with attenuation values.
Definition: ScatterEstimation.h:234
shared_ptr< PostFiltering< DiscretisedDensity< 3, float > > > filter_sptr
filter to apply before thresholding
Definition: ScatterEstimation.h:56
defines the stir::DiscretisedDensity class
Declaration of class stir::ProjData.
bool recompute_mask_projdata
If set the mask projdata will be recomputed.
Definition: ScatterEstimation.h:217
bool recompute_mask_image
Recompute or load the mask image.
Definition: ScatterEstimation.h:215
shared_ptr< ProjData > mask_projdata_sptr
Mask proj_data.
Definition: ScatterEstimation.h:238
Abstract base class for implementing bin-wise normalisation of data.
Definition: BinNormalisation.h:51
std::string back_projdata_filename
Filename of background projdata.
Definition: ScatterEstimation.h:259
std::string mask_image_filename
Filename of mask image.
Definition: ScatterEstimation.h:255
std::string atten_image_filename
This is the image file name with the anatomic information.
Definition: ScatterEstimation.h:266
bool _already_setup
variable to check if we have called set_up()
Definition: ScatterEstimation.h:295
Declaration of class stir::GeneralisedObjectiveFunction.
declares the stir::AnalyticReconstruction class
base class for all ReconstructionsAs there is not a lot of commonality between different reconstructi...
Definition: Reconstruction.h:69
declares the stir::IterativeReconstruction class
Definition of class stir::ScatterSimulation.
shared_ptr< Reconstruction< DiscretisedDensity< 3, float > > > reconstruction_template_sptr
This is the reconstruction object which is going to be used for the scatter estimation and the calcul...
Definition: ScatterEstimation.h:230
shared_ptr< ProjData > back_projdata_sptr
Initially this points to the un-normalised randoms.
Definition: ScatterEstimation.h:253
std::string mask_projdata_filename
Filename of mask's projdata.
Definition: ScatterEstimation.h:257
Implementation of the basic components and declarations for B-Splines Interpolation.
shared_ptr< ProjData > back_projdata_2d_sptr
(Additive + Scatter Estimate) * Mult in 2D
Definition: ScatterEstimation.h:251
MaskingParameters masking_parameters
Definition: ScatterEstimation.h:285
base class for iterative reconstruction objectsThis is the base class for all iterative reconstructio...
Definition: IterativeReconstruction.h:81
Estimate the scatter probability using a model-based approach.
Definition: ScatterEstimation.h:85
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition: Succeeded.h:43
shared_ptr< ProjData > data_to_fit_projdata_sptr
Prompts - randoms.
Definition: ScatterEstimation.h:247
defines the stir::CartesianCoordinate3D<coordT> class
double min_threshold
value to reduce the total_rpc_time values
Definition: distributed_functions.cxx:44
shared_ptr< BinNormalisation > norm_3d_sptr
normalisation components in 3D (without atten)
Definition: ScatterEstimation.h:236
The (abstract) base class for the projection data.
Definition: ProjData.h:103
shared_ptr< ProjData > add_projdata_2d_sptr
Additive projection data after SSRB – Randoms.
Definition: ScatterEstimation.h:245
shared_ptr< ProjData > input_projdata_sptr
The full 3D projdata are used for the calculation of the 2D and later for the upsampling back to 3D...
Definition: ScatterEstimation.h:241
Declaration of class stir::FilePath This is a class implementing basic filesytem functionality. Parts of this class were copied from Functions for filename manipulations.
bool recompute_atten_projdata
If set to 1 the attenuation coefficients are going to be recalculated.
Definition: ScatterEstimation.h:220