go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkBSplineInterpolationSecondOrderDerivativeWeightFunction.h
Go to the documentation of this file.
00001 /*======================================================================
00002 
00003 This file is part of the elastix software.
00004 
00005 Copyright (c) University Medical Center Utrecht. All rights reserved.
00006 See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
00007 details.
00008 
00009 This software is distributed WITHOUT ANY WARRANTY; without even
00010 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011 PURPOSE. See the above copyright notices for more information.
00012 
00013 ======================================================================*/
00014 #ifndef __itkBSplineInterpolationSecondOrderDerivativeWeightFunction_h
00015 #define __itkBSplineInterpolationSecondOrderDerivativeWeightFunction_h
00016 
00017 #include "itkBSplineInterpolationWeightFunctionBase.h"
00018 #include "vnl/vnl_vector_fixed.h"
00019 
00020 namespace itk
00021 {
00022 
00040 template < class TCoordRep = float,
00041   unsigned int VSpaceDimension = 2,
00042   unsigned int VSplineOrder = 3 >
00043 class ITK_EXPORT BSplineInterpolationSecondOrderDerivativeWeightFunction :
00044   public BSplineInterpolationWeightFunctionBase<
00045   TCoordRep, VSpaceDimension, VSplineOrder >
00046 {
00047 public:
00049   typedef BSplineInterpolationSecondOrderDerivativeWeightFunction Self;
00050   typedef BSplineInterpolationWeightFunctionBase<
00051     TCoordRep, VSpaceDimension, VSplineOrder >      Superclass;
00052   typedef SmartPointer<Self>                        Pointer;
00053   typedef SmartPointer<const Self>                  ConstPointer;
00054 
00056   itkNewMacro( Self );
00057 
00059   itkTypeMacro( BSplineInterpolationSecondOrderDerivativeWeightFunction,
00060     BSplineInterpolationWeightFunctionBase );
00061 
00063   itkStaticConstMacro( SpaceDimension, unsigned int, VSpaceDimension );
00064 
00066   itkStaticConstMacro( SplineOrder, unsigned int, VSplineOrder );
00067 
00069   typedef typename Superclass::WeightsType          WeightsType;
00070   typedef typename Superclass::IndexType            IndexType;
00071   typedef typename Superclass::SizeType             SizeType;
00072   typedef typename Superclass::ContinuousIndexType  ContinuousIndexType;
00073 
00075   virtual void SetDerivativeDirections( unsigned int dir0, unsigned int dir1 );
00076 
00077 protected:
00078   BSplineInterpolationSecondOrderDerivativeWeightFunction();
00079   ~BSplineInterpolationSecondOrderDerivativeWeightFunction() {}
00080 
00082   typedef typename Superclass::KernelType           KernelType;
00083   typedef typename Superclass::DerivativeKernelType DerivativeKernelType;
00084   typedef typename Superclass
00085     ::SecondOrderDerivativeKernelType               SecondOrderDerivativeKernelType;
00086   typedef typename Superclass::TableType            TableType;
00087   typedef typename Superclass::OneDWeightsType      OneDWeightsType;
00088 
00098   virtual void Compute1DWeights(
00099     const ContinuousIndexType & index,
00100     const IndexType & startIndex,
00101     OneDWeightsType & weights1D ) const;
00102 
00104   virtual void PrintSelf( std::ostream & os, Indent indent ) const;
00105 
00106 private:
00107   BSplineInterpolationSecondOrderDerivativeWeightFunction(const Self&); //purposely not implemented
00108   void operator=(const Self&); //purposely not implemented
00109 
00110   vnl_vector_fixed< double, 2 >   m_DerivativeDirections;
00111   bool                            m_EqualDerivativeDirections;
00112 
00113 };
00114 
00115 } // end namespace itk
00116 
00117 // Define instantiation macro for this template.
00118 #define ITK_TEMPLATE_BSplineInterpolationSecondOrderDerivativeWeightFunction(_, EXPORT, x, y) namespace itk { \
00119   _(3(class EXPORT BSplineInterpolationSecondOrderDerivativeWeightFunction< ITK_TEMPLATE_3 x >)) \
00120   namespace Templates { typedef BSplineInterpolationSecondOrderDerivativeWeightFunction< ITK_TEMPLATE_3 x > BSplineInterpolationSecondOrderDerivativeWeightFunction##y; } \
00121   }
00122 
00123 #if ITK_TEMPLATE_EXPLICIT
00124 # include "Templates/itkBSplineInterpolationSecondOrderDerivativeWeightFunction+-.h"
00125 #endif
00126 
00127 #if ITK_TEMPLATE_TXX
00128 # include "itkBSplineInterpolationSecondOrderDerivativeWeightFunction.txx"
00129 #endif
00130 
00131 
00132 #endif


Generated on 24-10-2011 for elastix by doxygen 1.7.4 elastix logo