18 #ifndef itkCompositeTransform_h
19 #define itkCompositeTransform_h
86 template<
typename TParametersValueType=
double,
unsigned int NDimensions = 3>
88 public MultiTransform<TParametersValueType, NDimensions, NDimensions>
170 static constexpr
unsigned int InputDimension = NDimensions;
171 static constexpr
unsigned int OutputDimension = NDimensions;
177 this->m_TransformsToOptimizeFlags.at(i) = state;
183 this->SetNthTransformToOptimize( i,
true );
188 this->SetNthTransformToOptimize( i,
false );
193 this->m_TransformsToOptimizeFlags.assign(
194 this->m_TransformsToOptimizeFlags.size(), state );
200 this->SetAllTransformsToOptimize(
true );
205 this->SetAllTransformsToOptimize(
false );
213 this->SetAllTransformsToOptimize(
false );
214 this->SetNthTransformToOptimizeOn( this->GetNumberOfTransforms() - 1 );
223 return this->m_TransformsToOptimizeFlags.at(i);
229 return this->m_TransformsToOptimizeFlags;
234 Superclass::ClearTransformQueue();
235 this->m_TransformsToOptimizeFlags.clear();
243 bool GetInverse( Self *inverse )
const;
245 InverseTransformBasePointer GetInverseTransform()
const override;
261 OutputPointType TransformPoint(
const InputPointType & inputPoint )
const override;
264 using Superclass::TransformVector;
265 OutputVectorType TransformVector(
const InputVectorType &)
const override;
267 OutputVnlVectorType TransformVector(
const InputVnlVectorType & inputVector)
const override;
269 OutputVectorPixelType TransformVector(
const InputVectorPixelType & inputVector )
const override;
271 OutputVectorType TransformVector(
const InputVectorType & inputVector,
272 const InputPointType & inputPoint )
const override;
274 OutputVnlVectorType TransformVector(
const InputVnlVectorType & inputVector,
275 const InputPointType & inputPoint )
const override;
277 OutputVectorPixelType TransformVector(
const InputVectorPixelType & inputVector,
278 const InputPointType & inputPoint )
const override;
281 using Superclass::TransformCovariantVector;
282 OutputCovariantVectorType TransformCovariantVector(
const InputCovariantVectorType &)
const override;
284 OutputVectorPixelType TransformCovariantVector(
const InputVectorPixelType &)
const override;
286 OutputCovariantVectorType TransformCovariantVector(
const InputCovariantVectorType & inputVector,
287 const InputPointType & inputPoint )
const override;
289 OutputVectorPixelType TransformCovariantVector(
const InputVectorPixelType & inputVector,
290 const InputPointType & inputPoint )
const override;
293 using Superclass::TransformDiffusionTensor3D;
294 OutputDiffusionTensor3DType TransformDiffusionTensor3D(
295 const InputDiffusionTensor3DType & inputTensor)
const override;
297 OutputVectorPixelType TransformDiffusionTensor3D(
298 const InputVectorPixelType & inputTensor)
const override;
300 OutputDiffusionTensor3DType TransformDiffusionTensor3D(
301 const InputDiffusionTensor3DType & inputTensor,
302 const InputPointType & inputPoint )
const override;
304 OutputVectorPixelType TransformDiffusionTensor3D(
305 const InputVectorPixelType & inputTensor,
306 const InputPointType & inputPoint )
const override;
309 using Superclass::TransformSymmetricSecondRankTensor;
310 OutputSymmetricSecondRankTensorType TransformSymmetricSecondRankTensor(
311 const InputSymmetricSecondRankTensorType & inputTensor)
const override;
313 OutputVectorPixelType TransformSymmetricSecondRankTensor(
314 const InputVectorPixelType & inputTensor)
const override;
316 OutputSymmetricSecondRankTensorType TransformSymmetricSecondRankTensor(
317 const InputSymmetricSecondRankTensorType & inputTensor,
318 const InputPointType & inputPoint )
const override;
320 OutputVectorPixelType TransformSymmetricSecondRankTensor(
321 const InputVectorPixelType & inputTensor,
322 const InputPointType & inputPoint )
const override;
328 TransformCategoryType GetTransformCategory()
const override;
340 const ParametersType & GetParameters()
const override;
344 void SetParameters(
const ParametersType & p)
override;
348 const FixedParametersType & GetFixedParameters()
const override;
352 void SetFixedParameters(
const FixedParametersType & fixedParameters)
override;
356 NumberOfParametersType GetNumberOfParameters()
const override;
360 NumberOfParametersType GetNumberOfLocalParameters()
const override;
364 NumberOfParametersType GetNumberOfFixedParameters()
const override;
368 void UpdateTransformParameters(
const DerivativeType & update, ScalarType factor = 1.0 )
override;
373 virtual void FlattenTransformQueue();
379 void ComputeJacobianWithRespectToParameters(
const InputPointType & p, JacobianType & j)
const override;
389 void ComputeJacobianWithRespectToParametersCachedTemporaries(
const InputPointType & p,
390 JacobianType & outJacobian,
391 JacobianType & cacheJacobian )
const override;
397 void PrintSelf( std::ostream& os,
Indent indent )
const override;
404 Superclass::PushFrontTransform( t );
406 this->m_TransformsToOptimizeFlags.push_front(
true );
411 Superclass::PushBackTransform( t );
413 this->m_TransformsToOptimizeFlags.push_back(
true );
418 Superclass::PopFrontTransform();
419 this->m_TransformsToOptimizeFlags.pop_front();
424 Superclass::PopBackTransform();
425 this->m_TransformsToOptimizeFlags.pop_back();
429 TransformQueueType & GetTransformsToOptimizeQueue()
const;
441 #ifndef ITK_MANUAL_INSTANTIATION
442 #include "itkCompositeTransform.hxx"
445 #endif // itkCompositeTransform_h
Light weight base class for most itk classes.
unsigned long SizeValueType
unsigned long ModifiedTimeType
Control indentation during Print() invocation.