]> Creatis software - clitk.git/blobdiff - itk/clitkSegmentationUtils.txx
Removed unused text variable
[clitk.git] / itk / clitkSegmentationUtils.txx
index 36594aa43b3e0aecfcb0cee56686e83f68cdd73a..4990b247c2b85dac1e342b77dc64901c80c553f6 100644 (file)
@@ -33,6 +33,7 @@
 #include <itkConstantPadImageFilter.h>
 #include <itkImageSliceIteratorWithIndex.h>
 #include <itkBinaryMorphologicalOpeningImageFilter.h>
+#include <itkImageDuplicator.h>
 
 namespace clitk {
 
@@ -511,7 +512,6 @@ namespace clitk {
     typename ImageType::PointType dummy;
     centroids.push_back(dummy); // label 0 -> no centroid, use dummy point for BG 
     //DS FIXME (not useful ! to change ..)
-    DD(labelMap->GetNumberOfLabelObjects());
     for(uint i=0; i<labelMap->GetNumberOfLabelObjects(); i++) {
       int label = labelMap->GetLabels()[i];
       centroids.push_back(labelMap->GetLabelObject(label)->GetCentroid());
@@ -520,6 +520,30 @@ namespace clitk {
   //--------------------------------------------------------------------
 
 
+  //--------------------------------------------------------------------
+  template<class ImageType, class LabelType>
+  typename itk::LabelMap< itk::ShapeLabelObject<LabelType, ImageType::ImageDimension> >::Pointer
+  ComputeLabelMap(const ImageType * image, 
+                  typename ImageType::PixelType BG, 
+                  bool computePerimeterFlag) 
+  {
+    static const unsigned int Dim = ImageType::ImageDimension;
+    typedef itk::ShapeLabelObject< LabelType, Dim > LabelObjectType;
+    typedef itk::LabelMap< LabelObjectType > LabelMapType;
+    typedef itk::LabelImageToLabelMapFilter<ImageType, LabelMapType> ImageToMapFilterType;
+    typename ImageToMapFilterType::Pointer imageToLabelFilter = ImageToMapFilterType::New(); 
+    typedef itk::ShapeLabelMapFilter<LabelMapType, ImageType> ShapeFilterType; 
+    typename ShapeFilterType::Pointer statFilter = ShapeFilterType::New();
+    imageToLabelFilter->SetBackgroundValue(BG);
+    imageToLabelFilter->SetInput(image);
+    statFilter->SetInput(imageToLabelFilter->GetOutput());
+    statFilter->SetComputePerimeter(computePerimeterFlag);
+    statFilter->Update();
+    return statFilter->GetOutput();
+  }
+  //--------------------------------------------------------------------
+
+
   //--------------------------------------------------------------------
   template<class ImageType>
   void
@@ -1061,25 +1085,34 @@ namespace clitk {
     typedef typename itk::Image<typename ImageType::PixelType, d> SliceType;
     std::vector<typename SliceType::Pointer> slices;
     clitk::ExtractSlices<ImageType>(input, d, slices);
-    DD(slices.size());
     
     // Labelize and keep the main one
     std::vector<typename SliceType::Pointer> o;
     for(uint i=0; i<slices.size(); i++) {
-      DD(i);
       o.push_back(clitk::Labelize<SliceType>(slices[i], BG, false, 1));
       o[i] = clitk::KeepLabels<SliceType>(o[i], BG, FG, 1, 1, true);
     }
     
     // Join slices
-    DD("join");
     typename ImageType::Pointer output;
     output = clitk::JoinSlices<ImageType>(o, input, d);
-    DD("return");
     return output;
   }
   //--------------------------------------------------------------------
 
 
+  //--------------------------------------------------------------------
+  template<class ImageType>
+  typename ImageType::Pointer
+  Clone(const ImageType * input) {
+    typedef itk::ImageDuplicator<ImageType> DuplicatorType;
+    typename DuplicatorType::Pointer duplicator = DuplicatorType::New();
+    duplicator->SetInputImage(input);
+    duplicator->Update();
+    return duplicator->GetOutput();
+  }
+  //--------------------------------------------------------------------
+
+
 } // end of namespace