#ifndef __FPA__BASE__FUNCTORS__GAUSSIANCOST__H__ #define __FPA__BASE__FUNCTORS__GAUSSIANCOST__H__ #include #include #include namespace fpa { namespace Base { namespace Functors { /** */ template< class _TResult > class GaussianCost : public itk::FunctionBase< _TResult, _TResult > { public: typedef GaussianCost Self; typedef itk::FunctionBase< _TResult, _TResult > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; // Template arguments typedef _TResult TResult; typedef cpExtensions::Algorithms::IterativeGaussianModelEstimator< TResult, 1 > TModel; public: itkNewMacro( Self ); itkTypeMacro( GaussianCost, Algorithm ); itkGetConstMacro( SupportSize, unsigned int ); itkGetConstMacro( MinimumCost, _TResult ); itkGetObjectMacro( Model, TModel ); itkGetConstObjectMacro( Model, TModel ); itkSetMacro( SupportSize, unsigned int ); itkSetMacro( MinimumCost, _TResult ); public: virtual _TResult Evaluate( const _TResult& x ) const fpa_OVERRIDE; protected: // Methods to extend itk-based architecture GaussianCost( ); virtual ~GaussianCost( ); private: // Purposely not implemented GaussianCost( const Self& other ); Self& operator=( const Self& other ); protected: unsigned int m_SupportSize; _TResult m_MinimumCost; typename TModel::Pointer m_Model; }; } // ecapseman } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION # include #endif // ITK_MANUAL_INSTANTIATION #endif // __FPA__BASE__FUNCTORS__GAUSSIANCOST__H__ // eof - $RCSfile$