X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkDicom2Image.cxx;h=614c5d96b458c4905316142bd791d34df76632ca;hb=a384b1aa2ad35011b2741fca00a2a52e26b30e8f;hp=066aaf84d3b98b61d090a0f359d671084145e6a7;hpb=d647919fe732d73ed24138daaec16080c00df892;p=clitk.git diff --git a/tools/clitkDicom2Image.cxx b/tools/clitkDicom2Image.cxx index 066aaf8..614c5d9 100644 --- a/tools/clitkDicom2Image.cxx +++ b/tools/clitkDicom2Image.cxx @@ -60,7 +60,7 @@ int main(int argc, char * argv[]) //Get GDCMSeriesFileNames order to sort filenames typedef itk::GDCMSeriesFileNames NamesGeneratorType; NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New(); - nameGenerator->SetUseSeriesDetails(true); + nameGenerator->SetUseSeriesDetails(false); std::string folderName="."; const size_t last_slash_idx = input_files[0].rfind('/'); if (std::string::npos != last_slash_idx) @@ -74,6 +74,7 @@ int main(int argc, char * argv[]) std::map< std::string, std::vector > theorigin; std::map< std::string, std::vector > theorientation; std::map< std::string, std::vector > sliceLocations; + std::map< std::string, std::vector > instanceNumber; std::map< std::string, std::vector > seriesFiles; #if GDCM_MAJOR_VERSION >= 2 if (args_info.verbose_flag) @@ -115,6 +116,10 @@ int main(int argc, char * argv[]) sliceLocations[series_UID].push_back(theorigin[series_UID][2]); seriesFiles[series_UID].push_back(input_files[i]); + gdcm::Attribute<0x20,0x0013> instanceNumber_att; + instanceNumber_att.SetFromDataSet(ds); + instanceNumber[series_UID].push_back(instanceNumber_att.GetValue()); + gdcm::Attribute<0x28, 0x100> pixel_size; pixel_size.SetFromDataSet(ds); /* if (pixel_size.GetValue() != 16) @@ -154,23 +159,31 @@ int main(int argc, char * argv[]) while ( sn != series_UIDs.end() ) { std::vector locs = sliceLocations[*sn]; std::vector origin = theorigin[*sn]; + std::vector instanceNumberSerie = instanceNumber[*sn]; std::vector files = seriesFiles[*sn]; - std::vector sliceIndex; + std::vector sliceIndex(files.size()); //clitk::GetSortedIndex(locs, sliceIndex); //Look for files into GDCMSeriesFileNames, because it sorts files correctly and take the order const std::vector & temp = nameGenerator->GetFileNames(*sn); for(unsigned int i=0; i " @@ -216,8 +229,27 @@ int main(int argc, char * argv[]) // Create ordered vector of filenames std::vector sorted_files; sorted_files.resize(sliceIndex.size()); - for(unsigned int i=0; i::iterator maxInstanceNumber = std::max_element(instanceNumberSerie.begin(), instanceNumberSerie.end()); + std::vector instanceNumberTemp(*maxInstanceNumber, ""); + for(unsigned int i=0; i