HOG:Histogram of Oriented Gradient方向梯度直方图

参考文章

一、算法实质

在一副图像中,梯度或边缘的方向密度分布能够很好地描述局部目标区域的特征,HPG正是利用这种思想,对梯度信息做出统计,并生成最后的特征描述。

在HOG中,对一副图像进行了如下划分:图像(image)---> 检测窗口(win)---> 图像块(block)---> 细胞单元(cell)

HOG算法

对于上述流程图,有几点需要注意的地方: 
1.色彩和伽马归一化为了减少光照因素的影响,首先需要将整个图像进行规范化(归一化)。在图像的纹理强度中,局部的表层曝光贡献的比重较大,所以,这种压缩处理能够有效地降低图像局部的阴影和光照变化。 
2.图像的梯度针对的是每一个像素计算得到,然后再cell中进行方向梯度直方图的构建,在block中进行对比度归一化操作。 
3.由于窗口的滑动性与块的滑动行,窗口与块都会出现不同程度的重叠(由步长决定),此时在块内划分出的cell就会多次出现,这就意味着:每一个细胞单元的输出都多次作用于最终的描述器。

 二、HOG中的win、block、cell

win:当我们使用滑动窗口遍历方法实现目标检测任务时,首先我们需要构建一个滑动窗,这个滑动窗就是HOG的win

在HOG特征提取时,一个窗口是最小的特征提取单元,在特征检测任务中,滑动窗将以一个设定的步长在整个图像中顺序的滑动,每一次滑动后,都会提取窗口内的HOG特征,提取到的特征将送入到预先训练好的分类器中,如果分类器模型判定其为目标,则完成目标检测任务。

比如,在一个图像中选择检测窗口,依靠检测窗口尺寸,窗口滑动步长与图像尺寸共同决定将选择几个检测窗口,比如图像的尺寸为166×80,检测窗口的尺寸为64×64,窗口步长为(8,8)。那么在图像的列中将滑动次数如下: 

HOG算法

 

 

 

显然这并不合乎逻辑,此时将自动填充,所以列中可以滑动出14个win; 
同理,行中滑动次数如下: 

HOG算法
所以图像中共滑动 14×3=42个窗口。 
那么对于一个窗口内选择块是一样的原理,假设给出块的尺寸为 16×16,块步长为 (8,8),经过计算:检测窗口中共滑动 7×7=49个block。 
在一个块中选择细胞单元不再滑动,给出细胞单元的尺寸为 (8,8),所以一个块中一共有 2×2=4个cell。 
在这里有一个需要注意的地方时,窗口在滑动时可以根据像素填充方法补齐的,但是对于块与cell来说,是不可以的。因为这是算法本身的一个硬性要求,所在这要求我们在做窗口尺寸,块尺寸,块步长,单元尺寸选择时,必须满足一下条件: 
1.一个窗口内根据块步长与块尺寸滑动块时,必须可以滑动出整数个块。 
2.在块内确定单元个数时,必须要整数个单元。

 

三、HOG构建方向梯度直方图

HOG构建方向梯度直方图在cell中完成,bins的个数决定了方向的范围。细胞单元中的每一个像素点都为某个基于方向的直方图通道投票。 

HOG算法

 细胞单元可以是矩形的,也可以是星形的。直方图通道是平均分布在0-180(无向)或0-360(有向)范围内。经研究发现,采用无向的梯度和9个直方图通道,能在行人检测试验中取得最佳的效果。而在这种情况下方向的范围划分为180/9=20度。

 四、特征向量维数

之前提到过,cell的中方向范围的个数由bins来决定,还是以9为例:所以,一个cell中的向量为9个。以上面的例子,在一个尺寸为64×64的检测窗中,描述子的维数就应该为:9×4×49=1764。其中4为一个block中cell的个数,49为一个win中block的个数。

那么HOG作为一种特征提取算法,对于图像分类问题该如何提取特征呢?此时的窗口将是整幅图像,也就是说,窗口将不再在图像中滑动。

 

相关文章:

  • 2021-12-23
  • 2021-10-29
  • 2021-08-03
  • 2021-11-02
  • 2022-12-23
  • 2021-06-08
  • 2021-05-28
  • 2021-07-20
猜你喜欢
  • 2021-08-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-07
  • 2021-08-13
相关资源
相似解决方案