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::InputPixelType InputPixelType;
00076
00078 typedef typename Superclass::RealType RealType;
00079
00081 itkStaticConstMacro(ImageDimension, unsigned int,Superclass::ImageDimension);
00082
00084 typedef typename Superclass::IndexType IndexType;
00085
00087 typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
00088
00097 virtual OutputType EvaluateAtContinuousIndex(
00098 const ContinuousIndexType & index ) const;
00099
00100 protected:
00101 LinearInterpolateImageFunction();
00102 ~LinearInterpolateImageFunction(){};
00103 void PrintSelf(std::ostream& os, Indent indent) const;
00104
00105 private:
00106 LinearInterpolateImageFunction( const Self& );
00107 void operator=( const Self& );
00108
00110 static const unsigned long m_Neighbors;
00111
00112 };
00113
00114 }
00115
00116
00117 #define ITK_TEMPLATE_LinearInterpolateImageFunction(_, EXPORT, x, y) namespace itk { \
00118 _(2(class EXPORT LinearInterpolateImageFunction< ITK_TEMPLATE_2 x >)) \
00119 namespace Templates { typedef LinearInterpolateImageFunction< ITK_TEMPLATE_2 x > \
00120 LinearInterpolateImageFunction##y; } \
00121 }
00122
00123 #if ITK_TEMPLATE_EXPLICIT
00124 # include "Templates/itkLinearInterpolateImageFunction+-.h"
00125 #endif
00126
00127 #if ITK_TEMPLATE_TXX
00128 # include "itkLinearInterpolateImageFunction.txx"
00129 #endif
00130
00131 #endif
00132
00133 #endif
00134