3#ifndef __stir_modelling_ParametricDiscretisedDensity_H__
4#define __stir_modelling_ParametricDiscretisedDensity_H__
29template <
typename DiscDensT>
30class ParametricDiscretisedDensity;
33class DynamicDiscretisedDensity;
36template <
typename DiscDensT>
39template <
typename DiscDensT>
45template <
int num_parameters,
typename elemT>
63template <
typename DiscDensT>
64class ParametricDiscretisedDensity :
public DiscDensT
68 typedef DiscDensT base_type;
80 typedef typename base_type::full_iterator full_densel_iterator;
81 typedef typename base_type::const_full_iterator const_full_densel_iterator;
87 static ParametricDiscretisedDensity*
read_from_file(
const std::string& filename);
92 ParametricDiscretisedDensity(
const base_type& density)
110 void update_parametric_image(
const SingleDiscretisedDensityType& single_density,
const unsigned int param_num);
119 full_iterator end_all() {
return full_iterator(base_type::end_all(), base_type::end_all()); }
121 const_full_iterator end_all_const()
const
123 return const_full_iterator(base_type::end_all_const(), base_type::end_all_const());
126 const_full_iterator begin_all()
const {
return this->begin_all_const(); }
128 const_full_iterator end_all()
const {
return this->end_all_const(); }
130 full_densel_iterator begin_all_densel() {
return base_type::begin_all(); }
132 const_full_densel_iterator begin_all_densel_const()
const {
return base_type::begin_all_const(); }
134 full_densel_iterator end_all_densel() {
return base_type::end_all(); }
136 const_full_densel_iterator end_all_densel_const()
const {
return base_type::end_all_const(); }
138 const_full_densel_iterator begin_all_densel()
const {
return this->begin_all_densel_const(); }
140 const_full_densel_iterator end_all_densel()
const {
return this->end_all_densel_const(); }
146 ParametricDiscretisedDensity*
clone()
const override;
149 template <
class KPFunctionObject>
152 template <
class KPFunctionObject>
162 SingleDiscretisedDensityType &
defines the stir::DiscretisedDensity class
Declaration of class stir::KineticParameters.
This file declares the stir::NestedIterator class and supporting function objects.
defines the stir::VoxelsOnCartesianGrid class
full_iterator begin_all()
start value for iterating through all elements in the array, see full_iterator
Definition Array.inl:213
full_iterator end_all()
end value for iterating through all elements in the array, see full_iterator
Definition Array.inl:185
Class of multiple image frames, one for each time frame Each time frame is a DiscretisedDensity<3,...
Definition DynamicDiscretisedDensity.h:46
Class NestedIterator implements a (forward) iterator using a pair of 'nested' iterators.
Definition NestedIterator.h:94
Class to store parametric images.
Definition ParametricDiscretisedDensity.h:65
ParametricDiscretisedDensity(const DynamicDiscretisedDensity &dyn_im)
Create blank parametric image from a dynamic image.
ParametricDiscretisedDensity hierarchy_base_type
A typedef that can be used what the base of the hierarchy is.
Definition ParametricDiscretisedDensity.h:76
ParametricDiscretisedDensity * get_empty_copy() const override
Allocate a new object with same characteristics as the current one.
ParametricDiscretisedDensity * clone() const override
Allocate a new object which is a copy of the current one.
void construct_single_density_using_function(SingleDiscretisedDensityType &density, KPFunctionObject f) const
construct a single image by applying a function object on each KineticParameter
ParametricDiscretisedDensity(const SingleDiscretisedDensityType &im)
Create blank parametric image from a single VoxelsOnCartesianGrid.
static unsigned int get_num_params()
Get number of parameters in a single densel.
const SingleDiscretisedDensityType construct_single_density(const int index) const
Implementation of non-const functions - which should be able to update a single parameter of a parame...
static ParametricDiscretisedDensity * read_from_file(const std::string &filename)
A static member to read an image from file.
void construct_single_density(SingleDiscretisedDensityType &density, const int i) const
construct a single image corresponding to the parameter with index i
This class is used to represent voxelised densities on a cuboid grid (3D).
Definition VoxelsOnCartesianGrid.h:46
VoxelsOnCartesianGrid< KineticParameters< 2, float > > ParametricVoxelsOnCartesianGridBaseType
Convenience typedef for base-type of Cartesian Voxelised Parametric Images with just two parameters.
Definition ParametricDiscretisedDensity.h:169
ParametricDiscretisedDensity< ParametricVoxelsOnCartesianGridBaseType > ParametricVoxelsOnCartesianGrid
Convenience typedef for Cartesian Voxelised Parametric Images with just two parameters.
Definition ParametricDiscretisedDensity.h:172
A helper class to find the type of a 'single' image for a corresponding parametric image.
Definition ParametricDiscretisedDensity.h:37