X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vtk%2Ftest4DSplitter.cxx;fp=vtk%2Ftest4DSplitter.cxx;h=059de647001e64d31b3cb6e3b8188dff60b9ee93;hb=d0f6827609a499057f4bad725522060590af3d82;hp=e2a9ed0b5c745f51675f9a32ec6f270573cf22ac;hpb=4552d4ee18f3234af4e037e77abf0622c2702004;p=gdcm.git diff --git a/vtk/test4DSplitter.cxx b/vtk/test4DSplitter.cxx index e2a9ed0b..059de647 100644 --- a/vtk/test4DSplitter.cxx +++ b/vtk/test4DSplitter.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: test4DSplitter.cxx,v $ Language: C++ - Date: $Date: 2011/04/11 11:28:31 $ - Version: $Revision: 1.6 $ + Date: $Date: 2011/04/20 15:03:54 $ + Version: $Revision: 1.7 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,20 +49,26 @@ typedef std::map SortedFiles; bool myCompareFunction(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2) { return atof(file1->GetEntryString(0x0018,0x1060).c_str()) < atof(file2->GetEntryString(0x0018,0x1060).c_str()); + } + +bool myCompareFunction0008_0032(GDCM_NAME_SPACE::File *file1, GDCM_NAME_SPACE::File *file2) + { + return atof(file1->GetEntryString(0x0008,0x0032).c_str()) < atof(file2->GetEntryString(0x0008,0x0032).c_str()); } - int main(int argc, char *argv[]) { - std::cout << "... inside " << argv[0] << std::endl; + std::cout << "... inside : " << argv[0] << std::endl; // 3D -std::string strDirName("/home/jpr/Desktop/Patients_Emilie/Patient.3T/AUB Jos/AUBERTIN JOSEPH/PROSTATE - 305629373/dSSh_DWISENSE_602"); +//std::string strDirName("/home/jpr/Desktop/Patients_Emilie/Patient.3T/AUB Jos/AUBERTIN JOSEPH/PROSTATE - 305629373/dSSh_DWISENSE_602"); // 4D //std::string strDirName("/home/jpr/Desktop/Patients_Emilie/Patient.3T/AUB Jos/AUBERTIN JOSEPH/PROSTATE - 305629373/DYN7INJDYN6_901"); - + +// n directories +std::string strDirName("/home/jpr/Desktop/patient Andrei Dyn/dyn"); // ----- Begin Processing ----- @@ -76,24 +82,36 @@ std::string strDirName("/home/jpr/Desktop/Patients_Emilie/Patient.3T/AUB Jos/AUB // en sortie, chaque vtkImageData contiendra une coupe au cours du temps // n * 2D+T -std::vector *output; + std::vector *output; + std::vector::iterator it; + +// ======================================== +// Split on Position (IPP) +// Sort on UserFunction (use 0008|0032 : Aquisition Time ) +// +// Should give a vector of 2D+T vtkImageData* +// ======================================== + +//vtkGdcm4DSplitter *spl = new vtkGdcm4DSplitter(); + +if (1) { + + std::cout << "Try with : Split on Position (IPP) / Sort on UserFunction (use 0008|0032 : Aquisition Time )" << std::endl; - if (1) { vtkGdcm4DSplitter *spl = new vtkGdcm4DSplitter(); + spl->setFlipY(false); spl->setDirName(strDirName); - spl->setRecursive(false); + spl->setRecursive(true); + spl->setSplitOnPosition(); - //spl->setSplitOnOrientation(); - // Time triger : 0018|1060 - grSort=0x0018; - elSort=0x1060; - // ==> Big troubles with SortOnTag - //spl->setSortOnTag(grSort, elSort); - //spl->setSortConvertToFloat(true); + // Time triger : 0018|1060 + //grSort=0x0018; + //elSort=0x1060; // ==> use SortOnUserFunction ! - spl->setSortOnUserFunction(myCompareFunction); + spl->setSortOnUserFunction(myCompareFunction0008_0032); + std::cout << "Everything set" << std::endl; bool res=spl->Go(); @@ -105,7 +123,64 @@ std::vector *output; } output = spl->GetImageDataVector(); -} + + +std::cout << "--------------------------------" << std::endl; +std::cout << "Vector size " << output->size() << std::endl; +std::cout << "--------------------------------" << std::endl; + +// Print the first one (why not?) +//(*output)[0]->PrintSelf(std::cout, vtkIndent(2)); + + for(it=output->begin(); it!=output->end(); ++it) { + //std::cout << "========================================" << std::endl; + //(*it)->PrintSelf(std::cout, vtkIndent(2)); + } + //delete spl; +} + + +for(int i=0; i<3; i++) + std::cout << "---------------------------------------------" << std::endl; + + + +// ======================================== +// Split on Tag 0008|0032 (Aquisition Time) +// Sort on Position (IPP) +// +// Should give a vector of 'true 3D' vtkImageData* +// ======================================== + + if (1) { + + std::cout << "Try with : Split on Tag 0008|0032 (Aquisition Time) / Sort on Position (IPP)" << std::endl; + + vtkGdcm4DSplitter *spl = new vtkGdcm4DSplitter(); + spl->setFlipY(false); + spl->setDirName(strDirName); + spl->setRecursive(true); + + // Time triger : 0018|1060 + //grSort=0x0018; + //elSort=0x1060; + + // Aquisition Time : 0008|0032 +spl->setSplitOnTag(0x0008, 0x0032); + +spl->setSortOnPosition(); + + std::cout << "Everything set" << std::endl; + bool res=spl->Go(); + + std::cout << "GO() done, status " << res << std::endl; + if(!res) + { + std::cout << "plantage!" << std::endl; + } + + output = spl->GetImageDataVector(); + std::cout << "--------------------------------" << std::endl; std::cout << "Vector size " << output->size() << std::endl; @@ -114,17 +189,18 @@ std::cout << "--------------------------------" << std::endl; // Print the first one (why not?) //(*output)[0]->PrintSelf(std::cout, vtkIndent(2)); - std::vector::iterator it; - for(it=output->begin(); it!=output->end(); ++it) { - std::cout << "========================================" << std::endl; - (*it)->PrintSelf(std::cout, vtkIndent(2)); - } + + for(it=output->begin(); it!=output->end(); ++it) { + //std::cout << "========================================" << std::endl; + //(*it)->PrintSelf(std::cout, vtkIndent(2)); + } + + // delete spl; +} // Pour un directory '4D' // en sortie, chaque vtkImageData contiendra un volume au cours du temps. // 3D + T -} - - +}