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 <vector>
00021 #include "itkDecisionRuleBase.h"
00022
00023 namespace itk{
00024
00029 class ITK_EXPORT MaximumDecisionRule :
00030 public DecisionRuleBase
00031 {
00032 public:
00034 typedef MaximumDecisionRule Self ;
00035 typedef DecisionRuleBase Superclass;
00036 typedef SmartPointer<Self> Pointer;
00037
00039 itkTypeMacro(MaxDecisionRule, DecisionRuleBase);
00040
00042 itkNewMacro(Self) ;
00043
00044 unsigned int Evaluate(std::vector< double > &discriminantScores) ;
00045
00046 protected:
00047 MaximumDecisionRule() {}
00048 virtual ~MaximumDecisionRule() {}
00049 void PrintSelf(std::ostream& os, Indent indent) const ;
00050 } ;
00051
00052 inline unsigned int MaximumDecisionRule::Evaluate(std::vector< double >
00053 &discriminantScores)
00054 {
00055 double max = discriminantScores[0] ;
00056 unsigned int maxIndex = 0 ;
00057 unsigned int i ;
00058 for (i = 1 ; i < discriminantScores.size() ; i++)
00059 {
00060 if (discriminantScores[i] > max)
00061 {
00062 max = discriminantScores[i] ;
00063 maxIndex = i ;
00064 }
00065 }
00066 return maxIndex ;
00067 }
00068
00069 }
00070
00071 #endif
00072
00073
00074
00075
00076
00077
00078