9 #ifndef OINTERFILEIO_HH
10 #define OINTERFILEIO_HH 1
34 #define INTF_BIG_ENDIAN 0
36 #define INTF_LITTLE_ENDIAN 1
47 #define INTF_IMG_STATIC 0
49 #define INTF_IMG_DYNAMIC 1
51 #define INTF_IMG_PET 2
53 #define INTF_IMG_SPECT 3
55 #define INTF_IMG_GATED 4
57 #define INTF_IMG_GSPECT 5
59 #define INTF_IMG_UNKNOWN 6
75 #define INTF_LERP_DISABLED false
77 #define INTF_LERP_ENABLED true
92 #define UINT32_str "unsigned integer"
94 #define INT32_str "signed integer"
96 #define FLT32_str "short float"
97 #define FLT32_str2 "float"
99 #define FLT64_str "long float"
101 #define ASCII_str "ASCII"
113 #define INTF_SUPINE_HEADIN_TRANSAXIAL 0
115 #define INTF_SUPINE_HEADIN_SAGITTAL 1
117 #define INTF_SUPINE_HEADIN_CORONAL 2
119 #define INTF_SUPINE_FEETIN_TRANSAXIAL 3
121 #define INTF_SUPINE_FEETIN_SAGITTAL 4
123 #define INTF_SUPINE_FEETIN_CORONAL 5
125 #define INTF_PRONE_HEADIN_TRANSAXIAL 6
127 #define INTF_PRONE_HEADIN_SAGITTAL 7
129 #define INTF_PRONE_HEADIN_CORONAL 8
131 #define INTF_PRONE_FEETIN_TRANSAXIAL 9
133 #define INTF_PRONE_FEETIN_SAGITTAL 10
135 #define INTF_PRONE_FEETIN_CORONAL 11
149 #define INTF_TRANSVERSE 0
151 #define INTF_CORONAL 1
153 #define INTF_SAGITTAL 2
169 #define INTF_SUPINE 0
185 #define INTF_HEADIN 0
187 #define INTF_FEETIN 1
383 template <
typename T>
int IntfKeyGetValueFromFile(
const string& a_pathToHeader,
const string& a_key, T* ap_return,
int a_nbElts,
int a_mandatoryFlag);
399 template <
typename T>
int IntfKeyGetRecurringValueFromFile(
const string& a_pathToHeader,
const string& a_key, T* ap_return,
int a_nbElts,
int a_mandatoryFlag, uint16_t a_nbOccurrences);
487 FLTNB**** a4p_ImgMatrix,
507 FLTNB** a2p_ImgMatrix,
548 FLTNB* ap_outImgMatrix,
549 FLTNB* ap_inImgMatrix,
574 FLTNB* ap_outImgMatrix,
575 FLTNB* ap_inImgMatrix,
594 const uint32_t ap_iDimVox[3],
const uint32_t ap_oDimVox[3],
595 const FLTNB ap_iSizeVox[3],
const FLTNB ap_oSizeVox[3]);
692 int IntfWriteImage(
const string& a_pathToImg,
FLTNB* ap_outImgMtx, uint32_t a_dim,
int vb);
704 int IntfWriteImage(vector<string> ap_pathToImgs,
FLTNB** a2p_outImgMtx, uint32_t ap_dim[2],
int vb);
716 int IntfWriteImage(vector<string> ap_pathToImgs,
FLTNB**** a4p_outImgMtx, uint32_t ap_dim[4],
int vb);
747 int IntfIsMHD(
string a_pathToFile, vector<string> &ap_lPathToImgs);
997 template <
class Type>
void SwapBytes(Type *ap_type);
This header file is mainly used to declare some macro definitions and all includes needed from the st...
int IntfCheckKeyMatch(Intf_key a_Key, const string &a_field)
Check if the key matches the string passed in parameter.
Declaration of class oImageDimensionsAndQuantification.
string direction_rotation
int IntfWriteData(ofstream *ap_oFile, FLTNB *ap_outImgMatrix, int a_nbVox, int vb)
Write the content of the image matrix in the file pointed by ofstream.
int IntfKeyGetRecurringValueFromFile(const string &a_pathToHeader, const string &a_key, T *ap_return, int a_nbElts, int a_mandatoryFlag, uint16_t a_nbOccurrences)
string IntfKeyGetModalityStr(int a_modalityIdx)
Convert the integer provided in parameter to the string related to the corresponding modality as de...
int IntfReadData(Intf_fields a_IF, ifstream *ap_iFile, FLTNB *ap_outImgMatrix, FLTNB *ap_inImgMatrix, uint32_t *a_offset, int a_nbVox, int vb, T *bytes)
Templated function which read an image voxel by voxel and store it in the ap_outImgMtx image matrix...
string IntfKeyGetEndianStr(int a_val)
return the endian string corresponding to the value passed in parameter (see module INTF_ENDIANNESS)...
void IntfKeyPrintFields(Intf_fields a_IF)
Print all the keys of the Intf_fields structure passed in parameter, as well as their values for debu...
int IntfKeyGetValueFromFile(const string &a_pathToHeader, const string &a_key, T *ap_return, int a_nbElts, int a_mandatoryFlag)
Look for "a_nbElts" elts in the "a_pathToHeader" interfile header matching the "a_keyword" key passed...
int IntfCheckDimensionsConsistency(Intf_fields ImgFields1, Intf_fields ImgFields2)
vector< FLTNB > frame_group_pause
void IntfEraseSpaces(string *input_str)
Erase space, blank characters ((t,r,n)), and '!' before and after the characters in the string passed...
void IntfToLowerCase(string *ap_str)
Set all characters of the string passed in parameter to lower case.
int IntfGetVoxIdxSHTOrientation(Intf_fields a_IF, int a_voxId)
Compute a voxel index corresponding to the default orientation (Sup/Hin/Trans) from the orientation...
int IntfReadHeader(const string &a_pathToHeaderFile, Intf_fields *ap_IntfFields, int vb)
Read an Interfile header.
int IntfIsMHD(string a_pathToFile, vector< string > &ap_lPathToImgs)
Check if the string in argument contains the path to a Interfile metaheader.
int IntfKeyIsArray(Intf_key ap_Key)
Check if the key passed in parameter is an array (contains brackets '{' and '}' ) ...
int IntfWriteImage(const string &a_pathToImg, FLTNB *ap_outImgMtx, uint32_t a_dim, int vb)
Write Interfile raw data whose path is provided in parameter, using image matrix provided in paramete...
int IntfKeyGetInputImgDataType(const string &a_str)
Get the image data type corresponding to the image metadata passed in parameter.
int IntfReadProjectionImage(const string &a_pathToHeaderFile, FLTNB *ap_ImgMatrix, Intf_fields *ap_IF, int vb, bool a_lerpFlag)
Main function which reads a projection Interfile 3D projection image and store its content in the pro...
FLTNB * IntfLoadImageFromScratch(const string &a_pathToHeaderFile, Intf_fields *ap_ImgFields, int vb)
int IntfWriteHeaderImgData(ofstream &ap_ofile, const Intf_fields &ap_IntfF, int vb)
Declaration of class sScannerManager.
int IntfKeyGetArrayNbElts(Intf_key ap_Key)
Return the number of elts in an Interfile array Key.
void IntfKeyInitFields(Intf_fields *ap_IF)
Init the file of an Interfile fields structure passed in parameter to their default values...
vector< FLTNB > image_duration
void IntfAllocInterpImg(FLTNB **a2p_img, Intf_fields a_IF)
Allocate memory for an image matrix to recover an image to interpolate.
int IntfKeyGetPatOrientation(Intf_fields ap_IF)
Get the complete patient orientation from an Intf_fields structure according to the values of keys 's...
Interfile key elements. This structure is used to recover and process the elements of an Interfile ...
uint16_t ctr_to_ctr_separation
int IntfKeyGetArrayElts(Intf_key a_Key, T *ap_return)
Get all the elements in an array key in a templated array passed in parameter. It assumes the retur...
int IntfGetPixelTypeAndReadData(Intf_fields a_IF, ifstream *ap_iFile, FLTNB *ap_outImgMatrix, FLTNB *ap_inImgMatrix, uint32_t *a_offset, int a_nbVox, int vb)
The purpose of this function is to call the templated ReadData() function with the data type correspo...
int IntfWriteProjFile(const string &a_pathToImg, FLTNB **a2p_ImgMatrix, oImageDimensionsAndQuantification *ap_ID, Intf_fields a_Imgfields, int vb)
Function dedicated to Interfile image writing for projected data.
int IntfWriteImgDynCoeffFile(const string &a_pathToImg, FLTNB **a2p_ImgMatrix, oImageDimensionsAndQuantification *ap_ID, int a_nbParImgs, int vb)
Function dedicated to Interfile image writing for dynamic coefficients images.
Interfile fields. This structure contains all the Interfile keys currently managed by CASToR Decl...
FLTNB multiple_bed_displacement
Declaration of class sOutputManager.
uint16_t nb_detector_heads
int IntfWriteMHD(const string &a_pathToMhd, const vector< string > &ap_lPathToImgs, Intf_fields a_IntfF, oImageDimensionsAndQuantification *ap_ID, int vb)
Write an Interfile meta header at the path provided in parameter, using the field stack provided in p...
This class is designed to manage all dimensions and quantification related stuff. ...
This file is used for all kind of different functions designed for options parsing and ASCII file rea...
void IntfKeySetFieldsOutput(Intf_fields *ap_IF, oImageDimensionsAndQuantification *ap_ID)
Init the keys of the Interfile header of an image to be written on disk.
int IntfRecoverKey(Intf_key *ap_Key, const string &a_line)
Process the line passed in parameter and write the key information in the ap_Key Intf_key member stru...
uint32_t nb_energy_windows
int IntfKeyGetMaxArrayKey(Intf_key ap_Key)
Return the maximum value from an array key (key value contains brackets '{,,}' )
int IntfKeyGetOutputImgDataType(oImageDimensionsAndQuantification *ap_ID)
uint32_t nb_img_in_frame_groups
int IntfWriteHeaderMainData(const string &a_path, const Intf_fields &ap_IntfF, int vb)
void SwapBytes(Type *ap_type)
Use std::reverse to swap the bits of a variable of any type.
int IntfReadImgDynCoeffFile(const string &a_pathToHeaderFile, FLTNB **a2p_ImgMatrix, oImageDimensionsAndQuantification *ap_ID, int a_nbFbases, int vb, bool a_lerpFlag)
Function dedicated to Interfile image reading for dynamic coefficients images.
string IntfKeyGetPixTypeStr()
Return the string corresponding to the nb of bytes in the type FLTNB.
int IntfReadImage(const string &a_pathToHeaderFile, FLTNB *ap_ImgMatrix, oImageDimensionsAndQuantification *ap_ID, int vb, bool a_lerpFlag)
Main function dedicated to Interfile 3D image loading.
int IntfWriteImgFile(const string &a_pathToImg, FLTNB *ap_ImgMatrix, const Intf_fields &ap_IntfF, int vb)
Main function dedicated to Interfile 3D image writing. Recover image information from a provided In...
void GetUserEndianness()
Check user/host computer endianness and write it to the global variable User_Endianness.
int ImageInterpolation(FLTNB *ap_iImg, FLTNB *ap_oImg, const uint32_t ap_iDimVox[3], const uint32_t ap_oDimVox[3], const FLTNB ap_iSizeVox[3], const FLTNB ap_oSizeVox[3])
Trilinear interpolation.
bool is_mtx_size_different
string originating_system
int IntfCheckConsistency(Intf_fields *ap_IF, oImageDimensionsAndQuantification *ap_ID, int vb, int a_lerpFlag)
Check if the mandatory fields have been initialize in the ap_IF structure, and check consistencies wi...
int IntfWriteImageFromIntfFields(const string &a_pathToImg, FLTNB *ap_ImgMatrix, Intf_fields Img_fields, int vb)