]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Image/SkeletonFilter.hxx
...
[FrontAlgorithms.git] / lib / fpa / Image / SkeletonFilter.hxx
index 9cb3019c85aed4ae34be9dd76d6b6cf80a080aef..f1e315fe6ca3506f83956194614b9bf75b7f2e27 100644 (file)
@@ -9,6 +9,9 @@
 #include <itkImageRegionIteratorWithIndex.h>
 #include <itkMinimumMaximumImageCalculator.h>
 
+#include <fpa/Image/Functors/VertexIdentity.h>
+#include <fpa/Base/Functors/InvertValue.h>
+
 // -------------------------------------------------------------------------
 template< class _TImage, class _TScalar >
 void fpa::Image::SkeletonFilter< _TImage, _TScalar >::
@@ -75,6 +78,17 @@ SkeletonFilter( )
   : Superclass( ),
     m_SeedFromMaximumDistance( false )
 {
+  typedef fpa::Image::Functors::VertexIdentity< TScalarImage, _TScalar > _TVertexFunc;
+  typedef fpa::Base::Functors::InvertValue< _TScalar, _TScalar > _TValueFunc;
+
+  typename _TVertexFunc::Pointer vertex_func = _TVertexFunc::New( );
+  typename _TValueFunc::Pointer value_func = _TValueFunc::New( );
+  value_func->SetAlpha( 1 );
+  value_func->SetBeta( 1 );
+
+  this->SetFunctor( vertex_func );
+  this->SetFunctor( value_func );
+
   this->m_DistanceMap = TDistanceMap::New( );
   this->m_DistanceMap->InsideIsPositiveOn( );
   this->m_DistanceMap->SquaredDistanceOff( );
@@ -223,8 +237,10 @@ _Skeleton( const std::vector< TVertex >& end_points, _TAdjacencies& A )
   tags->SetBufferedRegion( mst->GetBufferedRegion( ) );
   tags->Allocate( );
   tags->FillBuffer( 0 );
-  for( TVertex it: end_points )
+  typename std::vector< TVertex >::const_iterator eIt = end_points.begin( );
+  for( ; eIt != end_points.end( ); ++eIt )
   {
+    TVertex it = *eIt;
     TVertex p = mst->GetParent( it );
     while( it != p )
     {
@@ -238,8 +254,10 @@ _Skeleton( const std::vector< TVertex >& end_points, _TAdjacencies& A )
   } // rof
 
   // Build paths (branches)
-  for( TVertex it: end_points )
+  eIt = end_points.begin( );
+  for( ; eIt != end_points.end( ); ++eIt )
   {
+    TVertex it = *eIt;
     TVertex p = mst->GetParent( it );
     TVertex sIdx = it;
     typename _TPath::Pointer path = _TPath::New( );