// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Common__OriginalRandomWalker__h__ #define __fpa__Common__OriginalRandomWalker__h__ #include #include #include #include namespace fpa { namespace Common { /** */ template< class _TImage, class _TLabels, class _TScalar = float > class OriginalRandomWalker : public itk::ImageToImageFilter< _TImage, _TLabels > { public: typedef _TImage TImage; typedef _TLabels TLabels; typedef _TScalar TScalar; typedef OriginalRandomWalker Self; typedef itk::ImageToImageFilter< TImage, TLabels > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef itk::Image< TScalar, TImage::ImageDimension > TScalarImage; typedef typename TImage::IndexType TIndex; typedef typename TImage::PixelType TPixel; typedef typename TImage::RegionType TRegion; typedef typename TLabels::PixelType TLabel; public: itkNewMacro( Self ); itkTypeMacro( fpa::Common::OriginalRandomWalker, itk::ImageToImageFilter ); itkGetConstMacro( Beta, TScalar ); itkSetMacro( Beta, TScalar ); itkGetConstMacro( Epsilon, TScalar ); itkSetMacro( Epsilon, TScalar ); itkBooleanMacro( NormalizeWeights ); itkGetConstMacro( NormalizeWeights, bool ); itkSetMacro( NormalizeWeights, bool ); fpaFilterInputMacro( InputLabels, TLabels ); fpaFilterOutputMacro( OutputProbabilities, TScalarImage ); public: void AddSeed( const TIndex& seed, const TLabel& label ); protected: OriginalRandomWalker( ); virtual ~OriginalRandomWalker( ); virtual void GenerateData( ) override; static unsigned long _1D( const TIndex& idx, const TRegion& region ); static TIndex _ND( const unsigned long& i, const TRegion& region ); private: // Purposely not implemented OriginalRandomWalker( const Self& other ); Self& operator=( const Self& other ); protected: std::vector< TIndex > m_Seeds; std::vector< TLabel > m_Labels; TScalar m_Beta; TScalar m_Epsilon; bool m_NormalizeWeights; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __fpa__Common__OriginalRandomWalker__h__ // eof - $RCSfile$