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.h,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 #ifndef __freAccuracySOMetricMonitor_h 00023 #define __freAccuracySOMetricMonitor_h 00024 00025 #include "freSetupOptimizationMetricMonitorBase.h" 00026 00027 namespace FREE 00028 { 00037 class AccuracySOMetricResult: public SetupOptimizationMetricResult 00038 { 00039 public: 00040 typedef std::vector<double> PointErrorListType; 00041 00042 void SetError(const double& error) {m_Error = error;}; 00043 void SetVariance(const double& var) {m_Var = var;}; 00044 void SetMinError(const double& error) {m_MinError = error;}; 00045 void SetMaxError(const double& error) {m_MaxError = error;}; 00046 void SetPointErrors(const PointErrorListType& errors) {m_PointErrors = errors;}; 00047 void SetSamplesize(const unsigned long& size) {m_Samplesize = size;}; 00048 void SetDuration(const unsigned long& dur) {m_Duration = dur;}; 00049 void SetUnevaluatedPoints(const unsigned long& points) {m_UnevaluatedPoints = points;}; 00050 00051 const double& GetError() const { return m_Error;}; 00052 const double& GetVariance() const { return m_Var;}; 00053 const double& GetMinError() const { return m_MinError;}; 00054 const double& GetMaxError() const { return m_MaxError;}; 00055 const PointErrorListType& GetPointErrors() const { return m_PointErrors;}; 00056 const unsigned long& GetSamplesize() const { return m_Samplesize;}; 00057 const unsigned long& GetDuration() const { return m_Duration;}; 00058 const unsigned long& GetUnevaluatedPoints() const { return m_UnevaluatedPoints;}; 00059 00060 double& GetError() { return m_Error;}; 00061 double& GetVariance() { return m_Var;}; 00062 double& GetMinError() { return m_MinError;}; 00063 double& GetMaxError() { return m_MaxError;}; 00064 PointErrorListType& GetPointErrors() { return m_PointErrors;}; 00065 unsigned long& GetSamplesize() { return m_Samplesize;}; 00066 unsigned long& GetDuration() { return m_Duration;}; 00067 unsigned long& GetUnevaluatedPoints() { return m_UnevaluatedPoints;}; 00068 00069 virtual void Reset(); 00070 00071 AccuracySOMetricResult(); 00072 protected: 00074 double m_Error; 00076 double m_Var; 00078 double m_MinError; 00080 double m_MaxError; 00081 00083 PointErrorListType m_PointErrors; 00084 00086 unsigned long m_Samplesize; 00088 unsigned long m_Duration; 00089 00090 unsigned long m_UnevaluatedPoints; 00091 }; 00092 00103 class ITK_EXPORT AccuracySOMetricMonitor : 00104 public SetupOptimizationMetricMonitorBase<AccuracySOMetricResult> 00105 { 00106 public: 00108 typedef AccuracySOMetricMonitor Self; 00109 typedef SetupOptimizationMetricMonitorBase<AccuracySOMetricResult> Superclass; 00110 typedef itk::SmartPointer<Self> Pointer; 00111 typedef itk::SmartPointer<const Self> ConstPointer; 00112 00115 typedef AccuracySOMetricResult ResultType; 00116 00118 itkTypeMacro( AccuracySOMetricMonitor, SetupOptimizationMetricMonitorBase<AccuracySOMetricResult> ); 00119 00120 itkNewMacro( Self ); 00121 00122 protected: 00123 00124 AccuracySOMetricMonitor(); 00125 00126 virtual ~AccuracySOMetricMonitor(); 00127 00128 virtual void InsertEvaluationResults(const ResultType& results); 00129 00130 virtual void CopyAdaptationResults(const ResultIndexType& index, ResultType& results) const; 00131 00132 virtual void EnlistResultsToStatistic(const ResultType& results, StatisticEntry& entry); 00133 00134 virtual void EnlistDictionaryEntries(StatisticDictionary& dictionary); 00135 00136 //The folloing members are secured via m_ResultMutex and should therefore only acessed via 00137 //InsertEvaluationResults() and CopyAdaptationResults() 00139 std::vector<double> m_Errors; 00141 std::vector<double> m_Vars; 00143 std::vector<double> m_MinErrors; 00145 std::vector<double> m_MaxErrors; 00146 00148 std::vector<ResultType::PointErrorListType> m_PointErrors; 00149 00151 std::vector<unsigned long> m_Samplesize; 00153 std::vector<unsigned long> m_Durations; 00154 00155 std::vector<unsigned long> m_UnevaluatedPoints; 00156 00157 00158 private: 00159 AccuracySOMetricMonitor(const Self&); //purposely not implemented 00160 void operator=(const Self&); //purposely not implemented 00161 }; 00162 00163 } // end namespace FREE 00164 00165 #endif 00166 00167 00168
1.5.3 written by Dimitri van Heesch,
© 1997-2000