1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
6 #ifndef __fpa__Image__RandomWalker__h__
7 #define __fpa__Image__RandomWalker__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>
23 template< class _TInputImage, class _TLabelImage, class _TScalar, class _TTraits = fpa::Image::DefaultTraits< _TInputImage, itk::Image< _TScalar, _TInputImage::ImageDimension >, typename _TLabelImage::PixelType > >
25 : public fpa::Base::DijkstraBase< fpa::Image::Algorithm< _TTraits, fpa::Base::MarksInterface< _TTraits >, fpa::Image::LabelledSeedsInterface< _TTraits > > >
28 typedef _TInputImage TInputImage;
29 typedef _TLabelImage TLabelImage;
30 typedef _TScalar TScalar;
31 typedef _TTraits TTraits;
32 fpa_Base_TraitTypes( typename TTraits );
34 typedef fpa::Base::MarksInterface< TTraits > TMarksInterface;
35 typedef fpa::Image::LabelledSeedsInterface< TTraits > TSeedsInterface;
36 typedef fpa::Image::Algorithm< TTraits, TMarksInterface, TSeedsInterface > TAlgorithm;
38 typedef fpa::Base::DijkstraBase< TAlgorithm > Superclass;
39 typedef RandomWalker Self;
40 typedef itk::SmartPointer< Self > Pointer;
41 typedef itk::SmartPointer< const Self > ConstPointer;
43 typedef fpa::Image::Functors::Dijkstra::Function< TInputImage, TScalar > TWeightFunction;
47 itkTypeMacro( fpa::Image::RandomWalker, fpa::Base::RandomWalker );
50 virtual itk::ModifiedTimeType GetMTime( ) const override;
54 virtual ~RandomWalker( );
56 virtual void _BeforeGenerateData( ) override;
57 virtual TNodes _UnifySeeds( ) override;
60 // Purposely not implemented.
61 RandomWalker( const Self& other );
62 Self& operator=( const Self& other );
69 #ifndef ITK_MANUAL_INSTANTIATION
70 # include <fpa/Image/RandomWalker.hxx>
71 #endif // ITK_MANUAL_INSTANTIATION
73 #endif // __fpa__Image__RandomWalker__h__