Skip to content
Snippets Groups Projects
Commit 66b1018c authored by Aurélien Bricier's avatar Aurélien Bricier
Browse files

ENH: prepared class for cost function interfacing + clean the code

parent 4956c4ce
No related branches found
No related tags found
No related merge requests found
...@@ -136,8 +136,18 @@ public: ...@@ -136,8 +136,18 @@ public:
if (model.size() != 4) if (model.size() != 4)
{ {
itkExceptionMacro(<< "Wrong model!") itkExceptionMacro(<< "Wrong model! Size(="
<< model.size()
<< ") > 4" )
} }
else if (model[0]<0 || model[1]<model[0] || model[2]<model[1] || model[2]>1)
{
itkExceptionMacro(<< "Wrong model! Values have to be 0<=v1<=v2<=v3<=1" )
}
else if (model[3]<.75 || model[3]>1)
{
itkExceptionMacro(<< "Wrong model! Values have to be 0.75<=v4<=1" )
}
else else
{ {
for (unsigned j=0; j<nbDescriptor; j++) for (unsigned j=0; j<nbDescriptor; j++)
...@@ -152,7 +162,7 @@ public: ...@@ -152,7 +162,7 @@ public:
} }
else else
{ {
itkExceptionMacro(<< "Wrong model!") itkExceptionMacro(<< "Wrong model! Value must be between 0 and 1")
} }
} }
} }
...@@ -171,6 +181,11 @@ public: ...@@ -171,6 +181,11 @@ public:
m_Hypothesis = hypothesis; m_Hypothesis = hypothesis;
} }
unsigned int GetNumberOfParameters()
{
return (m_DescriptorModels.size() * 4);
}
protected: protected:
/** Triggers the Computation */ /** Triggers the Computation */
......
...@@ -106,7 +106,6 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> ...@@ -106,7 +106,6 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision>
} }
//Initialize parser //Initialize parser
//std::cout << m_CriterionFormula << std::endl;
m_Parser->SetExpr(m_CriterionFormula); m_Parser->SetExpr(m_CriterionFormula);
m_Parser->DefineVar("Belief", &m_Bel); m_Parser->DefineVar("Belief", &m_Bel);
m_Parser->DefineVar("Plausibility", &m_Plau); m_Parser->DefineVar("Plausibility", &m_Plau);
...@@ -154,12 +153,6 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> ...@@ -154,12 +153,6 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision>
mass->SetMass(H, m_FuzzyVars[i]->GetMembership(fuzName, currentGeometry->GetFieldAsDouble(fuzName))); mass->SetMass(H, m_FuzzyVars[i]->GetMembership(fuzName, currentGeometry->GetFieldAsDouble(fuzName)));
mass->SetMass(H_, m_FuzzyVars[i]->GetMembership(fuzName_, currentGeometry->GetFieldAsDouble(fuzName))); mass->SetMass(H_, m_FuzzyVars[i]->GetMembership(fuzName_, currentGeometry->GetFieldAsDouble(fuzName)));
/*
std::cout << fuzName << " : " << currentGeometry->GetFieldAsDouble(fuzName)
<< " " << m_FuzzyVars[i]->GetMembership(fuzName, currentGeometry->GetFieldAsInt(fuzName)) << std::endl;
std::cout << fuzName_ << " : " << currentGeometry->GetFieldAsDouble(fuzName)
<< " " << m_FuzzyVars[i]->GetMembership(fuzName_, currentGeometry->GetFieldAsDouble(fuzName)) << std::endl;
*/
mass->EstimateUncertainty(); mass->EstimateUncertainty();
jointMassFilter->PushBackInput(mass); jointMassFilter->PushBackInput(mass);
...@@ -168,21 +161,14 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> ...@@ -168,21 +161,14 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision>
jointMassFilter->Update(); jointMassFilter->Update();
m_Bel = jointMassFilter->GetOutput()->GetBelief(m_Hypothesis); m_Bel = jointMassFilter->GetOutput()->GetBelief(m_Hypothesis);
m_Plau = jointMassFilter->GetOutput()->GetPlausibility(m_Hypothesis); m_Plau = jointMassFilter->GetOutput()->GetPlausibility(m_Hypothesis);
/*
std::cout << "Bel : " << m_Bel << std::endl; if (m_Parser->Eval())
std::cout << "Plau: " << m_Plau << std::endl;
*/
if (m_Parser->Eval())
{ {
//std::cout << "Feature Validated : " << m_Parser->Eval() << std::endl;
currentGeometry->SetNodeId(this->GetNextID()); currentGeometry->SetNodeId(this->GetNextID());
currentGeometry->SetFieldAsDouble("Belief", m_Bel);
currentGeometry->SetFieldAsDouble("Plausi", m_Plau);
this->GetOutput(0)->GetDataTree()->Add(currentGeometry, folder); this->GetOutput(0)->GetDataTree()->Add(currentGeometry, folder);
} }
else
{
//std::cout << "Feature Rejected : " << m_Parser->Eval() << std::endl;
}
//itVector.GoToEnd(); //TEST ONLY###########################################
} }
++itVector; ++itVector;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment