HOG特征中的三线插值法

      HOG是一种局域描述符,是针对图像某个矩形区域中的梯度方向与强度的统计信息而定义的一种特征。具体的做法:首先将图像分为小的连通区域,我们把它叫做细胞单元,采集 细胞单元的梯度和边缘方向密度。为了提高性能,把这些局部直方图在更大的范围内(block)进行对比度归一化,采用的方法是:先计算各直方图在block中的密度,根据各个密度对区间中的各个细胞单元做归一化。

     hog特征特别适合做行人检测。

     提取hog特征的步骤如下:

     1、首先计算图像中每个像素的梯度大小和方向。

     2、把 [-Pi/2,Pi/2] 的梯度方向均匀划分为9 个区间(bin),即每20度一个bin

     3、计算每个单元内所有像素点在其对应区间上的梯度累加和,作为该单元的特征。

     
       HOG特征是在单元(cell1)和块(block)的网格内进行密集计算而得到,cell 由8 × 8 个像素点构成,block由4 个相邻的cell 组成,
如下图 所示。


      每个单元的特征可由一个9 维的向量表示,每个块由4 个单元组成,从而每个块的特征可由一个36维向量表示。

      大小为64× 128 的训练样本具有105=((128-16)/8+1)*((64-16)/8+1)个block。对于每个cell,计算其中所有像素的梯度向量,形成每个cell 各自的梯度方向直方图。然后,将每个block中4 个cell 的梯度直方图数据串联起来形成一个36维向量。最后将所有block中的数据依次串联起来,便形成了对每个训练图像的3780(36× 105)维编码。


三线插值

       通常将某个变量范围固定划分为几个区域进行某种计算时,由于边界变量与相邻区域也有相关性,如果只对当前区域进行计算而完全忽略与相邻区域的关系,就会产生区域混叠效应。这种混叠效应会在特征向量中产生突变。在这种情况下就需要采用插值算法对计算结果进行修正。在HOG特征提取方法中,位于不同cell 交界处的像素如果只对所在的cell 进行投影同样会对其他区域产生混叠效应,此时需要采用三维线性插值的方法对梯度向量直方图进行修正。插值运算在图像放大中应用较多,这里借用插值运算的思想对累积直方图进行修正,即将某个像素点的梯度幅值以不同的权重累加到相应的bin上。确切地说,这是一种权值分配,但多数文献中仍然延续“插值”这一说法。由于提取HOG特征时需要在两个位置坐标(x, y)和一个方向坐标( θ ) 共三个维度上进行插值运算,因此称为三线性插值。

      首先以二维情况为例说明线性插值的思想。在两个维度上进行线性插值称为“双线性插值”。 双线性插值在图像放大或图像旋转中应用广泛,它是利用周围4 个邻点的灰度值在两个方向上作线性内插以得到待采样点的灰度值,即根据待采样点与相邻点的距离确定相应的权值计算出待采样点的灰度值。如下图 所示,点P 为待采样点,Q 11、Q 12、Q 21、Q 22为点P 的四个相邻点,用线性插值法对P 点进行插值运算的数学表达式为:



      根据上述插值思想,可在各像素的梯度方向上进行加权运算,如下图 所示,将区间[ 0°,180°] 以20°为一个区间划分,每个小区间以中心角度作为直方图的中心数值,假设要对梯度方向为15°的像素点进行处理,显然15与以10和30为中心的直方图最近,应该将该点的梯度幅值加权累加到这两个直方图上,权重分别为( 30 - 15) / 20 = 0. 75 和(  15 - 10 )/20 = 0. 25 。


      同理运用线性插值方法在各个像素的位置上进行加权运算,如下图 所示,左图中的方框处为待处理像素点,它位于block中的C 0 单元中,利用该点与四个cell 中的中心像素点(图中4 个圆点)的距离计算权值,将待处理像素点的梯度幅值分别加权累加到C 0、C 1、C 2、C 3 中相应的直方图上。


      综合考虑,在两个位置坐标(x,y) 和一个方向坐标( θ )上进行三线性插值,关键要解决的问题是应该在哪些 bin上进行加权累加,累加时权值又是多少。将一个像素点处的梯度幅值加权分配到4 个cell 中与该点梯度方向相邻的2 个bin上。按照下面的公式修正直方图向量:


其中x、y 轴表征像素点的空间位置,z 轴表征该点的梯度方向(即θ )。对于待处理像素点(x,y) ,设其梯度幅值为ω ,梯度方向为z,z 1 和z 2 分别是与之最邻近的两个bin的中点坐标。梯度直方图h 沿x、y、z 三个维度的直方图带宽分别为b=[bx, by, bz] ,bx=by= 8,bz=180°/ 9。下图所示为三线性插值计算梯度方向直方图向量的示意图:


左图中的方框处为待处理像素点,计算 block的每个 cell 中与该点梯度方向相邻的 2 个bin,共计 8 个直方图柱上的权值,将该点的梯度幅值进行加权累加,即形成 block中的梯度方向直方图

你可能感兴趣的:(Computer,vision)