Hog是一种 局部特征,由Dalal和Triggs在文章[1]中提出,并使用在行人检测中.

步骤


  1. 图像灰度化
  2. gamma矫正(影响不大可省略, 即)
  3. 将图像划分成小的cell(如6x6)单元,统计cell的梯度方向直方图
  4. 基于cell组成block,相邻的block之间的cell可以有重叠,将block内所有cell的直方图合并在一起,并进行归一化,得到局部block的特征(最终的特征维数为:(block的个数)X(block内的cell个数)X(方向bin的大小


实现细节


  • 梯度计算
    1. 求梯度前不要进行模糊操作,如Gaussian、Median等,其会严重影响性能
    2. 求梯度模板越简单越好,文章中使用[-1, 0, 1]效果最好,即:


  • cell梯度方向直方图统计
    使用三次插值,即角度、X、Y方向的插值效果最好
    1. 其角度方向插值
      hog_1
      如上图,85度其有1/4在70bin中,3/4在90bin中,且采用循环模式,即0度有1/2在10bin中,1/2在170bin中
    2. X,Y方向的插值
      hog_2
      上图中黑色cell内的像素点对其上下左右4个cell都有贡献, 注意边缘处cell的值需要进行补偿

  • block的划分
    hog_3
    1. (左图)每个block由4个cell组成,一个block特征由4个cell直方图组成(block的维数比cell少1),并归一化
    2. (右图)每个cell使用不同block的模值归一化,生成4个直方图合并block的特征(block的维数与cell相等

  • block内直方图的归一化
    1. L1-norm
    2. L1-sqrt
    3. L2-norm
    4. L2-Hys(效果最好)
      先进行L2-norm操作,然后执行, th一般设为0.2

References


  1. Histograms of Oriented Gradients for Human Detection