HOG特征提取算法原理

1.算法基本流程

  在一幅图像中,方向梯度直方图(Histogram of Oriented Gradient, HOG)可以很好地描述局部目标区域的特征,是一种经常使用的特征提取方法,HOG+SVM在行人检测中有着优异的效果。在HOG中,对一幅图像进行了以下划分:
图像(image)->检测窗口(win)->图像块(block)->细胞单元(cells)
流程图以下:
这里写图片描述web

2.计算图像梯度

  对数字图像而言,每一个像素水平和垂直方向的梯度,能够经过下图的kernels计算:
  这里写图片描述
  便可写为:
  这里写图片描述
  每一个像素梯度大小和方向可表示为:
  这里写图片描述
  其中,I(x,y)是图像在点(x,y)处的像素值。
  梯度图像移除了没必要要的信息,可是高亮了轮廓线。在每个像素上,梯度都有大小和方向。对于彩色图像,3个通道的梯度都将被计算出来,然而图像素的梯度值为3个通道中最大的梯度值,角度也是最大角度。算法

3.HOG的win ,block ,cell

这里写图片描述
这里写图片描述
这里写图片描述
  对于图像中检测窗口的尺寸为64×64,假设给出块的尺寸为16×16,块步长为(8,8),通过计算:检测窗口中共滑动7×7=49个block。在一个块中选择细胞单元再也不滑动,给出细胞单元的尺寸为(8,8),因此一个块中一共有2×2=4个cell。 svg

4.HOG构建方向梯度直方图与特征向量维数

  HOG构建方向梯度直方图在cell中完成,bins的个数决定了方向的范围。假设采用9个bin的直方图来统计这8×8个像素cell的梯度信息,即将cell的梯度方向0~180度(或0~360度,考虑了正负,signed)分红9个方向块。以下图所示:若是这个像素的梯度方向是20-40度,直方图第2个bin即的计数就加1,这样,对cell内每一个像素用梯度方向在直方图中进行加权投影,将其映射到对应的角度范围块内,就能够获得这个cell的梯度方向直方图了,就是该cell对应的9维特征向量(由于有9个bin)。这边的加权投影所用的权值为当前点的梯度幅值。例如说:某个像素的梯度方向是20-40度,其梯度幅值是4,那么直方图第2个bin的计数就不是加1了,而是加4。这样就获得关于梯度方向的一个加权直方图。以前提到过,cell的中方向范围的个数由bins来决定,仍是以9为例:因此,一个cell中的向量为9个。以上面的例子,在一个尺寸为64×64的检测窗中,描述子的维数就应该为:9×4×49=1764 。其中4为一个block中cell的个数,49为一个win中block的个数。
  这里写图片描述xml