From 66b1018c75c362bc323e87ddd1db281911ac1900 Mon Sep 17 00:00:00 2001 From: Aurelien Bricier <aurelien.bricier@c-s.fr> Date: Mon, 16 May 2011 17:07:44 +0200 Subject: [PATCH] ENH: prepared class for cost function interfacing + clean the code --- ...bVectorDataToDSValidatedVectorDataFilter.h | 19 ++++++++++++++-- ...ectorDataToDSValidatedVectorDataFilter.txx | 22 ++++--------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.h b/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.h index 792d2c93bf..e1c280258c 100644 --- a/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.h +++ b/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.h @@ -136,8 +136,18 @@ public: 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 { for (unsigned j=0; j<nbDescriptor; j++) @@ -152,7 +162,7 @@ public: } else { - itkExceptionMacro(<< "Wrong model!") + itkExceptionMacro(<< "Wrong model! Value must be between 0 and 1") } } } @@ -171,6 +181,11 @@ public: m_Hypothesis = hypothesis; } + unsigned int GetNumberOfParameters() + { + return (m_DescriptorModels.size() * 4); + } + protected: /** Triggers the Computation */ diff --git a/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.txx b/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.txx index be620fdf5e..3d8d774ffb 100644 --- a/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.txx +++ b/Code/Fuzzy/otbVectorDataToDSValidatedVectorDataFilter.txx @@ -106,7 +106,6 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> } //Initialize parser - //std::cout << m_CriterionFormula << std::endl; m_Parser->SetExpr(m_CriterionFormula); m_Parser->DefineVar("Belief", &m_Bel); m_Parser->DefineVar("Plausibility", &m_Plau); @@ -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))); -/* - 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(); jointMassFilter->PushBackInput(mass); @@ -168,21 +161,14 @@ VectorDataToDSValidatedVectorDataFilter<TVectorData, TPrecision> jointMassFilter->Update(); m_Bel = jointMassFilter->GetOutput()->GetBelief(m_Hypothesis); m_Plau = jointMassFilter->GetOutput()->GetPlausibility(m_Hypothesis); - /* - std::cout << "Bel : " << m_Bel << std::endl; - std::cout << "Plau: " << m_Plau << std::endl; - */ - if (m_Parser->Eval()) + + if (m_Parser->Eval()) { - //std::cout << "Feature Validated : " << m_Parser->Eval() << std::endl; currentGeometry->SetNodeId(this->GetNextID()); + currentGeometry->SetFieldAsDouble("Belief", m_Bel); + currentGeometry->SetFieldAsDouble("Plausi", m_Plau); this->GetOutput(0)->GetDataTree()->Add(currentGeometry, folder); } - else - { - //std::cout << "Feature Rejected : " << m_Parser->Eval() << std::endl; - } - //itVector.GoToEnd(); //TEST ONLY########################################### } ++itVector; } -- GitLab