00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkGaussianDerivativeSpatialFunction_h
00018 #define __itkGaussianDerivativeSpatialFunction_h
00019
00020 #include "itkSpatialFunction.h"
00021 #include "itkFixedArray.h"
00022 #include "itkPoint.h"
00023
00024 namespace itk
00025 {
00026
00041 template <typename TOutput=double,
00042 unsigned int VImageDimension=3,
00043 typename TInput=Point<double, VImageDimension> >
00044 class ITK_EXPORT GaussianDerivativeSpatialFunction : public SpatialFunction<TOutput, VImageDimension, TInput>
00045 {
00046 public:
00048 typedef GaussianDerivativeSpatialFunction Self;
00049 typedef SpatialFunction<TOutput, VImageDimension, TInput> Superclass;
00050 typedef SmartPointer<Self> Pointer;
00051 typedef SmartPointer<const Self> ConstPointer;
00052
00054 itkNewMacro(Self);
00055
00057 itkTypeMacro(GaussianDerivativeSpatialFunction, SpatialFunction);
00058
00060 typedef typename Superclass::InputType InputType;
00061
00063 typedef typename Superclass::OutputType OutputType;
00064
00066 typedef FixedArray<double, VImageDimension> ArrayType;
00067
00069 typedef Vector<double, VImageDimension> VectorType;
00070
00074 OutputType Evaluate(const TInput& position) const;
00075
00077 VectorType EvaluateVector(const TInput& position) const;
00078
00080 itkSetMacro(Scale, double);
00081 itkGetMacro(Scale, double);
00082 itkSetMacro(Normalized, bool);
00083 itkGetMacro(Normalized, bool);
00084 itkSetMacro(Sigma, ArrayType);
00085 itkGetMacro(Sigma, ArrayType);
00086 itkSetMacro(Mean, ArrayType);
00087 itkGetMacro(Mean, ArrayType);
00088 itkSetMacro(Direction, unsigned int);
00089 itkGetMacro(Direction, unsigned int);
00091
00092 protected:
00093 GaussianDerivativeSpatialFunction();
00094 virtual ~GaussianDerivativeSpatialFunction();
00095 void PrintSelf(std::ostream& os, Indent indent) const;
00096
00097 private:
00098 GaussianDerivativeSpatialFunction(const Self&);
00099 void operator=(const Self&);
00100
00102 mutable unsigned int m_Direction;
00103
00105 ArrayType m_Sigma;
00106
00108 ArrayType m_Mean;
00109
00111 double m_Scale;
00112
00114 bool m_Normalized;
00115
00116 };
00117
00118 }
00119
00120
00121 #define ITK_TEMPLATE_GaussianDerivativeSpatialFunction(_, EXPORT, x, y) namespace itk { \
00122 _(3(class EXPORT GaussianDerivativeSpatialFunction< ITK_TEMPLATE_3 x >)) \
00123 namespace Templates { typedef GaussianDerivativeSpatialFunction< ITK_TEMPLATE_3 x >\
00124 GaussianDerivativeSpatialFunction##y; } \
00125 }
00126
00127 #if ITK_TEMPLATE_EXPLICIT
00128 # include "Templates/itkGaussianDerivativeSpatialFunction+-.h"
00129 #endif
00130
00131 #if ITK_TEMPLATE_TXX
00132 # include "itkGaussianDerivativeSpatialFunction.txx"
00133 #endif
00134
00135
00136 #endif
00137