#ifndef __CPEXTENSIONS__ALGORITHMS__GRADIENTIMAGEFUNCTIONBASE__H__
#define __CPEXTENSIONS__ALGORITHMS__GRADIENTIMAGEFUNCTIONBASE__H__
+#include <cpExtensions/Config.h>
+#include <itkImage.h>
#include <itkImageFunction.h>
namespace cpExtensions
/**
* Base class to compute values based on image gradients (vector).
*/
- template< class _TGradient >
+ template< class _TGradient, class _TMask = itk::Image< unsigned char, _TGradient::ImageDimension > >
class GradientImageFunctionBase
: public itk::ImageFunction< _TGradient, typename _TGradient::PixelType::ValueType, typename _TGradient::PixelType::ValueType >
{
public:
// Types from input arguments
typedef _TGradient TGradient;
+ typedef _TMask TMask;
typedef typename _TGradient::PixelType TVector;
typedef typename TVector::ValueType TScalar;
- itkStaticConstMacro( Dimension, unsigned int, _TGradient::ImageDimension );
+ itkStaticConstMacro(
+ Dimension, unsigned int, _TGradient::ImageDimension
+ );
// Standard itk types
typedef GradientImageFunctionBase Self;
public:
itkTypeMacro( GradientImageFunctionBase, itkImageFunction );
+ itkGetConstObjectMacro( Mask, TMask );
+ itkSetConstObjectMacro( Mask, TMask );
+
public:
virtual void Prepare( ) const;
- virtual TOutput Evaluate( const TPoint& p ) const ITK_OVERRIDE;
- virtual TOutput EvaluateAtIndex( const TIndex& i ) const ITK_OVERRIDE;
- virtual TOutput EvaluateAtContinuousIndex( const TContIndex& i ) const ITK_OVERRIDE;
+ virtual TOutput Evaluate( const TPoint& p ) const cpExtensions_OVERRIDE;
+ virtual TOutput EvaluateAtIndex( const TIndex& i ) const cpExtensions_OVERRIDE;
+ virtual TOutput EvaluateAtContinuousIndex( const TContIndex& i ) const cpExtensions_OVERRIDE;
protected:
GradientImageFunctionBase( );
// Purposely not implemented.
GradientImageFunctionBase( const Self& );
void operator=( const Self& );
+
+ protected:
+ typename _TMask::ConstPointer m_Mask;
};
} // ecapseman