HOG在ZedBoard上的实现

HOG+SVM算法主要由HOG特征提取、SVM分类、非最大抑制三个模块组成。

HOG特征提取

对于HOG特征的提取,对于一副图像先需要求出该图像的梯度幅值与梯度方向,根据求到的梯度幅值与梯度方向构造梯度方向直方图。在一个检测窗口内将图像进行了分块操作,对于每个块又可进行如下的划分。对于一个16*16的块,若将其划分为4个cell,那么每个cell将包含8*8的像素。


  图1 块的划分

在每个Cell中有独立做梯度方向统计,从而以无符号的梯度方向为横轴的的直方图,梯度方向可取0度到180度,dalal实验表明,在人体目标检测中,在无符号方向角度范围并将其平均分成9份(bins)能取得最好的效果。将这个梯度分布平均分成 9个方向角度(orientation bins),每个方向角度范围都会对应一个直方柱。


4 cell块的梯度方向直方图

对于一个16*16的快,由于它拥有4个8*8的cell,故可以得到4*9=36个bin。一个cell处的点不仅对该cell的直方图有贡献还可能对别的cell处有贡献,由此可把一个块再如下划分:



图5 block内的像素划分

对于一个block内的像素,我们可以将其分为如下的形式,其中1,2,5,6属于cell1、3,4,7,8属于cell2、9,10,13,14属于cell3、11,12,15,16属于cell4。红色处的像素块里的像素只对本身所处的cell的直方图有贡献,银色处的像素块里的像素不仅对自身所在的cell的直方图有贡献还对水平方向相邻的cell的直方图有贡献,蓝色处的像素块里的像素不仅对自身所在的cell的直方图有贡献还对垂直方向相邻的cell的直方图有贡献,黄色处的像素块里的像素除对自身所在的cell的直方图有贡献还对水平、垂直方向相邻的cell的直方图有贡献。由于块与块重叠的方法,采用三线性插值的方法来削弱混叠效应。这种方法的主要思想是每个cell内的像素不仅对cell本身的直方图有贡献还对临近的cell直方图具有影响,这种影响,我们可以以一种加权方式附加上去。三线型插值意味着对(x,y,theta)进行插值操作,也即像素水平方向、垂直方向、梯度方向进行插值运算。三线性插值也意味当前块内的像素点对块内四个cell拥有的直方图的贡献程度,他们影响着自身梯度幅值进行直方图投影时候对各个块的直方图进行投影的贡献程度。下图所示为三插值的示意图:


图6 三插值示意图

同时在构造直方图时,认为在block中不同的像素点梯度值对直方图的贡献是不一样的,各点的贡献依据它们离块中心点的不同距离而定,离中心点越近相应的贡献越大、离中心点越远相应的贡献越小,故对梯度幅值再进行高斯加权。


图7 高斯权值公式

故最终的直方图求取方式如下图所示:



图8 梯度直方图求取公式


猜你喜欢

转载自blog.csdn.net/lvyanming/article/details/46539835