]> Creatis software - clitk.git/blobdiff - common/clitkImage2DicomRTStructFilter.txx
Revert previsous commit with Roi name
[clitk.git] / common / clitkImage2DicomRTStructFilter.txx
index 248451d8fac4e0dff6ac74b2b1316750226037a0..eba1251cfa0377927923016446135b22be4fda3f 100644 (file)
@@ -52,6 +52,8 @@
 #include <itkVTKImageToImageFilter.h>
 
 // gdcm
+#include <vtkRTStructSetProperties.h>
+#include <vtkGDCMPolyDataReader.h>
 #include <vtkGDCMPolyDataWriter.h>
 
 //--------------------------------------------------------------------
@@ -62,6 +64,7 @@ clitk::Image2DicomRTStructFilter<PixelType>::Image2DicomRTStructFilter()
   m_DicomFolder = "";
   m_OutputFilename = "default-output.dcm";
   m_ThresholdValue = 0.5;
+  m_SkipInitialStructuresFlag = false;
 }
 //--------------------------------------------------------------------
 
@@ -111,7 +114,6 @@ void clitk::Image2DicomRTStructFilter<PixelType>::Update()
     std::cout << "Number of structures in the dicom-rt-struct : " 
               << p->GetNumberOfStructureSetROIs() << std::endl;
   }
-  
 
   // number of additional contours
   int m = m_InputFilenames.size();
@@ -119,6 +121,11 @@ void clitk::Image2DicomRTStructFilter<PixelType>::Update()
   // Init writer
   vtkGDCMPolyDataWriter * writer = vtkGDCMPolyDataWriter::New();
   int numMasks = reader->GetNumberOfOutputPorts() + m;
+
+  if (m_SkipInitialStructuresFlag) {
+    numMasks = m;
+  }
+
   writer->SetNumberOfInputPorts(numMasks);    
   writer->SetFileName(m_OutputFilename.c_str());
   writer->SetMedicalImageProperties(reader->GetMedicalImageProperties());
@@ -130,14 +137,14 @@ void clitk::Image2DicomRTStructFilter<PixelType>::Update()
   roiNames->SetNumberOfValues(numMasks);
   roiAlgorithms->SetNumberOfValues(numMasks);
   roiTypes->SetNumberOfValues(numMasks);
-  
+
   // Convert the image into a mesh
   std::vector<vtkSmartPointer<vtkPolyData> > meshes;
   std::vector<std::string> m_ROINames;
   meshes.resize(m);
   m_ROINames.resize(m);
   for(unsigned int i=0; i<m; i++) {
-    
+
     // read image
     //    typedef float PixelType;
     //typedef itk::Image<PixelType, 3> ImageType;
@@ -148,7 +155,7 @@ void clitk::Image2DicomRTStructFilter<PixelType>::Update()
       GetFilenameName(vtksys::SystemTools::GetFilenameWithoutLastExtension(m_InputFilenames[i]));
     std::string name = oss.str();
     m_ROINames[i] = name;
-    
+
     // convert to mesh
     typedef clitk::BinaryImageToMeshFilter<ImageType> BinaryImageToMeshFilterType;
     typename BinaryImageToMeshFilterType::Pointer convert = BinaryImageToMeshFilterType::New();
@@ -159,7 +166,7 @@ void clitk::Image2DicomRTStructFilter<PixelType>::Update()
     if (GetVerboseFlag()) {
       std::cout << "Mesh has " << meshes[i]->GetNumberOfLines() << " lines." << std::endl;
     }
-    
+
     /*
     // debug mesh write  FIXME
     vtkSmartPointer<vtkPolyDataWriter> wr = vtkSmartPointer<vtkPolyDataWriter>::New();
@@ -169,26 +176,34 @@ void clitk::Image2DicomRTStructFilter<PixelType>::Update()
     wr->Write();
     */
   }
-    
+
   // Copy previous contours
   for (unsigned int i = 0; i < numMasks-m; ++i) {
+#if VTK_MAJOR_VERSION <= 5
     writer->SetInput(i, reader->GetOutput(i));
+#else
+    writer->SetInputData(i, reader->GetOutput(i));
+#endif
     std::string theString = reader->GetRTStructSetProperties()->GetStructureSetROIName(i);
     roiNames->InsertValue(i, theString);
     theString = reader->GetRTStructSetProperties()->GetStructureSetROIGenerationAlgorithm(i);
     roiAlgorithms->InsertValue(i, theString);
     theString = reader->GetRTStructSetProperties()->GetStructureSetRTROIInterpretedType(i);
     roiTypes->InsertValue(i, theString);
-  }  
+  }
 
   // Add new ones
   for (unsigned int i = numMasks-m; i < numMasks; ++i) {
+#if VTK_MAJOR_VERSION <= 5
     writer->SetInput(i, meshes[i-numMasks+m]);
-    roiNames->InsertValue(i, m_ROINames[i-numMasks+m]);
+#else
+    writer->SetInputData(i, meshes[i-numMasks+m]);
+#endif
+    roiNames->InsertValue(i, m_ROIType);
     roiAlgorithms->InsertValue(i, "CLITK_CREATED");
     roiTypes->InsertValue(i, m_ROIType);
   }
-    
+
   /*
   //  Visu DEBUG
   vtkPolyDataMapper *cubeMapper = vtkPolyDataMapper::New();
@@ -227,7 +242,7 @@ void clitk::Image2DicomRTStructFilter<PixelType>::Update()
   writer->InitializeRTStructSet(m_DicomFolder,
                                 reader->GetRTStructSetProperties()->GetStructureSetLabel(),
                                 reader->GetRTStructSetProperties()->GetStructureSetName(),
-                                roiNames, roiAlgorithms, roiTypes);  
+                                roiNames, roiAlgorithms, roiTypes);
   writer->Write();
   reader->Delete();
   roiNames->Delete();