STIR
6.2.0
|
Implementation of routines which convert ECAT7 things into our building blocks and vice versa. More...
#include "stir/ProjDataInfo.h"
#include "stir/ProjDataFromStream.h"
#include "stir/ExamInfo.h"
#include "stir/TimeFrameDefinitions.h"
#include "stir/PatientPosition.h"
#include "stir/ImagingModality.h"
#include "stir/IO/interfile.h"
#include "stir/utilities.h"
#include "stir/NumericInfo.h"
#include "stir/CartesianCoordinate3D.h"
#include "stir/Sinogram.h"
#include "stir/IndexRange3D.h"
#include "stir/VoxelsOnCartesianGrid.h"
#include "stir/ByteOrder.h"
#include "stir/ProjData.h"
#include "stir/ProjDataInfoCylindricalNoArcCorr.h"
#include "stir/ProjDataInfoCylindricalArcCorr.h"
#include "stir/SegmentByView.h"
#include "stir/IndexRange2D.h"
#include "stir/Scanner.h"
#include "stir/Bin.h"
#include "stir/Succeeded.h"
#include "stir/convert_array.h"
#include "stir/IO/stir_ecat7.h"
#include "stir/IO/write_data.h"
#include "stir/IO/read_data.h"
#include "stir/unique_ptr.h"
#include "stir/warning.h"
#include "stir/error.h"
#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include <memory>
#include <boost/cstdint.hpp>
Namespaces | |
stir | |
Namespace for the STIR library (and some/most of its applications) | |
stir::ecat | |
Namespace for the ECAT IO part of the STIR library (and some/most of its applications) | |
stir::ecat::ecat7 | |
Namespace for the ECAT7 IO part of the STIR library (and some/most of its applications) | |
Functions | |
Succeeded | stir::ecat::ecat7::read_ECAT7_main_header (Main_header &mhead, const std::string &filename) |
read an ECAT7 main header from a file | |
bool | stir::ecat::ecat7::is_ECAT7_file (const std::string &filename) |
checks if the file is in ECAT7 formatThis partly relies on the implementation of matrix_open in the LLN matrix library. Additional checks are made on the main header. Current checks are: More... | |
bool | stir::ecat::ecat7::is_ECAT7_image_file (const std::string &filename) |
checks if the file is in ECAT6 format and if the file contains images | |
bool | stir::ecat::ecat7::is_ECAT7_emission_file (const std::string &filename) |
checks if the file is in ECAT6 format and if the file contains emission sinograms (or blank/transmision) | |
bool | stir::ecat::ecat7::is_ECAT7_attenuation_file (const std::string &filename) |
checks if the file is in ECAT6 format and if the file contains attenuation correction factors | |
void | stir::ecat::ecat7::find_scanner (shared_ptr< Scanner > &scanner_ptr, const Main_header &mhead) |
determine scanner type from the main_header More... | |
short | stir::ecat::ecat7::find_ECAT_data_type (const NumericType &type, const ByteOrder &byte_order) |
shared_ptr< ExamInfo > | stir::ecat::ecat7::read_ECAT7_exam_info (MatrixFile *mptr) |
read ExamInfo from an ECAT7 MatrixFile object More... | |
shared_ptr< ExamInfo > | stir::ecat::ecat7::read_ECAT7_exam_info (const std::string &filename) |
read ExamInfo from an ECAT7 file More... | |
void | stir::ecat::ecat7::make_ECAT7_main_header (Main_header &, const Scanner &, const std::string &orig_name, ExamInfo const &exam_info) |
Fill in most of the main header given a Scanner object and orig_name. | |
void | stir::ecat::ecat7::make_ECAT7_main_header (Main_header &mhead, Scanner const &scanner, const std::string &orig_name, DiscretisedDensity< 3, float > const &density) |
Fill in most of the main header given a Scanner object and orig_name and an image. More... | |
NumericType | stir::ecat::ecat7::make_ECAT7_main_header (Main_header &mhead, const std::string &orig_name, ExamInfo const &exam_info, ProjDataInfo const &proj_data_info, const bool write_as_attenuation=false, NumericType output_type=NumericType::FLOAT) |
Fill in most of the main header given an orig_name and a proj_data_info. More... | |
void | stir::ecat::ecat7::scan_subheader_zero_fill (Scan3D_subheader &shead) |
void | stir::ecat::ecat7::scan_subheader_zero_fill (Attn_subheader &shead) |
void | stir::ecat::ecat7::img_subheader_zero_fill (Image_subheader &ihead) |
void | stir::ecat::ecat7::make_subheader_for_ECAT7 (Attn_subheader &shead, const Main_header &mhead, const ProjDataInfo &proj_data_info) |
Fill in most of the subheader. More... | |
void | stir::ecat::ecat7::make_subheader_for_ECAT7 (Scan3D_subheader &shead, const Main_header &mhead, const ProjDataInfo &proj_data_info) |
Fill in most of the subheader. More... | |
ProjDataFromStream * | stir::ecat::ecat7::make_pdfs_from_matrix (MatrixFile *const mptr, MatrixData *const matrix, const shared_ptr< iostream > &stream_ptr) |
VoxelsOnCartesianGrid< float > * | stir::ecat::ecat7::ECAT7_to_VoxelsOnCartesianGrid (const std::string &ECAT7_filename, const int frame_num, const int gate_num, const int data_num, const int bed_num) |
ProjDataFromStream * | stir::ecat::ecat7::ECAT7_to_PDFS (const std::string &ECAT7_filename, const int frame_num, const int gate_num, const int data_num, const int bed_num) |
Succeeded | stir::ecat::ecat7::write_basic_interfile_header_for_ECAT7 (std::string &interfile_header_name, const std::string &ECAT7_filename, const int frame_num, const int gate_num, const int data_num, const int bed_num) |
Writes an Interfile header that 'points' into an ECAT7 file. More... | |
Succeeded | stir::ecat::ecat7::DiscretisedDensity_to_ECAT7 (MatrixFile *mptr, DiscretisedDensity< 3, float > const &density, const int frame_num=1, const int gate_num=1, const int data_num=0, const int bed_num=0) |
Write an (extra) image to an existing ECAT7 file. More... | |
Succeeded | stir::ecat::ecat7::DiscretisedDensity_to_ECAT7 (DiscretisedDensity< 3, float > const &density, std::string const &cti_name, std::string const &orig_name, const Scanner &scanner, const int frame_num=1, const int gate_num=1, const int data_num=0, const int bed_num=0) |
Create a new ECAT7 image file and write the data in there. | |
Succeeded | stir::ecat::ecat7::update_ECAT7_subheader (MatrixFile *mptr, Scan_subheader &shead, const MatDir &matdir) |
Succeeded | stir::ecat::ecat7::update_ECAT7_subheader (MatrixFile *mptr, Norm_subheader &shead, const MatDir &matdir) |
Succeeded | stir::ecat::ecat7::update_ECAT7_subheader (MatrixFile *mptr, Image_subheader &shead, const MatDir &matdir) |
Succeeded | stir::ecat::ecat7::update_ECAT7_subheader (MatrixFile *mptr, Attn_subheader &shead, const MatDir &matdir) |
Succeeded | stir::ecat::ecat7::update_ECAT7_subheader (MatrixFile *mptr, Scan3D_subheader &shead, const MatDir &matdir) |
template<class SUBHEADER_TYPE > | |
Succeeded | stir::ecat::ecat7::update_ECAT7_subheader (MatrixFile *mptr, SUBHEADER_TYPE &shead, const int frame_num, const int gate_num, const int data_num, const int bed_num) |
Succeeded | stir::ecat::ecat7::ProjData_to_ECAT7 (MatrixFile *mptr, ProjData const &proj_data, const int frame_num=1, const int gate_num=1, const int data_num=0, const int bed_num=0, float scale_factor=0.0F) |
Write an (extra) set of sinograms to an existing ECAT7 file. More... | |
Succeeded | stir::ecat::ecat7::ProjData_to_ECAT7 (ProjData const &proj_data, NumericType output_type, std::string const &cti_name, std::string const &orig_name, const int frame_num=1, const int gate_num=1, const int data_num=0, const int bed_num=0, const bool write_as_attenuation=false, float scale_factor=0.0F) |
Create a new ECAT7 sinogram file and write the data in there. More... | |
Implementation of routines which convert ECAT7 things into our building blocks and vice versa.