18#ifndef itkStackTransform_h
19#define itkStackTransform_h
39template <
class TScalarType,
unsigned int NInputDimensions,
unsigned int NOutputDimensions>
61 using typename Superclass::ScalarType;
62 using typename Superclass::ParametersType;
63 using typename Superclass::FixedParametersType;
64 using typename Superclass::NumberOfParametersType;
65 using typename Superclass::ParametersValueType;
66 using typename Superclass::JacobianType;
72 using typename Superclass::InputPointType;
73 using typename Superclass::InputVectorType;
74 using typename Superclass::OutputVectorType;
75 using typename Superclass::InputVnlVectorType;
76 using typename Superclass::OutputVnlVectorType;
77 using typename Superclass::OutputCovariantVectorType;
78 using typename Superclass::InputCovariantVectorType;
79 using typename Superclass::OutputPointType;
80 using typename Superclass::OutputVectorPixelType;
81 using typename Superclass::InputVectorPixelType;
115 const ParametersType &
122 const auto numberOfFixedParameters = fixedParameters.size();
125 itkExceptionMacro(
"The number of FixedParameters (" << numberOfFixedParameters <<
") should be at least "
129 if (Superclass::m_FixedParameters != fixedParameters)
131 Superclass::m_FixedParameters = fixedParameters;
142 NumberOfParametersType
199 : subTransform->GetFixedParameters());
207 const auto & fixedParametersOfSubTransform = transform.GetFixedParameters();
208 const auto & parametersOfSubTransform = transform.GetParameters();
216 transformcopy->SetFixedParameters(fixedParametersOfSubTransform);
217 transformcopy->SetParameters(parametersOfSubTransform);
219 subTransform = transformcopy;
233 NumberOfParametersType
255 if (numberOfSubTransforms >= 0.0 && numberOfSubTransforms <= UINT_MAX &&
256 static_cast<double>(
static_cast<unsigned>(numberOfSubTransforms)) == numberOfSubTransforms)
262 itkExceptionMacro(
"The FixedParameters element (" << numberOfSubTransforms
263 <<
") should be a valid number (the number of subtransforms).");
269 subTransform->SetFixedParameters(fixedParametersOfSubTransform);
287 const auto numberOfFixedParametersOfSubTransform = fixedParametersOfSubTransform.size();
289 FixedParametersType & fixedParametersOfStack = this->Superclass::m_FixedParameters;
291 const auto minimumNumberOfFixedParametersOfStack =
294 if (fixedParametersOfStack.size() < minimumNumberOfFixedParametersOfStack)
296 fixedParametersOfStack.set_size(minimumNumberOfFixedParametersOfStack);
301 std::copy_n(fixedParametersOfSubTransform.begin(),
302 numberOfFixedParametersOfSubTransform,
308 using Superclass::TransformCovariantVector;
309 using Superclass::TransformVector;
314 virtual SubTransformPointer
333 OutputCovariantVectorType
399#ifndef ITK_MANUAL_INSTANTIATION
400# include "itkStackTransform.hxx"