X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkDicomRT_ROI.cxx;h=783b97227921af73bf540c60a6f3e18c0d8c938a;hb=292caf3cde03e7d88a074282ead314b0e2688a83;hp=75fc8e97fdbc517bdc61da7dc5b60bd672d9ffe9;hpb=91669882f4625b286c9dbaeec147983da01fe286;p=clitk.git diff --git a/common/clitkDicomRT_ROI.cxx b/common/clitkDicomRT_ROI.cxx index 75fc8e9..783b972 100644 --- a/common/clitkDicomRT_ROI.cxx +++ b/common/clitkDicomRT_ROI.cxx @@ -22,6 +22,7 @@ #include #include #include +#include #if GDCM_MAJOR_VERSION == 2 #include "gdcmAttribute.h" @@ -242,7 +243,7 @@ void clitk::DicomRT_ROI::Read(std::map & rois, gdcm::SQItem * //-------------------------------------------------------------------- -void clitk::DicomRT_ROI::SetImage(vvImage * image) +void clitk::DicomRT_ROI::SetImage(vvImage::Pointer image) { mImage = image; } @@ -338,7 +339,7 @@ void clitk::DicomRT_ROI::UpdateDicomItem() #endif //-------------------------------------------------------------------- -void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage * image, int n, +void clitk::DicomRT_ROI::SetFromBinaryImage(vvImage::Pointer image, int n, std::string name, std::vector color, std::string filename) @@ -394,24 +395,88 @@ void clitk::DicomRT_ROI::ComputeContoursFromImage() DDV(extent, 6); // std::vector extend; - // Prepare the marching squares - vtkSmartPointer squares = vtkSmartPointer::New(); - squares->SetInput(clipper->GetOutput()); // Loop on slice uint n = image->GetDimensions()[2]; DD(n); + DD(mListOfContours.size()); + mListOfContours.resize(n); /// ???FIXME + DD(mListOfContours.size()); + std::vector > contours; for(uint i=0; i squares = vtkSmartPointer::New(); + squares->SetInput(image); + squares->SetImageRange(extent[0], extent[1], extent[2], extent[3], i, i); + squares->SetValue(1, 1.0); + squares->Update(); + DD(squares->GetNumberOfContours()); + + //clitk::DicomRT_Contour * contour = new clitk::DicomRT_Contour(); + //mListOfContours[i]->SetMesh(squares->GetOutput()); + + + vtkSmartPointer m = squares->GetOutput(); + contours.push_back(m); + + /* // Clip to the current slice extent[4] = extent[5] = image->GetOrigin()[2]+i*image->GetSpacing()[2]; DDV(extent, 6); + // Prepare the marching squares + vtkSmartPointer squares = vtkSmartPointer::New(); clipper->SetOutputWholeExtent(extent[0],extent[1],extent[2], - extent[3],extent[4],extent[5]); - + extent[3],extent[4],extent[5]); + squares->SetInput(clipper->GetOutput()); squares->Update(); DD(squares->GetNumberOfContours()); mListOfContours[i]->SetMesh(squares->GetOutput()); + */ } + DD("done"); + + vtkSmartPointer append = vtkSmartPointer::New(); + for(unsigned int i=0; iAddInput(contours[i]); + } + append->Update(); + + mMesh = vtkSmartPointer::New(); + mMesh->DeepCopy(append->GetOutput()); + + // Write vtk + vtkPolyDataWriter * w = vtkPolyDataWriter::New(); + w->SetInput(mMesh); + w->SetFileName("toto.vtk"); + w->Write(); + + DD("done"); +} +//-------------------------------------------------------------------- + + +//-------------------------------------------------------------------- +#if CLITK_USE_SYSTEM_GDCM == 1 +void clitk::DicomRT_ROI::Read(vtkSmartPointer & reader, int roiindex) +{ + vtkRTStructSetProperties * p = reader->GetRTStructSetProperties(); + + mName = p->GetStructureSetROIName(roiindex); + mNumber = p->GetStructureSetROINumber(roiindex); + //mColor = //FIXME !! + SetDicomUptodateFlag(true); + // Get the contour + mMesh = reader->GetOutput(roiindex); + DicomRT_Contour::Pointer c = DicomRT_Contour::New(); + c->SetMesh(mMesh); // FIXME no GetZ, not GetPoints + mMeshIsUpToDate = true; + mListOfContours.push_back(c); } +#endif //-------------------------------------------------------------------- +