38 #ifndef __itkStatisticalModelTransformBase_hxx
39 #define __itkStatisticalModelTransformBase_hxx
41 #include "itkStatisticalModelTransformBase.h"
49 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
53 m_StatisticalModel(0),
55 m_usedNumberCoefficients(10000) {
56 itkDebugMacro( <<
"Constructor MorphableModelTransform()");
58 this->m_FixedParameters.SetSize(0);
66 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
70 itkDebugMacro( <<
"Setting statistical model ");
71 m_StatisticalModel = model;
74 this->m_Parameters.SetSize(model->GetNumberOfPrincipalComponents());
75 this->m_Parameters.Fill(0.0);
77 this->m_coeff_vector.set_size(model->GetNumberOfPrincipalComponents());
81 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
82 typename StatisticalModelTransformBase<TRepresenter, TScalarType, TInputDimension, TOutputDimension>::StatisticalModelType::ConstPointer
85 itkDebugMacro( <<
"Getting statistical model ");
86 return m_StatisticalModel;
93 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
97 itkDebugMacro( <<
"Setting Identity");
99 for (
unsigned i = 0; i < this->GetNumberOfParameters(); i++)
100 this->m_coeff_vector[i] = 0;
106 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
110 itkDebugMacro( <<
"Setting parameters " << parameters );
113 for(
unsigned int i=0; i < std::min(m_usedNumberCoefficients, (
unsigned) this->GetNumberOfParameters()); i++) {
114 m_coeff_vector[i] = parameters[i];
116 for (
unsigned int i = std::min(m_usedNumberCoefficients, (
unsigned) this->GetNumberOfParameters()); i < this->GetNumberOfParameters(); i++) {
117 m_coeff_vector[i] = 0;
124 itkDebugMacro(<<
"After setting parameters ");
132 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
133 const typename StatisticalModelTransformBase<TRepresenter, TScalarType, TInputDimension, TOutputDimension>::ParametersType &
136 itkDebugMacro( <<
"Getting parameters ");
140 for(
unsigned int i=0; i < this->GetNumberOfParameters(); i++) {
141 this->m_Parameters[i] = this->m_coeff_vector[i];
143 itkDebugMacro(<<
"After getting parameters " << this->m_Parameters );
145 return this->m_Parameters;
153 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
157 jacobian.SetSize(OutputSpaceDimension, m_StatisticalModel->GetNumberOfPrincipalComponents());
160 const MatrixType& statModelJacobian = m_StatisticalModel->GetJacobian(pt);
162 for (
unsigned i = 0; i < statModelJacobian.rows(); i++) {
163 for (
unsigned j = 0; j < std::min(m_usedNumberCoefficients, (
unsigned) this->GetNumberOfParameters()); j++) {
164 jacobian[i][j] = statModelJacobian[i][j];
169 itkDebugMacro( <<
"Jacobian with MM:\n" << jacobian);
170 itkDebugMacro( <<
"After GetMorphableModelJacobian:"
171 <<
"\nJacobian = \n" << jacobian);
177 template <
class TRepresenter,
class TScalarType,
unsigned int TInputDimension,
unsigned int TOutputDimension >
179 StatisticalModelTransformBase<TRepresenter, TScalarType, TInputDimension, TOutputDimension>::
180 PrintSelf(std::ostream &os, Indent indent)
const {
181 Superclass::PrintSelf(os,indent);
ITK Wrapper for the statismo::StatisticalModel class.
Definition: itkStatisticalModel.h:62