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::PointType, 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 TInputImage::PointType TPoint;
33 typedef typename TVertex::LexicographicCompare TVertexCompare;
34 typedef typename TInputImage::PixelType TInputValue;
35 typedef typename TLabelImage::PixelType TFrontId;
37 typedef itk::Image< TScalar, _TInputImage::ImageDimension > TOutputImage;
38 typedef fpa::Base::MarksInterface< TVertex > TMarksInterface;
39 typedef fpa::Image::LabelledSeedsInterface< TVertex, TPoint, TInputValue, _TScalar, TFrontId, TVertexCompare > TSeedsInterface;
40 typedef fpa::Image::Algorithm< _TInputImage, TOutputImage, TMarksInterface, TSeedsInterface > TAlgorithm;
42 typedef RandomWalker Self;
43 typedef fpa::Base::DijkstraBase< TAlgorithm > Superclass;
44 typedef itk::SmartPointer< Self > Pointer;
45 typedef itk::SmartPointer< const Self > ConstPointer;
47 typedef fpa::Image::Functors::Dijkstra::Function< TInputImage, TScalar > TWeightFunction;
48 typedef typename TSeedsInterface::TNode TNode;
49 typedef typename TSeedsInterface::TNodes TNodes;
53 itkTypeMacro( fpa::Image::RandomWalker, fpa::Base::RandomWalker );
56 virtual itk::ModifiedTimeType GetMTime( ) const override;
60 virtual ~RandomWalker( );
62 virtual void _BeforeGenerateData( ) override;
63 virtual TNodes _UnifySeeds( ) override;
66 // Purposely not implemented.
67 RandomWalker( const Self& other );
68 Self& operator=( const Self& other );
75 #ifndef ITK_MANUAL_INSTANTIATION
76 # include <fpa/Image/RandomWalker.hxx>
77 #endif // ITK_MANUAL_INSTANTIATION
79 #endif // __fpa__Image__RandomWalker__h__