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::ImageToImageFilter< I, O > > >
23 typedef fpa::Base::Dijkstra< typename I::IndexType, typename I::PixelType, typename O::PixelType, 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;
36 typedef fpa::Image::Functors::ImageCostFunction< TInputImage, TResult > TCostFunction;
37 typedef itk::FunctionBase< TResult, TResult > TConversionFunction;
40 typedef typename Superclass::_TVertices _TVertices;
41 typedef typename Superclass::_TCollision _TCollision;
42 typedef typename Superclass::_TCollisionsRow _TCollisionsRow;
43 typedef typename Superclass::_TCollisions _TCollisions;
44 typedef typename Superclass::_TNode _TNode;
45 typedef typename Superclass::_TNodes _TNodes;
49 itkTypeMacro( Dijkstra, Algorithm );
51 itkGetObjectMacro( CostFunction, TCostFunction );
52 itkGetObjectMacro( ConversionFunction, TConversionFunction );
54 itkGetConstObjectMacro( CostFunction, TCostFunction );
55 itkGetConstObjectMacro( ConversionFunction, TConversionFunction );
57 itkSetObjectMacro( CostFunction, TCostFunction );
58 itkSetObjectMacro( ConversionFunction, TConversionFunction );
64 virtual TResult _Cost( const TVertex& v, const TVertex& p ) const;
66 virtual void _BeforeGenerateData( );
67 virtual void _InitResults( );
70 // Purposely not implemented
71 Dijkstra( const Self& other );
72 Self& operator=( const Self& other );
75 typename TCostFunction::Pointer m_CostFunction;
76 typename TConversionFunction::Pointer m_ConversionFunction;
83 #include <fpa/Image/Dijkstra.hxx>
85 #endif // __FPA__IMAGE__DIJKSTRA__H__