// ========================================================================= // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co) // ========================================================================= #ifndef __DijkstraWithMeanAndVariance__h__ #define __DijkstraWithMeanAndVariance__h__ #include #include #include /** */ template< class _TInput, class _TOutput > class DijkstraWithMeanAndVariance : public fpa::Filters::Image::Dijkstra< _TInput, _TOutput > { public: typedef fpa::Filters::Image::Dijkstra< _TInput, _TOutput > Superclass; typedef DijkstraWithMeanAndVariance Self; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef typename Superclass::TTraits TTraits; fpaTraitsMacro( typename TTraits ); typedef fpa::Common::IncrementalMeanAndVariance TMeanAndVar; public: itkNewMacro( Self ); itkTypeMacro( DijkstraWithMeanAndVariance, fpa::Image::Dijkstra ); itkGetConstMacro( MinVertex, TVertex ); itkGetConstMacro( MaxVertex, TVertex ); public: double GetMean( ) const; double GetDeviation( ) const; double GetVariance( ) const; protected: DijkstraWithMeanAndVariance( ); virtual ~DijkstraWithMeanAndVariance( ); virtual void _BeforeGenerateData( ) override; virtual void _PostComputeOutputValue( TNode& n ) override; private: // Purposely not implemented DijkstraWithMeanAndVariance( const Self& other ); Self& operator=( const Self& other ); protected: TMeanAndVar m_MeanAndVar; TVertex m_MinVertex; TVertex m_MaxVertex; }; #ifndef ITK_MANUAL_INSTANTIATION # include "DijkstraWithMeanAndVariance.hxx" #endif // ITK_MANUAL_INSTANTIATION #endif // __DijkstraWithMeanAndVariance__h__ // eof - $RCSfile$