KWStyle - itkScaleLogarithmicTransform.h
 
Matrix View
Description

1 /*=========================================================================
2
3   Program:   Insight Segmentation & Registration Toolkit
4   Module:    $RCSfile: itkScaleLogarithmicTransform.h.html,v $
5   Language:  C++
6   Date:      $Date: 2006/01/17 19:15:47 $
7   Version:   $Revision: 1.4 $
8
9   Copyright (c) Insight Software Consortium. All rights reserved.
10   See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11
12      This software is distributed WITHOUT ANY WARRANTY; without even 
13      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14      PURPOSE.  See the above copyright notices for more information.
15
16 =========================================================================*/
17
18 #ifndef __itkScaleLogarithmicTransform_h
19 #define __itkScaleLogarithmicTransform_h
20
21 #include "itkScaleTransform.h"
22
23 namespace itk
24 {
25
26 LEN /** \brief Logarithmic Scale transformation of a vector space (e.g. space coordinates)
27  *
28  * The only difference between this class and its superclass the ScaleTransform 
29  * is that here the parameters of the transformation are the logarithms of the
30  * scales. This facilitates to linearize the expressions used for optimization.
31  *
32  * \ingroup Transforms
33  */
34 template <
35 LEN     class TScalarType=float, // Type for cordinate representation type (float or double)
36     unsigned int NDimensions=3  >  // Number of dimensions
37 MCM class ITK_EXPORT ScaleLogarithmicTransform : 
38 IND ****************************public ScaleTransform< TScalarType, 
39                                                    NDimensions >
40 {
41 public:
42   /** Standard class typedefs.   */
43   typedef ScaleLogarithmicTransform Self;
44 TDA   typedef ScaleTransform< TScalarType, NDimensions >  Superclass;
45   typedef SmartPointer<Self>        Pointer;
46   typedef SmartPointer<const Self>  ConstPointer;
47   
48   /** New macro for creation of through a smart pointer. */
49   itkNewMacro( Self );
50
51   /** Run-time type information (and related methods). */
52   itkTypeMacro( ScaleLogarithmicTransform, ScaleTransform );
53
54   /** Dimension of the domain space. */
55   itkStaticConstMacro(SpaceDimension, unsigned int, NDimensions);
56   itkStaticConstMacro(ParametersDimension, unsigned int, NDimensions);
57
58   /** Scalar type. */
59   typedef typename Superclass::ScalarType  ScalarType;
60
61   /** Parameters type. */
62   typedef typename Superclass::ParametersType  ParametersType;
63
64   /** Jacobian type. */
65   typedef typename Superclass::JacobianType  JacobianType;
66
67   /** Standard vector type for this class. */
68   typedef typename Superclass::ScaleType              ScaleType;
69
70   /** Standard vector type for this class. */
71   typedef typename Superclass::InputVectorType          InputVectorType;
72   typedef typename Superclass::OutputVectorType         OutputVectorType;
73   
74   /** Standard covariant vector type for this class. */
75 LEN   typedef typename Superclass::InputCovariantVectorType   InputCovariantVectorType;
76 LEN   typedef typename Superclass::OutputCovariantVectorType  OutputCovariantVectorType;
77   
78   /** Standard vnl_vector type for this class. */
79   typedef typename Superclass::InputVnlVectorType         InputVnlVectorType;
80   typedef typename Superclass::OutputVnlVectorType        OutputVnlVectorType;
81   
82   /** Standard coordinate point type for this class. */
83   typedef typename Superclass::InputPointType             InputPointType;
84   typedef typename Superclass::OutputPointType            OutputPointType;
85   
86   /** Set parameters.
87    * This method sets the parameters for the transform
88    * value specified by the user. */
89   void SetParameters(const ParametersType & parameters);
90
91   /** Get the parameters that uniquely define the transform
92    * This is typically used by optimizers.
93    * There are 4 parameters. The first one represents the
94    * rotation, the second one the scale and the last 
95    * two represent the offset. */
96   const ParametersType & GetParameters( void ) const;
97
98   /** Get the Jacobian matrix. */
99   const JacobianType & GetJacobian( const InputPointType & point ) const;
100
101 protected:
102   /** Construct an ScaleLogarithmicTransform object. */
103   ScaleLogarithmicTransform();
104
105   /** Destroy an ScaleLogarithmicTransform object. */
106   ~ScaleLogarithmicTransform();
107
108   /** Print contents of an ScaleLogarithmicTransform */
109   void PrintSelf(std::ostream &os, Indent indent) const;
110
111 private:
112   ScaleLogarithmicTransform(const Self & other); //purposely not implemented
113   const Self & operator=( const Self & ); //purposely not implemented
114
115 }; //class ScaleLogarithmicTransform
116
117 }  // namespace itk
118
119
120 #ifndef ITK_MANUAL_INSTANTIATION
121 #include "itkScaleLogarithmicTransform.txx"
122 #endif
123
124 #endif /* __itkScaleLogarithmicTransform_h */
125

Generated by KWStyle 1.0b on Tuesday January,17 at 02:14:43PM
© Kitware Inc.