⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 boosting.h

📁 一种Adboost算法的改进算法
💻 H
字号:
//////////////////////////////////////////////////////////////////////
//
// Boosting.h: interface for the Boosting class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BOOSTING_H__93E1F445_D44A_41A9_8669_927678532165__INCLUDED_)
#define AFX_BOOSTING_H__93E1F445_D44A_41A9_8669_927678532165__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "define.h"

#define BINNUM 3000
#define MaxIteration 1000

typedef struct{
	POINT imageSize;
	POINT pos;
	POINT size;
	int   type;
}FeatureInfo;

class Boosting
{
public:
	Boosting(DWORD, DWORD);
	virtual ~Boosting();
    void   AdaBoost(int);
	void   TrainCascade();
	// void Adaboost(int IterNum,int *WinArray,int *WinRol,int *WinCol,int count);
    void Init(CString szPosName, CString szNegName);
	FeatureInfo *subWinInfo;

private:
    long PositiveNum;
    long NegativeNum;
    long TotalNegativeNum;
    long TotalSampleNum;

	int DiscretThreshold [MaxIteration];
	
	double FinalThreshold;
	int    WeakLearnerNum;
	int    Sign[MaxIteration];
	int    SelectedFea[MaxIteration];
	double apha[MaxIteration];		
	double Accuracy[MaxIteration];
	double m_m_Error[MaxIteration];		
   // int BinNum;
	double *BinMin;
	double *BinWidth;	
	double *Weight;
	unsigned char *Label;
	WORD   **FeaValue;
	unsigned char *pSampleFlag;
	long curNegNum;
	double *VotedValue;	
	int    usedFeaCount;

    void   WriteIterationResult(int i, double WeightedError,
				double Recall1, double FalseAlarm1,
				double Recall2, double FalseAlarm2,int);

	void   Discretization(float * RawValue, int FeatureNo);
    double GetRawFeaValue(int FeaNo, int BinNo);
	void   UpdateHistClassify(double *MinCriterion, int *SelectedFeaNo, int *MinThreshold, int *MinSign);
    int    GetFeatureValue(int DataNo, int FeaNo);
	int    SimpleDiscretClassify(int DataNo, int iteration);
	int    StrongDiscretClassify(int DataNo, double tempThreshold);
	void   CheckAccuracy(double *Accuracy, double *FalseAlarm, double tempThreshold);
	void   CheckAccuracyWithVotedValue(double *Accuracy, double tempThreshold);
	void   CheckFalseAlarmWithVotedValue(double *FalseAlarm, double tempThreshold);
	void   AdjustThrehold(double AccuracyWanted, double FalseAlarmWanted,
					      double *PresentAccuracy0, double *PresentFalseAlarm0,
						  double *PresentAccuracy, double *PresentFalseAlarm,
						  double *ThresholdWanted);

	void   WriteModelResult(CString ResultFile, int nId, double, int,int);
	void   GetAllSubWinInfo(void);
	void   markSampleFlag(double FinalThreshold, unsigned char* &pSampleFlag);
};

#endif // !defined(AFX_BOOSTING_H__93E1F445_D44A_41A9_8669_927678532165__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -