go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkWeightedCombinationTransform.h
Go to the documentation of this file.
1 /*======================================================================
2 
3 This file is part of the elastix software.
4 
5 Copyright (c) University Medical Center Utrecht. All rights reserved.
6 See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
7 details.
8 
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the above copyright notices for more information.
12 
13 ======================================================================*/
14 #ifndef __itkWeightedCombinationTransform_h
15 #define __itkWeightedCombinationTransform_h
16 
17 #include "itkAdvancedTransform.h"
18 
19 namespace itk
20 {
21 
37 template< class TScalarType,
38 unsigned int NInputDimensions = 3,
39 unsigned int NOutputDimensions = 3 >
41  public AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
42 {
43 public:
44 
47  typedef AdvancedTransform< TScalarType,
48  NInputDimensions,
49  NOutputDimensions > Superclass;
50  typedef SmartPointer< Self > Pointer;
51  typedef SmartPointer< const Self > ConstPointer;
52 
54  itkNewMacro( Self );
55 
58 
60  itkStaticConstMacro( InputSpaceDimension, unsigned int, NInputDimensions );
61  itkStaticConstMacro( OutputSpaceDimension, unsigned int, NOutputDimensions );
62 
70  typedef typename Superclass
72  typedef typename Superclass
78  typedef typename
81  typedef typename
84  typedef typename Superclass
86 
88  typedef Transform< TScalarType,
89  NInputDimensions,
90  NOutputDimensions > TransformType;
92  typedef typename TransformType::Pointer TransformPointer;
93  typedef std::vector< TransformPointer > TransformContainerType;
94 
96  virtual OutputPointType TransformPoint( const InputPointType & ipp ) const;
97 
100  {
101  itkExceptionMacro(
102  << "TransformVector(const InputVectorType &) is not implemented "
103  << "for WeightedCombinationTransform" );
104  }
105 
106 
108  {
109  itkExceptionMacro(
110  << "TransformVector(const InputVnlVectorType &) is not implemented "
111  << "for WeightedCombinationTransform" );
112  }
113 
114 
116  {
117  itkExceptionMacro(
118  << "TransformCovariantVector(const InputCovariantVectorType &) is not implemented "
119  << "for WeightedCombinationTransform" );
120  }
121 
122 
128  virtual void GetJacobian(
129  const InputPointType & ipp,
130  JacobianType & jac,
131  NonZeroJacobianIndicesType & nzji ) const;
132 
136  virtual void SetParameters( const ParametersType & param );
137 
139  itkGetConstReferenceMacro( Parameters, ParametersType );
140 
142  virtual void SetFixedParameters( const ParametersType & )
143  {
144  // \todo: to be implemented by Stefan
145  }
146 
147 
149  virtual const ParametersType & GetFixedParameters( void ) const
150  {
151  // \todo: to be implemented by Stefan: check this:
152  return this->m_FixedParameters;
153  }
154 
155 
158  {
159  return this->m_TransformContainer.size();
160  }
161 
162 
165  itkSetMacro( NormalizeWeights, bool );
166  itkGetConstMacro( NormalizeWeights, bool );
167 
169  virtual void SetTransformContainer( const TransformContainerType & transformContainer )
170  {
171  this->m_TransformContainer = transformContainer;
172  this->Modified();
173  }
174 
175 
186  {
187  return this->m_TransformContainer;
188  }
189 
190 
192  virtual void GetSpatialJacobian(
193  const InputPointType & ipp, SpatialJacobianType & sj ) const
194  {
195  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
196  }
197 
198 
199  virtual void GetSpatialHessian(
200  const InputPointType & ipp, SpatialHessianType & sh ) const
201  {
202  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
203  }
204 
205 
208  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
209  {
210  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
211  }
212 
213 
215  const InputPointType & ipp, SpatialJacobianType & sj,
217  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
218  {
219  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
220  }
221 
222 
224  const InputPointType & ipp, JacobianOfSpatialHessianType & jsh,
225  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
226  {
227  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
228  }
229 
230 
232  const InputPointType & ipp, SpatialHessianType & sh,
234  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const
235  {
236  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
237  }
238 
239 
240 protected:
241 
244 
247 
250 
251 private:
252 
253  WeightedCombinationTransform( const Self & ); // purposely not implemented
254  void operator=( const Self & ); // purposely not implemented
255 
257 
258 };
259 
260 } // end namespace itk
261 
262 #ifndef ITK_MANUAL_INSTANTIATION
263 #include "itkWeightedCombinationTransform.hxx"
264 #endif
265 
266 #endif
Superclass::SpatialJacobianType SpatialJacobianType
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
virtual OutputPointType TransformPoint(const InputPointType &ipp) const
Superclass::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
Superclass::OutputVnlVectorType OutputVnlVectorType
AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions > Superclass
Superclass::OutputCovariantVectorType OutputCovariantVectorType
virtual void GetJacobianOfSpatialHessian(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
std::vector< unsigned long > NonZeroJacobianIndicesType
Superclass::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
virtual void GetJacobianOfSpatialHessian(const InputPointType &ipp, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
std::vector< TransformPointer > TransformContainerType
Superclass::ScalarType ScalarType
virtual void GetJacobianOfSpatialJacobian(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
Superclass::OutputCovariantVectorType OutputCovariantVectorType
virtual void GetSpatialJacobian(const InputPointType &ipp, SpatialJacobianType &sj) const
Superclass::SpatialHessianType SpatialHessianType
Superclass::OutputVnlVectorType OutputVnlVectorType
Superclass::ParametersType ParametersType
Transform maps points, vectors and covariant vectors from an input space to an output space...
const TransformContainerType & GetTransformContainer(void) const
Superclass::InputVnlVectorType InputVnlVectorType
virtual void SetFixedParameters(const ParametersType &)
Superclass::OutputVectorType OutputVectorType
Superclass::NumberOfParametersType NumberOfParametersType
Superclass::JacobianType JacobianType
virtual const ParametersType & GetFixedParameters(void) const
virtual OutputVectorType TransformVector(const InputVectorType &) const
virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &) const
virtual NumberOfParametersType GetNumberOfParameters(void) const
Superclass::InputPointType InputPointType
virtual OutputVnlVectorType TransformVector(const InputVnlVectorType &) const
Implements a weighted linear combination of multiple transforms.
itkStaticConstMacro(InputSpaceDimension, unsigned int, NInputDimensions)
virtual void GetJacobianOfSpatialJacobian(const InputPointType &ipp, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const
Superclass::InputVectorType InputVectorType
Transform< TScalarType, NInputDimensions, NOutputDimensions > TransformType
virtual void SetParameters(const ParametersType &param)
virtual void GetJacobian(const InputPointType &ipp, JacobianType &jac, NonZeroJacobianIndicesType &nzji) const
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
virtual void GetSpatialHessian(const InputPointType &ipp, SpatialHessianType &sh) const
Superclass::InputCovariantVectorType InputCovariantVectorType
Superclass::OutputPointType OutputPointType
Superclass::NumberOfParametersType NumberOfParametersType
std::vector< SpatialJacobianType > JacobianOfSpatialJacobianType
std::vector< SpatialHessianType > JacobianOfSpatialHessianType
Superclass::InputVnlVectorType InputVnlVectorType
virtual void SetTransformContainer(const TransformContainerType &transformContainer)
Superclass::InputCovariantVectorType InputCovariantVectorType
FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType


Generated on 11-03-2014 for elastix by doxygen 1.8.6 elastix logo