HOG (Histograms of Oriented Gradients)
Hog是一种 局部特征,由Dalal和Triggs在文章[1]中提出,并使用在行人检测中.
步骤
- 图像灰度化
- gamma矫正(影响不大可省略, 即)
- 将图像划分成小的cell(如6x6)单元,统计cell的梯度方向直方图
- 基于cell组成block,相邻的block之间的cell可以有重叠,将block内所有cell的直方图合并在一起,并进行归一化,得到局部block的特征(
最终的特征维数为:(block的个数)X(block内的cell个数)X(方向bin的大小
)
实现细节
- 梯度计算
- 求梯度前不要进行模糊操作,
如Gaussian、Median等,其会严重影响性能
- 求梯度模板越简单越好,文章中使用
[-1, 0, 1]
效果最好,即:
- 求梯度前不要进行模糊操作,
- cell梯度方向直方图统计
使用三次插值,即角度、X、Y方向的插值
效果最好
- 其角度方向插值
如上图,85度其有1/4在70bin中,3/4在90bin中,且采用循环模式,即0度有1/2在10bin中,1/2在170bin中
- X,Y方向的插值
上图中黑色cell内的像素点对其上下左右4个cell都有贡献,注意边缘处cell的值需要进行补偿
- 其角度方向插值
- block的划分
- (左图)每个block由4个cell组成,一个block特征由4个cell直方图组成(
block的维数比cell少1
),并归一化 - (右图)每个cell使用不同block的模值归一化,生成4个直方图合并block的特征(
block的维数与cell相等
)
- (左图)每个block由4个cell组成,一个block特征由4个cell直方图组成(
- block内直方图的归一化
L1-norm
L1-sqrt
L2-norm
L2-Hys(效果最好)
先进行L2-norm操作,然后执行, th一般设为0.2
References
- Histograms of Oriented Gradients for Human Detection