Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkSVModelFitCostFunction.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 #include "mitkModelBase.h"
15 
16 #include <iostream>
17 
18 
20 {
21  MeasureType measure;
22 
23  SignalType signal = m_Model->GetSignal(parameter);
24 
25  if(signal.GetSize() != m_Sample.GetSize()) itkExceptionMacro("Signal size does not matche sample size!");
26  if(signal.GetSize() == 0) itkExceptionMacro("Signal is empty!");
27 
28  measure = CalcMeasure(parameter, signal);
29 
30  return measure;
31 }
32 
33 void mitk::SVModelFitCostFunction::GetDerivative (const ParametersType &parameters, DerivativeType &derivative) const
34 {
35  ParametersType::SizeValueType paramCount = parameters.Size();
36 
37  derivative.SetSize(paramCount);
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  derivative[i] = (e1 - e0) / ( 2 * m_DerivativeStepLength );
52  }
53 };
54 
56 {
57  return m_Model->GetNumberOfParameters();
58 }
59 
61 {
62  itkDebugMacro("setting Sample to " << sampleSet);
63  this->m_Sample = sampleSet;
64  this->Modified();
65 }
66 
unsigned int GetNumberOfParameters(void) const override
void SetSample(const SignalType &sampleSet) override
MeasureType GetValue(const ParametersType &parameter) const override
void GetDerivative(const ParametersType &parameters, DerivativeType &derivative) const override
Superclass::DerivativeType DerivativeType
virtual MeasureType CalcMeasure(const ParametersType &parameters, const SignalType &signal) const =0