]> Creatis software - clitk.git/blobdiff - itk/clitkAutoCropFilter.txx
Change some SetInputData into SetInputConnection to be consistent with algorithm...
[clitk.git] / itk / clitkAutoCropFilter.txx
index 145cc36f8ae24434cd47d72d1414e398a1c3fd64..e31e424d43bb2ce99d25889edf74b25464aa048b 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to: 
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-  ======================================================================-====*/
+  ===========================================================================**/
 
 #ifndef CLITKAUTOCROPFILTER_TXX
 #define CLITKAUTOCROPFILTER_TXX
 
 // clitk
 #include "clitkCommon.h"
-#include "clitkSegmentationUtils.h"
 
 // itk
 #include "itkAutoCropLabelMapFilter.h"
@@ -39,6 +38,7 @@ namespace clitk {
   AutoCropFilter():itk::ImageToImageFilter<ImageType, ImageType>() {
     this->SetNumberOfRequiredInputs(1);
     m_BackgroundValue  = 0;
+    UseBorderOff();
   }
   //--------------------------------------------------------------------
 
@@ -95,8 +95,17 @@ namespace clitk {
     typedef itk::AutoCropLabelMapFilter<LabelMapType> AutoCropFilterType;
     typename AutoCropFilterType::Pointer autoCropFilter = AutoCropFilterType::New();
     autoCropFilter->SetInput(imageToLabelFilter->GetOutput());
-    autoCropFilter->ReleaseDataFlagOff(); 
-    
+    //    autoCropFilter->ReleaseDataFlagOff(); 
+    if (GetUseBorder()) {
+      DD("Crop UseBorder : not correctly implemented do not use (use PadLabelMapFilter)");
+      // http://www.itk.org/Doxygen/html/classitk_1_1AutoCropLabelMapFilter.html#a54f49fdff8d9f2d2313134109d510285
+      exit(0); 
+      typename ImageType::SizeType s;
+      for(uint i=0; i<ImageType::ImageDimension; i++) s[i] = 1;
+      autoCropFilter->SetCropBorder(s);
+    }
+    autoCropFilter->ReleaseDataFlagOn(); 
+
     // Convert to LabelImage
     typedef itk::LabelMapToLabelImageFilter<LabelMapType, ImageType> MapToImageFilterType;
     typename MapToImageFilterType::Pointer labelToImageFilter = MapToImageFilterType::New();       
@@ -114,8 +123,9 @@ namespace clitk {
       typename ImageType::IndexType index; 
       index.Fill(0);
       m_Region.SetIndex(index);
-      DD(m_Region);
     }
+
+    // Set the region to output
     output->SetLargestPossibleRegion(m_Region);
     output->SetRequestedRegion(m_Region);
     output->SetBufferedRegion(m_Region);
@@ -133,17 +143,16 @@ namespace clitk {
   
     // Extract the region with RegionOfInterestImageFilter or ExtractImageFilter ? 
     // The second is when reducing the nb of dimension (index always zero)
-    // The first keep index
+    // The first keep index. 
+    // OLD : typedef itk::ExtractImageFilter<ImageType, ImageType> CropFilterType;
+    // OLD : cropFilter->SetExtractionRegion(m_Region);
 
     typedef itk::RegionOfInterestImageFilter<ImageType, ImageType> CropFilterType;
-    //typedef itk::ExtractImageFilter<ImageType, ImageType> CropFilterType;
     m_labeImage->SetRequestedRegion(m_labeImage->GetLargestPossibleRegion());
     typename CropFilterType::Pointer cropFilter = CropFilterType::New();
     cropFilter->SetInput(m_labeImage);
     cropFilter->SetReleaseDataFlag(this->GetReleaseDataFlag());
-
     cropFilter->SetRegionOfInterest(m_Region);
-    //cropFilter->SetExtractionRegion(m_Region);
 
     // Go ! 
     cropFilter->Update();