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: freImageDifferenceSOMetricMonitor.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 __freImageDifferenceSOMetricMonitor_h 00023 #define __freImageDifferenceSOMetricMonitor_h 00024 00025 #include "freSetupOptimizationMetricMonitorBase.h" 00026 00027 namespace FREE 00028 { 00037 class ImageDifferenceSOMetricResult: 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 SetImageError(const double& error) {m_ImageError = error;}; 00047 void SetSamplesize(const unsigned long& size) {m_Samplesize = size;}; 00048 void SetDuration(const unsigned long& dur) {m_Duration = dur;}; 00049 00050 const double& GetError() const { return m_Error;}; 00051 const double& GetVariance() const { return m_Var;}; 00052 const double& GetMinError() const { return m_MinError;}; 00053 const double& GetMaxError() const { return m_MaxError;}; 00054 const double& GetImageError() const { return m_ImageError;}; 00055 const unsigned long& GetSamplesize() const { return m_Samplesize;}; 00056 const unsigned long& GetDuration() const { return m_Duration;}; 00057 00058 double& GetError() { return m_Error;}; 00059 double& GetVariance() { return m_Var;}; 00060 double& GetMinError() { return m_MinError;}; 00061 double& GetMaxError() { return m_MaxError;}; 00062 double& GetImageError() { return m_ImageError;}; 00063 unsigned long& GetSamplesize() { return m_Samplesize;}; 00064 unsigned long& GetDuration() { return m_Duration;}; 00065 00066 virtual void Reset(); 00067 00068 ImageDifferenceSOMetricResult(); 00069 protected: 00071 double m_Error; 00073 double m_Var; 00075 double m_MinError; 00077 double m_MaxError; 00079 double m_ImageError; 00080 00082 unsigned long m_Samplesize; 00084 unsigned long m_Duration; 00085 }; 00086 00099 class ITK_EXPORT ImageDifferenceSOMetricMonitor : 00100 public SetupOptimizationMetricMonitorBase<ImageDifferenceSOMetricResult> 00101 { 00102 public: 00104 typedef ImageDifferenceSOMetricMonitor Self; 00105 typedef SetupOptimizationMetricMonitorBase<ImageDifferenceSOMetricResult> Superclass; 00106 typedef itk::SmartPointer<Self> Pointer; 00107 typedef itk::SmartPointer<const Self> ConstPointer; 00108 00109 //Class containing the results of one adaptation evaluation 00110 //depends on the monitored metric and therefore a template. 00111 typedef ImageDifferenceSOMetricResult ResultType; 00112 00114 itkTypeMacro( ImageDifferenceSOMetricMonitor, SetupOptimizationMetricMonitorBase<ImageDifferenceSOMetricResult> ); 00115 00116 itkNewMacro( Self ); 00117 00118 protected: 00119 00120 ImageDifferenceSOMetricMonitor(); 00121 00122 virtual ~ImageDifferenceSOMetricMonitor(); 00123 00124 virtual void InsertEvaluationResults(const ResultType& results); 00125 00126 virtual void CopyAdaptationResults(const ResultIndexType& index, ResultType& results) const; 00127 00128 virtual void EnlistResultsToStatistic(const ResultType& results, StatisticEntry& entry); 00129 00130 virtual void EnlistDictionaryEntries(StatisticDictionary& dictionary); 00131 00132 //The folloing members are secured via m_ResultMutex and should therefore only acessed via 00133 //InsertEvaluationResults() and CopyAdaptationResults() 00135 std::vector<double> m_Errors; 00137 std::vector<double> m_Vars; 00139 std::vector<double> m_MinErrors; 00141 std::vector<double> m_MaxErrors; 00143 std::vector<double> m_ImageErrors; 00144 00146 std::vector<unsigned long> m_Samplesize; 00148 std::vector<unsigned long> m_Durations; 00149 00150 private: 00151 ImageDifferenceSOMetricMonitor(const Self&); //purposely not implemented 00152 void operator=(const Self&); //purposely not implemented 00153 }; 00154 00155 } // end namespace FREE 00156 00157 #endif 00158 00159 00160
1.5.3 written by Dimitri van Heesch,
© 1997-2000