STIR 6.4.0
IterativeReconstruction.h
Go to the documentation of this file.
1//
2//
3/*
4 Copyright (C) 2000 PARAPET partners
5 Copyright (C) 2000- 2011, Hammersmith Imanet Ltd
6 Copyright (C) 2018, University College London
7 This file is part of STIR.
8
9 SPDX-License-Identifier: Apache-2.0 AND License-ref-PARAPET-license
10
11 See STIR/LICENSE.txt for details
12*/
13#ifndef __stir_recon_buildblock_IterativeReconstruction_h__
14# define __stir_recon_buildblock_IterativeReconstruction_h__
15
29/* Modification history
30
31 KT 10122001
32 - added get_initial_data_ptr and 0 argument reconstruct()
33*/
35# include "stir/shared_ptr.h"
36# include "stir/DataProcessor.h"
38
39START_NAMESPACE_STIR
40
79
80template <class TargetT>
81class IterativeReconstruction : public Reconstruction<TargetT>
82{
83private:
84 typedef Reconstruction<TargetT> base_type;
85
86public:
88 int get_subiteration_num() const { return subiteration_num; }
89
91
101 int get_subset_num();
102
104
112 virtual TargetT* get_initial_data_ptr() const;
113
115
122 Succeeded reconstruct() override;
123
125
130 Succeeded reconstruct(shared_ptr<TargetT> const& target_data_sptr) override;
131
133
135 std::string make_filename_prefix_subiteration_num(const std::string& filename_prefix) const;
136
138
140 std::string make_filename_prefix_subiteration_num() const;
141
147 GeneralisedObjectiveFunction<TargetT> const& get_objective_function() const;
148
149 shared_ptr<GeneralisedObjectiveFunction<TargetT>> get_objective_function_sptr() const;
150
152 const int get_max_num_full_iterations() const;
153
155 const int get_num_subsets() const;
156
158 const int get_num_subiterations() const;
159
161 const int get_start_subiteration_num() const;
162
164 const int get_start_subset_num() const;
165
166 // TODO rename
168 const int get_save_interval() const;
169
171 const bool get_randomise_subset_order() const;
172
174 const DataProcessor<TargetT>& get_inter_iteration_filter() const;
175
176 shared_ptr<DataProcessor<TargetT>> get_inter_iteration_filter_sptr();
177
179 const int get_inter_iteration_filter_interval() const;
180
182 const int get_report_objective_function_values_interval() const;
184
191
192 void set_objective_function_sptr(const shared_ptr<GeneralisedObjectiveFunction<TargetT>>&);
193
195 void set_max_num_full_iterations(const int);
196
198 void set_num_subsets(const int);
199
201 void set_num_subiterations(const int);
202
204 void set_start_subiteration_num(const int);
205
207 void set_start_subset_num(const int);
208
209 // TODO rename
211 void set_save_interval(const int);
212
214 void set_randomise_subset_order(const bool);
215
217 void set_inter_iteration_filter_ptr(const shared_ptr<DataProcessor<TargetT>>&);
218
220 void set_inter_iteration_filter_interval(const int);
221
223 void set_report_objective_function_values_interval(const int);
224
228 void set_input_data(const shared_ptr<ExamData>& arg) override;
229 const ExamData& get_input_data() const override;
231
232 Succeeded set_up(shared_ptr<TargetT> const& target_data_ptr) override;
233
235 virtual void update_estimate(TargetT& current_estimate) = 0;
236
237protected:
238 IterativeReconstruction();
239
241
254 // KT 14/12/2001 remove =0 as it's not a pure virtual and the default implementation is usually fine.
255 virtual void end_of_iteration_processing(TargetT& current_estimate);
256
257 shared_ptr<GeneralisedObjectiveFunction<TargetT>> objective_function_sptr;
258
261
264
265 // parameters
266protected:
269
272
275
278
281
284
285 // TODO rename
286
289
292
294 shared_ptr<DataProcessor<TargetT>> inter_iteration_filter_ptr;
295
298
300
303
305 virtual void ask_parameters();
306
307 void set_defaults() override;
308 void initialise_keymap() override;
310 bool post_processing() override;
311
312private:
314
315 VectorWithOffset<int> _current_subset_array;
317 VectorWithOffset<int> randomly_permute_subset_order() const;
318};
319
320END_NAMESPACE_STIR
321
322#endif
323// __IterativeReconstruction_h__
Declaration of class stir::DataProcessor.
Declaration of class stir::GeneralisedObjectiveFunction.
declares the stir::Reconstruction class
Base class that defines an interface for classes that do data processing.
Definition DataProcessor.h:47
base class for data objects such as ProjData etc
Definition ExamData.h:34
A base class for 'generalised' objective functions, i.e. objective functions for which at least a 'gr...
Definition GeneralisedObjectiveFunction.h:84
int subiteration_num
the subiteration counter
Definition IterativeReconstruction.h:260
int report_objective_function_values_interval
subiteration interval at which to report the values of the objective function
Definition IterativeReconstruction.h:302
int num_subiterations
the number of subiterations
Definition IterativeReconstruction.h:274
int get_subiteration_num() const
accessor for the subiteration counter
Definition IterativeReconstruction.h:88
virtual void update_estimate(TargetT &current_estimate)=0
the principal operations for updating the data iterates at each iteration
int start_subset_num
the starting subset number
Definition IterativeReconstruction.h:283
shared_ptr< DataProcessor< TargetT > > inter_iteration_filter_ptr
inter-iteration filter
Definition IterativeReconstruction.h:294
int max_num_full_iterations
the maximum allowed number of full iterations
Definition IterativeReconstruction.h:268
int save_interval
subiteration interval at which data will be saved
Definition IterativeReconstruction.h:288
int start_subiteration_num
value with which to initialize the subiteration counter
Definition IterativeReconstruction.h:277
int inter_iteration_filter_interval
subiteration interval at which to apply inter-iteration filters
Definition IterativeReconstruction.h:297
bool post_processing() override
used to check acceptable parameter ranges, etc...
Definition IterativeReconstruction.cxx:135
void initialise_keymap() override
Initialise all keywords.
Definition IterativeReconstruction.cxx:77
int num_subsets
the number of ordered subsets
Definition IterativeReconstruction.h:271
bool randomise_subset_order
signals whether to randomise the subset order in each iteration
Definition IterativeReconstruction.h:291
bool terminate_iterations
used to abort the loop over iterations
Definition IterativeReconstruction.h:263
std::string initial_data_filename
name of the file containing the data for intializing the reconstruction
Definition IterativeReconstruction.h:280
virtual void ask_parameters()
prompts the user to enter parameter values manually
Definition IterativeReconstruction.cxx:95
void set_defaults() override
Set defaults before parsing.
Definition IterativeReconstruction.cxx:55
virtual void end_of_iteration_processing(TargetT &current_estimate)
operations for the end of the iteration
Definition IterativeReconstruction.cxx:533
Reconstruction()
default constructor (calls set_defaults())
Definition Reconstruction.cxx:41
a class containing an enumeration type that can be used by functions to signal successful operation o...
Definition Succeeded.h:44
A templated class for vectors, but with indices starting not from 0.
Definition VectorWithOffset.h:65
Import of std::shared_ptr, std::dynamic_pointer_cast and std::static_pointer_cast into the stir names...