00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkLinearInterpolateImageFunction_h
00018 #define __itkLinearInterpolateImageFunction_h
00019
00020
00021
00022
00023 #include "itkConfigure.h"
00024
00025 #if defined( ITK_USE_OPTIMIZED_REGISTRATION_METHODS ) && defined( LINEAR_INTERPOLATOR_FIXED )
00026 #include "itkOptLinearInterpolateImageFunction.h"
00027 #else
00028
00029 #include "itkInterpolateImageFunction.h"
00030
00031 namespace itk
00032 {
00033
00051 template <class TInputImage, class TCoordRep = double>
00052 class ITK_EXPORT LinearInterpolateImageFunction :
00053 public InterpolateImageFunction<TInputImage,TCoordRep>
00054 {
00055 public:
00057 typedef LinearInterpolateImageFunction Self;
00058 typedef InterpolateImageFunction<TInputImage,TCoordRep> Superclass;
00059 typedef SmartPointer<Self> Pointer;
00060 typedef SmartPointer<const Self> ConstPointer;
00061
00063 itkTypeMacro(LinearInterpolateImageFunction, InterpolateImageFunction);
00064
00066 itkNewMacro(Self);
00067
00069 typedef typename Superclass::OutputType OutputType;
00070
00072 typedef typename Superclass::InputImageType InputImageType;
00073
00075 typedef typename Superclass::RealType RealType;
00076
00078 itkStaticConstMacro(ImageDimension, unsigned int,Superclass::ImageDimension);
00079
00081 typedef typename Superclass::IndexType IndexType;
00082
00084 typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
00085
00094 virtual OutputType EvaluateAtContinuousIndex(
00095 const ContinuousIndexType & index ) const;
00096
00097 protected:
00098 LinearInterpolateImageFunction();
00099 ~LinearInterpolateImageFunction(){};
00100 void PrintSelf(std::ostream& os, Indent indent) const;
00101
00102 private:
00103 LinearInterpolateImageFunction( const Self& );
00104 void operator=( const Self& );
00105
00107 static const unsigned long m_Neighbors;
00108
00109 };
00110
00111 }
00112
00113
00114 #define ITK_TEMPLATE_LinearInterpolateImageFunction(_, EXPORT, x, y) namespace itk { \
00115 _(2(class EXPORT LinearInterpolateImageFunction< ITK_TEMPLATE_2 x >)) \
00116 namespace Templates { typedef LinearInterpolateImageFunction< ITK_TEMPLATE_2 x > \
00117 LinearInterpolateImageFunction##y; } \
00118 }
00119
00120 #if ITK_TEMPLATE_EXPLICIT
00121 # include "Templates/itkLinearInterpolateImageFunction+-.h"
00122 #endif
00123
00124 #if ITK_TEMPLATE_TXX
00125 # include "itkLinearInterpolateImageFunction.txx"
00126 #endif
00127
00128 #endif
00129
00130 #endif
00131