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