Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkAdvancedRayCastInterpolateImageFunction_h
00018 #define __itkAdvancedRayCastInterpolateImageFunction_h
00019
00020 #include "itkInterpolateImageFunction.h"
00021 #include "itkTransform.h"
00022 #include "itkVector.h"
00023
00024 namespace itk
00025 {
00026
00038 template <class TInputImage, class TCoordRep = double>
00039 class ITK_EXPORT AdvancedRayCastInterpolateImageFunction :
00040 public InterpolateImageFunction<TInputImage,TCoordRep>
00041 {
00042 public:
00044 typedef AdvancedRayCastInterpolateImageFunction Self;
00045 typedef InterpolateImageFunction<TInputImage,TCoordRep> Superclass;
00046 typedef SmartPointer<Self> Pointer;
00047 typedef SmartPointer<const Self> ConstPointer;
00048
00050 itkStaticConstMacro(InputImageDimension, unsigned int,
00051 TInputImage::ImageDimension);
00052
00057 typedef Transform<TCoordRep,InputImageDimension,InputImageDimension> TransformType;
00058
00059 typedef typename TransformType::Pointer TransformPointer;
00060 typedef typename TransformType::InputPointType InputPointType;
00061 typedef typename TransformType::OutputPointType OutputPointType;
00062 typedef typename TransformType::ParametersType TransformParametersType;
00063 typedef typename TransformType::JacobianType TransformJacobianType;
00064
00065 typedef typename Superclass::InputPixelType PixelType;
00066
00067 typedef typename TInputImage::SizeType SizeType;
00068
00069 typedef Vector<TCoordRep, InputImageDimension> DirectionType;
00070
00072 typedef InterpolateImageFunction<TInputImage,TCoordRep> InterpolatorType;
00073
00074 typedef typename InterpolatorType::Pointer InterpolatorPointer;
00075
00076
00078 itkTypeMacro(AdvancedRayCastInterpolateImageFunction, InterpolateImageFunction);
00079
00081 itkNewMacro(Self);
00082
00084 typedef typename Superclass::OutputType OutputType;
00085
00087 typedef typename Superclass::InputImageType InputImageType;
00088
00090 typedef typename Superclass::RealType RealType;
00091
00093 itkStaticConstMacro(ImageDimension, unsigned int,Superclass::ImageDimension);
00094
00096 typedef typename Superclass::PointType PointType;
00097
00099 typedef typename Superclass::IndexType IndexType;
00100
00102 typedef typename Superclass::ContinuousIndexType ContinuousIndexType;
00103
00114 virtual OutputType Evaluate( const PointType& point ) const;
00115
00127 virtual OutputType EvaluateAtContinuousIndex(
00128 const ContinuousIndexType &index ) const;
00129
00130
00132 itkSetObjectMacro( Transform, TransformType );
00134 itkGetObjectMacro( Transform, TransformType );
00135
00137 itkSetObjectMacro( Interpolator, InterpolatorType );
00139 itkGetObjectMacro( Interpolator, InterpolatorType );
00140
00142 itkSetMacro( FocalPoint, InputPointType );
00144 itkGetConstMacro( FocalPoint, InputPointType );
00145
00147 itkSetMacro( Threshold, double );
00149 itkGetConstMacro( Threshold, double );
00150
00154 inline bool IsInsideBuffer( const PointType & ) const
00155 {
00156 return true;
00157 }
00158 bool IsInsideBuffer( const ContinuousIndexType & ) const
00159 {
00160 return true;
00161 }
00162 bool IsInsideBuffer( const IndexType & ) const
00163 {
00164 return true;
00165 }
00166
00167 protected:
00168
00170 AdvancedRayCastInterpolateImageFunction();
00171
00173 ~AdvancedRayCastInterpolateImageFunction(){};
00174
00176 void PrintSelf(std::ostream& os, Indent indent) const;
00177
00179 TransformPointer m_Transform;
00180
00182 InputPointType m_FocalPoint;
00183
00185 double m_Threshold;
00186
00188 InterpolatorPointer m_Interpolator;
00189
00190
00191 private:
00192 AdvancedRayCastInterpolateImageFunction( const Self& );
00193 void operator=( const Self& );
00194
00195
00196 };
00197
00198 }
00199
00200 #ifndef ITK_MANUAL_INSTANTIATION
00201 #include "itkAdvancedRayCastInterpolateImageFunction.txx"
00202 #endif
00203
00204 #endif