X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkDicomRTStruct2Image.cxx;h=3790ab7b3100e335da027148e0d797d2ba20f59a;hb=ef03fc34db849c864b1ae7f50c8442e125834f84;hp=cc231260f29c57287738efb1b3fee641884f0afe;hpb=4824cfde923f5f1d70fbb0e63aaf08886a8fb28d;p=clitk.git diff --git a/tools/clitkDicomRTStruct2Image.cxx b/tools/clitkDicomRTStruct2Image.cxx index cc23126..3790ab7 100644 --- a/tools/clitkDicomRTStruct2Image.cxx +++ b/tools/clitkDicomRTStruct2Image.cxx @@ -20,12 +20,14 @@ #include "clitkDicomRTStruct2ImageFilter.h" #include "clitkDicomRT_StructureSet.h" #include "clitkDicomRTStruct2Image_ggo.h" +#include "clitkIO.h" //-------------------------------------------------------------------- int main(int argc, char * argv[]) { // Init command line GGO(clitkDicomRTStruct2Image, args_info); + CLITK_INIT; // Read and display information clitk::DicomRT_StructureSet::Pointer s = clitk::DicomRT_StructureSet::New(); @@ -38,34 +40,86 @@ int main(int argc, char * argv[]) { clitk::DicomRTStruct2ImageFilter filter; filter.SetCropMaskEnabled(args_info.crop_flag); filter.SetImageFilename(args_info.image_arg); // Used to get spacing + origin - if (args_info.roi_arg != -1) { + if (args_info.vtk_flag) { + filter.SetWriteMesh(true); + } + if (args_info.roiName_given) { + filter.SetROI(s->GetROIFromROIName(args_info.roiName_arg)); + filter.SetOutputImageFilename(args_info.output_arg); + filter.Update(); + } + else if (args_info.roi_given && args_info.roi_arg != -1) { filter.SetROI(s->GetROIFromROINumber(args_info.roi_arg)); filter.SetOutputImageFilename(args_info.output_arg); - filter.Update(); + filter.Update(); } else { + clitk::DicomRT_StructureSet::ROIMapContainer* rois; + if (args_info.roiNameSubstr_given) + rois = s->GetROIsFromROINameSubstr(args_info.roiNameSubstr_arg); + else + rois = &s->GetROIs(); + clitk::DicomRT_StructureSet::ROIConstIteratorType iter; - for(iter = s->GetROIs().begin(); iter != s->GetROIs().end(); iter++) { - clitk::DicomRT_ROI::Pointer roi = iter->second; - // Create the filter - clitk::DicomRTStruct2ImageFilter filter; - filter.SetCropMaskEnabled(args_info.crop_flag); - filter.SetImageFilename(args_info.image_arg); // Used to get spacing + origin - std::string name = roi->GetName(); - int num = roi->GetROINumber(); - filter.SetROI(roi); - name.erase(remove_if(name.begin(), name.end(), isspace), name.end()); - std::string n = std::string(args_info.output_arg).append - (clitk::toString(num)).append - ("_").append - (name).append - (".mhd"); - if (args_info.verbose_flag) { - std::cout << num << " " << roi->GetName() << " num=" << num << " : " << n << std::endl; + if (rois) { + for(iter = rois->begin(); iter != rois->end(); iter++) { + clitk::DicomRT_ROI::Pointer roi = iter->second; + clitk::DicomRTStruct2ImageFilter filter; + std::string name = roi->GetName(); + int num = roi->GetROINumber(); + filter.SetROI(roi); + filter.SetCropMaskEnabled(args_info.crop_flag); + filter.SetImageFilename(args_info.image_arg); // Used to get spacing + origin + if (args_info.vtk_flag) { + filter.SetWriteMesh(true); + } + name.erase(remove_if(name.begin(), name.end(), isspace), name.end()); + std::string n; + if (args_info.mha_flag) { + n = std::string(args_info.output_arg).append + (clitk::toString(num)).append + ("_").append + (name).append + (".mha"); + } + else { + n = std::string(args_info.output_arg).append + (clitk::toString(num)).append + ("_").append + (name).append + (".mhd"); + } + if (args_info.verbose_flag) { + std::cout << num << " " << roi->GetName() << " num=" << num << " : " << n << std::endl; + } + filter.SetOutputImageFilename(n); + filter.Update(); } - filter.SetOutputImageFilename(n); - filter.Update(); } + } +// else { +// clitk::DicomRT_StructureSet::ROIConstIteratorType iter; +// for(iter = s->GetROIs().begin(); iter != s->GetROIs().end(); iter++) { +// clitk::DicomRT_ROI::Pointer roi = iter->second; +// // Create the filter +// clitk::DicomRTStruct2ImageFilter filter; +// filter.SetCropMaskEnabled(args_info.crop_flag); +// filter.SetImageFilename(args_info.image_arg); // Used to get spacing + origin +// std::string name = roi->GetName(); +// int num = roi->GetROINumber(); +// filter.SetROI(roi); +// name.erase(remove_if(name.begin(), name.end(), isspace), name.end()); +// std::string n = std::string(args_info.output_arg).append +// (clitk::toString(num)).append +// ("_").append +// (name).append +// (".mhd"); +// if (args_info.verbose_flag) { +// std::cout << num << " " << roi->GetName() << " num=" << num << " : " << n << std::endl; +// } +// filter.SetOutputImageFilename(n); +// filter.Update(); +// } /* for(unsigned int i=0; iGetListOfROI().size(); i++) { @@ -87,7 +141,7 @@ int main(int argc, char * argv[]) { filter.SetOutputImageFilename(n); filter.Update(); }*/ - } + //} // This is the end my friend return 0;