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);
00090
00091 protected:
00092 GaussianDerivativeSpatialFunction();
00093 virtual ~GaussianDerivativeSpatialFunction();
00094 void PrintSelf(std::ostream& os, Indent indent) const;
00095
00096 private:
00097 GaussianDerivativeSpatialFunction(const Self&);
00098 void operator=(const Self&);
00099
00101 unsigned int m_Direction;
00102
00104 ArrayType m_Sigma;
00105
00107 ArrayType m_Mean;
00108
00110 double m_Scale;
00111
00113 bool m_Normalized;
00114
00115 };
00116
00117 }
00118
00119 #ifndef ITK_MANUAL_INSTANTIATION
00120 #include "itkGaussianDerivativeSpatialFunction.txx"
00121 #endif
00122
00123 #endif