]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Common/RandomWalker.hxx
...
[FrontAlgorithms.git] / lib / fpa / Common / RandomWalker.hxx
similarity index 90%
rename from lib/fpa/Common/OriginalRandomWalker.hxx
rename to lib/fpa/Common/RandomWalker.hxx
index 2d3dc73a58ea6592175395bf70beebfe678b0d4b..a79873500d9bd10d62403b3ae1735df0bd8757de 100644 (file)
@@ -2,29 +2,19 @@
 // @author Leonardo Florez Valencia
 // @email florez-l@javeriana.edu.co
 // =========================================================================
-#ifndef __fpa__Common__OriginalRandomWalker__hxx__
-#define __fpa__Common__OriginalRandomWalker__hxx__
+#ifndef __fpa__Common__RandomWalker__hxx__
+#define __fpa__Common__RandomWalker__hxx__
 
 #include <itkImageRegionConstIteratorWithIndex.h>
 #include <itkImageRegionIteratorWithIndex.h>
-#include <Eigen/Sparse>
-
-// -------------------------------------------------------------------------
-/* TODO
-   template< class _TImage, class _TLabels, class _TScalar >
-   void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
-   AddSeed( const TIndex& seed, const TLabel& label )
-   {
-   this->m_Seeds.push_back( seed );
-   this->m_Labels.push_back( label );
-   this->Modified( );
-   }
-*/
+#ifdef USE_Eigen3
+#  include <Eigen/Sparse>
+#endif // USE_Eigen3
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
-OriginalRandomWalker( )
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
+RandomWalker( )
   : Superclass( )
 {
   fpaFilterInputConfigureMacro( InputLabels, TLabels );
@@ -33,16 +23,17 @@ OriginalRandomWalker( )
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
-~OriginalRandomWalker( )
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
+~RandomWalker( )
 {
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
-void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+void fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 GenerateData( )
 {
+#ifdef USE_Eigen3
   // Useful typedefs
   typedef Eigen::Triplet< TScalar >         _TTriplet;
   typedef std::vector< _TTriplet >          _TTriplets;
@@ -133,13 +124,15 @@ GenerateData( )
   // Fill outputs
   itkDebugMacro( << "Filling output..." );
   this->_Output( x, St, invLabels );
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
-_TScalar fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+_TScalar fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _L( const TIndex& i, const TIndex& j )
 {
+#ifdef USE_Eigen3
   if( i == j )
   {
     TRegion r = this->GetInput( )->GetRequestedRegion( );
@@ -160,14 +153,18 @@ _L( const TIndex& i, const TIndex& j )
   }
   else
     return( -( this->m_EdgeFunction->Evaluate( i, j ) ) );
+#else // USE_Eigen3
+  return( _TScalar( 0 ) );
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
-void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+void fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _Boundary( _TTriplets& B, std::map< TLabel, unsigned long >& labels )
 {
+#ifdef USE_Eigen3
   B.clear( );
 
   // Set up the multithreaded processing
@@ -190,15 +187,17 @@ _Boundary( _TTriplets& B, std::map< TLabel, unsigned long >& labels )
 
   // Execute threader
   threads->SingleMethodExecute( );
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
 ITK_THREAD_RETURN_TYPE
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _BoundaryCbk( void* arg )
 {
+#ifdef USE_Eigen3
   _TBoundaryThreadStruct* thrStr;
   itk::ThreadIdType total, thrId, thrCount;
   itk::MultiThreader::ThreadInfoStruct* thrInfo =
@@ -215,19 +214,21 @@ _BoundaryCbk( void* arg )
       reinterpret_cast< _TTriplets* >( thrStr->Triplets ),
       thrStr->Labels
       );
+#endif // USE_Eigen3
   return( ITK_THREAD_RETURN_VALUE );
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
-void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+void fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _ThreadedBoundary(
   const TRegion& region, const itk::ThreadIdType& id,
   _TTriplets* B,
   std::map< TLabel, unsigned long >* labels
   )
 {
+#ifdef USE_Eigen3
   typedef itk::ImageRegionConstIteratorWithIndex< TLabels > _TIt;
   typedef typename std::map< TLabel, unsigned long >::value_type _TMapValue;
   typedef typename std::map< unsigned long, TLabel >::value_type _TInvValue;
@@ -250,14 +251,16 @@ _ThreadedBoundary(
     } // fi
 
   } // rof
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
-void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+void fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _Laplacian( _TTriplets& A, _TTriplets& R, const _TTriplets& B )
 {
+#ifdef USE_Eigen3
   A.clear( );
   R.clear( );
 
@@ -282,15 +285,17 @@ _Laplacian( _TTriplets& A, _TTriplets& R, const _TTriplets& B )
 
   // Execute threader
   threads->SingleMethodExecute( );
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
 ITK_THREAD_RETURN_TYPE
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _LaplacianCbk( void* arg )
 {
+#ifdef USE_Eigen3
   _TLaplacianThreadStruct* thrStr;
   itk::ThreadIdType total, thrId, thrCount;
   itk::MultiThreader::ThreadInfoStruct* thrInfo =
@@ -308,18 +313,20 @@ _LaplacianCbk( void* arg )
       reinterpret_cast< _TTriplets* >( thrStr->R ),
       reinterpret_cast< const _TTriplets* >( thrStr->B )
       );
+#endif // USE_Eigen3
   return( ITK_THREAD_RETURN_VALUE );
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
-void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+void fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _ThreadedLaplacian(
   const TRegion& region, const itk::ThreadIdType& id,
   _TTriplets* A, _TTriplets* R, const _TTriplets* B
   )
 {
+#ifdef USE_Eigen3
   typedef itk::ImageRegionConstIteratorWithIndex< TImage > _TIt;
   typedef typename _TTriplets::value_type _TTriplet;
 
@@ -383,16 +390,18 @@ _ThreadedLaplacian(
     } // rof
 
   } // rof
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TMatrix, class _TTriplets >
-void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+void fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _Output(
   const _TMatrix& X, const _TTriplets& S, const std::vector< TLabel >& invLabels
   )
 {
+#ifdef USE_Eigen3
   // Set up the multithreaded processing
   _TOutputThreadStruct thrStr;
   thrStr.Filter = this;
@@ -416,15 +425,17 @@ _Output(
 
   // Execute threader
   threads->SingleMethodExecute( );
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TMatrix, class _TTriplets >
 ITK_THREAD_RETURN_TYPE
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _OutputCbk( void* arg )
 {
+#ifdef USE_Eigen3
   _TOutputThreadStruct* thrStr;
   itk::ThreadIdType total, thrId, thrCount;
   itk::MultiThreader::ThreadInfoStruct* thrInfo =
@@ -442,19 +453,21 @@ _OutputCbk( void* arg )
       reinterpret_cast< const _TTriplets* >( thrStr->S ),
       thrStr->InvLabels
       );
+#endif // USE_Eigen3
   return( ITK_THREAD_RETURN_VALUE );
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TMatrix, class _TTriplets >
-void fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+void fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _ThreadedOutput(
   const TRegion& region, const itk::ThreadIdType& id,
   const _TMatrix* X, const _TTriplets* S,
   const std::vector< TLabel >* invLabels
   )
 {
+#ifdef USE_Eigen3
   // Fill outputs
   const TLabels* in_labels = this->GetInputLabels( );
   TLabels* out_labels = this->GetOutput( );
@@ -496,12 +509,13 @@ _ThreadedOutput(
     } // fi
 
   } // rof
+#endif // USE_Eigen3
 }
 
 // -------------------------------------------------------------------------
 template< class _TImage, class _TLabels, class _TScalar >
 unsigned long
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _1D( const TIndex& idx, const TRegion& region )
 {
   unsigned long i = idx[ 0 ];
@@ -520,7 +534,7 @@ _1D( const TIndex& idx, const TRegion& region )
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
 unsigned long
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _SeedIndex( const unsigned long& i, const _TTriplets& t )
 {
   unsigned long s = 0;
@@ -546,7 +560,7 @@ _SeedIndex( const unsigned long& i, const _TTriplets& t )
 template< class _TImage, class _TLabels, class _TScalar >
 template< class _TTriplets >
 unsigned long
-fpa::Common::OriginalRandomWalker< _TImage, _TLabels, _TScalar >::
+fpa::Common::RandomWalker< _TImage, _TLabels, _TScalar >::
 _NearSeedIndex( const unsigned long& i, const _TTriplets& t )
 {
   long s = 0;
@@ -569,5 +583,6 @@ _NearSeedIndex( const unsigned long& i, const _TTriplets& t )
   return( i - d );
 }
 
-#endif // __fpa__Common__OriginalRandomWalker__hxx__
+#endif // __fpa__Common__RandomWalker__hxx__
+
 // eof - $RCSfile$