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__
11 #include <fpa/Base/DijkstraBase.h>
12 #include <fpa/Base/MarksInterface.h>
13 #include <fpa/Image/Algorithm.h>
14 #include <fpa/Image/LabelledSeedsInterface.h>
15 #include <fpa/Image/Functors/Dijkstra/Function.h>
23 template< class _TInputImage, class _TLabelImage, class _TScalar >
25 : public fpa::Base::DijkstraBase< fpa::Image::Algorithm< _TInputImage, itk::Image< _TScalar, _TInputImage::ImageDimension >, fpa::Base::MarksInterface< typename _TInputImage::IndexType >, fpa::Image::LabelledSeedsInterface< typename _TInputImage::IndexType, typename _TInputImage::PixelType, _TScalar, typename _TLabelImage::PixelType, typename _TInputImage::IndexType::LexicographicCompare > > >
28 typedef _TInputImage TInputImage;
29 typedef _TLabelImage TLabelImage;
30 typedef _TScalar TScalar;
31 typedef typename TInputImage::IndexType TVertex;
32 typedef typename TVertex::LexicographicCompare TVertexCompare;
33 typedef typename TInputImage::PixelType TInputValue;
34 typedef typename TLabelImage::PixelType TFrontId;
36 typedef itk::Image< TScalar, _TInputImage::ImageDimension > TOutputImage;
37 typedef fpa::Base::MarksInterface< TVertex > TMarksInterface;
38 typedef fpa::Image::LabelledSeedsInterface< TVertex, TInputValue, _TScalar, TFrontId, TVertexCompare > TSeedsInterface;
39 typedef fpa::Image::Algorithm< _TInputImage, TOutputImage, TMarksInterface, TSeedsInterface > TAlgorithm;
41 typedef RandomWalker Self;
42 typedef fpa::Base::DijkstraBase< TAlgorithm > Superclass;
43 typedef itk::SmartPointer< Self > Pointer;
44 typedef itk::SmartPointer< const Self > ConstPointer;
46 typedef fpa::Image::Functors::Dijkstra::Function< TInputImage, TScalar > TWeightFunction;
50 itkTypeMacro( fpa::Image::RandomWalker, fpa::Base::RandomWalker );
53 virtual itk::ModifiedTimeType GetMTime( ) const override;
57 virtual ~RandomWalker( );
59 virtual void _BeforeGenerateData( ) override;
60 virtual void _QueueInit( ) override;
63 // Purposely not implemented.
64 RandomWalker( const Self& other );
65 Self& operator=( const Self& other );
72 #ifndef ITK_MANUAL_INSTANTIATION
73 # include <fpa/Image/RandomWalker.hxx>
74 #endif // ITK_MANUAL_INSTANTIATION
76 #endif // __fpa__Image__RandomWalker__h__