MCPcopy Create free account
hub / github.com/MITK/MITK / Compute

Method Compute

Modules/ModelFit/src/Functors/mitkModelFitFunctorBase.cpp:15–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13#include <mitkModelFitFunctorBase.h>
14
15mitk::ModelFitFunctorBase::OutputPixelArrayType
16mitk::ModelFitFunctorBase::
17Compute(const InputPixelArrayType& value, const ModelBase* model,
18 const ModelBase::ParametersType& initialParameters) const
19{
20 if (!model)
21 {
22 itkExceptionMacro("Cannot compute fit. Passed model is not defined.");
23 }
24
25 if (model->GetNumberOfParameters() != initialParameters.Size())
26 {
27 itkExceptionMacro("Cannot compute fit. Parameter count of passed model and passed initial parameters differ. Model parameter count: "
28 << model->GetNumberOfParameters() << "; Initial parameters: " << initialParameters);
29 }
30
31 SignalType sample(value.size());
32
33 for (SignalType::SizeValueType i = 0; i < sample.Size(); ++i)
34 {
35 sample[i] = value [i];
36 }
37
38 DebugParameterMapType debugParams;
39 ParameterNamesType debugNames;
40 if (this->m_DebugParameterMaps)
41 {
42 debugNames = this->GetDebugParameterNames();
43 }
44
45 ParametersType fittedParameters = DoModelFit(sample, model, initialParameters, debugParams);
46
47 OutputPixelArrayType derivedParameters = this->GetDerivedParameters(model, fittedParameters);
48
49 OutputPixelArrayType criteria = this->GetCriteria(model, fittedParameters, sample);
50
51 OutputPixelArrayType evaluationParameters = this->GetEvaluationParameters(model, fittedParameters,
52 sample);
53
54 if (criteria.size() != this->GetCriterionNames().size())
55 {
56 itkExceptionMacro("ModelFitInfo implementation seems to be inconsistent. Number of criterion values is not equal to number of criterion names.");
57 }
58
59 OutputPixelArrayType result(fittedParameters.Size() + derivedParameters.size() + criteria.size() +
60 evaluationParameters.size() + debugNames.size());
61
62 for (ParametersType::SizeValueType i = 0; i < fittedParameters.Size(); ++i)
63 {
64 result[i] = fittedParameters[i];
65 }
66
67 OutputPixelArrayType::size_type offset = fittedParameters.Size();
68
69 for (OutputPixelArrayType::size_type j = 0; j < derivedParameters.size(); ++j)
70 {
71 result[offset + j] = derivedParameters[j];
72 }

Callers

nothing calls this directly

Calls 9

GetDerivedParametersMethod · 0.95
GetNumberOfParametersMethod · 0.45
SizeMethod · 0.45
sizeMethod · 0.45
GetCriterionNamesMethod · 0.45
findMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected