]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Image/RandomWalker.h
...
[FrontAlgorithms.git] / lib / fpa / Image / RandomWalker.h
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5
6 #ifndef __fpa__Image__RandomWalker__h__
7 #define __fpa__Image__RandomWalker__h__
8
9 #include <itkImage.h>
10 #include <fpa/Base/DijkstraBase.h>
11 #include <fpa/Base/MarksInterface.h>
12 #include <fpa/Image/Algorithm.h>
13 #include <fpa/Image/DefaultTraits.h>
14 #include <fpa/Image/LabelledSeedsInterface.h>
15 #include <fpa/Image/Functors/Dijkstra/Function.h>
16
17 namespace fpa
18 {
19   namespace Image
20   {
21     /**
22      */
23     template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits = fpa::Image::DefaultTraits< _TInputImage, itk::Image< _TScalar, _TInputImage::ImageDimension >, typename _TLabelImage::PixelType > >
24     class RandomWalker
25       : public fpa::Base::DijkstraBase< fpa::Image::Algorithm< _TTraits, fpa::Base::MarksInterface< _TTraits >, fpa::Image::LabelledSeedsInterface< _TTraits > > >
26     {
27     public:
28       typedef _TInputImage TInputImage;
29       typedef _TLabelImage TLabelImage;
30       typedef _TScalar     TScalar;
31       typedef _TTraits     TTraits;
32       fpa_Base_TraitTypes( typename TTraits );
33
34       typedef fpa::Base::MarksInterface< TTraits > TMarksInterface;
35       typedef fpa::Image::LabelledSeedsInterface< TTraits > TSeedsInterface;
36       typedef fpa::Image::Algorithm< TTraits, TMarksInterface, TSeedsInterface > TAlgorithm;
37
38       typedef fpa::Base::DijkstraBase< TAlgorithm > Superclass;
39       typedef RandomWalker                          Self;
40       typedef itk::SmartPointer< Self >             Pointer;
41       typedef itk::SmartPointer< const Self >       ConstPointer;
42       
43       typedef fpa::Image::Functors::Dijkstra::Function< TInputImage, TScalar > TWeightFunction;
44
45     public:
46       itkNewMacro( Self );
47       itkTypeMacro( fpa::Image::RandomWalker, fpa::Base::RandomWalker );
48
49     public:
50       virtual itk::ModifiedTimeType GetMTime( ) const override;
51
52     protected:
53       RandomWalker( );
54       virtual ~RandomWalker( );
55
56       virtual void _BeforeGenerateData( ) override;
57       virtual TNodes _UnifySeeds( ) override;
58
59     private:
60       // Purposely not implemented.
61       RandomWalker( const Self& other );
62       Self& operator=( const Self& other );
63     };
64
65   } // ecapseman
66
67 } // ecapseman
68
69 #ifndef ITK_MANUAL_INSTANTIATION
70 #  include <fpa/Image/RandomWalker.hxx>
71 #endif // ITK_MANUAL_INSTANTIATION
72
73 #endif // __fpa__Image__RandomWalker__h__
74
75 // eof - $RCSfile$