HOG特征提取算法的实现过程
****深入研究hog算法原理:
一、hog概述
Histograms of Oriented Gradients意为方向梯度直方图,并被用作目标的一种描述方式;同时它也是一种描述子。
二、 Hog 提出
四、大概过程
HOG特征提取方法就是将一个image(你要检测的目标或者扫描窗口):
1)灰度化(将图像看做一个x,y,z(灰度)的三维图像);
通过Gamma校正法对输入图像实施归一化处理颜色空间参数设置为1.0以确保一致性和准确性
生成图像中每个像素的梯度(涉及大小与方向);旨在提取边缘特征,并减少光照的影响程度。
4)将图像划分成小cells(例如6*6像素/cell);
对每个单元格计算其梯度分布情况,并根据不同梯度的数量来生成描述子。
将若干个cell组合为一个block,并采用3×3的细胞块尺寸作为基础单元。在每个block内部,将所有cell的特征descriptor依次串联即可得到该block对应的HOG特征descriptor。
- 将图像image中的各个block提取其HOG feature descriptor后即可获得该目标image(即你要检测的对象)对应的HOG feature descriptor。这就是供用于分类处理的关键特征向量。
**

** 具体每一步的详细过程如下:
( 1)标准化gamma空间和颜色空间
为了减少光环境的影响,在消除光环境影响方面,在消除光环境影响方面
Gamma压缩公式:

比如可以取Gamma=1/2;
( 2)计算图像梯度
首先计算图像在水平和垂直方向上的导数,并进一步计算每个像素位置的梯度方向值;求导操作不仅可以捕获轮廓、人体阴影以及纹理信息,并且还可以通过这种方式减弱光照带来的影响。
图像中像素点(x,y)的梯度为:

通常采用的方法包括:首先通过应用[-1,0,1]梯度算子进行卷积处理,在水平方向上(定义为向右为正)计算得到该区域的梯度分量gradscalx;随后采用[+1,0,-1]^T这一转置形式的梯度算子进行卷积操作,在垂直方向上(定义为向上为正)计算出对应的梯度分量gradscaly;继而根据上述方法计算出该像素点处的梯度幅度及指向
( 3)为每个细胞单元构建梯度方向直方图
第三步旨在赋予该区域一种编码方式,并且这种编码方案不仅能够反映人体的姿态特征,还具有一定的抗干扰能力。
我们将图像划分为多个'单元格cell'的形式,并规定每个cell占据6×6个像素的空间。为了统计每个6×6像素块内的梯度信息特征,则采用了包含9个bin的直方图进行计算。具体而言,在每个单元格内将梯度方向划分为360度均匀分布的9个方向区间(即每个间隔40°)。例如:当某个像素的梯度方向落在20°至40°范围内时,在第二个bin中计数增加1。通过将每个像素的梯度方向映射到固定角度范围内的相应直方图区间并进行加权累加处理,则可得到该单元格对应的九维特征向量(因为总共有9个bin)。
该方法涉及对像素梯度方向的处理,并具体关注其对应的梯度大小作为投影权重。假设某个像素的梯度方向为20-40度,则其对应的直方图第2个bin计数值将增加两倍(假设情况)。

细胞单元可以是矩形的(rectangular),也可以是星形的(radial)。
( 4)把细胞单元组合成大的块(block),块内归一化梯度直方图****
因为局部光照的变化和前景-背景对比度的变化而导致梯度强度的范围显著增大。为了适应这种变化范围较大的特点,在图像处理过程中通常会对梯度强度进行归一化处理。经过归一化处理后能够进一步地压缩光照、阴影和边缘的相关信息。
该方法通过将各个细胞聚合成较大的空间连通区域(blocks),从而获得每个block内的HOG特征。这些区域之间存在重叠关系,在此过程中每个单元格都会多次影响最终得到的特征向量。我们采用归一化处理后形成的块描述符来统称为HOG描述符。

该区域包含两种主要几何形状:矩形HOG(R-HOG)和环形HOG(C-HOG)。R-HOG区域基本上由方形单元构成,并由以下三个参数表征:每个区间中的细胞单元数量、每个细胞单元中的像素点数量以及每个细胞直方图通道的数量。
如上所示的例子中指出:行人检测的最佳参数配置是采用大小分别为3×3像素的细胞区间、6×6像素的细胞尺寸以及包含9个直方图通道的设计方案。由此可得单个单元格所具有的特征数量计算公式为:3×3×9
( 5)收集HOG特征
在这一阶段,在检测窗口内的所有重叠区域提取HOG特征,并将其整合成完整的特征向量供分类器使用。
