00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __MaximumRatioDecisionRule_h
00018 #define __MaximumRatioDecisionRule_h
00019
00020 #include "itkWin32Header.h"
00021
00022 #include <vector>
00023 #include "vnl/vnl_matrix.h"
00024
00025 #include "itkNumericTraits.h"
00026 #include "itkDecisionRuleBase.h"
00027
00028 namespace itk {
00029
00044 class ITKCommon_EXPORT MaximumRatioDecisionRule :
00045 public DecisionRuleBase
00046 {
00047 public:
00049 typedef MaximumRatioDecisionRule Self ;
00050 typedef DecisionRuleBase Superclass;
00051 typedef SmartPointer<Self> Pointer;
00052
00054 itkTypeMacro(MaximumRatioDecisionRule, DecisionRuleBase);
00055
00057 itkNewMacro(Self) ;
00058
00059 typedef float APrioriValueType ;
00060 typedef std::vector< APrioriValueType > APrioriVectorType ;
00061 typedef APrioriVectorType::size_type APrioriVectorSizeType ;
00062
00063
00065 typedef Superclass::VectorType VectorType;
00066 typedef Superclass::ArrayType ArrayType;
00067
00068
00073 virtual unsigned int Evaluate( const VectorType &discriminantScores) const;
00074
00079 virtual unsigned int Evaluate( const ArrayType &discriminantScores) const;
00080
00081
00083 void SetAPriori(APrioriVectorType& values) ;
00084
00085 protected:
00086 MaximumRatioDecisionRule() ;
00087 virtual ~MaximumRatioDecisionRule() {}
00088
00089 private:
00090 MaximumRatioDecisionRule(const Self&);
00091 void operator=(const Self&);
00092
00094 APrioriVectorSizeType m_NumberOfClasses ;
00095
00097 vnl_matrix< double > m_APrioriRatioMatrix ;
00098 } ;
00099
00100 }
00101 #endif
00102
00103
00104
00105
00106
00107
00108
00109