- typedef clitk::BinaryImageToMeshFilter<ImageType> BinaryImageToMeshFilterType;
- typename BinaryImageToMeshFilterType::Pointer convert = BinaryImageToMeshFilterType::New();
- convert->SetInput(m_Input);
- DD("Update");
- convert->Update();
- DD("here");
- DD("end update");
- vtkPolyData* mesh = convert->GetOutputMesh();
- DD(mesh->GetNumberOfVerts());
- DD(mesh->GetNumberOfLines());
- DD(mesh->GetNumberOfPolys());
- DD(mesh->GetNumberOfStrips());
-
- // Add on (FIXME) to replace with binary image
- // vtkPolyData* blank = vtkPolyData::New();
- // writer->SetInput(0, blank);
- writer->SetInput(0, mesh);
- roiNames->InsertValue(0, "blank");
- roiAlgorithms->InsertValue(0, "blank");
- roiTypes->InsertValue(0, "ORGAN");
-
- for (unsigned int i = 1; i < numMasks; ++i) {
- // DD(i);
- writer->SetInput(i, reader->GetOutput(i-1));
- std::string theString = reader->GetRTStructSetProperties()->GetStructureSetROIName(i-1);
+ // 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;
+ ImagePointer input = clitk::readImage<ImageType>(m_InputFilenames[i], false);
+
+ std::ostringstream oss;
+ oss << vtksys::SystemTools::
+ 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();
+ convert->SetThresholdValue(m_ThresholdValue);
+ convert->SetInput(input);
+ convert->Update();
+ meshes[i] = convert->GetOutputMesh();
+ if (GetVerboseFlag()) {
+ std::cout << "Mesh has " << meshes[i]->GetNumberOfLines() << " lines." << std::endl;
+ }
+
+ /*
+ // debug mesh write FIXME
+ vtkSmartPointer<vtkPolyDataWriter> wr = vtkSmartPointer<vtkPolyDataWriter>::New();
+ wr->SetInputConnection(convert->GetOutputPort()); //psurface->GetOutputPort()
+ wr->SetFileName("bidon.obj");
+ wr->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);