]> Creatis software - clitk.git/blobdiff - tools/clitkDicomRTStruct2Image.cxx
clitkDicomRTStruct2Image: new features
[clitk.git] / tools / clitkDicomRTStruct2Image.cxx
index 88d480d1f625d9016beff80ec72e256191a22efd..b713d9412d20897bea105aa16bcf596c941bfd72 100644 (file)
@@ -38,34 +38,70 @@ 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.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();  
   }
   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
+        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();  
       }
-      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; i<s->GetListOfROI().size(); i++) {
@@ -87,7 +123,7 @@ int main(int argc, char * argv[]) {
       filter.SetOutputImageFilename(n);
       filter.Update();  
       }*/
-  }
+  //}
 
   // This is the end my friend 
   return 0;