ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
00001 /*========================================================================= 00002 * 00003 * Copyright Insight Software Consortium 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); 00006 * you may not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0.txt 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, 00013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 * 00017 *=========================================================================*/ 00018 #ifndef __itkElasticBodyReciprocalSplineKernelTransform_h 00019 #define __itkElasticBodyReciprocalSplineKernelTransform_h 00020 00021 #include "itkKernelTransform.h" 00022 00023 namespace itk 00024 { 00037 template< class TScalarType = double, // Data type for scalars (float or 00038 // double) 00039 unsigned int NDimensions = 3 > 00040 // Number of dimensions 00041 class ITK_EXPORT ElasticBodyReciprocalSplineKernelTransform: 00042 public KernelTransform< TScalarType, NDimensions > 00043 { 00044 public: 00046 typedef ElasticBodyReciprocalSplineKernelTransform Self; 00047 typedef KernelTransform< TScalarType, 00048 NDimensions > Superclass; 00049 00050 typedef SmartPointer< Self > Pointer; 00051 typedef SmartPointer< const Self > ConstPointer; 00052 00054 itkTypeMacro(ElasticBodyReciprocalSplineKernelTransform, KernelTransform); 00055 00057 itkNewMacro(Self); 00058 00060 typedef typename Superclass::ScalarType ScalarType; 00061 00063 typedef typename Superclass::ParametersType ParametersType; 00064 00066 typedef typename Superclass::JacobianType JacobianType; 00067 00069 itkStaticConstMacro(SpaceDimension, unsigned int, Superclass::SpaceDimension); 00070 00074 itkSetMacro(Alpha, TScalarType); 00075 00077 itkGetConstMacro(Alpha, TScalarType); 00078 00079 typedef typename Superclass::InputPointType InputPointType; 00080 typedef typename Superclass::OutputPointType OutputPointType; 00081 typedef typename Superclass::InputVectorType InputVectorType; 00082 typedef typename Superclass::OutputVectorType OutputVectorType; 00083 typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType; 00084 typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType; 00085 protected: 00086 ElasticBodyReciprocalSplineKernelTransform(); 00087 virtual ~ElasticBodyReciprocalSplineKernelTransform(); 00088 void PrintSelf(std::ostream & os, Indent indent) const; 00089 00090 typedef typename Superclass::GMatrixType GMatrixType; 00101 virtual void ComputeG(const InputVectorType & landmarkVector, GMatrixType & gmatrix) const; 00102 00104 TScalarType m_Alpha; 00105 private: 00106 ElasticBodyReciprocalSplineKernelTransform(const Self &); //purposely not 00107 // implemented 00108 void operator=(const Self &); //purposely not 00110 00111 // implemented 00112 }; 00113 } // namespace itk 00114 00115 // Define instantiation macro for this template. 00116 #define ITK_TEMPLATE_ElasticBodyReciprocalSplineKernelTransform(_, EXPORT, TypeX, TypeY) \ 00117 namespace itk \ 00118 { \ 00119 _( 2 ( class EXPORT ElasticBodyReciprocalSplineKernelTransform< ITK_TEMPLATE_2 TypeX > ) ) \ 00120 namespace Templates \ 00121 { \ 00122 typedef ElasticBodyReciprocalSplineKernelTransform< ITK_TEMPLATE_2 TypeX > \ 00123 ElasticBodyReciprocalSplineKernelTransform##TypeY; \ 00124 } \ 00125 } 00126 00127 #if ITK_TEMPLATE_EXPLICIT 00128 #include "Templates/itkElasticBodyReciprocalSplineKernelTransform+-.h" 00129 #endif 00130 00131 #if ITK_TEMPLATE_TXX 00132 #include "itkElasticBodyReciprocalSplineKernelTransform.hxx" 00133 #endif 00134 00135 #endif // __itkElasticBodyReciprocalSplineKernelTransform_h 00136