コード例 #1
0
ファイル: blobtrack.cpp プロジェクト: 93sam/opencv
void CvVSModule::AddParam(const char* name, const char** pAddr)
{
    CvDefParam* pP = NewParam(name);
    const char* p = pAddr?pAddr[0]:NULL;
    pP->pStr = pAddr?(char**)pAddr:&(pP->Str);
    if(p)
    {
        pP->Str = strdup(p);
        pP->pStr[0] = pP->Str;
    }
}
コード例 #2
0
ファイル: vijay_main.c プロジェクト: vijaysoophie/vijay_new
int main(int argc, char** argv) {
    
    int i;
    double t_opt = 0.;
    param_ param, param_0;
    gsl_complex **K, *W, *CW, *dW, *complex_rot; 
    arr_info_ arr_info;
    double *argW, *absW;
    double *rec, *prec;    
    pr_max_ *pr_max;
    double AREA, AREA_0=1000.;
    lattice_point_ **nghb;  

    if(argc!=3){
        printf("Usage: recall/precision threshold, random seed\n");
        exit(1);
    }
    
    /*
     * Param initialization
     */
    
    param.idum = (long *)malloc(sizeof(long));  // pointer to long integer for random number generator
    *param.idum = atoi(argv[2]);				// initialization to random number
    param.thresh = HeaviSide;					// function pointer for threshold
    
    param.T = 2.0;								
    param.T_opt = 1.0;
    param.dt = 0.01;
    param.L = 100;
    param.L_sub = 5;
    param.int_range_rat = 3;
    param.sigma = 0.008;
    param.mu = 15;
    param.Kinh = 0.012;
    param.Kloc = 1.;
    param.d = 0.25;
    param.test_d = 4;
    param.excl_d = 8;
    param.M = 1.;
    param.delta = 5.;
    param.A = 5.;
    param.N_max = 2;
    param.kappa_upp = 0.6;
    param.kappa_low = 0.4;
    param.ecc_upp = 0.6;
    param.ecc_low = 0.4;
    param.kappa_xy = 0.1;
    param.mask_min = 2;
    param.mask_max = 4;
    param.kappa_mask = 0.25;
    param.pr_range = atoi(argv[1]);    
    param.clutter_thresh = 0.15;
    param.excl_thresh = 1/2;
    param.temp = 0.005;
    param.mut = 0.01;        
    param.gnuplot = 1;			// 0 for screen and 1 for print to file
    
    /****
        PIPE TO GNUPLOT
    ***/
    FILE *pipe=popen("gnuplot -persist","w");
    fprintf(pipe,"set size square\n");
    fprintf(pipe,"unset key\n");
    if(param.gnuplot == 1){
        fprintf(pipe,"set term post enhanced color \"Helvetica\" 20\n");
    }
    fflush(pipe);
        
    /*
     * Specify the precision/recall range
     * and initiate pr_max.
     */  
    
    rec =(double *)malloc(param.pr_range*sizeof(double));
    prec =(double *)malloc(param.pr_range*sizeof(double)); 
    param.pr_thresh =(double *)malloc(param.pr_range*sizeof(double));
    for(i=0;i<param.pr_range;i++)
        param.pr_thresh[i] = (double) i/param.pr_range;    
    pr_max = (pr_max_ *)malloc(param.pr_range*sizeof(pr_max_));    
    
    /*
     * Need to define param_0.
     */
    
    param_0 = param;     
    
    /*
     * Kernel Initialization
     */
    
    nghb = NghbInit(param, &arr_info, param.int_range_rat/sqrt(2*param.sigma));       
    K = KernelInit(param);  
    
    /*
     * Initializing the rW, pW, eW size
     * variable.
     */ 
    
    W=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L); 
    CW=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L);
    dW=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L);     
    complex_rot=(gsl_complex *)malloc(sizeof(gsl_complex)*param.L*param.L);
    argW=(double *)malloc(sizeof(double)*param.L*param.L);
    absW=(double *)malloc(sizeof(double)*param.L*param.L);    
    
    /*
     * Optimization loop
     */           
    
    while(t_opt < param.T_opt){
        
        t_opt += OneSim(param, pipe, arr_info, nghb, K, W, CW, dW, complex_rot, 
                argW, absW, rec, prec, pr_max);
    
        /*
         * Do we keep or reject the current choice 
         * of parameters?
         */    
    
        AREA = CalcArea(param, pr_max);
        if( 1./(1.+exp((AREA - AREA_0)/param.temp)) > ran1(param.idum) ){
            param_0 = param;
            AREA_0 = AREA;
        }
            
        param = NewParam(param_0);
    
        /*
         * Here we print out the current choice of
         * parameters
         */
        
        printf("%e %e %e %e %e %e %e\n", t_opt, param_0.sigma, param_0.mu, 
                param_0.Kinh, param_0.delta, param_0.A, AREA_0);
        fflush(stdout);
    
    } //End optimization loop;
    
    free(param.idum);    
    free(W);
    free(CW);
    free(dW);
    free(absW);
    free(argW);
    free(rec);
    free(prec);
    free(param.pr_thresh);
    free(pr_max);        
    free2d((void **) nghb, param.L*param.L);
    free2d((void **) K, 4*param.L+1);
    
    pclose(pipe);
    
    return (EXIT_SUCCESS);
}
コード例 #3
0
ファイル: blobtrack.cpp プロジェクト: 93sam/opencv
void CvVSModule::AddParam(const char* name)
{
    CvDefParam* p = NewParam(name);
    p->pDouble = &p->Double;
}
コード例 #4
0
ファイル: blobtrack.cpp プロジェクト: 93sam/opencv
void CvVSModule::AddParam(const char* name, int* pAddr)
{
    NewParam(name)->pInt=pAddr;
}
コード例 #5
0
ファイル: blobtrack.cpp プロジェクト: 93sam/opencv
void CvVSModule::AddParam(const char* name, float* pAddr)
{
    NewParam(name)->pFloat=pAddr;
}
コード例 #6
0
ファイル: blobtrack.cpp プロジェクト: 93sam/opencv
void CvVSModule::AddParam(const char* name, double* pAddr)
{
    NewParam(name)->pDouble = pAddr;
}