freAccuracySOMetricMonitor.cxx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   F.R.E.E. - flexible registration evaluation engine
00004   Version:   v.1.0.0
00005   Date:      $Date: 2006/09/01 12:00:00 $
00006   Module:    $RCSfile: freAccuracySOMetricMonitor.cxx,v $
00007   Language:  C++
00008 
00009 
00010 
00011   Copyright (c) 2007 Ralf o Floca (Department of Medical Informatics,
00012   Institute for Medical Biometry and Informatics, University of Heidelberg,
00013   Germany). All rights reserved.
00014   See FREECopyright.txt or http://www.mi.med.uni-hd.de/free/copyright.htm
00015   for details.
00016 
00017      This software is distributed WITHOUT ANY WARRANTY; without even 
00018      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00019      PURPOSE.  See the above copyright notices for more information.
00020 
00021 =========================================================================*/
00022 
00023 #include "freAccuracySOMetricMonitor.h"
00024 
00025 #include "itkNumericTraits.h"
00026 
00027 namespace FREE
00028 {
00029 
00033   AccuracySOMetricResult::
00034   AccuracySOMetricResult()
00035   {
00036     this->Reset();
00037   };
00038 
00039   void
00040   AccuracySOMetricResult::
00041   Reset()
00042   {
00043                 m_MinError = itk::NumericTraits< double >::max();
00044                 m_MaxError = 0.0;
00045                 m_Error = 0.0;
00046                 m_Var = 0.0;
00047 
00048     m_UnevaluatedPoints = 0;
00049 
00050                 m_Duration = 0;
00051     m_Samplesize = 0;
00052 
00053     m_PointErrors.clear();
00054   };
00055 
00059 AccuracySOMetricMonitor::
00060 AccuracySOMetricMonitor()
00061 {};
00062 
00063 AccuracySOMetricMonitor::
00064 ~AccuracySOMetricMonitor()
00065 {
00066 };
00067 
00068 void
00069 AccuracySOMetricMonitor::
00070 InsertEvaluationResults(const ResultType& results)
00071 {
00072   m_Errors.push_back(results.GetError());
00073   m_Vars.push_back(results.GetVariance());
00074   m_MinErrors.push_back(results.GetMinError());
00075   m_MaxErrors.push_back(results.GetMaxError());
00076   m_PointErrors.push_back(results.GetPointErrors());
00077   m_Samplesize.push_back(results.GetSamplesize());
00078   m_Durations.push_back(results.GetDuration());
00079   m_UnevaluatedPoints.push_back(results.GetUnevaluatedPoints());
00080 };
00081 
00082 void
00083 AccuracySOMetricMonitor::
00084 CopyAdaptationResults(const ResultIndexType& index, ResultType& results) const
00085 {
00086   results.SetError(m_Errors[index]);
00087   results.SetVariance(m_Vars[index]);
00088   results.SetMinError(m_MinErrors[index]);
00089   results.SetMaxError(m_MaxErrors[index]);
00090   results.SetPointErrors(m_PointErrors[index]);
00091   results.SetSamplesize(m_Samplesize[index]);
00092   results.SetDuration(m_Durations[index]);
00093   results.SetUnevaluatedPoints(m_UnevaluatedPoints[index]);
00094 };
00095 
00096 void
00097 AccuracySOMetricMonitor::
00098 EnlistResultsToStatistic(const ResultType& results, StatisticEntry& entry)
00099 {
00100   entry.AddValue(Convert::ToStr(results.GetError()),2);
00101   entry.AddValue(Convert::ToStr(sqrt(results.GetVariance())),3);
00102   entry.AddValue(Convert::ToStr(results.GetMinError()),4);
00103   entry.AddValue(Convert::ToStr(results.GetMaxError()),5);
00104 
00105   std::string sPointErrors ="";
00106   for (AccuracySOMetricResult::PointErrorListType::const_iterator pos = results.GetPointErrors().begin(); pos!=results.GetPointErrors().end(); pos++)
00107   {
00108     sPointErrors += Convert::ToStr(*pos) + "; ";
00109   }
00110   entry.AddValue(sPointErrors,6);
00111 
00112   entry.AddValue(Convert::ToStr(results.GetDuration()),7);
00113   entry.AddValue(Convert::ToStr(results.GetUnevaluatedPoints()),8);
00114 };
00115 
00116 void
00117 AccuracySOMetricMonitor::
00118 EnlistDictionaryEntries(StatisticDictionary& dictionary)
00119 {
00120   dictionary.AddValueDefinition(this->GetNameOfClass(),"Error", "Mean error; deviation in real world spacing");
00121   dictionary.AddValueDefinition(this->GetNameOfClass(),"Std dev", "Standard deviation of the error");
00122   dictionary.AddValueDefinition(this->GetNameOfClass(),"Minimum", "Minimum error");
00123   dictionary.AddValueDefinition(this->GetNameOfClass(),"Maximum", "Maximum error");
00124   dictionary.AddValueDefinition(this->GetNameOfClass(),"Point error", "Absolut error of each reference point. Only valid if metric uses points to evaluate accuracy.");
00125   dictionary.AddValueDefinition(this->GetNameOfClass(),"Duration", "Duration of the registration in 1/10 sec");
00126   dictionary.AddValueDefinition(this->GetNameOfClass(),"Unevaluated points", "Number of points that were not evaluated. Only valid if accuracy is estimated via point references.");
00127 };
00128 
00129 
00130 } // end namespace FREE

Generated at Sat Oct 13 15:18:02 2007 for f.r.e.e. - Flexible Registration and Evaluation Engine by doxygen 1.5.3 written by Dimitri van Heesch, © 1997-2000