Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkAterialInputFunctionGenerator.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 
16 #include "mitkImageTimeSelector.h"
17 #include "mitkImageCast.h"
18 #include "itkArray2D.h"
19 #include "mitkImageAccessByItk.h"
20 #include "mitkExtractTimeGrid.h"
21 #include "mitkAIFBasedModelBase.h"
22 #include "mitkImageCast.h"
23 
24 #include <iostream>
25 #include <fstream>
26 
28 
30 {
31  if(this->HasOutdatedResults())
32  {
35  }
36  return this->m_AIFValues;
37 
38 }
39 
41 {
42  if(this->HasOutdatedResults()){
45  }
46  return this->m_AIFTimeGrid;
47 
48 }
49 
50 
51 
52 
54 {
55 
56  mitk::MaskedDynamicImageStatisticsGenerator::Pointer signalGenerator = mitk::MaskedDynamicImageStatisticsGenerator::New();
57 
58 
59 
60  m_AIFValues.SetSize(this->m_DynamicImage->GetTimeSteps());
61  m_AIFValues.Fill(0.);
62  m_AIFTimeGrid.SetSize(this->m_DynamicImage->GetTimeSteps());
63  m_AIFTimeGrid.Fill(0.);
64 
65 
66  // = not defined for array???
67  mitk::ModelBase::TimeGridType timeGrid = ExtractTimeGrid(m_DynamicImage);
68  m_AIFTimeGrid = timeGrid;
69 
70 
71  signalGenerator->SetDynamicImage(m_DynamicImage);
72  signalGenerator->SetMask(m_Mask);
73  signalGenerator->Generate();
74 
75 
76  //Convert from aterial curve Ca to Plasma curve Cp
77  // m_AIFValues = signalGenerator->GetMean()/(1-this->m_HCL);
78  mitk::MaskedDynamicImageStatisticsGenerator::ResultType temp = signalGenerator->GetMean();
79 
80 
81  mitk::AIFBasedModelBase::AterialInputFunctionType::iterator aif = this->m_AIFValues.begin();
82  for( mitk::MaskedDynamicImageStatisticsGenerator::ResultType::const_iterator pos = temp.begin(); pos != temp.end(); ++pos, ++aif)
83  {
84  *aif = *pos /(1-this->m_HCL);
85 
86  }
87 
88 
89  this->m_GenerationTimeStamp.Modified();
90 
91 }
92 
93 
94 
95 void
97 {
98 
99  if (m_DynamicImage.IsNull())
100  {
101  mitkThrow() << "Cannot generate Aterial Input Function. Input dynamic image is not set.";
102  }
103  if (m_Mask.IsNull())
104  {
105  mitkThrow() << "Cannot generate Aterial Input Function. ROI is not set.";
106  }
107 }
108 
110 {
111  bool result = false;
112 
113  if (m_DynamicImage.IsNull())
114  {
115  result = true;
116  }
117  else
118  {
119  if (m_DynamicImage->GetMTime() > this->m_GenerationTimeStamp)
120  {
121  result = true;
122  }
123  }
124 
125  if (m_Mask.IsNull())
126  {
127  result = true;
128  }
129  else
130  {
131  if (m_Mask->GetMTime() > this->m_GenerationTimeStamp)
132  {
133  result = true;
134  }
135  }
136  return result;
137 };
itk::Array< double > TimeGridType
Definition: mitkModelBase.h:62
MITKMODELFIT_EXPORT ModelBase::TimeGridType ExtractTimeGrid(const Image *image)
#define mitkThrow()
itk::Array< double > AterialInputFunctionType
AIFBasedModelBase::AterialInputFunctionType GetAterialInputFunction()
virtual void CheckValidInputs() const
Makes sure that m_DynamicImage and m_Mask are set.
virtual void CalculateAIFAndGetResult()
Passes m_DynamicImage and m_Mask to the itkMaskedNaryStatisticsImageFilter and mitkExtractTimeGrid an...