CvEHMM:
typedef struct _CvEHMM
{
int level;//
int num_states;//马尔科夫模型的状态数
float* transP;//状态之间的转移概率矩阵
float** obsProb;//观察概率矩阵
union//根据level来决定
{
CvEHMMState* state;
struct _CvEHMM* ehmm;
} u;
} CvEHMM;
CvImgObsInfo:
typedef struct CvImgObsInfo
{
int obs_x;//水平方向的观察向量
int obs_y;//垂直方向的观察向量
int obs_size;//每个观察向量的长度
float** obs;//存储所观察的向量的矩阵
int* state;//每个观察向量的状态矩阵
int* mix;//?
} CvImgObsInfo;
CvEHMM* cvCreate2DHMM(int *stateNumber,int *numMix,int obsSize);//创建2DHMM
stateNumber:stateNumber[0]用于指定状态的个数,接下来的用于指定HMM状态的个数
numMix:高斯混合成分?
obsSize:观察向量的大小
void cvRelease2DHMM(CvEHMM** hmm);//释放HMM
CvImgObsInfo *cvCreateObsInfo(CvSize numObs,int obsSize);//创建存储观察向量的结构
numObs:水平和垂直的观察向量个数,可以通过宏CV_COUNT_OBS(roi,dctSize,delta,numObs)从已知的图像中计算出来。
roi:为所观察图像的大小
obsSize:每个观察向量的大小
void cvReleaseObsInfo(CvImgObsInfo **obsInfo);
转载于:https://blog.51cto.com/techamazing/683592