00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkEdgePotentialImageFilter_h
00018 #define __itkEdgePotentialImageFilter_h
00019
00020 #include "itkUnaryFunctorImageFilter.h"
00021
00022 namespace itk
00023 {
00024
00036 namespace Functor {
00037
00038 template< class TInput, class TOutput>
00039 class EdgePotential
00040 {
00041 public:
00042 EdgePotential() {};
00043 ~EdgePotential() {};
00044 inline TOutput operator()( const TInput & A )
00045 {
00046 return static_cast<TOutput>( exp( -1.0 * A.GetNorm() ) );
00047 }
00048 };
00049 }
00050
00051 template <class TInputImage, class TOutputImage>
00052 class ITK_EXPORT EdgePotentialImageFilter :
00053 public
00054 UnaryFunctorImageFilter<TInputImage,TOutputImage,
00055 Functor::EdgePotential<
00056 typename TInputImage::PixelType,
00057 typename TOutputImage::PixelType> >
00058 {
00059 public:
00061 typedef EdgePotentialImageFilter Self;
00062 typedef UnaryFunctorImageFilter<TInputImage,TOutputImage,
00063 Functor::EdgePotential<
00064 typename TInputImage::PixelType,
00065 typename TOutputImage::PixelType>
00066 > Superclass;
00067 typedef SmartPointer<Self> Pointer;
00068 typedef SmartPointer<const Self> ConstPointer;
00069
00071 itkNewMacro(Self);
00072
00073 protected:
00074 EdgePotentialImageFilter() {}
00075 virtual ~EdgePotentialImageFilter() {}
00076
00077 private:
00078 EdgePotentialImageFilter(const Self&);
00079 void operator=(const Self&);
00080
00081 };
00082
00083
00084 }
00085
00086
00087 #endif