aihot  2017-04-27 23:51:15  OpenCV |   查看评论   
  
  •     featuresWeight = vector<vector<float>>(_numFeature, vector<float>());  
  •       
  •     //numRect是每个特征的矩形框个数还是论文中说的随机测量矩阵中的s?还有兼备两种功能?  
  •     //论文中说s取2或者3时,矩阵就满足Johnson-Lindenstrauss推论。  
  •     int numRect;  
  •     Rect rectTemp;  
  •     float weightTemp;  
  •         
  •     for (int i=0; i<_numFeature; i++)  
  •     {  
  •         //如何生成服从某个概率分布的随机数(或者说 sample)的问题。  
  •         //比如,你想要从一个服从正态分布的随机变量得到 100 个样本,那么肯定抽到接近其均值的样本的  
  •         //概率要大许多,从而导致抽到的样本很多是集中在那附近的。  
  •         //rng.uniform()返回一个从[ 1,2)范围均匀采样的随机数,即在[ 1,2)内服从均匀分布(取不同值概率相同)  
  •         //那么下面的功能就是得到[2,4)范围的随机数,然后用cvFloor返回不大于参数的最大整数值,那要么是2,要么是3。  
  •         numRect = cvFloor(rng.uniform((double)featureMinNumRect, (double)featureMaxNumRect));  
  •           
  •         //int c = 1;  
  •         for (int j=0; j<numRect; j++)  
  •         {  
  •             //我在一个box中随机生成一个矩形框,那和你这个box的x和y坐标就无关了,但我必须保证我选择  
  •             //的这个矩形框不会超出你这个box的范围啊,是吧  
  •             //但这里的3和下面的2是啥意思呢?我就不懂了,个人理解是为了避免这个矩形框太靠近box的边缘了  
  •             //要离边缘最小2个像素,不知道这样理解对不对,恳请指导  
  •             rectTemp.x = cvFloor(rng.uniform(0.0, (double)(_objectBox.width - 3)));  
  •             rectTemp.y = cvFloor(rng.uniform(0.0, (double)(_objectBox.height - 3)));  
  •             //cvCeil 返回不小于参数的最小整数值  
  •             rectTemp.width = cvCeil(rng.uniform(0.0, (double)(_objectBox.width - rectTemp.x - 2)));  
  •             rectTemp.height = cvCeil(rng.uniform(0.0, (double)(_objectBox.height - rectTemp.y - 2)));  
  •             //保存得到的特征模板。注意哦,这里的矩形框是相对于box的相对位置哦,不是针对整幅图像的哦  
  •             features[i].push_back(rectTemp);  
  •               
  •             //weightTemp = (float)pow(-1.0, c);
  •  

    除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自压缩跟踪Compressive Tracking源码理解

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