]> Creatis software - FrontAlgorithms.git/commitdiff
...
authorLeonardo Flórez-Valencia <florez-l@javeriana.edu.co>
Wed, 9 Aug 2017 20:11:58 +0000 (15:11 -0500)
committerLeonardo Flórez-Valencia <florez-l@javeriana.edu.co>
Wed, 9 Aug 2017 20:11:58 +0000 (15:11 -0500)
13 files changed:
lib/fpa/Base/SeedsInterface.h
lib/fpa/Base/SingleSeedInterface.h
lib/fpa/Config.h.in
lib/fpa/Image/DefaultTraits.h
lib/fpa/Image/Dijkstra.h
lib/fpa/Image/Dijkstra.hxx
lib/fpa/Image/LabelledSeedsInterface.h
lib/fpa/Image/LabelledSeedsInterface.hxx
lib/fpa/Image/Mori.h
lib/fpa/Image/Mori.hxx
lib/fpa/Image/RandomWalker.h
lib/fpa/Image/RandomWalker.hxx
lib/fpa/Image/RegionGrow.h

index 8162675cf003469497f797b9c1cdd108e8dc7971..d556f3aed3017b78411d48d12aabeff3188f8192 100644 (file)
 #include <itkConceptChecking.h>
 #include <itkProcessObject.h>
 
-/* TODO
-   #include <functional>
-   #include <set>
-   #include <vector>
-*/
-
 namespace fpa
 {
   namespace Base
@@ -30,53 +24,10 @@ namespace fpa
       typedef _TTraits       TTraits;
       fpa_Base_TraitTypes( typename TTraits );
 
-      /* TODO
-         typedef _TVertex       TVertex;
-         typedef _TPoint        TPoint;
-         typedef _TInputValue   TInputValue;
-         typedef _TOutputValue  TOutputValue;
-         typedef _TFrontId      TFrontId;
-         typedef _TCompare      TCompare;
-         typedef SeedsInterface Self;
-
-         struct TSeed
-         {
-         TVertex Vertex;
-         TPoint  Point;
-         bool    IsPoint;
-         bool    IsUnified;
-         TFrontId FrontId;
-         TSeed( )
-         : IsUnified( false ),
-         FrontId( TFrontId( 0 ) )
-         { }
-         };
-         typedef std::vector< TSeed > TSeeds;
-
-         struct TNode
-         {
-         TVertex  Vertex;
-         TVertex  Parent;
-         TFrontId FrontId;
-
-         // Hack to hide the fact that seed values need to be initialized
-         mutable TOutputValue Value;
-         };
-         struct TNodeCompare
-         {
-         bool operator()( const TNode& a, const TNode& b ) const
-         {
-         TCompare cmp;
-         return( cmp( a.Vertex, b.Vertex ) );
-         }
-         };
-         typedef std::set< TNode, TNodeCompare > TNodes;
-      */
-
     private:
       itkConceptMacro(
         Check_TFrontId,
-        ( itk::Concept::IsUnsignedInteger< _TFrontId > )
+        ( itk::Concept::IsUnsignedInteger< TFrontId > )
         );
 
     public:
index 807d8d0552cb557818446b85d7941be37fad782e..02950325cbf0cac1200211ba1e9f3b3a8f8b0e94 100644 (file)
@@ -24,53 +24,10 @@ namespace fpa
       typedef _TTraits            TTraits;
       fpa_Base_TraitTypes( typename TTraits );
 
-      /* TODO
-         typedef _TVertex       TVertex;
-         typedef _TPoint        TPoint;
-         typedef _TInputValue   TInputValue;
-         typedef _TOutputValue  TOutputValue;
-         typedef _TFrontId      TFrontId;
-         typedef _TCompare      TCompare;
-         typedef SeedsInterface Self;
-
-         struct TSeed
-         {
-         TVertex Vertex;
-         TPoint  Point;
-         bool    IsPoint;
-         bool    IsUnified;
-         TFrontId FrontId;
-         TSeed( )
-         : IsUnified( false ),
-         FrontId( TFrontId( 0 ) )
-         { }
-         };
-         typedef std::vector< TSeed > TSeeds;
-
-         struct TNode
-         {
-         TVertex  Vertex;
-         TVertex  Parent;
-         TFrontId FrontId;
-
-         // Hack to hide the fact that seed values need to be initialized
-         mutable TOutputValue Value;
-         };
-         struct TNodeCompare
-         {
-         bool operator()( const TNode& a, const TNode& b ) const
-         {
-         TCompare cmp;
-         return( cmp( a.Vertex, b.Vertex ) );
-         }
-         };
-         typedef std::set< TNode, TNodeCompare > TNodes;
-      */
-
     private:
       itkConceptMacro(
         Check_TFrontId,
-        ( itk::Concept::IsUnsignedInteger< _TFrontId > )
+        ( itk::Concept::IsUnsignedInteger< TFrontId > )
         );
 
     public:
index e1cd318189a6a2678e41bb305157a98434b5ae0e..aa7042b3675a32e0bd1fa30be62869cfff331b77 100644 (file)
 
 // -------------------------------------------------------------------------
 #define fpa_Base_TraitTypes( _traits_ )              \
+  typedef _traits_::TEvent        TEvent;            \
+  typedef _traits_::TFrontId      TFrontId;          \
   typedef _traits_::TInputValue   TInputValue;       \
-  typedef _traits_::TOutputValue  TOutputValue;      \
   typedef _traits_::TNeighborhood TNeighborhood;     \
   typedef _traits_::TNode         TNode;             \
   typedef _traits_::TNodes        TNodes;            \
+  typedef _traits_::TOutputValue  TOutputValue;      \
+  typedef _traits_::TPoint        TPoint;            \
+  typedef _traits_::TSeed         TSeed;             \
   typedef _traits_::TSeeds        TSeeds;            \
-  typedef _traits_::TVertex       TVertex;           \
-  typedef _traits_::TEvent        TEvent
+  typedef _traits_::TVertex       TVertex
 
 #endif // __fpa__Config__h__
 
index 9ce95eb67a718b9f707b02501270945fb6a792cb..b56bdec5f3f19c84834eb2f1c4fe0cf1a74c176e 100644 (file)
@@ -6,9 +6,10 @@
 #ifndef __fpa__Image__DefaultTraits__h__
 #define __fpa__Image__DefaultTraits__h__
 
+#include <set>
 #include <vector>
 #include <itkConceptChecking.h>
-#include <itkImageToImageFilter.h>
+#include <fpa/Base/Event.h>
 
 namespace fpa
 {
@@ -32,12 +33,41 @@ namespace fpa
       typedef typename TOutputImage::PixelType       TOutputValue;
       typedef typename TVertex::LexicographicCompare TCompare;
 
-      typedef std::vector< TVertex > TNeighborhood;
+      typedef fpa::Base::Event< TVertex > TEvent;
+      typedef std::vector< TVertex >      TNeighborhood;
 
-      typedef typename TSeedsInterface::TNode  TNode;
-      typedef typename TSeedsInterface::TNodes TNodes;
-      typedef typename TSeedsInterface::TSeed  TSeed;
-      typedef typename TSeedsInterface::TSeeds TSeeds;
+      struct TSeed
+      {
+        TVertex Vertex;
+        TPoint  Point;
+        bool    IsPoint;
+        bool    IsUnified;
+        TFrontId FrontId;
+        TSeed( )
+          : IsUnified( false ),
+            FrontId( TFrontId( 0 ) )
+          { }
+      };
+      typedef std::vector< TSeed > TSeeds;
+
+      struct TNode
+      {
+        TVertex  Vertex;
+        TVertex  Parent;
+        TFrontId FrontId;
+
+        // Hack to hide the fact that seed values need to be initialized
+        mutable TOutputValue Value;
+      };
+      struct TNodeCompare
+      {
+        bool operator()( const TNode& a, const TNode& b ) const
+          {
+            TCompare cmp;
+            return( cmp( a.Vertex, b.Vertex ) );
+          }
+      };
+      typedef std::set< TNode, TNodeCompare > TNodes;
 
     private:
       itkConceptMacro(
index 24c06438c01885c54e184881e3f3edb33cdc64d8..4262f7f4b9d8e903d5c017fe64b1b59fb306c31b 100644 (file)
@@ -7,6 +7,8 @@
 #define __fpa__Image__Dijkstra__h__
 
 #include <fpa/Base/Dijkstra.h>
+#include <fpa/Base/MarksInterfaceWithCollisions.h>
+#include <fpa/Base/SeedsInterface.h>
 #include <fpa/Image/Algorithm.h>
 #include <fpa/Image/DefaultTraits.h>
 #include <fpa/Image/MinimumSpanningTree.h>
@@ -18,25 +20,25 @@ namespace fpa
   {
     /**
      */
-    template< class _TInputImage, class _TOutputImage, class _TFrontId = unsigned char >
+    template< class _TInputImage, class _TOutputImage, class _TFrontId = unsigned char, class _TTraits = fpa::Image::DefaultTraits< _TInputImage, _TOutputImage, _TFrontId > >
     class Dijkstra
-      : public fpa::Base::Dijkstra< fpa::Image::Algorithm< fpa::Image::DefaultTraits< _TInputImage, _TOutputImage, _TFrontId > >, fpa::Image::MinimumSpanningTree< _TInputImage::ImageDimension > >
+      : public fpa::Base::Dijkstra< fpa::Image::Algorithm< _TTraits, fpa::Base::MarksInterfaceWithCollisions< _TTraits >, fpa::Base::SeedsInterface< _TTraits > >, fpa::Image::MinimumSpanningTree< _TInputImage::ImageDimension > >
     {
     public:
       typedef _TInputImage  TInputImage;
       typedef _TOutputImage TOutputImage;
-      typedef _TFrontId     TFrontId;
+      typedef _TTraits      TTraits;
+      typedef fpa::Base::MarksInterfaceWithCollisions< TTraits > TMarksInterface;
+      typedef fpa::Base::SeedsInterface< TTraits > TSeedsInterface;
       typedef fpa::Image::MinimumSpanningTree< _TInputImage::ImageDimension > TMST;
 
-      typedef fpa::Image::DefaultTraits< TInputImage, TOutputImage, TFrontId > TTraits;
-      typedef fpa::Image::Algorithm< TTraits >        TAlgorithm;
+      typedef fpa::Image::Algorithm< TTraits, TMarksInterface, TSeedsInterface > TAlgorithm;
       typedef fpa::Base::Dijkstra< TAlgorithm, TMST > Superclass;
       typedef Dijkstra                                Self;
       typedef itk::SmartPointer< Self >               Pointer;
       typedef itk::SmartPointer< const Self >         ConstPointer;
 
-      typedef typename Superclass::TOutputValue TOutputValue;
-      typedef typename Superclass::TVertex      TVertex;
+      fpa_Base_TraitTypes( typename TTraits );
 
       typedef fpa::Image::Functors::Dijkstra::Function< TInputImage, TOutputValue > TWeightFunction;
 
index b0780de94ed2060631a93851761ac730462d8eaa..f3c6a7216a47090a3fb10c23205422c91eb12f3c 100644 (file)
@@ -7,23 +7,23 @@
 #define __fpa__Image__Dijkstra__hxx__
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage, class _TFrontId >
-fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId >::
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
 Dijkstra( )
   : Superclass( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage, class _TFrontId >
-fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId >::
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
 ~Dijkstra( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage, class _TFrontId >
-void fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId >::
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+void fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
 _BeforeGenerateData( )
 {
   this->Superclass::_BeforeGenerateData( );
@@ -34,8 +34,8 @@ _BeforeGenerateData( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage, class _TFrontId >
-void fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId >::
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+void fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
 _ConfigureOutput( const TOutputValue& v )
 {
   this->Superclass::_ConfigureOutput( v );
index 74ec756a071ee0789510a0ea90c516a028804014..96016c05df80bfacbd30502daf75cb28a6adadc1 100644 (file)
@@ -7,7 +7,6 @@
 #define __fpa__Image__LabelledSeedsInterface__h__
 
 #include <fpa/Base/SeedsInterface.h>
-
 #include <itkImage.h>
 
 namespace fpa
@@ -16,23 +15,15 @@ namespace fpa
   {
     /**
      */
-    template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare = std::greater< _TVertex > >
+    template< class _TTraits >
     class LabelledSeedsInterface
-      : public fpa::Base::SeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >
+      : public fpa::Base::SeedsInterface< _TTraits >
     {
     public:
-      typedef _TVertex      TVertex;
-      typedef _TPoint       TPoint;
-      typedef _TInputValue  TInputValue;
-      typedef _TOutputValue TOutputValue;
-      typedef _TFrontId     TFrontId;
-      typedef _TCompare     TCompare;
-      typedef LabelledSeedsInterface Self;
-      typedef fpa::Base::SeedsInterface< TVertex, TPoint, TInputValue, TOutputValue, TFrontId, TCompare > Superclass;
-
-      typedef typename Superclass::TNode        TNode;
-      typedef typename Superclass::TNodeCompare TNodeCompare;
-      typedef typename Superclass::TSeeds       TSeeds;
+      typedef _TTraits TTraits;
+      typedef LabelledSeedsInterface               Self;
+      typedef fpa::Base::SeedsInterface< TTraits > Superclass;
+      fpa_Base_TraitTypes( typename TTraits );
 
       typedef itk::Image< TFrontId, TVertex::Dimension > TLabelImage;
 
index 98cc3347f70534fe1bd723f11c1c2c33b159a9b7..5b184f1db5e53151ecae81fcb22d78139ec9336a 100644 (file)
@@ -10,9 +10,8 @@
 #include <itkExceptionObject.h>
 
 // -------------------------------------------------------------------------
-template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare >
-void
-fpa::Image::LabelledSeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >::
+template< class _TTraits >
+void fpa::Image::LabelledSeedsInterface< _TTraits >::
 AddSeed( const TVertex& seed )
 {
   std::ostringstream msg;
@@ -26,9 +25,8 @@ AddSeed( const TVertex& seed )
 }
 
 // -------------------------------------------------------------------------
-template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare >
-void
-fpa::Image::LabelledSeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >::
+template< class _TTraits >
+void fpa::Image::LabelledSeedsInterface< _TTraits >::
 AddSeed( const TPoint& seed )
 {
   std::ostringstream msg;
@@ -42,35 +40,33 @@ AddSeed( const TPoint& seed )
 }
 
 // -------------------------------------------------------------------------
-template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare >
-const typename 
-fpa::Image::LabelledSeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >::
-TLabelImage*
-fpa::Image::LabelledSeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >::
+template< class _TTraits >
+const typename  fpa::Image::LabelledSeedsInterface< _TTraits >::
+TLabelImage* fpa::Image::LabelledSeedsInterface< _TTraits >::
 GetLabels( ) const
 {
   return( this->m_LabelImage );
 }
 
 // -------------------------------------------------------------------------
-template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare >
-void fpa::Image::LabelledSeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >::
+template< class _TTraits >
+void fpa::Image::LabelledSeedsInterface< _TTraits >::
 SetLabels( const TLabelImage* image )
 {
   this->m_LabelImage = image;
 }
 
 // -------------------------------------------------------------------------
-template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare >
-fpa::Image::LabelledSeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >::
+template< class _TTraits >
+fpa::Image::LabelledSeedsInterface< _TTraits >::
 LabelledSeedsInterface( itk::ProcessObject* filter )
   : Superclass( filter )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TVertex, class _TPoint, class _TInputValue, class _TOutputValue, class _TFrontId, class _TCompare >
-fpa::Image::LabelledSeedsInterface< _TVertex, _TPoint, _TInputValue, _TOutputValue, _TFrontId, _TCompare >::
+template< class _TTraits >
+fpa::Image::LabelledSeedsInterface< _TTraits >::
 ~LabelledSeedsInterface( )
 {
 }
index 7e6b0e032ce1f779d763893c3600f1010ff1916a..b45db506d2c99d21153398215e4857a1c6daac18 100644 (file)
@@ -18,52 +18,17 @@ namespace fpa
   {
     /**
      */
-    template< class _TInputImage, class _TOutputImage >
-    class MoriTraits
-      : public fpa::Image::DefaultTraits< _TInputImage, _TOutputImage, typename _TOutputImage::PixelType >
-    {
-    public:
-      typedef MoriTraits    Self;
-      typedef _TInputImage  TInputImage;
-      typedef _TOutputImage TOutputImage;
-      typedef typename TOutputImage::PixelType TFrontId;
-      typedef fpa::Image::DefaultTraits< TInputImage, TOutputImage, TFrontId > Superclass;
-
-      typedef typename Superclass::TVertex       TVertex;
-      typedef typename Superclass::TInputValue   TInputValue;
-      typedef typename Superclass::TPoint        TPoint;
-      typedef typename Superclass::TOutputValue  TOutputValue;
-      typedef typename Superclass::TCompare      TCompare;
-      typedef typename Superclass::TNeighborhood TNeighborhood;
-      typedef typename Superclass::TFilter       TFilter;
-
-      typedef fpa::Base::SingleSeedInterface< TVertex, TPoint, TInputValue, TOutputValue, TFrontId, TCompare > TSeedsInterface;
-      typedef fpa::Base::MarksInterface< TVertex > TMarksInterface;
-
-      typedef typename TSeedsInterface::TNode  TNode;
-      typedef typename TSeedsInterface::TNodes TNodes;
-      typedef typename TSeedsInterface::TSeed  TSeed;
-      typedef typename TSeedsInterface::TSeeds TSeeds;
-
-    private:
-      // Purposely not implemented.
-      MoriTraits( );
-      MoriTraits( const Self& other );
-      virtual ~MoriTraits( );
-      Self& operator=( const Self& other );
-    };
-
-    /**
-     */
-    template< class _TInputImage, class _TOutputImage >
+    template< class _TInputImage, class _TOutputImage, class _TTraits = fpa::Image::DefaultTraits< _TInputImage, _TOutputImage, typename _TOutputImage::PixelType > >
     class Mori
-      : public fpa::Base::Mori< fpa::Image::Algorithm< fpa::Image::MoriTraits< _TInputImage, _TOutputImage > > >
+      : public fpa::Base::Mori< fpa::Image::Algorithm< _TTraits, fpa::Base::MarksInterface< _TTraits >, fpa::Base::SingleSeedInterface< _TTraits > > >
     {
     public:
       typedef _TInputImage  TInputImage;
       typedef _TOutputImage TOutputImage;
-      typedef fpa::Image::MoriTraits< TInputImage, TOutputImage > TTraits;
-      typedef fpa::Image::Algorithm< TTraits >                 TAlgorithm;
+      typedef _TTraits      TTraits;
+      typedef fpa::Base::MarksInterface< _TTraits >      TMarksInterface;
+      typedef fpa::Base::SingleSeedInterface< _TTraits > TSeedsInterface;
+      typedef fpa::Image::Algorithm< TTraits, TMarksInterface, TSeedsInterface > TAlgorithm;
 
       typedef Mori                            Self;
       typedef fpa::Base::Mori< TAlgorithm >   Superclass;
index d33e5ec2085ac9d90461be3707559282f9de57d7..4a0589efb7113f266147b78d661d971879ee68b8 100644 (file)
@@ -9,9 +9,9 @@
 #include <itkBinaryThresholdImageFilter.h>
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-typename fpa::Image::Mori< _TInputImage, _TOutputImage >::
-TOutputImage* fpa::Image::Mori< _TInputImage, _TOutputImage >::
+template< class _TInputImage, class _TOutputImage, class _TTraits >
+typename fpa::Image::Mori< _TInputImage, _TOutputImage, _TTraits >::
+TOutputImage* fpa::Image::Mori< _TInputImage, _TOutputImage, _TTraits >::
 GetThresholdedOutput( )
 {
   return(
@@ -22,9 +22,9 @@ GetThresholdedOutput( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-const typename fpa::Image::Mori< _TInputImage, _TOutputImage >::
-TOutputImage* fpa::Image::Mori< _TInputImage, _TOutputImage >::
+template< class _TInputImage, class _TOutputImage, class _TTraits >
+const typename fpa::Image::Mori< _TInputImage, _TOutputImage, _TTraits >::
+TOutputImage* fpa::Image::Mori< _TInputImage, _TOutputImage, _TTraits >::
 GetThresholdedOutput( ) const
 {
   return(
@@ -35,8 +35,8 @@ GetThresholdedOutput( ) const
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-fpa::Image::Mori< _TInputImage, _TOutputImage >::
+template< class _TInputImage, class _TOutputImage, class _TTraits >
+fpa::Image::Mori< _TInputImage, _TOutputImage, _TTraits >::
 Mori( )
   : Superclass( )
 {
@@ -48,15 +48,15 @@ Mori( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-fpa::Image::Mori< _TInputImage, _TOutputImage >::
+template< class _TInputImage, class _TOutputImage, class _TTraits >
+fpa::Image::Mori< _TInputImage, _TOutputImage, _TTraits >::
 ~Mori( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-void fpa::Image::Mori< _TInputImage, _TOutputImage >::
+template< class _TInputImage, class _TOutputImage, class _TTraits >
+void fpa::Image::Mori< _TInputImage, _TOutputImage, _TTraits >::
 _AfterGenerateData( )
 {
   typedef itk::BinaryThresholdImageFilter< TMarks, TOutputImage > _TFilter;
index 98b949203b863a5984f4182373b57e1bbd508ce8..213eb976b38c28f22da5d3e9d7e272d842215d33 100644 (file)
@@ -20,72 +20,26 @@ namespace fpa
   {
     /**
      */
-    template< class _TInputImage, class _TLabelImage, class _TScalar >
-    class RandomWalkerTraits
-      : public fpa::Image::DefaultTraits< _TInputImage, itk::Image< _TScalar, _TInputImage::ImageDimension >, typename _TLabelImage::PixelType >
-    {
-    public:
-      typedef RandomWalkerTraits Self;
-      typedef _TInputImage       TInputImage;
-      typedef _TLabelImage       TLabelImage;
-      typedef _TScalar           TScalar;
-      typedef typename _TLabelImage::PixelType TFrontId;
-      typedef itk::Image< TScalar, _TInputImage::ImageDimension > TOutputImage;
-      typedef fpa::Image::DefaultTraits< TInputImage, TOutputImage, TFrontId > Superclass;
-
-      typedef typename Superclass::TVertex       TVertex;
-      typedef typename Superclass::TInputValue   TInputValue;
-      typedef typename Superclass::TPoint        TPoint;
-      typedef typename Superclass::TOutputValue  TOutputValue;
-      typedef typename Superclass::TCompare      TCompare;
-      typedef typename Superclass::TNeighborhood TNeighborhood;
-      typedef typename Superclass::TFilter       TFilter;
-
-      typedef fpa::Image::LabelledSeedsInterface< TVertex, TPoint, TInputValue, TOutputValue, TFrontId, TCompare > TSeedsInterface;
-      typedef fpa::Base::MarksInterface< TVertex > TMarksInterface;
-
-      typedef typename TSeedsInterface::TNode  TNode;
-      typedef typename TSeedsInterface::TNodes TNodes;
-      typedef typename TSeedsInterface::TSeed  TSeed;
-      typedef typename TSeedsInterface::TSeeds TSeeds;
-
-    public:
-      itkConceptMacro(
-        Check_SameDimension,
-        ( itk::Concept::SameDimension< TInputImage::ImageDimension, TLabelImage::ImageDimension > )
-        );
-
-    private:
-      // Purposely not implemented.
-      RandomWalkerTraits( );
-      RandomWalkerTraits( const Self& other );
-      virtual ~RandomWalkerTraits( );
-      Self& operator=( const Self& other );
-    };
-
-    /**
-     */
-    template< class _TInputImage, class _TLabelImage, class _TScalar >
+    template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits = fpa::Image::DefaultTraits< _TInputImage, itk::Image< _TScalar, _TInputImage::ImageDimension >, typename _TLabelImage::PixelType > >
     class RandomWalker
-      : public fpa::Base::DijkstraBase< fpa::Image::Algorithm< fpa::Image::RandomWalkerTraits< _TInputImage, _TLabelImage, _TScalar > > >
+      : public fpa::Base::DijkstraBase< fpa::Image::Algorithm< _TTraits, fpa::Base::MarksInterface< _TTraits >, fpa::Image::LabelledSeedsInterface< _TTraits > > >
     {
     public:
       typedef _TInputImage TInputImage;
       typedef _TLabelImage TLabelImage;
       typedef _TScalar     TScalar;
+      typedef _TTraits     TTraits;
+      fpa_Base_TraitTypes( typename TTraits );
 
-      typedef fpa::Image::RandomWalkerTraits< TInputImage, TLabelImage, TScalar > TTraits;
-      typedef fpa::Image::Algorithm< TTraits > TAlgorithm;
-      typedef fpa::Base::DijkstraBase< TAlgorithm > Superclass;
-      typedef RandomWalker                    Self;
-      typedef itk::SmartPointer< Self >       Pointer;
-      typedef itk::SmartPointer< const Self > ConstPointer;
-
-      typedef typename TTraits::TNode   TNode;
-      typedef typename TTraits::TNodes  TNodes;
-      typedef typename TTraits::TSeed   TSeed;
-      typedef typename TTraits::TVertex TVertex;
+      typedef fpa::Base::MarksInterface< TTraits > TMarksInterface;
+      typedef fpa::Image::LabelledSeedsInterface< TTraits > TSeedsInterface;
+      typedef fpa::Image::Algorithm< TTraits, TMarksInterface, TSeedsInterface > TAlgorithm;
 
+      typedef fpa::Base::DijkstraBase< TAlgorithm > Superclass;
+      typedef RandomWalker                          Self;
+      typedef itk::SmartPointer< Self >             Pointer;
+      typedef itk::SmartPointer< const Self >       ConstPointer;
+      
       typedef fpa::Image::Functors::Dijkstra::Function< TInputImage, TScalar > TWeightFunction;
 
     public:
index 6935abfd216ffc068e3b6943db7eb05ba5683945..2e8b46fa607aaa67e2521cb91061100ed0e2e057 100644 (file)
@@ -14,9 +14,9 @@
 #include <fpa/Image/Functors/Dijkstra/Gaussian.h>
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TLabelImage, class _TScalar >
+template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits >
 itk::ModifiedTimeType
-fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar >::
+fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar, _TTraits >::
 GetMTime( ) const
 {
   const TLabelImage* labels = this->GetLabels( );
@@ -31,8 +31,8 @@ GetMTime( ) const
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TLabelImage, class _TScalar >
-fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar >::
+template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits >
+fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar, _TTraits >::
 RandomWalker( )
   : Superclass( )
 {
@@ -41,15 +41,15 @@ RandomWalker( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TLabelImage, class _TScalar >
-fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar >::
+template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits >
+fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar, _TTraits >::
 ~RandomWalker( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TLabelImage, class _TScalar >
-void fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar >::
+template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits >
+void fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar, _TTraits >::
 _BeforeGenerateData( )
 {
   this->Superclass::_BeforeGenerateData( );
@@ -60,9 +60,9 @@ _BeforeGenerateData( )
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TLabelImage, class _TScalar >
-typename fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar >::
-TNodes fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar >::
+template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits >
+typename fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar, _TTraits >::
+TNodes fpa::Image::RandomWalker< _TInputImage, _TLabelImage, _TScalar, _TTraits >::
 _UnifySeeds( )
 {
   this->m_Seeds.clear( );
index 3797b23d78cc1f00708486689f798f6e4021d0e6..09631cc93becb731af623c166b7ca2a40fddc04d 100644 (file)
@@ -26,7 +26,6 @@ namespace fpa
     public:
       typedef _TInputImage  TInputImage;
       typedef _TOutputImage TOutputImage;
-      typedef _TFrontId     TFrontId;
       typedef _TTraits      TTraits;
       typedef fpa::Base::MarksInterfaceWithCollisions< TTraits > TMarksInterface;
       typedef fpa::Base::SeedsInterface< TTraits > TSeedsInterface;