毕业课题之----HOG+SVM相关函数的解释

来源:互联网 发布:android涂鸦源码 编辑:程序博客网 时间:2024/05/16 13:49
A
OPENCV  HOG特征向量个数计算方法:
下面参照网上方法说下怎么计算的每个向量的特征维数,就是一开始就声明的 
样本矩阵  CvMat *data_mat = cvCreateMat( nImgNum, 1764, CV_32FC1 ); 
中这个1764 是如何计算出来的。


1. 先确定 你 要训练 以及 检测 的图片 的 大小  IplImage* trainImg=cvCreateImage(cvSize(64,64),8,3);      ok  这里是  64 x 64
 2.  确定 HOGDescriptor *hog=new HOGDescriptor(cvSize(64,64),cvSize (16,16),cvSize(8,8),cvSize(8,8),9); 
     第一个 窗口 大小 设置 为 上面的图片大小 64 x 64 。 
     第二个 块大小 是 16 x 16 的话 [ 额  这个肿么确定?与前面的 窗口大小有关系 么? 这是opencv中默认的大小]
    第三个 块block的步进 stride 8 x 8
    第四个是 胞元cell大小 8 x 8
    第五个是 cell的直方图的 bin = 9 [ 不懂 +_+]
    每个 cell 有 9 个向量
    每个block 有 (16 / 8 ) * (16 / 8) = 2 * 2 = 4 个 cell, 那么现在就有 4 * 9 = 36 个向量
    每个 窗口 有多少个 block 呢?利用公式   (window_size - block_size)/block_stride + 1  对两个方向进行计算:
       ( 64 - 16) / 8 + 1 = 7
         两个方向  7 * 7 = 49
      所以共有  49* 36 = 1764


B 
  
hog->compute(trainTempImg, descriptors,Size(1,1), Size(0,0)); //Hog特征计算  
 cvmSet(data_mat,i,n,*iter);//存储HOG特征 


C
param = CvSVMParams( CvSVM::C_SVC, CvSVM::RBF, 10.0, 0.09, 1.0, 10.0, 0.5, 1.0, NULL, criteria );      
/*     
    SVM种类:CvSVM::C_SVC     
    Kernel的种类:CvSVM::RBF     
    degree:10.0(此次不使用)     
    gamma:8.0     
    coef0:1.0(此次不使用)     
    C:10.0     
    nu:0.5(此次不使用)     
    p:0.1(此次不使用)     

    然后对训练数据正规化处理,并放在CvMat型的数组里。



0 0
原创粉丝点击