HOG特征:方向梯度直方图(Histogram of oriented Gradient)
1.主要思想:在一副图像中,局部目标的表象和形状能够被梯度或边缘的方向密度分布很好 的描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。
2.优点:能够保持图像几何和光学形变的不变性(因为这两种形变只出现在更大的空间领域 上,而HOG是在图像的局部方格单元上操作)
3.算法流程:HOG特征提取方法就是将一个image(你要检测的目标或者扫描窗口):
1)灰度化
2)采用Gamma矫正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;
3)计算图像每个像素的梯度(包括大小和方向)
4)将图像划分成小cells(如6*6像素/cell)
5)统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor
6)将每几个cell组成一个block(如3*3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descripto
7)将图像image内的所有block的HOG特征的descriptor串联起来就可以得到该image(你要检测的目标)的HOG特征descriptor,这个就是最终的可供分类使用的特征向量了。
算法流程图(见算法流程.jpg)
流程细节:
2)图像中像素点(x,y)的梯度为:(见梯度.jpg)
最常用的方法是:首先用[-1,0,1]梯度算子对原图像做卷积运算,得到x方向的梯度分量,然后用[-1,0,1]'梯度算子对原图像做卷积运算,得到y方向的梯度分量,然后计算梯度方向及大小
3)为每个细胞单元构建梯度方向直方图
如每个cell为6*6个像素,假设采用9个bin的直方图来统计这6*6个像素的梯度信息。也就是将cell的梯度方向360度分成9个方向块,如图所示:例如,如果这个像素的梯度方向是20-40度,直方图第2个bin的计数就加一,这样,对cell内每个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),像素梯度方向用到了,梯度大小就是作为投影的权值的。例如说:这个像素的梯度方向是20-40度,然后它的梯度大小是2(假设),那么直方图第2个bin的计数就不是加一了,而是加二(假设)。
6)把细胞单元组合成大的块(block),块内归一化梯度直方图(见bin.jpg)
(由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化。归一化能够进一步对光照、阴影和边缘进行压缩)
把各个细胞单元组合成大的、空间上连通的区间(block)。这样,一个block内所有cell的特征向量串联起来便得到该block的HOG特征,这些区间是互有重叠的,这就意味着:每一个单元格的特征会以不同的结果多次出现在最后的特征向量中,将归一化之后的块描述符(向量)称之为HOG描述符。
区间(block)有两个主要的几何形状----矩形区间(R-HOG)和环形区间(C-HOG)。R-HOG可以有三个参数来表征:每个区间中细胞单元的数目,每个细胞单元中像素点的数目,每个细胞的直方图通道数目。
例如:行人检测的最佳参数设置是:3*3cell/block,6*6pixsel/cell,9个bin,则每个block的特征数为:3*3*9;
一般都是用block对样本图形进行扫描,扫描步长为一个单元。
思考:一个图形的HOG特征维数是多少?
如,对于64*128的图像而言,每16*16像素组成一个cell,每2*2个cell组成一个块,每个cell有9个特征,所以每个块内有2*2*9=36个特征,以8个像素为步长,那么水平方向将有
(64-16*2)/8+1=5个扫描窗口,垂直方向将有(128-16*2)/8+1=13个扫描窗口。即对于64*128的图片,总共有36*5*13=2340个特征。