X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fgdcmvtk%2Fsrc%2FbbgdcmvtkGetXCoherentInfoGdcmReader.cxx;h=25700ecdd80ce3d34c415c07e44265ced2a230d2;hb=8ba18df584ba0a409fb042663be9fa76ccb0e0b0;hp=e09b38ad76babdbde24a6467eac2807a2d378957;hpb=4ae4c8a57a71c86165a9889e2569e249197f48c0;p=bbtk.git diff --git a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx index e09b38a..25700ec 100644 --- a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx +++ b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx @@ -85,6 +85,33 @@ vtkImageData* GetXCoherentInfoGdcmReader::CreateDefaultImage() #if defined USE_GDCM + +void GetXCoherentInfoGdcmReader::Process2() +{ + printf("EED GetXCoherentInfoGdcmReader::Process >>>>>> \n" ); + GDCM_NAME_SPACE::FileList lstFiles; + int i,size=bbGetInputIn().size(); + for (i=0;iSetFileName( bbGetInputIn()[i] ); + bool res = f->Load(); + if ( res==true ) + { + lstFiles.push_back(f); + } + } // for + sh = GDCM_NAME_SPACE::SerieHelper::New(); + sh->ImagePositionPatientOrdering( &lstFiles ); + size=lstFiles.size(); + for (i=0;iGetFileName().c_str() ); + } // for +} + + void GetXCoherentInfoGdcmReader::Process() { // Read the *first* image file (a SET of file names is given as input) @@ -105,6 +132,7 @@ void GetXCoherentInfoGdcmReader::Process() bbSetOutputOut( CreateDefaultImage() ); return; } // if res + // Get info from the first image file int i; std::vector v_iop; @@ -116,40 +144,56 @@ void GetXCoherentInfoGdcmReader::Process() v_iop.push_back(iop[i]); } // for i bbSetOutputIOP(v_iop ); - - std::vector v_ipp; - float ipp[3]; - f->GetImagePositionPatient(ipp); - - for(i=0; i< 3; i++) - { - v_ipp.push_back(ipp[i]); - } // for i - bbSetOutputIPP(v_ipp ); - -// Add *all the files* to the SerieHelper - sh = GDCM_NAME_SPACE::SerieHelper::New(); - std::vector gii = bbGetInputIn(); - - for(std::vector::iterator it = gii.begin(); - it != gii.end(); - ++it) - { - sh->AddFileName(*it); - } //for vector - - GDCM_NAME_SPACE::FileList::const_iterator it; - GDCM_NAME_SPACE::FileList *l; - - // Should only contain one! - l = sh->GetFirstSingleSerieUIDFileSet(); - - if (l==NULL) - { - printf("EED GetXCoherentInfoGdcmReader::Process Warnning not coherent list/file \n"); - return; - } - + +// EED 2022-12-15 +// std::vector v_ipp; +// float ipp[3]; +// f->GetImagePositionPatient(ipp); +// for(i=0; i< 3; i++) +// { +// v_ipp.push_back(ipp[i]); +// } // for i +// bbSetOutputIPP(v_ipp ); + +// EED 2023-01-13 + GDCM_NAME_SPACE::FileList lstFiles; + GDCM_NAME_SPACE::FileList *l; + + if (bbGetInputRespectSerieUID()==false) + { + int i,size=bbGetInputIn().size(); + for (i=0;iSetFileName( bbGetInputIn()[i] ); + bool res = f->Load(); + if ( res==true ) + { + lstFiles.push_back(f); + } + } // for i + sh = GDCM_NAME_SPACE::SerieHelper::New(); + l = &lstFiles; + sh->ImagePositionPatientOrdering( l ); + } else{ + // Add *all the files* to the SerieHelper + sh = GDCM_NAME_SPACE::SerieHelper::New(); + std::vector gii = bbGetInputIn(); + for(std::vector::iterator it = gii.begin(); + it != gii.end(); + ++it) + { + sh->AddFileName(*it); + } //for vector + GDCM_NAME_SPACE::FileList::const_iterator it; + // Should only contain one! + l = sh->GetFirstSingleSerieUIDFileSet(); + if (l==NULL) + { + return; + } + } // if bbGetInputForceRead + double zspacing = 0.; sh->OrderFileList(l); // this one should compute the *actual* Z Spacing! zspacing = sh->GetZSpacing(); @@ -169,10 +213,29 @@ void GetXCoherentInfoGdcmReader::Process() std::string strTagValue; // read on disc int iTag,sizeDicomTagsVector=bbGetInputDicomTags().size(); GDCM_NAME_SPACE::FileList::const_iterator iitt = l->begin(); - //iitt ++; - - for ( ; iitt != l->end(); ++iitt) + float px,py,pz; + + std::vector lstFileNames; + + for ( ; iitt != l->end(); ++iitt) { + lstFileNames.push_back( (*iitt)->GetFileName() ); + // EED 2022-12-15 + if ( iitt == l->begin() ) // The first ordered element IPP + { + group = 0; + elem = 0; + strTagValue = std::string("void"); + sscanf("D0020_0032","D%04hx_%04hx",&group,&elem); + strTagValue = (*iitt)->GetEntryString(group,elem); + sscanf(strTagValue.c_str(),"%f\\%f\\%f\\%f", &px , &py , &pz); + std::vector v_ipp; + v_ipp.push_back( (double)px ); + v_ipp.push_back( (double)py ); + v_ipp.push_back( (double)pz ); + bbSetOutputIPP(v_ipp ); + } // if first elemetn get IPP + MapInfoDicom mapinfodicom; for (iTag=0; iTagGetEntryString(group,elem); mapinfodicom.insert ( std::pair(key,strTagValue) ); } // for iTag - vectormapinfodicom.push_back( mapinfodicom ); } // for iitt bbSetOutputDicomInfo( vectormapinfodicom ); + bbSetOutputOutFileNames( lstFileNames ); - if (reader!=NULL) - { - reader->Delete(); - reader = NULL; - } - reader = vtkGdcmReader::New(); - //EED 21 mars 2012 FLIP probleme ..PLOP.. - reader->SetFlipY(false); - //reader->SetFileName( bbGetInputIn().c_str() ); - reader->SetCoherentFileList(l); - reader->Update(); - reader->GetOutput(); - bbSetOutputOut( reader->GetOutput() ); + if (bbGetInputReadRaw()==true) + { + if (reader!=NULL) + { + reader->Delete(); + reader = NULL; + } + reader = vtkGdcmReader::New(); + //EED 21 mars 2012 FLIP probleme ..PLOP.. + reader->SetFlipY(false); + //reader->SetFileName( bbGetInputIn().c_str() ); + reader->SetCoherentFileList(l); + reader->Update(); + reader->GetOutput(); + bbSetOutputOut( reader->GetOutput() ); + } // if bGetInputReadRaw } #endif // endif USE_GDCM + #if defined USE_GDCM2 void GetXCoherentInfoGdcmReader::Process() { +// printf("GetXCoherentInfoGdcmReader %d files.\n", bbGetInputIn().size() ); // Read the *first* image file (a SET of file names is given as input) gdcm::Reader *read = new gdcm::Reader(); reader->SetFileName( bbGetInputIn()[0].c_str() ); @@ -293,12 +361,13 @@ void GetXCoherentInfoGdcmReader::bbUserSetDefaultValues() std::vector init; init.push_back(""); bbSetInputIn(init); + bbSetInputReadRaw(true); + bbSetInputRespectSerieUID(true); //reader=NULL; /// \TODO fixme JPR } void GetXCoherentInfoGdcmReader::bbUserInitializeProcessing() { - } #if defined USE_GDCM