资源简介

粒子滤波目标跟踪算法,可以直接编译运行,基于颜色直方图特征

资源截图

代码片段和文件信息

    // TwoLevel.cpp : 定义控制台应用程序的入口点。  
    //  
      
    /************************************************************************/  
    /*参考文献real-time Multiple objects Tracking with Occlusion Handling in Dynamic Scenes  */  
    /************************************************************************/  
      
    // #include “stdafx.h“  
    #include   
    #include   
    #include   
    #include   
    # include   
    #include   
    using namespace std;  
      
      
    #define B(imagexy) ((uchar*)(image->imageData + image->widthStep*(y)))[(x)*3]       //B  
    #define G(imagexy) ((uchar*)(image->imageData + image->widthStep*(y)))[(x)*3+1] //G  
    #define R(imagexy) ((uchar*)(image->imageData + image->widthStep*(y)))[(x)*3+2] //R  
    #define S(imagexy) ((uchar*)(image->imageData + image->widthStep*(y)))[(x)]   
    #define  Num 10  //帧差的间隔  
    #define  T 40    //Tf  
    #define Re 30     //  
    #define ai 0.08   //学习率  
      
    #define CONTOUR_MAX_AREA 10000  
    #define CONTOUR_MIN_AREA 50  
      
    # define R_BIN      8  /* 红色分量的直方图条数 */  
    # define G_BIN      8  /* 绿色分量的直方图条数 */  
    # define B_BIN      8  /* 兰色分量的直方图条数 */   
      
    # define R_SHIFT    5  /* 与上述直方图条数对应 */  
    # define G_SHIFT    5  /* 的R、G、B分量左移位数 */  
    # define B_SHIFT    5  /* log2( 256/8 )为移动位数 */  
      
    /* 
    采用Park and Miller方法产生[01]之间均匀分布的伪随机数 
    算法详细描述见: 
    [1] NUMERICAL RECIPES IN C: THE ART OF SCIENTIFIC COMPUTING. 
    Cambridge University Press. 1992. pp.278-279. 
    [2] Park S.K. and Miller K.W. 1988 Communications of the ACM  
    vol. 31 pp. 1192–1201. 
    */  
      
    #define IA 16807  
    #define IM 2147483647  
    #define AM (1.0/IM)  
    #define IQ 127773  
    #define IR 2836  
    #define MASK 123459876  
      
      
    typedef struct __SpaceState {  /* 状态空间变量 */  
        int xt;               /* x坐标位置 */  
        int yt;               /* x坐标位置 */  
        float v_xt;           /* x方向运动速度 */  
        float v_yt;           /* y方向运动速度 */  
        int Hxt;              /* x方向半窗宽 */  
        int Hyt;              /* y方向半窗宽 */  
        float at_dot;         /* 尺度变换速度 */  
    } SPACESTATE;  
      
      
    bool pause=false;//是否暂停  
    bool track = false;//是否跟踪  
    IplImage *curframe=NULL;   
    IplImage *pBackImg=NULL;  
    IplImage *pFrontImg=NULL;  
    IplImage *pTrackImg =NULL;  
    unsigned char * img;//把iplimg改到char*  便于计算  
    int xinyin;//跟踪时输入的中心点  
    int xoutyout;//跟踪时得到的输出中心点  
    int WidHei;//图像的大小  
    int WidInHeiIn;//输入的半宽与半高  
    int WidOutHeiOut;//输出的半宽与半高  
      
    long ran_seed = 802163120; /* 随机数种子,为全局变量,设置缺省值 */  
      
    float DELTA_T = (float)0.05;    /* 帧频,可以为30,25,15,10等 */  
    int POSITION_DISTURB = 15;      /* 位置扰动幅度   */  
    float VELOCITY_DISTURB = 40.0;  /* 速度扰动幅值   */  
    float SCALE_DISTURB = 0.0;      /* 窗宽高扰动幅度 */  
    float SCALE_CHANGE_D = (float)0.001;  

评论

共有 条评论