]> Creatis software - clitk.git/blobdiff - tools/clitkDicomRTStruct2Image.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / tools / clitkDicomRTStruct2Image.cxx
index 228ca0b0cc33480946f3cd5bb33bf62cc94582c6..3790ab7b3100e335da027148e0d797d2ba20f59a 100644 (file)
 #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,12 +40,88 @@ 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) {
-    filter.SetROI(s->GetROI(args_info.roi_arg)); 
+  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;
+    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();  
+      }
+    }
+  }
+//   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++) {
       clitk::DicomRTStruct2ImageFilter filter;
       filter.SetCropMaskEnabled(args_info.crop_flag);
@@ -62,8 +140,8 @@ int main(int argc, char * argv[]) {
       }
       filter.SetOutputImageFilename(n);
       filter.Update();  
-    }
-  }
+      }*/
+  //}
 
   // This is the end my friend 
   return 0;