18 "Two Compartment Exchange Model";
50 return "Perfusion.MR";
103 itkExceptionMacro(
"No Time Grid Set! Cannot Calculate Signal");
109 unsigned int timeSteps = this->
m_TimeGrid.GetSize();
121 double Tp = vp/(PS + F);
125 double Kp = 0.5 *( 1/Tp + 1/Te + sqrt(( 1/Tp + 1/Te )*( 1/Tp + 1/Te ) - 4 * 1/Te*1/Tb) );
126 double Km = 0.5 *( 1/Tp + 1/Te - sqrt(( 1/Tp + 1/Te )*( 1/Tp + 1/Te ) - 4 * 1/Te*1/Tb) );
128 double E = ( Kp - 1/Tb )/( Kp - Km );
137 mitk::ModelBase::ModelResultType::const_iterator exppPos = expp.begin();
138 mitk::ModelBase::ModelResultType::const_iterator expmPos = expm.begin();
140 for( mitk::ModelBase::ModelResultType::iterator signalPos = signal.begin(); signalPos!=signal.end(); ++exppPos,++expmPos, ++signalPos)
142 *signalPos = F * ( *exppPos + E*(*expmPos - *exppPos) );
151 mitk::ModelBase::ModelResultType::const_iterator expPos = exp.begin();
153 for( mitk::ModelBase::ModelResultType::iterator signalPos = signal.begin(); signalPos!=signal.end(); ++expPos, ++signalPos)
155 *signalPos = F * ( *expPos );
170 return newClone.GetPointer();
static const std::string UNIT_PARAMETER_PS
static const unsigned int NUMBER_OF_PARAMETERS
ParametersSizeType GetNumberOfParameters() const override
itk::LightObject::Pointer InternalClone() const override
ModelTraitsInterface::ParametersType ParametersType
std::string GetModelDisplayName() const override
~TwoCompartmentExchangeModel() override
static const std::string UNIT_PARAMETER_ve
void PrintSelf(std::ostream &os, ::itk::Indent indent) const override
static const std::string UNIT_PARAMETER_F
static const std::string NAME_PARAMETER_ve
const AterialInputFunctionType GetAterialInputFunction(TimeGridType currentTimeGrid) const
static const std::string NAME_PARAMETER_F
TwoCompartmentExchangeModel()
static const unsigned int POSITION_PARAMETER_PS
ParamterUnitMapType GetParameterUnits() const override
std::string GetModelType() const override
ModelTraitsInterface::ParametersSizeType ParametersSizeType
static const std::string MODEL_DISPLAY_NAME
static const unsigned int POSITION_PARAMETER_F
ModelTraitsInterface::ModelResultType ModelResultType
static const unsigned int POSITION_PARAMETER_vp
static const std::string NAME_PARAMETER_PS
itk::Array< double > AterialInputFunctionType
ModelResultType ComputeModelfunction(const ParametersType ¶meters) const override
static const unsigned int POSITION_PARAMETER_ve
void PrintSelf(std::ostream &os, ::itk::Indent indent) const override
static const std::string NAME_PARAMETER_vp
ModelTraitsInterface::ParameterNamesType ParameterNamesType
static const std::string UNIT_PARAMETER_vp
itk::Array< double > convoluteAIFWithExponential(mitk::ModelBase::TimeGridType timeGrid, mitk::AIFBasedModelBase::AterialInputFunctionType aif, double lambda)
std::map< ParameterNameType, std::string > ParamterUnitMapType
ParameterNamesType GetParameterNames() const override