X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fgdcmvtk%2Fsrc%2FbbgdcmvtkGetXCoherentInfoGdcmReader.cxx;h=a094ff7755079e1bac4ebe2a4c10ddce853e38e0;hb=3915df27234aa815febbb24195c426c1f73f8f91;hp=c1d16ba58fb15afc84ccce9badb0f3705362fa51;hpb=1f305cb33157b21a82c7d0a97170ce09e580db0c;p=bbtk.git diff --git a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx index c1d16ba..a094ff7 100644 --- a/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx +++ b/packages/gdcmvtk/src/bbgdcmvtkGetXCoherentInfoGdcmReader.cxx @@ -87,7 +87,6 @@ vtkImageData* GetXCoherentInfoGdcmReader::CreateDefaultImage() #if defined USE_GDCM void GetXCoherentInfoGdcmReader::Process() { - // Read the *first* image file (a SET of file names is given as input) f = GDCM_NAME_SPACE::File::New(); @@ -97,7 +96,7 @@ void GetXCoherentInfoGdcmReader::Process() } else { f->SetFileName( "" ); } // if - + bool res = f->Load(); if ( !res ) { @@ -106,6 +105,7 @@ void GetXCoherentInfoGdcmReader::Process() bbSetOutputOut( CreateDefaultImage() ); return; } // if res + // Get info from the first image file int i; std::vector v_iop; @@ -117,21 +117,20 @@ 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 ); + +// 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 ); // 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) @@ -139,16 +138,16 @@ void GetXCoherentInfoGdcmReader::Process() 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) + { + return; + } - int nbFiles; - double zspacing = 0.; - nbFiles = l->size() ; + double zspacing = 0.; sh->OrderFileList(l); // this one should compute the *actual* Z Spacing! zspacing = sh->GetZSpacing(); std::vector v_pixelspacing; @@ -159,21 +158,66 @@ void GetXCoherentInfoGdcmReader::Process() // v_pixelspacing.push_back(f->GetZSpacing()); // } bbSetOutputPixelSpacing(v_pixelspacing); - 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(); -printf("EED GetXCoherentInfoGdcmReader::Process \n"); - bbSetOutputOut( reader->GetOutput() ); + VectorMapInfoDicom vectormapinfodicom; + uint16_t group; + uint16_t elem; + std::string key; + std::string strTagValue; // read on disc + int iTag,sizeDicomTagsVector=bbGetInputDicomTags().size(); + GDCM_NAME_SPACE::FileList::const_iterator iitt = l->begin(); + float px,py,pz; + + for ( ; iitt != l->end(); ++iitt) + { + // 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 ); + + 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 @@ -181,10 +225,10 @@ printf("EED GetXCoherentInfoGdcmReader::Process \n"); #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() ); - bool res = read->Read(); if ( !res ) { @@ -193,8 +237,6 @@ void GetXCoherentInfoGdcmReader::Process() return; } - - // Get info from the first image file const gdcm::File &f = read->GetFile(); int i; @@ -205,17 +247,17 @@ void GetXCoherentInfoGdcmReader::Process() gdcm::Element iop; iop.Read( ss ); for(i=0; i< 6; i++) - { + { v_iop.push_back((float)(iop[i])); - } + } bbSetOutputIOP(v_iop ); - std::vector v_ipp; + std::vector v_ipp; const gdcm::DataElement &deIpp = f.GetDataSet().GetDataElement(gdcm::Tag((0x0020,0x0032))); deIpp.GetValue().Print(ss); gdcm::Element ipp; ipp.Read( ss ); - for(i=0; i< 3; i++) + for(i=0; i< 3; i++) { v_ipp.push_back((float)(ipp[i])); } // for 3 @@ -263,15 +305,16 @@ void GetXCoherentInfoGdcmReader::Process() void GetXCoherentInfoGdcmReader::bbUserSetDefaultValues() { + reader=NULL; std::vector init; init.push_back(""); bbSetInputIn(init); + bbSetInputReadRaw(true); //reader=NULL; /// \TODO fixme JPR } void GetXCoherentInfoGdcmReader::bbUserInitializeProcessing() { - } #if defined USE_GDCM