00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkMaximumDecisionRule_h
00018 #define __itkMaximumDecisionRule_h
00019
00020 #include "itkWin32Header.h"
00021
00022 #include <vector>
00023 #include "itkDecisionRuleBase.h"
00024
00025 namespace itk{
00026
00032 class ITKCommon_EXPORT MaximumDecisionRule :
00033 public DecisionRuleBase
00034 {
00035 public:
00037 typedef MaximumDecisionRule Self ;
00038 typedef DecisionRuleBase Superclass;
00039 typedef SmartPointer<Self> Pointer;
00040 typedef SmartPointer<const Self> ConstPointer;
00041
00043 itkTypeMacro(MaximumDecisionRule, DecisionRuleBase);
00044
00046 itkNewMacro(Self) ;
00047
00048 unsigned int Evaluate(std::vector< double > &discriminantScores) ;
00049
00050 protected:
00051 MaximumDecisionRule() {}
00052 virtual ~MaximumDecisionRule() {}
00053 void PrintSelf(std::ostream& os, Indent indent) const ;
00054 } ;
00055
00056 inline unsigned int MaximumDecisionRule::Evaluate(std::vector< double >
00057 &discriminantScores)
00058 {
00059 double max = discriminantScores[0] ;
00060 unsigned int maxIndex = 0 ;
00061 unsigned int i ;
00062 for (i = 1 ; i < discriminantScores.size() ; i++)
00063 {
00064 if (discriminantScores[i] > max)
00065 {
00066 max = discriminantScores[i] ;
00067 maxIndex = i ;
00068 }
00069 }
00070 return maxIndex ;
00071 }
00072
00073 }
00074
00075 #endif
00076
00077
00078
00079
00080
00081
00082