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

📄 globalfunc.h

📁 这是一个实现Adaboost算法的程序
💻 H
字号:
// GlobalFunc.h: interface for the CGlobalFunc class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GLOBALFUNC_H__36EB379B_FAB8_46D9_B3E4_797C4CFE039B__INCLUDED_)
#define AFX_GLOBALFUNC_H__36EB379B_FAB8_46D9_B3E4_797C4CFE039B__INCLUDED_

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

#define NORMALIZED_X 64
#define NORMALIZED_Y 64

#define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4)

//feature extraction method
#define FE_TEXTURE        1
#define FE_SHAPE          2
#define FE_TEXTURE_SHAPE  3
#define FE_MESH           4
#define FE_WAVELET        6
#define FE_ORIGINIMAGE    5
#define FE_AUTOCOV        7
#define FE_DEFAULT			FE_WAVELET	//default feature extraction method

#define TargetDIM		64	//default feature dimension

#define FR_LDA			1
#define FR_DEFAULT		FR_LDA

#define EPS				0.0000000001

#define	LARGER(x,y) (((x)>(y))?(x):(y))
#define	SMALLER(x,y) (((x)<(y))?(x):(y))

int		Convert2Stride(int	nWidth);
void	OrderValues(double* ev, long* order, long M);

BOOL	ResizeImage(BYTE* pSrcImg, int nSrcWidth, int nSrcHeight, BYTE* pDstImg, int nDstWidth, int nDstHeight);
BOOL	CropSubImage(BYTE* pbyteSrcImgData, int nSrcImgWidth, int nSrcImgHeight, BYTE* pDstImgData, RECT subRect);

void	DrawPlus(CDC* pDC, CPoint pnt, int size, COLORREF col);
BOOL	RGB2YIQ(BYTE R, BYTE G, BYTE B, BYTE & Y, double & I, double & Q);
BOOL	RGB2Fai(BYTE R, BYTE G, BYTE B, int& Fai);

double	NormalVector2UnitLength(double* vector, long N);
double	NormalVector2ZeroMeanUnitVar(double* vector, long N);
double	InnerProduct(double* pv1,double* pv2, long N);
double	PointDistance(CPoint p1, CPoint p2);
double	EuclidDistance(double* pv1, double* pv2, long N);
double	BlockDistance(double* pv1, double* pv2, long n);
double	MahalanobisDistance(double* pv1, double* pv2, double* sigma, int nDim);
double	VectorSimilarity(double* pv1, double* pv2, int nDim);

void	CalEgvalue(double *matrix,long n,double *eigenvalue,double *c);
long	CalEgvector(double *matrix,long n,double *eigenvalue,double *c,double eps);

template <class T>
T**	New2DPointer(int n1D, int n2D)
{
	T**		pp;
	typedef		T*	T_P;
	int		i, j;
	if(n1D <= 0 || n2D <= 0)
		return FALSE;

	pp = new T_P[n1D];
	if(!pp)
		return NULL;
	for(i=0; i<n1D; i++)
	{
		pp[i] = new T[n2D];
		if(!pp[i])
		{
			for(j=0; j<i; j++)
			{
				delete	pp[j];
			}
			delete	pp;
			return NULL;
		}
	}
	return pp;
}

template <class T>
void	Delete2DPointer(T **pp, int n1D)
{
	int		i;
	if(pp == NULL)
		return;
	for(i=0; i<n1D; i++)
	{
		if(pp[i])
			delete pp[i];
	}
	delete	pp;
}

class CGlobalFunc  
{
public:

public:

	CGlobalFunc();
	virtual ~CGlobalFunc();

	static void	PseudoInverseMatrix(double *pA, double* pA_PT, long n, long m);
	static BOOL	ludcmp(double *a, int n, int *indx, double *d);
	static void	lubksb(double *a, int n, int *indx, double b[]);
	static BOOL	MatrixComputReverse(double *a, double *y,int n);
	static BOOL	MatrixMultiply(double* pScr1, double* pScr2, double* pDst, int m, int n, int l, int p);
	static void	ScaleVector(double * src,double * dest, int length, double value);
	static void	SubVector(double * src1,double * src2, double * dest, int length);

};

#endif // !defined(AFX_GLOBALFUNC_H__36EB379B_FAB8_46D9_B3E4_797C4CFE039B__INCLUDED_)

⌨️ 快捷键说明

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