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