00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkComplexBSplineInterpolateImageFunction_h
00019 #define __itkComplexBSplineInterpolateImageFunction_h
00020
00021 #include "itkInterpolateImageFunction.h"
00022 #include "itkBSplineInterpolateImageFunction.h"
00023 #include "itkComplexToRealImageFilter.h"
00024 #include "itkComplexToImaginaryImageFilter.h"
00025
00026 namespace itk {
00042 template< class TImageType, class TCoordRep = double, class TCoefficientType = double >
00043 class ITK_EXPORT ComplexBSplineInterpolateImageFunction :
00044 public InterpolateImageFunction< TImageType, TCoordRep >
00045 {
00046 public:
00047
00049 typedef ComplexBSplineInterpolateImageFunction Self;
00050
00052 typedef InterpolateImageFunction< TImageType, TCoordRep > Superclass;
00053
00055 typedef SmartPointer< Self > Pointer;
00056
00058 typedef SmartPointer< const Self > ConstPointer;
00059
00061 itkTypeMacro( ComplexBSplineInterpolateImageFunction, InterpolateImageFunction );
00062
00063
00065 itkNewMacro( Self );
00066
00068 itkStaticConstMacro( ImageDimension, unsigned int,Superclass::ImageDimension );
00069
00071 typedef typename Superclass::OutputType OutputType;
00072
00074 typedef typename Superclass::InputImageType InputImageType;
00075
00077 typedef typename Superclass::IndexType IndexType;
00078
00080 typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
00081
00083 typedef typename Superclass::PointType PointType;
00084
00086 typedef Image< double, itkGetStaticConstMacro( ImageDimension ) > InternalImageType;
00087
00089 typedef ComplexToRealImageFilter< InputImageType, InternalImageType > RealFilterType;
00090 typedef ComplexToImaginaryImageFilter< InputImageType, InternalImageType > ImaginaryFilterType;
00091
00093 typedef BSplineInterpolateImageFunction< InternalImageType, TCoordRep, TCoefficientType > InterpolatorType;
00094
00095
00096
00105 virtual OutputType EvaluateAtContinuousIndex( const ContinuousIndexType & index ) const;
00106
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00122 void SetSplineOrder( unsigned int SplineOrder );
00123 itkGetConstMacro( SplineOrder, int );
00125
00127 virtual void SetInputImage(const TImageType * inputData);
00128
00129
00130 protected:
00131 ComplexBSplineInterpolateImageFunction();
00132 virtual ~ComplexBSplineInterpolateImageFunction() {};
00133 void operator=( const Self& );
00134 void PrintSelf(std::ostream& os, Indent indent) const;
00135
00136
00137 private:
00138 ComplexBSplineInterpolateImageFunction( const Self& );
00139
00140
00141 unsigned int m_SplineOrder;
00142 typename InterpolatorType::Pointer m_RealInterpolator;
00143 typename InterpolatorType::Pointer m_ImaginaryInterpolator;
00144 typename RealFilterType::Pointer m_RealFilter;
00145 typename ImaginaryFilterType::Pointer m_ImaginaryFilter;
00146
00147 };
00148
00149
00150 }
00151
00152
00153 #ifndef ITK_MANUAL_INSTANTIATION
00154 #include "itkComplexBSplineInterpolateImageFunction.txx"
00155 #endif
00156
00157 #endif
00158