1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
6 #ifndef __fpa__Image__Skeleton__h__
7 #define __fpa__Image__Skeleton__h__
10 #include <fpa/Base/Graph.h>
11 #include <fpa/Image/PolyLineParametricPath.h>
19 template< unsigned int _VDim >
21 : public fpa::Base::Graph< typename fpa::Image::PolyLineParametricPath< _VDim >::TIndex, typename fpa::Image::PolyLineParametricPath< _VDim >::Pointer, typename fpa::Image::PolyLineParametricPath< _VDim >::TIndex, typename fpa::Image::PolyLineParametricPath< _VDim >::TIndex::LexicographicCompare >
24 typedef fpa::Image::PolyLineParametricPath< _VDim > TPath;
25 typedef typename TPath::TIndex TIndex;
26 typedef typename TIndex::LexicographicCompare TIndexCompare;
27 typedef typename TPath::Pointer TPathPointer;
29 itkStaticConstMacro( Dimension, unsigned int, _VDim );
31 typedef fpa::Base::Graph< TIndex, TPathPointer, TIndex, TIndexCompare > Superclass;
32 typedef Skeleton Self;
33 typedef itk::SmartPointer< Self > Pointer;
34 typedef itk::SmartPointer< const Self > ConstPointer;
38 itkTypeMacro( Skeleton, fpa::Image::Graph );
41 void AddBranch( TPath* path );
42 const TPath* GetBranch( const TIndex& a, const TIndex& b ) const;
44 std::vector< TIndex > GetEndPoints( ) const;
45 std::vector< TIndex > GetBifurcations( ) const;
52 // Purposely not implemented
53 Skeleton( const Self& other );
54 Self& operator=( const Self& other );
61 #ifndef ITK_MANUAL_INSTANTIATION
62 # include <fpa/Image/Skeleton.hxx>
63 #endif // ITK_MANUAL_INSTANTIATION
65 #endif // __fpa__Image__Skeleton__h__