STIR
6.2.0
|
This class is used to represent voxelised densities on a cuboid grid (3D). More...
#include "stir/VoxelsOnCartesianGrid.h"
Public Member Functions | |
VoxelsOnCartesianGrid () | |
Construct an empty VoxelsOnCartesianGrid (empty range, 0 origin, 0 grid_spacing) | |
VoxelsOnCartesianGrid (const Array< 3, elemT > &v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing) | |
Construct a VoxelsOnCartesianGrid, initialising data from the Array<3,elemT> object. | |
VoxelsOnCartesianGrid (const IndexRange< 3 > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing) | |
Construct a VoxelsOnCartesianGrid from an index range. More... | |
VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const Array< 3, elemT > &v, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing) | |
Construct a VoxelsOnCartesianGrid, initialising data from the Array<3,elemT> object. | |
VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< 3 > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< 3, float > &grid_spacing) | |
Construct a VoxelsOnCartesianGrid from an index range. More... | |
VoxelsOnCartesianGrid (const ProjDataInfo &proj_data_info_ptr, const float zoom=1.F, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1)) | |
use ProjDataInfo to obtain the size information More... | |
VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const ProjDataInfo &proj_data_info, const float zoom=1.F, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1)) | |
Constructor from exam_info and proj_data_info. More... | |
VoxelsOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr_v, const ProjDataInfo &proj_data_info, const CartesianCoordinate3D< float > &zooms, const CartesianCoordinate3D< float > &origin=CartesianCoordinate3D< float >(0.F, 0.F, 0.F), const CartesianCoordinate3D< int > &sizes=CartesianCoordinate3D< int >(-1, -1, -1)) | |
Constructor from exam_info and proj_data_info. More... | |
VoxelsOnCartesianGrid< elemT > * | get_empty_copy () const override |
Definition of the pure virtual defined in DiscretisedDensity. | |
VoxelsOnCartesianGrid< elemT > * | get_empty_voxels_on_cartesian_grid () const |
Like get_empty_copy, but returning a pointer to a VoxelsOnCartesianGrid. More... | |
VoxelsOnCartesianGrid< elemT > * | clone () const override |
Allocate a new DiscretisedDensity object which is a copy of the current one. | |
PixelsOnCartesianGrid< elemT > | get_plane (const int z) const |
Extract a single plane. | |
void | set_plane (const PixelsOnCartesianGrid< elemT > &plane, const int z) |
Set a single plane. More... | |
CartesianCoordinate3D< float > | get_voxel_size () const |
is the same as get_grid_spacing(), but now returns CartesianCoordinate3D for convenience | |
void | set_voxel_size (const BasicCoordinate< 3, float > &) |
is the same as set_grid_spacing() | |
void | grow_z_range (const int min_z, const int max_z) |
Growing of outer dimension only. | |
Convenience functions for regular grids in 3D | |
int | get_x_size () const |
int | get_y_size () const |
int | get_z_size () const |
int | get_min_x () const |
int | get_min_y () const |
int | get_min_z () const |
int | get_max_x () const |
int | get_max_y () const |
int | get_max_z () const |
BasicCoordinate< 3, int > | get_lengths () const |
BasicCoordinate< 3, int > | get_min_indices () const |
BasicCoordinate< 3, int > | get_max_indices () const |
Public Member Functions inherited from stir::DiscretisedDensityOnCartesianGrid< 3, elemT > | |
DiscretisedDensityOnCartesianGrid () | |
Construct an empty DiscretisedDensityOnCartesianGrid. | |
DiscretisedDensityOnCartesianGrid (const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< num_dimensions, float > &grid_spacing) | |
Constructor given range, grid spacing and origin. | |
DiscretisedDensityOnCartesianGrid (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin, const BasicCoordinate< num_dimensions, float > &grid_spacing) | |
Constructor given exam_info, range, grid spacing and origin. | |
const BasicCoordinate< num_dimensions, float > & | get_grid_spacing () const |
Return the grid_spacing. | |
void | set_grid_spacing (const BasicCoordinate< num_dimensions, float > &grid_spacing_v) |
Set the grid_spacing. | |
Public Member Functions inherited from stir::DiscretisedDensity< num_dimensions, elemT > | |
DiscretisedDensity () | |
Construct an empty DiscretisedDensity. | |
DiscretisedDensity (const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin) | |
Construct DiscretisedDensity from a given range of indices & origin. | |
DiscretisedDensity (const shared_ptr< const ExamInfo > &exam_info_sptr, const IndexRange< num_dimensions > &range, const CartesianCoordinate3D< float > &origin) | |
Construct DiscretisedDensity from ExamInfo and a given range of indices & origin. | |
const CartesianCoordinate3D< float > & | get_origin () const |
Return the origin. | |
void | set_origin (const CartesianCoordinate3D< float > &origin) |
Set the origin. | |
DiscretisedDensity< num_dimensions, elemT > * | get_empty_discretised_density () const |
Allocate a new DiscretisedDensity object with same characteristics as the current one. | |
CartesianCoordinate3D< float > | get_physical_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const |
Return the coordinates of the centre of the basis-function corresponding to indices . More... | |
CartesianCoordinate3D< float > | get_physical_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const |
Return the coordinates of the centre of the basis-function corresponding to non-integer coordinate in 'physical' coordinates. More... | |
CartesianCoordinate3D< float > | get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const |
Return the relative coordinates of the centre of the basis-function corresponding to indices . More... | |
CartesianCoordinate3D< float > | get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const |
Return the relative coordinates of the centre of the basis-function corresponding to the non-integer coordinates in 'index' coordinates. More... | |
BasicCoordinate< num_dimensions, int > | get_indices_closest_to_physical_coordinates (const CartesianCoordinate3D< float > &coords) const |
Return the indices of the basis-function closest to the given point. More... | |
BasicCoordinate< num_dimensions, int > | get_indices_closest_to_relative_coordinates (const CartesianCoordinate3D< float > &coords) const |
Return the indices of the basis-function closest to the given point. More... | |
BasicCoordinate< num_dimensions, float > | get_index_coordinates_for_physical_coordinates (const CartesianCoordinate3D< float > &coords) const |
Return the indices of the basis-function closest to the given point. More... | |
BasicCoordinate< num_dimensions, float > | get_index_coordinates_for_relative_coordinates (const CartesianCoordinate3D< float > &coords) const |
Return the index-coordinates of the basis-function closest to the given point. More... | |
BasicCoordinate< num_dimensions, float > | get_index_coordinates_for_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const |
Translation from LPS coordinates to continuous indices. | |
CartesianCoordinate3D< float > | get_LPS_coordinates_for_physical_coordinates (const CartesianCoordinate3D< float > &indices) const |
Translation from physical to LPS coordinates. | |
CartesianCoordinate3D< float > | get_LPS_coordinates_for_indices (const BasicCoordinate< num_dimensions, int > &indices) const |
Translation from indices to LPS coordinates. | |
CartesianCoordinate3D< float > | get_LPS_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const |
Translation from continuous indices to LPS coordinates. | |
CartesianCoordinate3D< float > | get_physical_coordinates_for_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const |
Translation from LPS coordinates to physical coordinates. | |
BasicCoordinate< num_dimensions, int > | get_indices_closest_to_LPS_coordinates (const CartesianCoordinate3D< float > &coords) const |
Translation from LPS coordinates to indices. | |
bool | has_same_characteristics (self_type const &, std::string &explanation) const |
Checks if the 2 objects have the same type, index range, origin etc. More... | |
bool | has_same_characteristics (self_type const &) const |
Checks if the 2 objects have the same type, index range, origin etc. More... | |
bool | operator== (const self_type &) const |
check equality (data has to be identical) More... | |
bool | operator!= (const self_type &) const |
negation of operator== | |
Public Member Functions inherited from stir::ExamData | |
ExamData () | |
ExamData. More... | |
ExamData (const shared_ptr< const ExamInfo > &_this_exam) | |
virtual const ExamInfo & | get_exam_info () const |
virtual shared_ptr< const ExamInfo > | get_exam_info_sptr () const |
Get shared pointer to exam info. | |
virtual void | set_exam_info (ExamInfo const &) |
change exam info More... | |
void | set_exam_info_sptr (shared_ptr< const ExamInfo > new_exam_info_sptr) |
Public Member Functions inherited from stir::Array< num_dimensions, elemT > | |
Array () | |
Construct an empty Array. | |
Array (const IndexRange< num_dimensions > &) | |
Construct an Array of given range of indices, elements are initialised to 0. | |
Array (const IndexRange< num_dimensions > &range, shared_ptr< elemT[]> data_sptr) | |
Construct an Array pointing to existing contiguous data. More... | |
Array (const base_type &t) | |
Construct an Array from an object of its base_type. | |
Array (const self &t) | |
Copy constructor. | |
~Array () override | |
virtual destructor, frees up any allocated memory | |
Array (Array &&other) noexcept | |
move constructor More... | |
Array & | operator= (Array other) |
assignment operator More... | |
IndexRange< num_dimensions > | get_index_range () const |
size_t | size_all () const |
return the total number of elements in this array | |
virtual void | resize (const IndexRange< num_dimensions > &range) |
change the array to a new range of indices, new elements are set to 0 More... | |
virtual void | grow (const IndexRange< num_dimensions > &range) |
alias for resize() | |
elemT | sum () const |
return sum of all elements | |
elemT | sum_positive () const |
return sum of all positive elements | |
elemT | find_max () const |
return maximum of all the elements | |
elemT | find_min () const |
return minimum of all the elements | |
void | fill (const elemT &n) |
Fill elements with value n . More... | |
void | apply_lower_threshold (const elemT &l) |
Sets elements below value to the value. | |
void | apply_upper_threshold (const elemT &u) |
Sets elements above value to the value. | |
bool | is_regular () const |
checks if the index range is 'regular' More... | |
bool | get_regular_range (BasicCoordinate< num_dimensions, int > &min, BasicCoordinate< num_dimensions, int > &max) const |
find regular range, returns false if the range is not regular More... | |
Array< num_dimensions - 1, elemT > & | operator[] (int i) |
allow array-style access, read/write | |
const Array< num_dimensions - 1, elemT > & | operator[] (int i) const |
array access, read-only | |
elemT & | operator[] (const BasicCoordinate< num_dimensions, int > &c) |
allow array-style access given a BasicCoordinate to specify the indices, read/write | |
const elemT & | operator[] (const BasicCoordinate< num_dimensions, int > &c) const |
array access given a BasicCoordinate to specify the indices, read-only | |
template<typename elemT2 > | |
STIR_DEPRECATED void | axpby (const elemT2 a, const Array &x, const elemT2 b, const Array &y) |
void | xapyb (const Array &x, const elemT a, const Array &y, const elemT b) |
set values of the array to x*a+y*b, where a and b are scalar | |
void | xapyb (const Array &x, const Array &a, const Array &y, const Array &b) |
set values of the array to x*a+y*b, where a and b are arrays | |
template<class T > | |
void | sapyb (const T &a, const Array &y, const T &b) |
set values of the array to self*a+y*b where a and b are scalar or arrays | |
template<int num_dimensions, typename elemT> | |
Array (Array< num_dimensions, elemT > &&other) noexcept | |
template<typename elemT2 > | |
void | axpby (const elemT2 a, const Array &x, const elemT2 b, const Array &y) |
full_iterator | begin_all () |
start value for iterating through all elements in the array, see full_iterator | |
const_full_iterator | begin_all () const |
start value for iterating through all elements in the (const) array, see full_iterator | |
const_full_iterator | begin_all_const () const |
start value for iterating through all elements in the array, see full_iterator | |
full_iterator | end_all () |
end value for iterating through all elements in the array, see full_iterator | |
const_full_iterator | end_all () const |
end value for iterating through all elements in the (const) array, see full_iterator | |
const_full_iterator | end_all_const () const |
end value for iterating through all elements in the array, see full_iterator | |
Array< num_dimensions - 1, elemT > & | at (int i) |
const Array< num_dimensions - 1, elemT > & | at (int i) const |
elemT & | at (const BasicCoordinate< num_dimensions, int > &c) |
const elemT & | at (const BasicCoordinate< num_dimensions, int > &c) const |
bool | is_contiguous () const |
return if the array is contiguous in memory | |
elemT * | get_full_data_ptr () |
member function for access to the data via a elemT* More... | |
const elemT * | get_const_full_data_ptr () const |
member function for access to the data via a const elemT* More... | |
void | release_full_data_ptr () |
signal end of access to elemT* More... | |
void | release_const_full_data_ptr () const |
signal end of access to const elemT* More... | |
Public Member Functions inherited from stir::NumericVectorWithOffset< Array< num_dimensions - 1, elemT >, elemT > | |
NumericVectorWithOffset (const VectorWithOffset< Array< num_dimensions - 1, elemT > > &t) | |
Constructor from an object of this class' base_type. | |
NumericVectorWithOffset (const NumericVectorWithOffset &t) | |
Constructor from an object of this class' base_type. | |
NumericVectorWithOffset (NumericVectorWithOffset &&other) noexcept | |
move constructor More... | |
NumericVectorWithOffset & | operator= (const NumericVectorWithOffset &other) |
assignment | |
NumericVectorWithOffset | operator+ (const NumericVectorWithOffset &v) const |
adding vectors, element by element | |
NumericVectorWithOffset | operator+ (const elemT &v) const |
return a new vector with elements equal to the sum of the elements in the original and the elemT | |
NumericVectorWithOffset | operator- (const NumericVectorWithOffset &v) const |
subtracting vectors, element by element | |
NumericVectorWithOffset | operator- (const elemT &v) const |
return a new vector with elements equal to the difference of the elements in the original and the elemT | |
NumericVectorWithOffset | operator* (const NumericVectorWithOffset &v) const |
multiplying vectors, element by element | |
NumericVectorWithOffset | operator* (const elemT &v) const |
return a new vector with elements equal to the multiplication of the elements in the original and the elemT | |
NumericVectorWithOffset | operator/ (const NumericVectorWithOffset &v) const |
dividing vectors, element by element | |
NumericVectorWithOffset | operator/ (const elemT &v) const |
return a new vector with elements equal to the division of the elements in the original and the elemT | |
NumericVectorWithOffset & | operator+= (const NumericVectorWithOffset &v) |
adding elements of v to the current vector More... | |
NumericVectorWithOffset & | operator+= (const elemT &v) |
adding an elemT to the elements of the current vector | |
NumericVectorWithOffset & | operator-= (const NumericVectorWithOffset &v) |
subtracting elements of v from the current vector More... | |
NumericVectorWithOffset & | operator-= (const elemT &v) |
subtracting an elemT from the elements of the current vector | |
NumericVectorWithOffset & | operator*= (const NumericVectorWithOffset &v) |
multiplying elements of the current vector with elements of v More... | |
NumericVectorWithOffset & | operator*= (const elemT &v) |
multiplying the elements of the current vector with an elemT | |
NumericVectorWithOffset & | operator/= (const NumericVectorWithOffset &v) |
dividing all elements of the current vector by elements of v More... | |
NumericVectorWithOffset & | operator/= (const elemT &v) |
dividing the elements of the current vector by an elemT | |
STIR_DEPRECATED void | axpby (const elemT2 a, const NumericVectorWithOffset &x, const elemT2 b, const NumericVectorWithOffset &y) |
void | axpby (const NUMBER2 a, const NumericVectorWithOffset &x, const NUMBER2 b, const NumericVectorWithOffset &y) |
void | xapyb (const NumericVectorWithOffset &x, const elemT a, const NumericVectorWithOffset &y, const elemT b) |
set values of the array to x*a+y*b, where a and b are scalar | |
void | xapyb (const NumericVectorWithOffset &x, const NumericVectorWithOffset &a, const NumericVectorWithOffset &y, const NumericVectorWithOffset &b) |
set the values of the array to x*a+y*b, where a and b are vectors | |
void | sapyb (const T2 &a, const NumericVectorWithOffset &y, const T2 &b) |
set the values of the array to self*a+y*b, where a and b are scalar or vectors | |
Public Member Functions inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > > | |
VectorWithOffset () | |
Default constructor: creates a vector of length 0. | |
VectorWithOffset (const int hsz) | |
Construct a VectorWithOffset of given length (initialised with T() ) | |
VectorWithOffset (const int min_index, const int max_index) | |
Construct a VectorWithOffset with offset min_index (initialised with T() ) | |
STIR_DEPRECATED | VectorWithOffset (const int hsz, Array< num_dimensions - 1, elemT > *const data_ptr, Array< num_dimensions - 1, elemT > *const end_of_data_ptr) |
Construct a VectorWithOffset of given length pointing to existing data. More... | |
STIR_DEPRECATED | VectorWithOffset (const int min_index, const int max_index, Array< num_dimensions - 1, elemT > *const data_ptr, Array< num_dimensions - 1, elemT > *const end_of_data_ptr) |
Construct a VectorWithOffset with offset min_index pointing to existing data. More... | |
VectorWithOffset (const int hsz, const Array< num_dimensions - 1, elemT > *const data_ptr) | |
Construct a VectorWithOffset of given length from a bare pointer (copying data) | |
VectorWithOffset (const int min_index, const int max_index, const Array< num_dimensions - 1, elemT > *const data_ptr) | |
Construct a VectorWithOffset with offset min_index from a bare pointer (copying data) | |
VectorWithOffset (const int min_index, const int max_index, shared_ptr< Array< num_dimensions - 1, elemT > []> data_sptr) | |
Construct a VectorWithOffset sharing existing data. More... | |
VectorWithOffset (const int sz, shared_ptr< Array< num_dimensions - 1, elemT > []> data_sptr) | |
Construct a VectorWithOffset sharing existing data. More... | |
VectorWithOffset (const VectorWithOffset &il) | |
copy constructor | |
VectorWithOffset (VectorWithOffset &&other) noexcept | |
move constructor More... | |
virtual | ~VectorWithOffset () |
Destructor. | |
void | recycle () |
Free all memory and make object as if default-constructed. More... | |
VectorWithOffset & | operator= (const VectorWithOffset &il) |
assignment operator with another vector More... | |
Array< num_dimensions - 1, elemT > & | operator[] (int i) |
allow array-style access, read/write More... | |
const Array< num_dimensions - 1, elemT > & | operator[] (int i) const |
array access, read-only More... | |
Array< num_dimensions - 1, elemT > & | at (int i) |
allow array-style access, read/write, but with range checking (throws std::out_of_range) | |
const Array< num_dimensions - 1, elemT > & | at (int i) const |
array access, read-only, but with range checking (throws std::out_of_range) | |
bool | empty () const |
checks if the vector is empty | |
void | fill (const Array< num_dimensions - 1, elemT > &n) |
fill elements with value n | |
void | apply_lower_threshold (const Array< num_dimensions - 1, elemT > &lower) |
Sets elements below value to the value. | |
void | apply_upper_threshold (const Array< num_dimensions - 1, elemT > &upper) |
Sets elements above value to the value. | |
int | get_length () const |
return number of elements in this vector More... | |
size_t | size () const |
return number of elements in this vector | |
int | get_min_index () const |
get value of first valid index | |
int | get_max_index () const |
get value of last valid index | |
void | set_offset (const int min_index) |
change value of starting index | |
void | set_min_index (const int min_index) |
identical to set_offset() | |
virtual void | grow (const int min_index, const int max_index) |
grow the range of the vector, new elements are set to T() More... | |
void | grow (const unsigned int new_size) |
grow the range of the vector from 0 to new_size-1, new elements are set to T() | |
virtual void | resize (const int min_index, const int max_index) |
change the range of the vector, new elements are set to T() More... | |
void | resize (const unsigned int new_size) |
change the range of the vector from 0 to new_size-1, new elements are set to T() | |
void | reserve (const int min_index, const int max_index) |
make the allocated range at least from min_index to max_index | |
void | reserve (const unsigned int new_size) |
make the allocated range at least from 0 to new_size-1 | |
size_t | capacity () const |
get allocated size | |
bool | owns_memory_for_data () const |
check if this object owns the memory for the data More... | |
int | get_capacity_min_index () const |
get min_index within allocated range More... | |
int | get_capacity_max_index () const |
get max_index within allocated range More... | |
bool | operator== (const VectorWithOffset &iv) const |
bool | operator!= (const VectorWithOffset &iv) const |
Array< num_dimensions - 1, elemT > * | get_data_ptr () |
member function for access to the data via a T* More... | |
const Array< num_dimensions - 1, elemT > * | get_const_data_ptr () const |
member function for access to the data via a const T* More... | |
void | release_data_ptr () |
signal end of access to T* More... | |
void | release_const_data_ptr () const |
signal end of access to const T* More... | |
iterator | begin () |
use to initialise an iterator to the first element of the vector | |
const_iterator | begin () const |
use to initialise an iterator to the first element of the (const) vector | |
iterator | end () |
iterator 'past' the last element of the vector | |
const_iterator | end () const |
iterator 'past' the last element of the (const) vector | |
reverse_iterator | rbegin () |
const_reverse_iterator | rbegin () const |
reverse_iterator | rend () |
const_reverse_iterator | rend () const |
VectorWithOffset & | operator+= (const VectorWithOffset &v) |
adding elements of v to the current vector | |
VectorWithOffset & | operator-= (const VectorWithOffset &v) |
subtracting elements of v from the current vector | |
VectorWithOffset & | operator*= (const VectorWithOffset &v) |
multiplying elements of the current vector with elements of v | |
VectorWithOffset & | operator/= (const VectorWithOffset &v) |
dividing all elements of the current vector by elements of v | |
VectorWithOffset | operator+ (const VectorWithOffset &v) const |
adding vectors, element by element | |
VectorWithOffset | operator- (const VectorWithOffset &v) const |
subtracting vectors, element by element | |
VectorWithOffset | operator* (const VectorWithOffset &v) const |
multiplying vectors, element by element | |
VectorWithOffset | operator/ (const VectorWithOffset &v) const |
dividing vectors, element by element | |
Additional Inherited Members | |
Public Types inherited from stir::DiscretisedDensity< num_dimensions, elemT > | |
typedef DiscretisedDensity< num_dimensions, elemT > | hierarchy_base_type |
A typedef that can be used what the base of the hierarchy is. More... | |
Public Types inherited from stir::Array< num_dimensions, elemT > | |
typedef base_type::value_type | value_type |
typedefs such that we do not need to have typename wherever we use these types defined in the base class | |
typedef base_type::reference | reference |
typedef base_type::const_reference | const_reference |
typedef base_type::difference_type | difference_type |
typedef base_type::size_type | size_type |
typedef base_type::iterator | iterator |
typedef base_type::const_iterator | const_iterator |
typedef elemT | full_value_type |
typedef full_value_type * | full_pointer |
typedef const full_value_type * | const_full_pointer |
typedef full_value_type & | full_reference |
typedef const full_value_type & | const_full_reference |
typedef FullArrayIterator< typename base_type::iterator, typename Array< num_dimensions - 1, elemT >::full_iterator, elemT, full_reference, full_pointer > | full_iterator |
This defines an iterator type that iterates through all elements. | |
typedef FullArrayIterator< typename base_type::const_iterator, typename Array< num_dimensions - 1, elemT >::const_full_iterator, elemT, const_full_reference, const_full_pointer > | const_full_iterator |
As full_iterator, but for const objects. | |
Public Types inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > > | |
typedef size_t | size_type |
typedef Array< num_dimensions - 1, elemT > | value_type |
typedef value_type & | reference |
typedef const value_type & | const_reference |
typedef ptrdiff_t | difference_type |
typedef Array< num_dimensions - 1, elemT > * | iterator |
typedef Array< num_dimensions - 1, elemT > const * | const_iterator |
typedef std::reverse_iterator< iterator > | reverse_iterator |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
Static Public Member Functions inherited from stir::DiscretisedDensity< num_dimensions, elemT > | |
static DiscretisedDensity * | read_from_file (const std::string &filename) |
A static member to read an image from file. More... | |
Protected Member Functions inherited from stir::DiscretisedDensityOnCartesianGrid< 3, elemT > | |
bool | actual_has_same_characteristics (DiscretisedDensity< num_dimensions, elemT > const &, std::string &explanation) const override |
Implementation used by has_same_characteristics. More... | |
CartesianCoordinate3D< float > | actual_get_relative_coordinates_for_indices (const BasicCoordinate< num_dimensions, float > &indices) const override |
Return the relative coordinates of the centre of the basis-function corresponding to indices . More... | |
BasicCoordinate< num_dimensions, float > | actual_get_index_coordinates_for_relative_coordinates (const CartesianCoordinate3D< float > &coords) const override |
Return the indices of the basis-function closest to the given point. More... | |
Protected Member Functions inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > > | |
void | check_state () const |
Called internally to see if all variables are consistent. More... | |
void | init (const int min_index, const int max_index, Array< num_dimensions - 1, elemT > *const data_ptr, bool copy_data) |
change vector with new index range and point to data_ptr More... | |
Protected Attributes inherited from stir::ExamData | |
shared_ptr< const ExamInfo > | exam_info_sptr |
Protected Attributes inherited from stir::VectorWithOffset< Array< num_dimensions - 1, elemT > > | |
Array< num_dimensions - 1, elemT > * | num |
pointer to (*this)[0] (taking get_min_index() into account that is). | |
This class is used to represent voxelised densities on a cuboid grid (3D).
This class represents 'normal' data. Basisfunctions are just voxels.
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid | ( | const IndexRange< 3 > & | range, |
const CartesianCoordinate3D< float > & | origin, | ||
const BasicCoordinate< 3, float > & | grid_spacing | ||
) |
Construct a VoxelsOnCartesianGrid from an index range.
All elements are set 0.
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid | ( | const shared_ptr< const ExamInfo > & | exam_info_sptr, |
const IndexRange< 3 > & | range, | ||
const CartesianCoordinate3D< float > & | origin, | ||
const BasicCoordinate< 3, float > & | grid_spacing | ||
) |
Construct a VoxelsOnCartesianGrid from an index range.
All elements are set 0.
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid | ( | const ProjDataInfo & | proj_data_info_ptr, |
const float | zoom = 1.F , |
||
const CartesianCoordinate3D< float > & | origin = CartesianCoordinate3D<float>(0.F, 0.F, 0.F) , |
||
const CartesianCoordinate3D< int > & | sizes = CartesianCoordinate3D<int>(-1, -1, -1) |
||
) |
use ProjDataInfo to obtain the size information
When sizes.x() is -1, a default size in x is found by taking the diameter of the FOV spanned by the projection data. Similar for sizes.y().
When sizes.z() is -1, a default size in z is found by taking the number of planes as
where $N_0$ is the number of sinograms in segment 0.
Actual index ranges start from 0 for z, but from -(x_size_used/2) for x (and similar for y).
x,y grid spacing are set to the proj_data_info_ptr->get_scanner_ptr()->get_default_bin_size()/zoom
. This is to make sure that the voxel size is independent on if arc-correction is used or not. If the default bin size is 0, the sampling distance in s (for bin 0) is used.
z grid spacing is set to half the scanner ring distance.
All voxel values are set 0.
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid | ( | const shared_ptr< const ExamInfo > & | exam_info_sptr, |
const ProjDataInfo & | proj_data_info, | ||
const float | zoom = 1.F , |
||
const CartesianCoordinate3D< float > & | origin = CartesianCoordinate3D<float>(0.F, 0.F, 0.F) , |
||
const CartesianCoordinate3D< int > & | sizes = CartesianCoordinate3D<int>(-1, -1, -1) |
||
) |
Constructor from exam_info and proj_data_info.
stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid | ( | const shared_ptr< const ExamInfo > & | exam_info_sptr_v, |
const ProjDataInfo & | proj_data_info, | ||
const CartesianCoordinate3D< float > & | zooms, | ||
const CartesianCoordinate3D< float > & | origin = CartesianCoordinate3D<float>(0.F, 0.F, 0.F) , |
||
const CartesianCoordinate3D< int > & | sizes = CartesianCoordinate3D<int>(-1, -1, -1) |
||
) |
Constructor from exam_info and proj_data_info.
VoxelsOnCartesianGrid< elemT > * stir::VoxelsOnCartesianGrid< elemT >::get_empty_voxels_on_cartesian_grid | ( | ) | const |
Like get_empty_copy, but returning a pointer to a VoxelsOnCartesianGrid.
This member function will be unnecessary when all compilers can handle 'covariant' return types. It is a non-virtual counterpart of get_empty_voxels_on_cartesian_grid.
References stir::DiscretisedDensityOnCartesianGrid< 3, elemT >::get_grid_spacing(), stir::DiscretisedDensity< num_dimensions, elemT >::get_origin(), and stir::VoxelsOnCartesianGrid< elemT >::VoxelsOnCartesianGrid().
Referenced by stir::VoxelsOnCartesianGrid< elemT >::get_empty_copy().
void stir::VoxelsOnCartesianGrid< elemT >::set_plane | ( | const PixelsOnCartesianGrid< elemT > & | plane, |
const int | z | ||
) |
Set a single plane.
This function requires that the dimensions, origin and grid_spacings match.
References stir::DiscretisedDensity< num_dimensions, elemT >::get_origin(), stir::PixelsOnCartesianGrid< elemT >::get_pixel_size(), stir::VoxelsOnCartesianGrid< elemT >::get_voxel_size(), and stir::Array< num_dimensions, elemT >::operator[]().
|
inline |
It is assumed that z
is the highest dimension and x
the lowest.
References stir::VectorWithOffset< T >::get_length(), and stir::VectorWithOffset< T >::get_max_index().
Referenced by stir::ITKOutputFileFormat::actual_write_to_file(), stir::ScatterSimulation::downsample_density_image_for_scatter_points(), stir::VoxelsOnCartesianGrid< elemT >::grow_z_range(), stir::ProjMatrixByBinSPECTUB::set_up(), stir::ProjMatrixByBinPinholeSPECTUB::set_up(), and stir::zoom_image().