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);