1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5 #ifndef __fpa__Filters__Image__RandomWalker__h__
6 #define __fpa__Filters__Image__RandomWalker__h__
9 #include <fpa/Filters/DijkstraBase.h>
10 #include <fpa/Filters/Image/Algorithm.h>
11 #include <fpa/Filters/Image/DefaultTraits.h>
12 #include <fpa/Filters/MarksInterface.h>
13 #include <fpa/Filters/Image/LabelsSeedFilter.h>
14 #include <fpa/Filters/Image/LabelsSeedInterface.h>
24 template< class _TInputImage, class _TInputLabels, class _TCostsImage >
25 class RandomWalkerTraits
26 : public fpa::Filters::Image::DefaultTraits< _TInputImage, _TCostsImage, typename _TInputLabels::PixelType >
29 typedef _TInputImage TInputImage;
30 typedef _TInputLabels TInputLabels;
31 typedef _TCostsImage TCostsImage;
32 typedef fpa::Filters::Image::DefaultTraits< TInputImage, TCostsImage, typename _TInputLabels::PixelType > Superclass;
34 typedef typename Superclass::TInternalTraits TInternalTraits;
35 typedef typename Superclass::TFilter TFilter;
36 typedef fpa::Filters::MarksInterface< TInternalTraits > TMarksInterface;
37 typedef fpa::Filters::Image::LabelsSeedInterface< TInternalTraits > TSeedsInterface;
42 template< class _TInputImage, class _TInputLabels, class _TCostsImage = itk::Image< float, _TInputImage::ImageDimension >, class _TTraits = fpa::Filters::Image::RandomWalkerTraits< _TInputImage, _TInputLabels, _TCostsImage > >
44 : public fpa::Filters::Image::LabelsSeedFilter< fpa::Filters::Image::Algorithm< fpa::Filters::DijkstraBase< _TTraits > >, _TInputLabels >
47 typedef _TInputImage TInputImage;
48 typedef _TInputLabels TInputLabels;
49 typedef _TCostsImage TCostsImage;
50 typedef _TTraits TTraits;
51 fpaTraitsMacro( typename, TTraits );
53 typedef fpa::Filters::DijkstraBase< TTraits > TAlgorithm;
54 typedef fpa::Filters::Image::Algorithm< TAlgorithm > TBase;
55 typedef fpa::Filters::Image::LabelsSeedFilter< TBase, TInputLabels > Superclass;
56 typedef RandomWalker Self;
57 typedef itk::SmartPointer< Self > Pointer;
58 typedef itk::SmartPointer< const Self > ConstPointer;
59 typedef typename Superclass::TMarksImage TOutputLabels;
64 fpa::Filters::Image::RandomWalker, fpa::Filters::Image::Algorithm
68 TCostsImage* GetOutputCosts( );
69 const TCostsImage* GetOutputCosts( ) const;
71 TOutputLabels* GetOutputLabels( );
72 const TOutputLabels* GetOutputLabels( ) const;
74 TInputImage* GetInputImage( );
75 const TInputImage* GetInputImage( ) const;
76 void SetInputImage( TInputImage* image );
80 virtual ~RandomWalker( );
83 // Purposely not implemented.
84 RandomWalker( const Self& other );
85 Self& operator=( const Self& other );
94 #ifndef ITK_MANUAL_INSTANTIATION
95 # include <fpa/Filters/Image/RandomWalker.hxx>
96 #endif // ITK_MANUAL_INSTANTIATION
97 #endif // __fpa__Filters__Image__RandomWalker__h__