#ifndef __fpa__Image__EndPointsFilter__h__ #define __fpa__Image__EndPointsFilter__h__ #include #include namespace fpa { namespace Image { /** */ template< class _TDistanceMap, class _TCostMap > class EndPointsFilter : public itk::Object { public: typedef EndPointsFilter Self; typedef itk::Object Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef _TDistanceMap TDistanceMap; typedef _TCostMap TCostMap; typedef typename TCostMap::IndexType TIndex; typedef MinimumSpanningTree< TCostMap::ImageDimension > TMST; typedef itk::Functor::IndexLexicographicCompare< _TCostMap::ImageDimension > TIndexCompare; typedef std::set< TIndex, TIndexCompare > TIndices; public: itkNewMacro( Self ); itkTypeMacro( fpa::Image::EndPointsFilter, itk::Object ); itkGetConstObjectMacro( DistanceMap, _TDistanceMap ); itkGetConstObjectMacro( CostMap, _TCostMap ); itkGetConstObjectMacro( MST, TMST ); itkSetConstObjectMacro( DistanceMap, _TDistanceMap ); itkSetConstObjectMacro( CostMap, _TCostMap ); itkSetConstObjectMacro( MST, TMST ); public: const TIndices& GetBifurcations( ) const; const TIndices& GetEndPoints( ) const; void Compute( ); protected: EndPointsFilter( ); virtual ~EndPointsFilter( ); private: // Purposely not defined EndPointsFilter( const Self& other ); Self& operator=( const Self& other ); protected: typename _TDistanceMap::ConstPointer m_DistanceMap; typename _TCostMap::ConstPointer m_CostMap; typename TMST::ConstPointer m_MST; TIndices m_Bifurcations; TIndices m_EndPoints; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Image__EndPointsFilter__h__ // eof - $RCSfile$