STIR
6.2.0
|
A class which reads/writes projection data from/to a (binary) stream, but creates the corresponding Interfile header. More...
#include "stir/ProjDataInterfile.h"
Public Member Functions | |
ProjDataInterfile (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, const std::string &filename, const std::ios::openmode, const std::vector< int > &segment_sequence_in_stream, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1) | |
constructor taking all necessary parameters More... | |
ProjDataInterfile (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, const std::string &filename, const std::ios::openmode open_mode=std::ios::out, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1) | |
as above, but with a default value for segment_sequence_in_stream More... | |
Public Member Functions inherited from stir::ProjDataFromStream | |
ProjDataFromStream (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, shared_ptr< std::iostream > const &s, const std::streamoff offs, const std::vector< int > &segment_sequence_in_stream, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1.f) | |
constructor taking all necessary parameters More... | |
ProjDataFromStream (shared_ptr< const ExamInfo > const &exam_info_sptr, shared_ptr< const ProjDataInfo > const &proj_data_info_ptr, shared_ptr< std::iostream > const &s, const std::streamoff offs=0, StorageOrder o=Segment_View_AxialPos_TangPos, NumericType data_type=NumericType::FLOAT, ByteOrder byte_order=ByteOrder::native, float scale_factor=1.f) | |
as above, but with a default value for segment_sequence_in_stream More... | |
StorageOrder | get_storage_order () const |
Obtain the storage order. | |
std::streamoff | get_offset_in_stream () const |
Get the offset -Changed into streamoff from int. | |
NumericType | get_data_type_in_stream () const |
Get the data_type in the stream. | |
ByteOrder | get_byte_order_in_stream () const |
Get the byte order. | |
std::vector< int > | get_segment_sequence_in_stream () const |
Get the segment sequence. | |
std::vector< int > | get_timing_poss_sequence_in_stream () const |
Get the timing bins sequence. | |
void | set_timing_poss_sequence_in_stream (const std::vector< int > &seq) |
set the timing bins sequence | |
Viewgram< float > | get_viewgram (const int view_num, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const override |
Get & set viewgram. | |
Succeeded | set_viewgram (const Viewgram< float > &v) override |
Set viewgram. | |
Sinogram< float > | get_sinogram (const int ax_pos_num, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const override |
Get & set sinogram. | |
Succeeded | set_sinogram (const Sinogram< float > &s) override |
Set sinogram. | |
SegmentBySinogram< float > | get_segment_by_sinogram (const int segment_num, const int timing_num=0) const override |
Get all sinograms for the given segment. | |
SegmentByView< float > | get_segment_by_view (const int segment_num, const int timing_pos=0) const override |
Get all viewgrams for the given segment. | |
Succeeded | set_segment (const SegmentBySinogram< float > &) override |
Set all sinograms for the given segment. | |
Succeeded | set_segment (const SegmentByView< float > &) override |
Set all viewgrams for the given segment. | |
float | get_scale_factor () const |
Get scale factor. | |
virtual float | get_bin_value (const Bin &this_bin) const |
Get the value of bin. | |
virtual void | set_bin_value (const Bin &bin) |
Set the value of the bin. | |
Public Member Functions inherited from stir::ProjData | |
ProjData () | |
Empty constructor. | |
ProjData (const shared_ptr< const ExamInfo > &exam_info_sptr, const shared_ptr< const ProjDataInfo > &proj_data_info_ptr) | |
construct by specifying info. Data will be undefined. | |
~ProjData () override | |
Destructor. | |
shared_ptr< const ProjDataInfo > | get_proj_data_info_sptr () const |
Get shared pointer to proj data info. | |
Viewgram< float > | get_viewgram (const ViewgramIndices &) const |
Get viewgram. | |
Sinogram< float > | get_sinogram (const SinogramIndices &) const |
Get sinogram. | |
unique_ptr< ProjDataInMemory > | get_subset (const std::vector< int > &views) const |
construct projection data that stores a subset of the views | |
Viewgram< float > | get_empty_viewgram (const ViewgramIndices &) const |
Get empty viewgram. | |
Viewgram< float > | get_empty_viewgram (const int view, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const |
Get empty viewgram. More... | |
Sinogram< float > | get_empty_sinogram (const SinogramIndices &) const |
Get empty_sinogram. | |
Sinogram< float > | get_empty_sinogram (const int ax_pos_num, const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const |
Get empty_sinogram. More... | |
SegmentByView< float > | get_empty_segment_by_view (const SegmentIndices &) const |
Get empty segment by view. | |
SegmentBySinogram< float > | get_empty_segment_by_sinogram (const SegmentIndices &) const |
Get empty segment by sino. | |
SegmentByView< float > | get_empty_segment_by_view (const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const |
Get empty segment view. More... | |
SegmentBySinogram< float > | get_empty_segment_by_sinogram (const int segment_num, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const |
Get empty segment sino. More... | |
SegmentBySinogram< float > | get_segment_by_sinogram (const SegmentIndices &) const |
Get segment by sinogram. | |
SegmentByView< float > | get_segment_by_view (const SegmentIndices &) const |
Get segment by view. | |
virtual RelatedViewgrams< float > | get_related_viewgrams (const ViewgramIndices &, const shared_ptr< DataSymmetriesForViewSegmentNumbers > &, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const |
Get related viewgrams. | |
virtual Succeeded | set_related_viewgrams (const RelatedViewgrams< float > &viewgrams) |
Set related viewgrams. | |
RelatedViewgrams< float > | get_empty_related_viewgrams (const ViewgramIndices &viewgram_indices, const shared_ptr< DataSymmetriesForViewSegmentNumbers > &symmetries_ptr, const bool make_num_tangential_poss_odd=false, const int timing_pos=0) const |
Get empty related viewgrams, where the symmetries_ptr specifies the symmetries to use. | |
virtual void | fill (const float value) |
set all bins to the same value More... | |
virtual void | fill (const ProjData &) |
set all bins from another ProjData object More... | |
template<typename iterT > | |
iterT | fill_from (iterT array_iter) |
set all bins from an array iterator More... | |
template<typename iterT > | |
iterT | copy_to (iterT array_iter) const |
Copy all bins to a range specified by a (forward) iterator. More... | |
int | get_num_segments () const |
Get number of segments. | |
int | get_num_axial_poss (const int segment_num) const |
Get number of axial positions per segment. | |
int | get_num_views () const |
Get number of views. | |
int | get_num_tangential_poss () const |
Get number of tangential positions. | |
int | get_num_tof_poss () const |
Get number of TOF positions. | |
int | get_min_tof_pos_num () const |
Get the index of the first timing position. | |
int | get_max_tof_pos_num () const |
Get the index of the last timgin position. | |
int | get_tof_mash_factor () const |
Get TOG mash factor. | |
int | get_min_segment_num () const |
Get minimum segment number. | |
int | get_max_segment_num () const |
Get maximum segment number. | |
int | get_min_axial_pos_num (const int segment_num) const |
Get mininum axial position per segmnet. | |
int | get_max_axial_pos_num (const int segment_num) const |
Get maximum axial position per segment. | |
int | get_min_view_num () const |
Get minimum view number. | |
int | get_max_view_num () const |
Get maximum view number. | |
int | get_min_tangential_pos_num () const |
Get minimum tangential position number. | |
int | get_max_tangential_pos_num () const |
Get maximum tangential position number. | |
int | get_num_sinograms () const |
Get the total number of sinograms. More... | |
int | get_num_non_tof_sinograms () const |
Get the number of non-tof sinograms. More... | |
std::size_t | size_all () const |
Get the total size of the data. | |
std::vector< int > | get_original_view_nums () const |
forward ProjDataInfo::get_original_view_nums() | |
Succeeded | write_to_file (const std::string &filename) const |
writes data to a file in Interfile format | |
virtual float | sum () const |
virtual float | find_max () const |
return maximum value of all elements | |
virtual float | find_min () const |
return minimum value of all elements | |
virtual double | norm () const |
return L2-norm (sqrt of sum of squares) | |
virtual double | norm_squared () const |
return L2-norm squared (sum of squares) | |
virtual self_type & | operator+= (const self_type &v) |
adding elements of v to the current data | |
virtual self_type & | operator-= (const self_type &v) |
subtracting elements of v from the current data | |
virtual self_type & | operator*= (const self_type &v) |
multiplying elements of the current data with elements of v | |
virtual self_type & | operator/= (const self_type &v) |
dividing all elements of the current data by elements of v | |
virtual self_type & | operator+= (const float v) |
adding an float to the elements of the current data | |
virtual self_type & | operator-= (const float v) |
subtracting an float from the elements of the current data | |
virtual self_type & | operator*= (const float v) |
multiplying the elements of the current data with an float | |
virtual self_type & | operator/= (const float v) |
dividing the elements of the current data by an float | |
virtual STIR_DEPRECATED void | axpby (const float a, const ProjData &x, const float b, const ProjData &y) |
virtual void | xapyb (const ProjData &x, const float a, const ProjData &y, const float b) |
set values of the array to x*a+y*b, where a and b are scalar, and x and y are ProjData | |
virtual void | xapyb (const ProjData &x, const ProjData &a, const ProjData &y, const ProjData &b) |
set values of the array to x*a+y*b, where a, b, x and y are ProjData | |
virtual void | sapyb (const float a, const ProjData &y, const float b) |
set values of the array to self*a+y*b where a and b are scalar, y is ProjData | |
virtual void | sapyb (const ProjData &a, const ProjData &y, const ProjData &b) |
set values of the array to self*a+y*b where a, b and y are ProjData | |
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) |
Additional Inherited Members | |
Public Types inherited from stir::ProjDataFromStream | |
enum | StorageOrder { Segment_AxialPos_View_TangPos, Timing_Segment_AxialPos_View_TangPos, Segment_View_AxialPos_TangPos, Timing_Segment_View_AxialPos_TangPos, Unsupported } |
Static Public Member Functions inherited from stir::ProjData | |
static shared_ptr< ProjData > | read_from_file (const std::string &filename, const std::ios::openmode open_mode=std::ios::in) |
A static member to get the projection data from a file. More... | |
static std::vector< int > | standard_segment_sequence (const ProjDataInfo &pdi) |
Return a vector with segment numbers in a standard order. More... | |
Protected Member Functions inherited from stir::ProjDataFromStream | |
std::streamoff | get_offset (const Bin &) const |
Calculate the offset for a specific bin. More... | |
Protected Attributes inherited from stir::ProjDataFromStream | |
shared_ptr< std::iostream > | sino_stream |
the stream with the data | |
Protected Attributes inherited from stir::ProjData | |
shared_ptr< const ProjDataInfo > | proj_data_info_sptr |
Protected Attributes inherited from stir::ExamData | |
shared_ptr< const ExamInfo > | exam_info_sptr |
A class which reads/writes projection data from/to a (binary) stream, but creates the corresponding Interfile header.
stir::ProjDataInterfile::ProjDataInterfile | ( | shared_ptr< const ExamInfo > const & | exam_info_sptr, |
shared_ptr< const ProjDataInfo > const & | proj_data_info_ptr, | ||
const std::string & | filename, | ||
const std::ios::openmode | , | ||
const std::vector< int > & | segment_sequence_in_stream, | ||
StorageOrder | o = Segment_View_AxialPos_TangPos , |
||
NumericType | data_type = NumericType::FLOAT , |
||
ByteOrder | byte_order = ByteOrder::native , |
||
float | scale_factor = 1 |
||
) |
constructor taking all necessary parameters
filename | The name to use for the files. See below. |
segment_sequence_in_stream | has to be set according to the order in which the segments will occur in the stream. segment_sequence_in_stream[i] is the segment number of the i-th segment in the stream. |
stir::ProjDataInterfile::ProjDataInterfile | ( | shared_ptr< const ExamInfo > const & | exam_info_sptr, |
shared_ptr< const ProjDataInfo > const & | proj_data_info_ptr, | ||
const std::string & | filename, | ||
const std::ios::openmode | open_mode = std::ios::out , |
||
StorageOrder | o = Segment_View_AxialPos_TangPos , |
||
NumericType | data_type = NumericType::FLOAT , |
||
ByteOrder | byte_order = ByteOrder::native , |
||
float | scale_factor = 1 |
||
) |
as above, but with a default value for segment_sequence_in_stream
The default value for segment_sequence_in_stream is a vector with values min_segment_num, min_segment_num+1, ..., max_segment_num