Helper function that generates the curve based on the model specified by the fit info.*/
| 297 | |
| 298 | /** Helper function that generates the curve based on the model specified by the fit info.*/ |
| 299 | mitk::PlotDataCurve::Pointer |
| 300 | CalcSignalFromModel(const mitk::Point3D& position, const mitk::modelFit::ModelFitInfo* fitInfo, const mitk::ModelParameterizerBase* parameterizer = nullptr) |
| 301 | { |
| 302 | assert(fitInfo); |
| 303 | |
| 304 | if (!parameterizer) |
| 305 | { |
| 306 | parameterizer = mitk::ModelGenerator::GenerateModelParameterizer(*fitInfo); |
| 307 | } |
| 308 | |
| 309 | assert(fitInfo->inputImage.IsNotNull()); |
| 310 | |
| 311 | // Calculate index |
| 312 | ::itk::Index<3> index; |
| 313 | mitk::BaseGeometry::Pointer geometry = fitInfo->inputImage->GetTimeGeometry()->GetGeometryForTimeStep(0); |
| 314 | |
| 315 | geometry->WorldToIndex(position, index); |
| 316 | |
| 317 | //model generation |
| 318 | mitk::ModelBase::Pointer model = parameterizer->GenerateParameterizedModel(index); |
| 319 | |
| 320 | mitk::ParameterValueMapType parameterMap = mitk::ExtractParameterValueMapFromModelFit(fitInfo, position); |
| 321 | |
| 322 | mitk::ModelBase::ParametersType paramArray = mitk::ConvertParameterMapToParameterVector(parameterMap, model); |
| 323 | |
| 324 | mitk::ModelBase::ModelResultType curveDataY = model->GetSignal(paramArray); |
| 325 | mitk::PlotDataCurve::Pointer result = mitk::PlotDataCurve::New(); |
| 326 | |
| 327 | mitk::ModelBase::TimeGridType timeGrid = model->GetTimeGrid(); |
| 328 | mitk::PlotDataCurve::ValuesType values; |
| 329 | values.reserve(timeGrid.size()); |
| 330 | |
| 331 | for (unsigned int t = 0; t < timeGrid.size(); ++t) |
| 332 | { |
| 333 | double x = timeGrid[t]; |
| 334 | double y = curveDataY[t]; |
| 335 | values.emplace_back(std::make_pair(x, y)); |
| 336 | } |
| 337 | |
| 338 | result->SetValues(std::move(values)); |
| 339 | return result; |
| 340 | } |
| 341 | |
| 342 | mitk::PlotDataCurve::Pointer |
| 343 | mitk::GenerateModelSignalPlotData(const mitk::Point3D& position, const mitk::modelFit::ModelFitInfo* fitInfo, const mitk::ModelBase::TimeGridType& timeGrid, mitk::ModelParameterizerBase* parameterizer) |
no test coverage detected