特征描述-HOG 算子
HOG 算子即方向梯度直方图,是一种广泛应用于行人检测、目标跟踪的特征描述。行人检测以HOG+SVM的思路,获得了极大的成功。在目标跟踪中HOG 特征也被广泛应用于描述物体特征,比如KCF 算法就使用了三通道的HOG 特征。
HOG 的主要思想就是在一副图像中,局部目标的表象和形状(appearance and shape )能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。从而采用直方图的方式来作为基本的描述子。具体实施时,首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。为了提高描述子的性能,更好地适应光照和阴影的变化,把这些局部直方图在图像的更大的范围内(我们把它叫区间或block )进行对比度归一化(contrast-normalized ),所采用的方法是:先计算各直方图在这个区间(block )中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。
与其他的特征描述相比,由于HOG 是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。其次,在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。因此HOG 特征是特别适合于做图像中的人体检测的。
具体实现时,首先采用Gamama 校正法对输入图像进行颜色空间的标准化,调节图像对比度,降低图像局部的阴影和光照变化造成的影响。接着计算每个像素的梯度(包括幅值和相位)。将图像划分成小cells (比如6*6), 统计每个cell 的梯度直方图。比如可以取9bin 的直方图,将0-360分成9份,判断一个cell 中的每一个点的相位属于哪个区间,则直方图该项加上一个值,该值由该点的权重和梯度幅值共同决定。以这样的方式,得到每一个cell 的描述子。然后将几个cell 组成一个block (比如3*3个cell ), 一个block 内所有cell 的描述子串联得到该block 的描述子。将图像的所有block 的描述子串联得到该图像的hog 特征。
Hog 特征是一种很好的特征描述子,在深度学习网络出现之前,Hog 是精度最高的特征描述子之一。在真实的使用中,hog 特征对于缓慢变化可以很好地表述,然而对于剧烈的变化,旋转,表述力度不够好。