]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Common/SliceBySliceRandomWalker.hxx
...
[FrontAlgorithms.git] / lib / fpa / Common / SliceBySliceRandomWalker.hxx
index c0bc3ff516e51fe83c2f85239b7ea14cbce3d1f9..3856bca7d697c6ef0c5ed2744fba504c5b1b3a1f 100644 (file)
@@ -6,6 +6,7 @@
 #define __fpa__Common__SliceBySliceRandomWalker__hxx__
 
 #include <vector>
+#include <itkBinaryThresholdImageFilter.h>
 #include <itkExtractImageFilter.h>
 #include <itkImageRegionConstIterator.h>
 #include <itkImageRegionIterator.h>
@@ -197,7 +198,7 @@ _RandomWalker(
     // Create seeds and background
     _TSliceBinaryPtr seeds = _TSliceBinary::New( );
     seeds->CopyInformation( tmp );
-    seeds->SetRequestedRegion( region );
+    seeds->SetBufferedRegion( region );
     seeds->Allocate( );
     seeds->FillBuffer( 0 );
 
@@ -250,10 +251,19 @@ _RandomWalker(
     rw->SetInputLabels( seeds );
     rw->SetEdgeFunction( edge );
 
+    // Extract label
+    typedef itk::BinaryThresholdImageFilter< _TSliceBinary, _TSliceBinary > _TExtract;
+    typename _TExtract::Pointer extract = _TExtract::New( );
+    extract->SetInput( rw->GetOutput( ) );
+    extract->SetInsideValue( 1 );
+    extract->SetOutsideValue( 0 );
+    extract->SetLowerThreshold( 1 );
+    extract->SetUpperThreshold( 1 );
+
     // Keep maximum
     typedef itk::MaximumImageFilter< _TSliceBinary > _TMax;
     typename _TMax::Pointer max = _TMax::New();
-    max->SetInput( 0, rw->GetOutput( ) );
+    max->SetInput( 0, extract->GetOutput( ) );
     max->SetInput( 1, next );
     max->Update( );
     binaryTree[ z + o ] = max->GetOutput( );