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 __itkScaleLogarithmicTransform_h 00019 #define __itkScaleLogarithmicTransform_h 00020 00021 #include "itkScaleTransform.h" 00022 00023 namespace itk 00024 { 00034 template < 00035 class TScalarType = float, // Type for cordinate representation type (float or 00036 // double) 00037 unsigned int NDimensions = 3> 00038 // Number of dimensions 00039 class ITK_EXPORT ScaleLogarithmicTransform : 00040 public ScaleTransform<TScalarType, 00041 NDimensions> 00042 { 00043 public: 00045 typedef ScaleLogarithmicTransform Self; 00046 typedef ScaleTransform<TScalarType, NDimensions> Superclass; 00047 typedef SmartPointer<Self> Pointer; 00048 typedef SmartPointer<const Self> ConstPointer; 00049 00051 itkNewMacro(Self); 00052 00054 itkTypeMacro(ScaleLogarithmicTransform, ScaleTransform); 00055 00057 itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions); 00058 itkStaticConstMacro(ParametersDimension, unsigned int, NDimensions); 00060 00062 typedef typename Superclass::ScalarType ScalarType; 00063 00065 typedef typename Superclass::ParametersType ParametersType; 00066 typedef typename ParametersType::ValueType ParametersValueType; 00067 00069 typedef typename Superclass::JacobianType JacobianType; 00070 00072 typedef typename Superclass::ScaleType ScaleType; 00073 typedef typename ScaleType::ValueType ScalesValueType; 00074 00076 typedef typename Superclass::InputVectorType InputVectorType; 00077 typedef typename Superclass::OutputVectorType OutputVectorType; 00078 00080 typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType; 00081 typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType; 00082 00084 typedef typename Superclass::InputVnlVectorType InputVnlVectorType; 00085 typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType; 00086 00088 typedef typename Superclass::InputPointType InputPointType; 00089 typedef typename Superclass::OutputPointType OutputPointType; 00090 00094 void SetParameters(const ParametersType & parameters); 00095 00101 const ParametersType & GetParameters(void) const; 00102 00105 virtual void ComputeJacobianWithRespectToParameters( const InputPointType & p, JacobianType & jacobian) const; 00106 00107 protected: 00109 ScaleLogarithmicTransform(); 00110 00112 ~ScaleLogarithmicTransform(); 00113 00115 void PrintSelf(std::ostream & os, Indent indent) const; 00116 00117 private: 00118 ScaleLogarithmicTransform(const Self & other); // purposely not implemented 00119 const Self & operator=(const Self &); // purposely not implemented 00120 00121 }; // class 00122 // ScaleLogarithmicTransform 00123 } // namespace itk 00124 00125 // Define instantiation macro for this template. 00126 #define ITK_TEMPLATE_ScaleLogarithmicTransform(_, EXPORT, TypeX, TypeY) \ 00127 namespace itk \ 00128 { \ 00129 _( 2 ( class EXPORT ScaleLogarithmicTransform<ITK_TEMPLATE_2 TypeX> ) ) \ 00130 namespace Templates \ 00131 { \ 00132 typedef ScaleLogarithmicTransform<ITK_TEMPLATE_2 TypeX> \ 00133 ScaleLogarithmicTransform##TypeY; \ 00134 } \ 00135 } 00136 00137 #if ITK_TEMPLATE_EXPLICIT 00138 #include "Templates/itkScaleLogarithmicTransform+-.h" 00139 #endif 00140 00141 #if ITK_TEMPLATE_TXX 00142 #include "itkScaleLogarithmicTransform.hxx" 00143 #endif 00144 00145 #endif /* __itkScaleLogarithmicTransform_h */ 00146