]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Filters/Image/RandomWalker.h
...
[FrontAlgorithms.git] / lib / fpa / Filters / Image / RandomWalker.h
index 41fba2c148fecfa6a8a60630cc75f549b8a4f095..198112f7172cf54987dfd29174318ef702771ec4 100644 (file)
@@ -5,12 +5,9 @@
 #ifndef __fpa__Filters__Image__RandomWalker__h__
 #define __fpa__Filters__Image__RandomWalker__h__
 
-#include <itkImage.h>
-#include <fpa/Filters/DijkstraBase.h>
-#include <fpa/Filters/Image/Algorithm.h>
-#include <fpa/Filters/Image/DefaultTraits.h>
-#include <fpa/Filters/MarksInterface.h>
-#include <fpa/Filters/Image/LabelsSeedInterface.h>
+#include <fpa/Filters/RandomWalker.h>
+#include <fpa/Filters/Image/Interface.h>
+#include <fpa/Filters/Image/RandomWalkerTraits.h>
 
 namespace fpa
 {
@@ -20,76 +17,51 @@ namespace fpa
     {
       /**
        */
-      template< class _TInputImage, class _TInputLabels, class _TCostsImage >
-      class RandomWalkerTraits
-        : public fpa::Filters::Image::DefaultTraits< _TInputImage, _TCostsImage, typename _TInputLabels::PixelType >
-      {
-      public:
-        typedef _TInputImage  TInputImage;
-        typedef _TInputLabels TInputLabels;
-        typedef _TCostsImage  TCostsImage;
-        typedef fpa::Filters::Image::DefaultTraits< TInputImage, TCostsImage, typename _TInputLabels::PixelType > Superclass;
-
-        typedef typename Superclass::TInternalTraits TInternalTraits;
-        typedef typename Superclass::TFilter TFilter;
-        typedef fpa::Filters::MarksInterface< TInternalTraits >  TMarksInterface;
-        typedef fpa::Filters::Image::LabelsSeedInterface< TInternalTraits > TSeedsInterface;
-      };
-
-      /**
-       */
-      template< class _TInputImage, class _TInputLabels, class _TCostsImage = itk::Image< float, _TInputImage::ImageDimension >, class _TTraits = fpa::Filters::Image::RandomWalkerTraits< _TInputImage, _TInputLabels, _TCostsImage > >
+      template< class _TInputImage, class _TLabelImage, class _TCost = float, class _TTraits = fpa::Filters::Image::RandomWalkerTraits< _TInputImage, _TLabelImage, _TCost > >
       class RandomWalker
-        : public fpa::Filters::Image::Algorithm< fpa::Filters::DijkstraBase< _TTraits > >
+        : public fpa::Filters::RandomWalker< fpa::Filters::Image::Interface< _TTraits > >
       {
       public:
-        typedef _TInputImage  TInputImage;
-        typedef _TInputLabels TInputLabels;
-        typedef _TCostsImage  TCostsImage;
-        typedef _TTraits      TTraits;
-        fpaTraitsMacro( typename, TTraits );
-
-        typedef fpa::Filters::DijkstraBase< TTraits >        TAlgorithm;
-        typedef fpa::Filters::Image::Algorithm< TAlgorithm > Superclass;
-        typedef RandomWalker                                 Self;
-        typedef itk::SmartPointer< Self >                    Pointer;
-        typedef itk::SmartPointer< const Self >              ConstPointer;
-
-        typedef typename Superclass::TMarksImage TOutputLabels;
+        typedef _TTraits TTraits;
+        typedef typename TTraits::TInputImage TInputImage;
+        typedef typename TTraits::TLabelImage TLabelImage;
+        typedef typename TTraits::TCost TCost;
+        typedef typename TTraits::TLabel TLabel;
+        typedef typename TTraits::TOutputImage TOutputImage;
+        typedef TOutputImage TCostsImage;
+
+        typedef fpa::Filters::Image::Interface< TTraits > TInterface;
+        typedef fpa::Filters::RandomWalker< TInterface >  Superclass;
+        typedef RandomWalker                              Self;
+        typedef itk::SmartPointer< Self >                 Pointer;
+        typedef itk::SmartPointer< const Self >           ConstPointer;
 
       public:
         itkNewMacro( Self );
-        itkTypeMacro(
-          fpa::Filters::Image::RandomWalker, fpa::Filters::Image::Algorithm
-          );
 
-        fpaFilterInputMacro( InputLabels, TInputLabels );
+        fpaFilterInputMacro( InputLabels, _TLabelImage );
 
       public:
+        TInputImage* GetInputImage( );
+        const TInputImage* GetInputImage( ) const;
+        void SetInputImage( const TInputImage* i );
+
         TCostsImage* GetOutputCosts( );
         const TCostsImage* GetOutputCosts( ) const;
 
-        TOutputLabels* GetOutputLabels( );
-        const TOutputLabels* GetOutputLabels( ) const;
-
-        TInputImage* GetInputImage( );
-        const TInputImage* GetInputImage( ) const;
-        void SetInputImage( TInputImage* image );
+        TLabelImage* GetOutputLabels( );
+        const TLabelImage* GetOutputLabels( ) const;
 
       protected:
         RandomWalker( );
         virtual ~RandomWalker( );
 
+        // Filter related methods
         virtual const itk::DataObject* _GetReferenceInput( ) const override;
-        virtual void _PrepareSeeds( const itk::DataObject* input ) override;
 
       private:
-        // Purposely not implemented.
         RandomWalker( const Self& other );
         Self& operator=( const Self& other );
-
-      protected:
-        unsigned int m_InputLabelsIdx;
       };
 
     } // ecapseman