18#ifndef elxTransformIO_h
19#define elxTransformIO_h
23#include <itkCompositeTransform.h>
24#include <itkTransform.h>
25#include <itkTransformBase.h>
38 static itk::OptimizerParameters<double>
41 return fixed ? transform.GetFixedParameters() : transform.GetParameters();
45 SetParameters(
const bool fixed, itk::TransformBase & transform,
const itk::OptimizerParameters<double> & parameters)
47 fixed ? transform.SetFixedParameters(parameters) : transform.SetParameters(parameters);
60 template <
unsigned NDimension>
61 static itk::SmartPointer<itk::CompositeTransform<double, NDimension>>
67 if ((numberOfTransforms > 1) && (!advancedCombinationTransform.
GetUseComposition()))
74 const auto compositeTransform = itk::CompositeTransform<double, NDimension>::New();
76 for (itk::SizeValueType n{}; n < numberOfTransforms; ++n)
78 const auto nthTransform = advancedCombinationTransform.
GetNthTransform(n);
80 compositeTransform->AddTransform((singleItkTransform ==
nullptr) ? nthTransform : singleItkTransform);
82 return compositeTransform;
89 template <
unsigned NDimension>
90 static itk::SmartPointer<itk::CompositeTransform<double, NDimension>>
96 if ((numberOfTransforms > 1) && (!advancedCombinationTransform.
GetUseComposition()))
103 const auto compositeTransform = itk::CompositeTransform<double, NDimension>::New();
105 for (itk::SizeValueType n{}; n < numberOfTransforms; ++n)
107 const auto nthTransform = advancedCombinationTransform.
GetNthTransform(n);
110 if (singleItkTransform ==
nullptr)
114 compositeTransform->AddTransform(singleItkTransform);
116 return compositeTransform;
122 template <
unsigned NDimension>
123 static itk::SmartPointer<itk::Transform<double, NDimension, NDimension>>
128 assert(
dynamic_cast<const CombinationTransformType *
>(&elxTransform) ==
nullptr);
130 return dynamic_cast<itk::Transform<double, NDimension, NDimension> *
>(
136 Write(
const itk::TransformBase & itkTransform,
const std::string & fileName);
138 static itk::TransformBase::Pointer
139 Read(
const std::string & fileName);
142 template <
typename TElastixTransform>
147 elxTransform.GetElastix()->GetCurrentTransformParameterFileName());
151 static itk::TransformBase::Pointer
A class that deals with user given parameters and command line arguments.