aihot  2017-04-27 20:10:03  OpenCV |   查看评论   
  •   features = vector<vector<Feature> >(scales.size(), vector<Feature> (totalFeatures));  
  •    
  •   //opencv中自带的一个随机数发生器的类RNG  
  •   RNG& rng = theRNG();  
  •     
  •   float x1f,x2f,y1f,y2f;  
  •   int x1, x2, y1, y2;  
  •   //集合分类器基于n个基本分类器,每个分类器都是基于一个pixel comparisons(像素比较集)的;  
  •   //pixel comparisons的产生方法:先用一个归一化的patch去离散化像素空间,产生所有可能的垂直和水平的pixel comparisons  
  •   //然后我们把这些pixel comparisons随机分配给n个分类器,每个分类器得到完全不同的pixel comparisons(特征集合),  
  •   //这样,所有分类器的特征组统一起来就可以覆盖整个patch了  
  •     
  •   //用随机数去填充每一个尺度扫描窗口的特征  
  •   for (int i=0;i<totalFeatures;i++){  
  •       x1f = (float)rng;  
  •       y1f = (float)rng;  
  •       x2f = (float)rng;  
  •       y2f = (float)rng;  
  •       for (int s=0; s<scales.size(); s++){  
  •           x1 = x1f * scales[s].width;  
  •           y1 = y1f * scales[s].height;  
  •           x2 = x2f * scales[s].width;  
  •           y2 = y2f * scales[s].height;  
  •           //第s种尺度的第i个特征  两个随机分配的像素点坐标  
  •           features[s][i] = Feature(x1, y1, x2, y2);  
  •       }  
  •   }  
  •   //Thresholds  
  •   thrN = 0.5 * nstructs;  
  •   
  •   //Initialize Posteriors  初始化后验概率  
  •   //后验概率指每一个分类器对传入的图像片进行像素对比,每一个像素对比得到0或者1,所有的特征13个comparison对比,  
  •   //连成一个13位的二进制代码x,然后索引到一个记录了后验概率的数组P(y|x),y为0或者1(二分类),也就是出现x的  
  •   //基础上,该图像片为y的概率是多少对n个基本分类器的后验概率做平均,大于0.5则判定其含有目标  
  •   for (int i = 0; i<nstructs; i++) {  
  •   //每一个每类器维护一个后验概率的分布,这个分布有2^d个条目(entries),这里d是像素比较pixel comparisons  
  •   //的个数,这里是structSize,即13个comparison,所以会产生2^13即8,192个可能的code,每一个code对应一个后验概率  
  •   //后验概率P(y|x)= #p/(#p+#n) ,#p和#n分别是正和负图像片的数目,也就是下面的pCounter和nCounter  
  •  

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自TLD(Tracking-Learning-Detection)学习与源码理解之(七)

    留言与评论(共有 0 条评论)
       
    验证码:
    [lianlun]1[/lianlun]