67 if (
m_verbose>=3)
Cout(
"oImageSpace::InstantiateImage() -> Initialize to 0."<< endl);
106 if (
m_verbose>=3)
Cout(
"oImageSpace::DeallocateImage() -> Free memory"<< endl);
136 if (
m_verbose>=3)
Cout(
"oImageSpace::InstantiateForwardImage() -> Initialize to 0."<< endl);
175 if (
m_verbose>=3)
Cout(
"oImageSpace::DeallocateForwardImage() -> Free memory"<< endl);
205 if (
m_verbose>=3)
Cout(
"oImageSpace::InstantiateBackwardImageFromDynamicBasis() -> Initialize to 0."<< endl);
253 if (
m_verbose>=3)
Cout(
"oImageSpace::DeallocateBackwardImageFromDynamicBasis() -> Free memory" << endl);
293 if (
m_verbose>=3)
Cout(
"oImageSpace::InstantiateBackwardImageFromDynamicBins() -> Initialize to 0."<< endl);
332 if (
m_verbose>=3)
Cout(
"oImageSpace::DeallocateBackwardImageFromDynamicBins() -> Free memory"<< endl);
378 if (!a_pathToSensitivityImage.empty())
381 if (
m_verbose>=3)
Cout(
"oImageSpace::InstantiateSensitivityImage() -> Will be loaded from '" << a_pathToSensitivityImage <<
"'" << endl);
412 if (
m_verbose>=3)
Cout(
"oImageSpace::InstantiateSensitivityImage() -> For all threads"<< endl);
450 if (
m_verbose>=3)
Cout(
"oImageSpace::DeallocateSensitivityImage() -> Free memory"<< endl);
513 if (!a_pathToImage.empty())
516 if (
m_verbose>=3)
Cout(
"oImageSpace::InitAnatomicalImage() -> From file '" << a_pathToImage <<
"'"<< endl);
518 ifstream image_file(a_pathToImage.c_str(), ios::in|ios::binary);
519 if (!image_file.is_open())
521 Cerr(
"***** oImageSpace::InitAnatomicalImage() -> Input file '" << a_pathToImage <<
"' is missing or corrupted !" << endl);
544 Cerr(
"***** oImageSpace::InitAnatomicalImage() -> Error reading interfile image '" << a_pathToImage <<
"' !" << endl);
569 if (
m_verbose>=3)
Cout(
"oImageSpace::DeallocateAnatomicalImage() -> Free memory" << endl);
596 if (!a_pathToImage.empty())
599 if (
m_verbose>=3)
Cout(
"oImageSpace::InitMaskImage() -> From file '" << a_pathToImage <<
"'"<< endl);
601 ifstream image_file(a_pathToImage.c_str(), ios::in|ios::binary);
602 if (!image_file.is_open())
604 Cerr(
"***** oImageSpace::InitMaskImage() -> Input file '" << a_pathToImage <<
"' is missing or corrupted !" << endl);
615 Cerr(
"***** oImageSpace::InitMaskImage() -> Error reading interfile image '" << a_pathToImage <<
"' !" << endl);
640 if (
m_verbose>=3)
Cout(
"oImageSpace::DeallocateMaskImage() -> Free memory" << endl);
663 if(
m_verbose>=3)
Cout(
"oImageSpace::InstantiateOutputImage ..."<< endl);
710 if(
m_verbose>=3)
Cout(
"oImageSpace::DeallocateOutputImage ..."<< endl);
757 if(
m_verbose>=3)
Cout(
"oImageSpace::InstantiateBwdImageForDeformation ..."<< endl);
796 if(
m_verbose>=3)
Cout(
"oImageSpace::DeallocateBwdImageForDeformation ..."<< endl);
832 if(
m_verbose>=3)
Cout(
"oImageSpace::InstantiateSensImageForDeformation ..."<< endl);
861 if(
m_verbose>=3)
Cout(
"oImageSpace::DeallocateSensImageForDeformation ..."<< endl);
891 if(
m_verbose>=3)
Cout(
"oImageSpace::InstantiateVisitedVoxelsImage ..."<< endl);
911 if(
m_verbose>=3)
Cout(
"oImageSpace::InstantiateVisitedVoxelsImage ..."<< endl);
930 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_DeallocateAttenuationImage ..."<< endl);
968 if(
m_verbose>=3)
Cout(
"oImageSpace::InitAttenuationImage ..."<< endl);
976 if (!a_pathToAtnImage.empty())
998 Cerr(
"***** oImageSpace::LMS_InitAttenuationImage()-> Error while trying to read file at " << a_pathToAtnImage << endl);
1022 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_LoadAttenuationImage ..."<< endl);
1024 ifstream image_file(a_pathToImage.c_str(), ios::in|ios::binary);
1026 if(!image_file.is_open())
1028 Cerr(
"***** oImageSpace::LMS_LoadAttenuationImage()-> Error reading file !" << endl);
1036 Cerr(
"***** oImageSpace::PROJ_LoadAttenuationImage()-> Error reading Interfile : " << a_pathToImage <<
" !" << endl);
1068 if (!a_pathToInitialImage.empty())
1072 Cerr(
"***** oImageSpace::InitImage()-> Error while trying to read file at " << a_pathToInitialImage << endl);
1104 if(
m_verbose>=3)
Cout(
"oImageSpace::LoadInitialImage ..."<< endl);
1106 ifstream image_file;
1107 image_file.open(a_pathToImage.c_str(), ios::in | ios::binary);
1109 if(!image_file.is_open())
1111 Cerr(
"***** oImageSpace::LoadInitialImage()-> Error reading file!" << endl);
1120 Cerr(
"***** oImageSpace::LoadInitialImage()-> Error reading Interfile : " << a_pathToImage <<
" !" << endl);
1142 if(
m_verbose>=3)
Cout(
"oImageSpace::InitBackwardImage ..." << endl);
1148 #pragma omp parallel for private(th) schedule(static, 1)
1163 #pragma omp parallel for private(th) schedule(static, 1)
1194 if(
m_verbose>=3)
Cout(
"oImageSpace::InitSensitivityImage ..."<< endl);
1201 if (!a_pathToSensitivityImage.empty())
1204 ifstream input_file;
1205 input_file.open(a_pathToSensitivityImage.c_str(), ios::binary | ios::in);
1207 if (input_file.is_open())
1212 Cerr(
"***** oImageSpace::InitSensitivityImage()-> Error reading Interfile : " << a_pathToSensitivityImage <<
" !" << endl);
1220 Cerr(
"***** oImageSpace::InitSensitivityImage() -> Input sensitivity file '" << a_pathToSensitivityImage <<
"' is missing or corrupted !" << endl);
1264 if(
m_verbose>=3)
Cout(
"oDeformationManager::InitBwdImageForDeformation ..." << endl);
1288 if(
m_verbose>=3)
Cout(
"oImageSpace::InitSensImageForDeformation ..."<< endl);
1315 if(
m_verbose>=3)
Cout(
"oImageSpace::ComputeOutputImage ..."<< endl);
1328 #pragma omp parallel for private(v) schedule(guided)
1336 if (time_basis_coef==0.)
continue;
1342 if (resp_basis_coef==0.)
continue;
1348 if (card_basis_coef==0.)
continue;
1350 FLTNB global_basis_coeff = time_basis_coef * resp_basis_coef * card_basis_coef;
1352 #pragma omp parallel for private(v) schedule(guided)
1381 Cout(
"oImageSpace::ApplyOutputFlip() -> Flip image" << endl);
1415 INTNB indice_1 = base_z1 + base_y + x;
1416 INTNB indice_2 = base_z2 + base_y + x;
1445 INTNB indice_1 = base_z + base_y1 + x;
1446 INTNB indice_2 = base_z + base_y2 + x;
1474 INTNB indice_1 = base_z + base_y + x_1;
1475 INTNB indice_2 = base_z + base_y + x_2;
1505 Cout(
"oImageSpace::ApplyOutputFOVMasking() -> Mask output image" << endl);
1520 squared_radius_x *= squared_radius_x;
1523 squared_radius_y *= squared_radius_y;
1530 #pragma omp parallel for private(x) schedule(guided)
1535 squared_distance_x *= squared_distance_x;
1541 squared_distance_y *= squared_distance_y;
1543 if ( squared_distance_x/squared_radius_x + squared_distance_y/squared_radius_y <= 1. )
continue;
1577 for (
int z=0; z<removed_slices; z++)
1584 INTNB index = base_z_first + i;
1592 INTNB index = base_z_last + i;
1618 if(
m_verbose>=3)
Cout(
"oImageSpace::SaveOutputImage ..."<< endl);
1631 if (a_iteration >= 0)
1633 stringstream ss; ss << a_iteration + 1;
1634 path_to_img.append(
"_it").append(ss.str());
1640 stringstream ss; ss << a_subset + 1;
1641 path_to_img.append(
"_ss").append(ss.str());
1648 Cerr(
"***** oImageSpace::SaveOutputImage()-> Error writing Interfile of output image !" << endl);
1673 if(
m_verbose>=3)
Cout(
"oImageSpace::SaveDebugImage ..."<< endl);
1676 ofstream output_file;
1677 output_file.open(a_name.c_str(), ios::binary | ios::out);
1686 output_file.close();
1705 if(
m_verbose>=3)
Cout(
"oImageSpace::PrepareForwardImage ..."<< endl);
1730 #if defined(CASTOR_OMP) || defined(CASTOR_MPI)
1731 if (
m_verbose>=3)
Cout(
"oImageSpace::Reduce() -> Merge parallel results" << endl);
1747 int alternative = 2;
1762 else if (alternative==2)
1765 #pragma omp parallel for private(v) schedule(guided)
1788 else if (alternative==2)
1791 #pragma omp parallel for private(v) schedule(guided)
1847 if(
m_verbose>=3)
Cout(
"oImageSpace::CleanNeverVisitedVoxels ..."<< endl);
1850 #pragma omp parallel for private(v) schedule(guided)
1888 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_InstantiateImage ..."<< endl);
1920 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_DeallocateImage ..."<< endl);
1951 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_InstantiateForwardImage ..."<< endl);
1985 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_DeallocateForwardImage ..."<< endl);
2017 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_InstantiateSensitivityImage ..."<< endl);
2047 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_DeallocateSensitivityImage ..."<< endl);
2081 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_CopyAtnToImage ..."<< endl);
2114 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_CopyAtnToForwardImage ..."<< endl);
2145 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_CopyBackwardToSensitivity ..."<< endl);
2165 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_PrepareForwardImage ..."<< endl);
2184 #if defined(CASTOR_OMP) || defined(CASTOR_MPI)
2185 if (
m_verbose>=3)
Cout(
"oImageSpace::ReduceBackwardImage() -> Merge parallel results" << endl);
2233 if(
m_verbose>=3)
Cout(
"oImageSpace::LMS_SaveSensitivityImage ..."<< endl);
2244 nb_reco_card_images = 1;
2263 for (
int cg=0 ; cg<nb_reco_card_images ; cg++)
2273 Cerr(
"***** oImageSpace::LMS_SaveSensitivityImage()-> Error writing Sensitivity image !" << endl);
2295 if(
m_verbose>=3)
Cout(
"oImageSpace::SaveSensitivityImage ..."<< endl);
2299 Cerr(
"***** oImageSpace::SaveSensitivityImage()-> Error writing Interfile of output image !" << endl);
2324 if(
m_verbose>=3)
Cout(
"oImageSpace::PROJ_InstantiateProjectionImage ..."<< endl);
2328 for(
int p=0 ; p<a_nbProjs ; p++)
2331 for(
int px=0 ; px<a_nbPixels ; px++)
2352 if(
m_verbose>=3)
Cout(
"oImageSpace::PROJ_DeallocateProjectionImage ..."<< endl);
2354 for(
int p=0 ; p<a_nbProjs ; p++)
2378 if(
m_verbose>=3)
Cout(
"oImageSpace::PROJ_InitImage ..."<< endl);
2380 if (!a_pathToInitialImage.empty())
2384 Cerr(
"***** oImageSpace::PROJ_InitImage()-> Error while trying to read file at " << a_pathToInitialImage << endl);
2391 Cerr(
"***** oImageSpace::PROJ_InitImage()-> No projected image provided ! " << endl);
2413 if(
m_verbose>=3)
Cout(
"oImageSpace::PROJ_LoadInitialImage ..."<< endl);
2415 ifstream image_file;
2416 image_file.open(a_pathToImage.c_str(), ios::in | ios::binary);
2418 if(!image_file.is_open())
2420 Cerr(
"***** oImageSpace::PROJ_LoadInitialImage()-> Error reading file !" << endl);
2428 Cerr(
"***** oImageSpace::PROJ_LoadInitialImage()-> Error reading Interfile : " << a_pathToImage <<
" !" << endl);
2454 if(
m_verbose>=3)
Cout(
"oImageSpace::PROJ_SaveProjectionImage ..."<< endl);
2456 string img_name =
"_ProjectionImage";
2473 uint16_t nb_projs, nb_heads;
2474 uint16_t nb_bins[2];
2489 Img_fields.
mtx_size[0] = nb_bins[0];
2490 Img_fields.
mtx_size[1] = nb_bins[1];
2491 Img_fields.
vox_size[0] = pix_size[0];
2492 Img_fields.
vox_size[1] = pix_size[1];
2506 string angles_str =
"{";
2507 string radius_str =
"{";
2510 bool has_single_radius =
true;
2512 for(uint16_t p=0 ; p<nb_projs ; p++)
2514 stringstream ss_a, ss_r;
2516 ss_a << p_angles[p];
2517 angles_str.append(ss_a.str());
2518 (p<nb_projs-1) ? angles_str.append(
",") : angles_str.append(
"}");
2521 ss_r << p_radius[p];
2522 radius_str.append(ss_r.str());
2523 (p<nb_projs-1) ? radius_str.append(
",") : radius_str.append(
"}");
2524 if(p_radius[p] != p_radius[0])
2525 has_single_radius =
false;
2532 angles_str.append(
"\n");
2533 radius_str.append(
"\n");
2538 if(has_single_radius)
2542 radius_str = ss.str();
2546 Img_fields.
radius = radius_str;
2552 img_file_name.append(
"_ProjImage");
2556 Cerr(
"***** oImageSpace::PROJ_SaveProjectionImage()-> Error writing Interfile of output image !" << endl);
#define INTF_LERP_DISABLED
FLTNB **** m4p_forwardImage
void LMS_InstantiateImage()
Allocate memory for the main image matrices (for list-mode sensitivity generation) ...
void DeallocateBwdImageForDeformation()
Free memory for the buffer backward image required for image-based deformation.
static sScannerManager * GetInstance()
Instanciate the singleton object and Initialize member variables if not already done, return a pointer to this object otherwise.
FLTNB ** m2p_projectionImage
string direction_rotation
void DeallocateBackwardImageFromDynamicBasis()
Free memory for the backward image matrices.
int GetNbCardBasisFunctions()
Get the number of cardiac basis functions.
#define INTF_LERP_ENABLED
int InitMaskImage(const string &a_pathToImage)
Memory allocation and initialization for the mask image.
int PROJ_InitImage(const string &a_pathToInitialImage)
Load the initial image for the analytical projection.
FLTNB GetVoxSizeX()
Get the voxel's size along the X axis, in mm.
void DeallocateImage()
Free memory for the main image matrices.
void InitSensImageForDeformation()
Initialize the buffer sensitivity image dedicated to image-based deformation, if required (histogram ...
int LMS_SaveSensitivityImage(const string &a_pathToSensitivityImage, oDeformationManager *ap_DeformationManager)
Call the interfile function to write the sensitivity image on disk.
void LMS_PrepareForwardImage()
Copy current image in forward-image buffer (for list-mode sensitivity generation) ...
FLTNB GetFOVOutPercent()
Get the percentage of transaxial unmasked FOV.
void Reduce()
Merge parallel results into the matrix of the backward image matrix of the first thread. Also for MPI.
FLTNB GetRespBasisCoefficient(int a_respBasisFunction, int a_respGate)
Get the respiratory basis coefficients for the provided respiratory gate and basis function...
int ApplyOutputFOVMasking()
Mask the outside of the transaxial FOV based on the m_fovOutPercent.
~oImageSpace()
oImageSpace destructor.
void DeallocateSensitivityImage()
Free memory for the sensitivity image matrices.
void InstantiateImage()
Allocate memory for the main image matrices.
int PROJ_SaveProjectionImage()
Save an image of the projected data (for analytic projection)
void InstantiateBackwardImageFromDynamicBasis(int a_nbBackwardImages)
Allocate memory for the backward image matrices and set the number of backward images for the whole c...
FLTNB **** m4p_anatomicalImage
int GetNbTimeBasisFunctions()
Get the number of time basis functions.
void LMS_InstantiateForwardImage()
Allocate memory for the forward image matrices (for list-mode sensitivity generation) ...
void InstantiateSensitivityImage(const string &a_pathToSensitivityImage)
Allocate the sensitivity image matrices.
static sOutputManager * GetInstance()
Instanciate the singleton object and Initialize member variables if not already done, return a pointer to this object otherwise.
oImageDimensionsAndQuantification * mp_ID
void LMS_CopyAtnToImage()
Copy the attenuation image contained in the 'm2p_attenuation' matrix inside the m2p_image matrix...
int InitAttenuationImage(const string &a_pathToAtnImage)
Memory allocation and initialisation for the attenuation image using either :
int InitImage(const string &a_pathToInitialImage, FLTNB a_value)
Initialize the main image, either using:
void DeallocateVisitedVoxelsImage()
Free memory for the image matrix containing binary information regarding which 3D voxels have been vi...
void SaveDebugImage(const string &a_name)
Just a debug function dedicated to write any kind of image on disk in raw format, for debugging purpo...
void DeallocateAnatomicalImage()
Free memory for the anatomical image.
int GetSPECTSpecificParameters(uint16_t *ap_nbOfProjections, uint16_t *ap_nbHeads, uint16_t *ap_nbOfBins, FLTNB *ap_pixSizeXY, FLTNB *&ap_angles, FLTNB *&ap_CORtoDetectorDistance, int *ap_headRotDirection)
Transfer geometric information recovered from the datafile to the scanner object. ...
void DeallocateMaskImage()
Free memory for the mask image.
bool GetRespStaticFlag()
Get the respiratory static flag that says if the reconstruction has only one respiratory gate or not...
int PROJ_LoadInitialImage(const string &a_pathToImage)
Load the initial image for the analytical projection.
FLTNB * mp_visitedVoxelsImage
void PROJ_DeallocateProjectionImage(int a_nbProjs)
Free memory for the projection image for analytical projection.
void PrepareForwardImage()
Copy current image matrix in the forward-image buffer matrix.
FLTNB GetVoxSizeY()
Get the voxel's size along the Y axis, in mm.
const string & GetPathName()
FLTNB ****** m6p_backwardImage
void InitBwdImageForDeformation()
Initialize the buffer backward image dedicated to image-based deformation.
bool GetCardStaticFlag()
Get the cardiac static flag that says if the reconstruction has only one cardiac gate or not...
void InstantiateBwdImageForDeformation()
Memory allocation for the buffer backward image required for image-based deformation.
void InstantiateVisitedVoxelsImage()
Memory allocation and initialization for the image matrix containing binary information regarding whi...
void CleanNeverVisitedVoxels()
Based on the visitedVoxelsImage, clean the never visited voxels in the image. This function must be c...
Singleton class that manages output writing on disk (images, sinograms, etc). It also manages loggi...
int LoadAttenuationImage(const string &a_pathToImage)
Load the attenuation image provided by the user in the m2p_attenuation matrix.
void LMS_DeallocateSensitivityImage()
Free memory for the sensitivity image matrices (for list-mode sensitivity generation) ...
int InitAnatomicalImage(const string &a_pathToAnatomicalImage)
Memory allocation and initialization for the anatomical image matrices.
Singleton class that Instantiate and initialize the scanner object.
int SaveOutputImage(int a_iteration, int a_subset=-1)
Call the interfile function to write output image on disk.
void LMS_DeallocateImage()
Free memory for the main image matrices (for list-mode sensitivity generation)
Declaration of class vOptimizer.
int GetSensNbRespGates()
call the eponym function from the oDynamicDataManager object
void ComputeOutputImage()
int LoadInitialImage(const string &a_pathToImage)
Load the initial image provided by the user in the corresponding matrix.
FLTNB **** m4p_outputImage
INTNB GetNbVoxXY()
Get the number of voxels in a slice.
FLTNB GetTimeBasisCoefficient(int a_timeBasisFunction, int a_timeFrame)
Get the time basis coefficients for the provided frame and basis function.
void InstantiateForwardImage()
Allocate memory for the forward image matrices.
bool GetTimeStaticFlag()
Get the time static flag that says if the reconstruction has only one frame or not.
void PROJ_InstantiateProjectionImage(int a_nbProjs, int a_nbPixels)
Instanciate and initialize projection image for analytical projection.
bool GetFlipOutX()
Get the boolean saying if the output image must be flipped along the X axis.
void ReduceBackwardImage(int a_imageIndex, int a_timeIndex, int a_respIndex, int a_cardIndex)
Merge parallel results into the backward image matrix of the first thread for the specific image / ti...
bool GetFlipOutY()
Get the boolean saying if the output image must be flipped along the Y axis.
const string & GetBaseName()
int ApplyOutputFlip()
Just flip the output image.
void InstantiateBackwardImageFromDynamicBins()
Allocate memory for the backward image matrices and initialize them.
Declaration of class oImageSpace.
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.
void LMS_DeallocateAttenuationImage()
Free memory for the Attenuation image matrices (for analytical projection or list-mode sensitivity ge...
int GetNbCardGates()
Get the number of cardiac gates.
void DeallocateOutputImage()
Free memory for the Image matrices dedicated to output writing on disk.
Interfile fields. This structure contains all the Interfile keys currently managed by CASToR Decl...
FLTNB ***** m5p_defTmpBackwardImage
uint16_t nb_detector_heads
void DeallocateSensImageForDeformation()
int GetNbThreadsForImageComputation()
Get the number of threads used for image operations.
int GetNbTimeFrames()
Get the number of time frames.
INTNB GetNbVoxXYZ()
Get the total number of voxels.
FLTNB **** m4p_defTmpSensitivityImage
int GetNbThreadsForProjection()
Get the number of threads used for projections.
oImageSpace()
oImageSpace constructor. Initialize the member variables to their default values. ...
void IntfKeySetFieldsOutput(Intf_fields *ap_IF, oImageDimensionsAndQuantification *ap_ID)
Init the keys of the Interfile header of an image to be written on disk.
INTNB GetNbVoxX()
Get the number of voxels along the X axis.
INTNB GetNbVoxZ()
Get the number of voxels along the Z axis.
int GetNbRespGates()
Get the number of respiratory gates.
FLTNB **** m4p_attenuation
void LMS_CopyAtnToForwardImage()
Copy the attenuation image contained in the 'm2p_attenuation' matrix inside the m4p_forwardImage matr...
void InstantiateSensImageForDeformation()
Memory allocation for the buffer sensitivity image required for image-based deformation (only for PET...
int SaveSensitivityImage(const string &a_pathToSensitivityImage)
Call the interfile function to write the sensitivity image on disk.
bool GetFlipOutZ()
Get the boolean saying if the output image must be flipped along the Z axis.
void DeallocateBackwardImageFromDynamicBins()
Free memory of the backward image matrices.
void InitBackwardImage()
Initialize each voxel of the backward images to 0, also for sensitivity if not loaded (estimated on t...
int InitSensitivityImage(const string &a_pathToSensitivityImage)
Initialization for the sensitivity image matrices.
void LMS_InstantiateSensitivityImage()
Allocate memory for the sensitivity image matrices (for list-mode sensitivity generation) ...
void DeallocateForwardImage()
Free memory for the forward image matrices.
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 GetNbRespBasisFunctions()
Get the number of respiratory basis functions.
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...
FLTNB ***** m5p_sensitivity
void LMS_CopyBackwardToSensitivity()
INTNB GetNbSliceOutMask()
Get the number of extrem slices that will be masked at each side.
INTNB GetNbVoxY()
Get the number of voxels along the Y axis.
void InstantiateOutputImage()
Instanciate Image matrices dedicated to output writing on disk.
void LMS_DeallocateForwardImage()
Free memory for the forward image matrices (for list-mode sensitivity generation) ...
FLTNB GetCardBasisCoefficient(int a_cardBasisFunction, int a_cardGate)
Get the cardiac basis coefficients for the provided cardiac gate and basis function.