Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkMVModelFitCostFunction.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 #include <iostream>
16 
17 
19 {
20  MeasureType measure;
21 
22  SignalType signal = m_Model->GetSignal(parameter);
23 
24  if(signal.GetSize() != m_Sample.GetSize()) itkExceptionMacro("Signal size does not matche sample size!");
25  if(signal.GetSize() == 0) itkExceptionMacro("Signal is empty!");
26 
27  measure = CalcMeasure(parameter, signal);
28 
29  return measure;
30 }
31 
32 void mitk::MVModelFitCostFunction::GetDerivative (const ParametersType &parameters, DerivativeType &derivative) const
33 {
34  ParametersType::SizeValueType paramCount = parameters.Size();
35  MeasureType::SizeValueType measureCount = GetNumberOfValues();
36 
37  derivative.SetSize(paramCount,m_Sample.Size());
38 
39  for ( ParametersType::SizeValueType i = 0; i < paramCount; i++ )
40  {
41  ParametersType newParameters = parameters;
42  newParameters[i] -= m_DerivativeStepLength;
43 
44  MeasureType e0 = GetValue(newParameters);
45 
46  newParameters = parameters;
47  newParameters[i] += m_DerivativeStepLength;
48 
49  MeasureType e1 = GetValue(newParameters);
50 
51  for(MeasureType::SizeValueType j = 0; j<measureCount; ++j)
52  {
53  derivative[i][j] = (e1[j] - e0[j]) / ( 2 * m_DerivativeStepLength );
54  }
55  }
56 
57 
58 };
59 
61 {
62  return m_Model->GetNumberOfParameters();
63 }
64 
66  return m_Sample.GetSize();
67 }
68 
70 {
71  itkDebugMacro("setting Sample to " << sampleSet);
72  this->m_Sample = sampleSet;
73  this->Modified();
74 }
75 
void GetDerivative(const ParametersType &parameters, DerivativeType &derivative) const override
Superclass::DerivativeType DerivativeType
unsigned int GetNumberOfParameters(void) const override
unsigned int GetNumberOfValues(void) const override
virtual MeasureType CalcMeasure(const ParametersType &parameters, const SignalType &signal) const =0
MeasureType GetValue(const ParametersType &parameter) const override
void SetSample(const SignalType &sampleSet) override