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  * Copyright UMC Utrecht and contributors
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef __itkWeightedCombinationTransform_h
19 #define __itkWeightedCombinationTransform_h
20 
21 #include "itkAdvancedTransform.h"
22 
23 namespace itk
24 {
25 
41 template< class TScalarType,
42 unsigned int NInputDimensions = 3,
43 unsigned int NOutputDimensions = 3 >
45  public AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions >
46 {
47 public:
48 
51  typedef AdvancedTransform< TScalarType,
52  NInputDimensions,
53  NOutputDimensions > Superclass;
54  typedef SmartPointer< Self > Pointer;
55  typedef SmartPointer< const Self > ConstPointer;
56 
58  itkNewMacro( Self );
59 
62 
64  itkStaticConstMacro( InputSpaceDimension, unsigned int, NInputDimensions );
65  itkStaticConstMacro( OutputSpaceDimension, unsigned int, NOutputDimensions );
66 
74  typedef typename Superclass
76  typedef typename Superclass
82  typedef typename
85  typedef typename
88  typedef typename Superclass
90 
92  typedef Transform< TScalarType,
93  NInputDimensions,
94  NOutputDimensions > TransformType;
96  typedef typename TransformType::Pointer TransformPointer;
97  typedef std::vector< TransformPointer > TransformContainerType;
98 
100  OutputPointType TransformPoint( const InputPointType & ipp ) const override;
101 
104  {
105  itkExceptionMacro(
106  << "TransformVector(const InputVectorType &) is not implemented "
107  << "for WeightedCombinationTransform" );
108  }
109 
110 
112  {
113  itkExceptionMacro(
114  << "TransformVector(const InputVnlVectorType &) is not implemented "
115  << "for WeightedCombinationTransform" );
116  }
117 
118 
120  {
121  itkExceptionMacro(
122  << "TransformCovariantVector(const InputCovariantVectorType &) is not implemented "
123  << "for WeightedCombinationTransform" );
124  }
125 
126 
133  const InputPointType & ipp,
134  JacobianType & jac,
135  NonZeroJacobianIndicesType & nzji ) const override;
136 
140  void SetParameters( const ParametersType & param ) override;
141 
143  void SetFixedParameters( const ParametersType & ) override
144  {
145  // \todo: to be implemented by Stefan
146  }
147 
148 
150  const ParametersType & GetFixedParameters( void ) const override
151  {
152  // \todo: to be implemented by Stefan: check this:
153  return this->m_FixedParameters;
154  }
155 
156 
159  {
160  return this->m_TransformContainer.size();
161  }
162 
163 
166  itkSetMacro( NormalizeWeights, bool );
167  itkGetConstMacro( NormalizeWeights, bool );
168 
170  virtual void SetTransformContainer( const TransformContainerType & transformContainer )
171  {
172  this->m_TransformContainer = transformContainer;
173  this->Modified();
174  }
175 
176 
187  {
188  return this->m_TransformContainer;
189  }
190 
191 
194  const InputPointType & ipp, SpatialJacobianType & sj ) const override
195  {
196  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
197  }
198 
199 
201  const InputPointType & ipp, SpatialHessianType & sh ) const override
202  {
203  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
204  }
205 
206 
209  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const override
210  {
211  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
212  }
213 
214 
216  const InputPointType & ipp, SpatialJacobianType & sj,
218  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const override
219  {
220  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
221  }
222 
223 
225  const InputPointType & ipp, JacobianOfSpatialHessianType & jsh,
226  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const override
227  {
228  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
229  }
230 
231 
233  const InputPointType & ipp, SpatialHessianType & sh,
235  NonZeroJacobianIndicesType & nonZeroJacobianIndices ) const override
236  {
237  itkExceptionMacro( << "Not implemented for WeightedCombinationTransform" );
238  }
239 
240 
241 protected:
242 
245 
248 
251 
252 private:
253 
254  WeightedCombinationTransform( const Self & ); // purposely not implemented
255  void operator=( const Self & ); // purposely not implemented
256 
258 
259 };
260 
261 } // end namespace itk
262 
263 #ifndef ITK_MANUAL_INSTANTIATION
264 #include "itkWeightedCombinationTransform.hxx"
265 #endif
266 
267 #endif
Transform maps points, vectors and covariant vectors from an input space to an output space.
Superclass::OutputVectorType OutputVectorType
Superclass::ParametersType ParametersType
std::vector< SpatialHessianType > JacobianOfSpatialHessianType
Superclass::OutputVnlVectorType OutputVnlVectorType
Superclass::NumberOfParametersType NumberOfParametersType
Superclass::InputVectorType InputVectorType
std::vector< SpatialJacobianType > JacobianOfSpatialJacobianType
Superclass::OutputPointType OutputPointType
Superclass::JacobianType JacobianType
Superclass ::OutputCovariantVectorType OutputCovariantVectorType
Superclass::InputPointType InputPointType
FixedArray< Matrix< ScalarType, InputSpaceDimension, InputSpaceDimension >, OutputSpaceDimension > SpatialHessianType
Superclass ::InputCovariantVectorType InputCovariantVectorType
Superclass::ScalarType ScalarType
Superclass::InputVnlVectorType InputVnlVectorType
Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > SpatialJacobianType
std::vector< unsigned long > NonZeroJacobianIndicesType
Implements a weighted linear combination of multiple transforms.
const TransformContainerType & GetTransformContainer(void) const
Superclass::JacobianOfSpatialJacobianType JacobianOfSpatialJacobianType
void GetSpatialHessian(const InputPointType &ipp, SpatialHessianType &sh) const override
virtual void SetTransformContainer(const TransformContainerType &transformContainer)
void SetFixedParameters(const ParametersType &) override
Superclass::SpatialJacobianType SpatialJacobianType
itkStaticConstMacro(OutputSpaceDimension, unsigned int, NOutputDimensions)
Superclass::SpatialHessianType SpatialHessianType
itkStaticConstMacro(InputSpaceDimension, unsigned int, NInputDimensions)
Superclass::OutputVnlVectorType OutputVnlVectorType
void GetJacobianOfSpatialHessian(const InputPointType &ipp, SpatialHessianType &sh, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
void GetJacobianOfSpatialHessian(const InputPointType &ipp, JacobianOfSpatialHessianType &jsh, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
void GetJacobianOfSpatialJacobian(const InputPointType &ipp, SpatialJacobianType &sj, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &) const override
OutputVnlVectorType TransformVector(const InputVnlVectorType &) const override
void SetParameters(const ParametersType &param) override
Transform< TScalarType, NInputDimensions, NOutputDimensions > TransformType
OutputPointType TransformPoint(const InputPointType &ipp) const override
Superclass::NumberOfParametersType NumberOfParametersType
void GetSpatialJacobian(const InputPointType &ipp, SpatialJacobianType &sj) const override
void GetJacobian(const InputPointType &ipp, JacobianType &jac, NonZeroJacobianIndicesType &nzji) const override
OutputVectorType TransformVector(const InputVectorType &) const override
Superclass::InputVnlVectorType InputVnlVectorType
Superclass ::InputCovariantVectorType InputCovariantVectorType
Superclass ::OutputCovariantVectorType OutputCovariantVectorType
Superclass::NonZeroJacobianIndicesType NonZeroJacobianIndicesType
const ParametersType & GetFixedParameters(void) const override
void GetJacobianOfSpatialJacobian(const InputPointType &ipp, JacobianOfSpatialJacobianType &jsj, NonZeroJacobianIndicesType &nonZeroJacobianIndices) const override
NumberOfParametersType GetNumberOfParameters(void) const override
WeightedCombinationTransform(const Self &)
std::vector< TransformPointer > TransformContainerType
Superclass ::JacobianOfSpatialHessianType JacobianOfSpatialHessianType
AdvancedTransform< TScalarType, NInputDimensions, NOutputDimensions > Superclass


Generated on OURCE_DATE_EPOCH for elastix by doxygen 1.9.1 elastix logo