1 #ifndef __FPA__IMAGE__DIJKSTRA__H__
2 #define __FPA__IMAGE__DIJKSTRA__H__
4 #include <itkFunctionBase.h>
5 #include <itkImageToImageFilter.h>
6 #include <fpa/Base/Dijkstra.h>
7 #include <fpa/Image/Algorithm.h>
8 #include <fpa/Image/Functors/ImageCostFunction.h>
15 * @param I Input image type
16 * @param O Output image type
18 template< class I, class O >
20 : public Algorithm< I, O, fpa::Base::Dijkstra< typename I::IndexType, typename I::PixelType, typename O::PixelType, itk::Functor::IndexLexicographicCompare< I::ImageDimension >, itk::ImageToImageFilter< I, O > > >
23 typedef fpa::Base::Dijkstra< typename I::IndexType, typename I::PixelType, typename O::PixelType, itk::Functor::IndexLexicographicCompare< I::ImageDimension >, itk::ImageToImageFilter< I, O > > TBaseAlgorithm;
25 typedef Dijkstra Self;
26 typedef Algorithm< I, O, TBaseAlgorithm > Superclass;
27 typedef itk::SmartPointer< Self > Pointer;
28 typedef itk::SmartPointer< const Self > ConstPointer;
30 typedef typename Superclass::TInputImage TInputImage;
31 typedef typename Superclass::TOutputImage TOutputImage;
32 typedef typename Superclass::TVertex TVertex;
33 typedef typename Superclass::TValue TValue;
34 typedef typename Superclass::TResult TResult;
35 typedef typename Superclass::TMinimumSpanningTree TMinimumSpanningTree;
37 typedef typename Superclass::TStartEvent TStartEvent;
38 typedef typename Superclass::TStartLoopEvent TStartLoopEvent;
39 typedef typename Superclass::TEndEvent TEndEvent;
40 typedef typename Superclass::TEndLoopEvent TEndLoopEvent;
41 typedef typename Superclass::TAliveEvent TAliveEvent;
42 typedef typename Superclass::TFrontEvent TFrontEvent;
43 typedef typename Superclass::TFreezeEvent TFreezeEvent;
45 typedef typename Superclass::TStartBacktrackingEvent TStartBacktrackingEvent;
46 typedef typename Superclass::TEndBacktrackingEvent TEndBacktrackingEvent;
47 typedef typename Superclass::TBacktrackingEvent TBacktrackingEvent;
49 typedef fpa::Image::Functors::ImageCostFunction< TInputImage, TResult > TCostFunction;
50 typedef itk::FunctionBase< TResult, TResult > TConversionFunction;
53 typedef typename Superclass::_TVertices _TVertices;
54 typedef typename Superclass::_TCollision _TCollision;
55 typedef typename Superclass::_TCollisionsRow _TCollisionsRow;
56 typedef typename Superclass::_TCollisions _TCollisions;
57 typedef typename Superclass::_TNode _TNode;
58 typedef typename Superclass::_TNodes _TNodes;
62 itkTypeMacro( Dijkstra, Algorithm );
64 itkGetObjectMacro( CostFunction, TCostFunction );
65 itkGetObjectMacro( ConversionFunction, TConversionFunction );
67 itkGetConstObjectMacro( CostFunction, TCostFunction );
68 itkGetConstObjectMacro( ConversionFunction, TConversionFunction );
70 itkSetObjectMacro( CostFunction, TCostFunction );
71 itkSetObjectMacro( ConversionFunction, TConversionFunction );
77 virtual TResult _Cost( const TVertex& v, const TVertex& p ) const;
79 virtual void _BeforeGenerateData( );
80 virtual void _InitResults( );
83 // Purposely not implemented
84 Dijkstra( const Self& other );
85 Self& operator=( const Self& other );
88 typename TCostFunction::Pointer m_CostFunction;
89 typename TConversionFunction::Pointer m_ConversionFunction;
96 #include <fpa/Image/Dijkstra.hxx>
98 #endif // __FPA__IMAGE__DIJKSTRA__H__