STIR  6.2.0
Namespaces | Functions

Implementation of routines which convert CTI things into our building blocks and vice versa. More...

#include "stir/IO/interfile.h"
#include "stir/ExamInfo.h"
#include "stir/Sinogram.h"
#include "stir/ProjDataFromStream.h"
#include "stir/ProjDataInfo.h"
#include "stir/IndexRange3D.h"
#include "stir/CartesianCoordinate3D.h"
#include "stir/VoxelsOnCartesianGrid.h"
#include "stir/ByteOrder.h"
#include "stir/ProjData.h"
#include "stir/ProjDataInfoCylindricalArcCorr.h"
#include "stir/convert_array.h"
#include "stir/IndexRange2D.h"
#include "stir/utilities.h"
#include "stir/warning.h"
#include "stir/error.h"
#include "stir/Scanner.h"
#include "stir/IO/ecat6_utils.h"
#include "stir/IO/stir_ecat6.h"
#include "stir/IO/stir_ecat7.h"
#include "boost/cstdint.hpp"
#include "boost/static_assert.hpp"
#include "boost/scoped_array.hpp"
#include <iostream>
#include <fstream>
#include <algorithm>

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::ecat6
 Namespace for the ECAT6 IO part of the STIR library (and some/most of its applications)
 

Functions

bool stir::ecat::ecat6::is_ECAT6_file (const std::string &filename)
 checks if the file is in ECAT6 formatAs ECAT6 doesn't have a 'magic number' this check is somewhat heuristic. Checks are only on the main header. Current checks are: More...
 
bool stir::ecat::ecat6::is_ECAT6_image_file (const std::string &filename)
 checks if the file is in ECAT6 format and if the file contains images
 
bool stir::ecat::ecat6::is_ECAT6_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::ecat6::is_ECAT6_attenuation_file (const std::string &filename)
 checks if the file is in ECAT6 format and if the file contains attenuation correction factors
 
Scanner * stir::ecat::ecat6::find_scanner_from_ECAT6_Main_header (const ECAT6_Main_header &mhead)
 determine scanner type from the ECAT6_Main_header More...
 
void stir::ecat::ecat6::make_ECAT6_Main_header (ECAT6_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::ecat6::make_ECAT6_Main_header (ECAT6_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...
 
void stir::ecat::ecat6::make_ECAT6_Main_header (ECAT6_Main_header &mhead, const std::string &orig_name, ProjDataInfo const &proj_data_info)
 Fill in most of the main header given an orig_name and a proj_data_info. More...
 
VoxelsOnCartesianGrid< float > * stir::ecat::ecat6::ECAT6_to_VoxelsOnCartesianGrid (const int frame_num, const int gate_num, const int data_num, const int bed_num, FILE *cti_fptr, const ECAT6_Main_header &mhead)
 
void stir::ecat::ecat6::ECAT6_to_PDFS (const int frame_num, const int gate_num, const int data_num, const int bed_num, int max_ring_diff, bool arccorrected, const std::string &output_file_name, FILE *cti_fptr, const ECAT6_Main_header &mhead)
 
Succeeded stir::ecat::ecat6::DiscretisedDensity_to_ECAT6 (FILE *fptr, DiscretisedDensity< 3, float > const &density, const ECAT6_Main_header &mhead, 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 ECAT6 file. More...
 
Succeeded stir::ecat::ecat6::DiscretisedDensity_to_ECAT6 (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 ECAT6 image file and write the data in there. More...
 
Succeeded stir::ecat::ecat6::ProjData_to_ECAT6 (FILE *fptr, ProjData const &proj_data, const ECAT6_Main_header &mhead, const int frame_num=1, const int gate_num=1, const int data_num=0, const int bed_num=0, const bool write_2D_sinograms=false)
 Write an (extra) set of sinograms to an existing ECAT6 file. More...
 
Succeeded stir::ecat::ecat6::ProjData_to_ECAT6 (ProjData const &proj_data, 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_2D_sinograms=false)
 Create a new ECAT6 sinogram file and write the data in there. More...
 

Detailed Description

Implementation of routines which convert CTI things into our building blocks and vice versa.

Author
Kris Thielemans
PARAPET project