00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _itkGaussianKernelFunction_h
00018 #define _itkGaussianKernelFunction_h
00019
00020 #include "itkKernelFunction.h"
00021 #include "vnl/vnl_math.h"
00022
00023 namespace itk
00024 {
00025
00038 class ITKCommon_EXPORT GaussianKernelFunction : public KernelFunction
00039 {
00040 public:
00042 typedef GaussianKernelFunction Self;
00043 typedef KernelFunction Superclass;
00044 typedef SmartPointer<Self> Pointer;
00045
00047 itkNewMacro(Self);
00048
00050 itkTypeMacro(GaussianKernelFunction, KernelFunction);
00051
00053 inline double Evaluate (const double& u) const
00054 { return ( exp( -0.5 * vnl_math_sqr( u ) ) * m_Factor ); }
00055
00056 protected:
00057 GaussianKernelFunction(){};
00058 ~GaussianKernelFunction(){};
00059 void PrintSelf(std::ostream& os, Indent indent) const
00060 { Superclass::PrintSelf( os, indent ); }
00061
00062 private:
00063 GaussianKernelFunction(const Self&);
00064 void operator=(const Self&);
00065
00066 static const double m_Factor;
00067
00068 };
00069
00070 }
00071
00072 #endif