18 #ifndef itkCompositeTransform_h
19 #define itkCompositeTransform_h
86 template<
typename TParametersValueType=
double,
unsigned int NDimensions = 3>
88 public MultiTransform<TParametersValueType, NDimensions, NDimensions>
166 itkStaticConstMacro( InputDimension,
unsigned int, NDimensions );
167 itkStaticConstMacro( OutputDimension,
unsigned int, NDimensions );
174 this->m_TransformsToOptimizeFlags.at(i) = state;
180 this->SetNthTransformToOptimize( i,
true );
185 this->SetNthTransformToOptimize( i,
false );
190 this->m_TransformsToOptimizeFlags.assign(
191 this->m_TransformsToOptimizeFlags.size(), state );
197 this->SetAllTransformsToOptimize(
true );
202 this->SetAllTransformsToOptimize(
false );
210 this->SetAllTransformsToOptimize(
false );
211 this->SetNthTransformToOptimizeOn( this->GetNumberOfTransforms() - 1 );
220 return this->m_TransformsToOptimizeFlags.at(i);
226 return this->m_TransformsToOptimizeFlags;
231 Superclass::ClearTransformQueue();
232 this->m_TransformsToOptimizeFlags.clear();
240 bool GetInverse( Self *inverse )
const;
242 virtual InverseTransformBasePointer GetInverseTransform() const ITK_OVERRIDE;
258 virtual OutputPointType TransformPoint( const InputPointType & inputPoint ) const ITK_OVERRIDE;
261 using Superclass::TransformVector;
262 virtual OutputVectorType TransformVector(const InputVectorType &) const ITK_OVERRIDE;
264 virtual OutputVnlVectorType TransformVector(const InputVnlVectorType & inputVector) const ITK_OVERRIDE;
266 virtual OutputVectorPixelType TransformVector(const InputVectorPixelType & inputVector ) const ITK_OVERRIDE;
268 virtual OutputVectorType TransformVector(const InputVectorType & inputVector,
269 const InputPointType & inputPoint ) const ITK_OVERRIDE;
271 virtual OutputVnlVectorType TransformVector(const InputVnlVectorType & inputVector,
272 const InputPointType & inputPoint ) const ITK_OVERRIDE;
274 virtual OutputVectorPixelType TransformVector(const InputVectorPixelType & inputVector,
275 const InputPointType & inputPoint ) const ITK_OVERRIDE;
278 using Superclass::TransformCovariantVector;
279 virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType &) const ITK_OVERRIDE;
281 virtual OutputVectorPixelType TransformCovariantVector(const InputVectorPixelType &) const ITK_OVERRIDE;
283 virtual OutputCovariantVectorType TransformCovariantVector(const InputCovariantVectorType & inputVector,
284 const InputPointType & inputPoint ) const ITK_OVERRIDE;
286 virtual OutputVectorPixelType TransformCovariantVector(const InputVectorPixelType & inputVector,
287 const InputPointType & inputPoint ) const ITK_OVERRIDE;
290 using Superclass::TransformDiffusionTensor3D;
291 virtual OutputDiffusionTensor3DType TransformDiffusionTensor3D(
292 const InputDiffusionTensor3DType & inputTensor) const ITK_OVERRIDE;
294 virtual OutputVectorPixelType TransformDiffusionTensor3D(
295 const InputVectorPixelType & inputTensor) const ITK_OVERRIDE;
297 virtual OutputDiffusionTensor3DType TransformDiffusionTensor3D(
298 const InputDiffusionTensor3DType & inputTensor,
299 const InputPointType & inputPoint ) const ITK_OVERRIDE;
301 virtual OutputVectorPixelType TransformDiffusionTensor3D(
302 const InputVectorPixelType & inputTensor,
303 const InputPointType & inputPoint ) const ITK_OVERRIDE;
306 using Superclass::TransformSymmetricSecondRankTensor;
307 virtual OutputSymmetricSecondRankTensorType TransformSymmetricSecondRankTensor(
308 const InputSymmetricSecondRankTensorType & inputTensor) const ITK_OVERRIDE;
310 virtual OutputVectorPixelType TransformSymmetricSecondRankTensor(
311 const InputVectorPixelType & inputTensor) const ITK_OVERRIDE;
313 virtual OutputSymmetricSecondRankTensorType TransformSymmetricSecondRankTensor(
314 const InputSymmetricSecondRankTensorType & inputTensor,
315 const InputPointType & inputPoint ) const ITK_OVERRIDE;
317 virtual OutputVectorPixelType TransformSymmetricSecondRankTensor(
318 const InputVectorPixelType & inputTensor,
319 const InputPointType & inputPoint ) const ITK_OVERRIDE;
325 virtual TransformCategoryType GetTransformCategory() const ITK_OVERRIDE;
337 virtual const ParametersType & GetParameters() const ITK_OVERRIDE;
341 virtual
void SetParameters(const ParametersType & p) ITK_OVERRIDE;
345 virtual const FixedParametersType & GetFixedParameters() const ITK_OVERRIDE;
349 virtual
void SetFixedParameters(const FixedParametersType & fixedParameters) ITK_OVERRIDE;
353 virtual NumberOfParametersType GetNumberOfParameters(
void) const ITK_OVERRIDE;
357 virtual NumberOfParametersType GetNumberOfLocalParameters(
void) const ITK_OVERRIDE;
361 virtual NumberOfParametersType GetNumberOfFixedParameters(
void) const ITK_OVERRIDE;
365 virtual
void UpdateTransformParameters( const DerivativeType & update, ScalarType factor = 1.0 ) ITK_OVERRIDE;
370 virtual
void FlattenTransformQueue();
376 virtual
void ComputeJacobianWithRespectToParameters(const InputPointType & p, JacobianType & j) const ITK_OVERRIDE;
387 virtual
void ComputeJacobianWithRespectToParametersCachedTemporaries( const InputPointType & p, JacobianType & outJacobian, JacobianType & jacobianWithRespectToPosition ) const ITK_OVERRIDE;
392 virtual ~CompositeTransform() ITK_OVERRIDE;
393 virtual
void PrintSelf( std::ostream& os,
Indent indent ) const ITK_OVERRIDE;
396 virtual typename
LightObject::Pointer InternalClone() const ITK_OVERRIDE;
400 Superclass::PushFrontTransform( t );
402 this->m_TransformsToOptimizeFlags.push_front(
true );
407 Superclass::PushBackTransform( t );
409 this->m_TransformsToOptimizeFlags.push_back(
true );
414 Superclass::PopFrontTransform();
415 this->m_TransformsToOptimizeFlags.pop_front();
420 Superclass::PopBackTransform();
421 this->m_TransformsToOptimizeFlags.pop_back();
425 TransformQueueType & GetTransformsToOptimizeQueue()
const;
439 #ifndef ITK_MANUAL_INSTANTIATION
440 #include "itkCompositeTransform.hxx"
443 #endif // itkCompositeTransform_h
Light weight base class for most itk classes.
unsigned long ModifiedTimeType
unsigned long SizeValueType
Control indentation during Print() invocation.