【目标检测】HOG特征学习记录

版权声明:本文为博主原创文章,未经作者允许请勿转载。 https://blog.csdn.net/heiheiya https://blog.csdn.net/heiheiya/article/details/83543966

HOG特征即方向梯度直方图(Histgram of Oriented,HOG),最初是用来检测行人的特征描述子,现在也广泛用于计算机视觉和图像处理中进行物体检测。

通过计算和统计图像局部区域的梯度方向直方图来构成特征。

我看了作者在CVPR发表的论文《Histograms of Oriented Gradients for Human Detection》,里面具体的细节比较少,没有弄明白具体是怎么回事,直到看了作者的博士论文《Finding People in Images and Videos》才搞清楚具体的细节,这里就简单记录一下其中的要点。

图像的梯度主要存在于物体的边缘,而局部目标和形状能够被梯度或边缘的方向密度分布很好地描述。

先放一张HOG特征检测的流程图。

一、图像预处理

因为在HOG特征中,颜色并不起什么作用,所以首先将彩色图像灰度化。

为了减少光照的影响,需要将图像进行规范化,能有效降低图像局部的阴影和光照变化。

通常用Gamma公式对图像进行规范化:

二、计算梯度

图像的梯度分为水平方向的梯度和垂直方向的梯度,再以此梯度计算每个像素的梯度幅值和梯度方向。

使用的梯度算子是:

  • 水平边缘算子:[-1, 0, 1];
  • 垂直边缘算子:[-1, 0, 1]T。

图像像素点(x,y)水平方向梯度和垂直方向梯度分别是:

进而可以求出该像素点的梯度幅值和梯度方向:

当然,作者也实验了更复杂的梯度算子,但结果表明,在行人检测中,越简单的算子效果越好。

三、构建cell梯度方向直方图

作者将图像分成若干个cell,cell有矩形,圆形,和圆环。作者实验发现矩形cell和圆形cell的效果差不多,圆环cell的效果最差。

这里以矩形cell为例,每个cell 6x6个像素。

梯度分为有符号的梯度0-360,和无符号的梯度0-180。作者在行人检测中使用的是无符号的梯度。

将180度等分成9个bin,用这9个bin来统计6x6像素的梯度信息。对cell内的每个像素用梯度方向直方图进行加权投票,权重的梯度的幅值。在实际实现中加权采用三线性插值的方法,即将当前像素的梯度方向大小,像素在cell中的x坐标与y坐标这三个值来作为插值权重,而被用来插入的值作为像素的梯度幅值。

四、构建block归一化梯度直方图

由于光照等因素的影响,使得cell内的梯度幅值的变化范围非常大,因此作者对梯度做了归一化。

采用的方法是将cell组合成更大的block,将一个block内所有的cell的特征向量串联起来得到该block的HOG特征。

作者将3x3个cell组成一个block,所以一个block的尺寸是18x18像素。

block的构建采用滑窗的形式,设定步长在整个图像上进行滑动。根据设定的步长不同,block和block之间可能有重叠的部分,这样能使得同一个cell的不同归一化结果对最后的HOG向量都有贡献。

借用网络上的一幅图来表示(如有侵权,请联系删除):

Block & normalization][6]![è¿éåå¾çæè¿°

一个cell有9个bin,所以一个block的特征描述是9*9=81维。

作者对block采用的是L2-Hys的规范化方法。

L2-Hys分为两步:

  1. L2-norm:
  2. 对1的结果进行截断(v-0.2v)

五、生成HOG特征描述向量

将图像上的每一个block进行正规化之后,将所有的描述子收集起来就是整个图像的特征。

猜你喜欢

转载自blog.csdn.net/heiheiya/article/details/83543966