图像特征-HOG_理论篇

图像特征之-HOG

HOG特征:

  • 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种计算机视觉和图像处理总用来进行物体检测的特征描述子,它是通过计算和统计凸显根据簿区域的梯度方向直方图来构建特征。
  • Hog特征结合SVM分类器,已经被广泛应用于图像识别中,尤其在行人检测中获得极大地成功,
  • HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主
1、HOG的主要思想
  • 在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)
2、实现方法
  • 首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。
  • 之所以统计每一个小单元的方向走直方图,是因为,一般来说,只有图像区域比较小的情况,基于统计原理的直方图对于该区域才有表达能力,如果图像区域比较大,那么两个完全不同的图像的HOG特征,也可能很相似。但是如果区域较小,这种可能性就很小。
3、提升HOG的性能
  • 将局部直方图在图像的更大的范围内(区间或block)进行对比度归一化(contrast-normalized)
  • 先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果
4、HOG特征提取算法的过程
  • 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特征descriptor
  • 7、将图像image内的所有block的HOG特征descriptor串联起来就可以得到该image(你要检测的目标)的HOG特征descriptor了。这个就是最终的可供分类使用的特征向量了
提取过程中的每一步骤详细过程:
-1、标准化gamma空间和颜色空间
  • 因为颜色信息作用不大,所以先转化为灰度图;
  • 然后整个图像进行规范化(归一化),可以减少光照因素的影响。(img = image/255.0 或者 img = image/127.5 - 1)
  • 在图像的纹理强度中,局部的表层曝光贡献的比重较大,所以,这种压缩处理能够有效地降低图像局部的阴影和光照变化。
  • Gamma压缩公式:
    I ( x , y ) = I ( x , y ) g a m m a I(x, y) = I(x, y)^{gamma} I(x,y)=I(x,y)gamma
  • 这里的gamma可以去1/2,这样的。
-2、计算图像梯度信息
  • 计算每一个点(x, y)的方向梯度信息;

  • 梯度信息不仅可以铺货轮廓,人影和一些重要的纹理信息,还可以进一步的柔滑光照的影响。

  • 点(x,y) 的梯度计算公式:

    G x ( x , y ) = H ( x + 1 , y ) − H ( x − 1 , y ) G_x(x, y) = H(x+1, y) - H(x -1, y) Gx(x,y)=H(x+1,y)H(x1,y)
    G y ( x , y ) = H ( x , y + 1 ) − H ( x , y − 1 ) G_y(x, y) = H(x, y+1) - H(x, y-1) Gy(x,y)=H(x,y+1)H(x,y1)

  • 式中,G_x(x, y), G_y(x, y),H(x,y)分别表示输入图像中像素点(x,y)处的水平方向梯度、垂直方向梯度和该点的像素值,

  • 该点的梯度幅值和梯度方向分别是:
    梯度幅值: G ( x , y ) = G x ( x , y ) 2 + G y ( x , y ) 2 G(x,y) = \sqrt {{G_x}{{(x,y)}^2} + {G_y}{{(x,y)}^2}} G(x,y)=Gx(x,y)2+Gy(x,y)2
    梯度方向: α ( x , y ) = tan ⁡ − 1 ( G y ( x , y ) G x ( x , y ) ) \alpha (x,y) = {\tan ^{ - 1}}(\frac{{{G_y}(x,y)}}{{{G_x}(x,y)}}) α(x,y)=tan1(Gx(x,y)Gy(x,y))

  • 最常用的方法是:首先用[-1,0,1]梯度算子对原图像做卷积运算,得到x方向(水平方向,以向右为正方向)的梯度分量gradscalx,然后用[1,0,-1]T梯度算子对原图像做卷积运算,得到y方向(竖直方向,以向上为正方向)的梯度分量gradscaly。然后再用以上公式计算该像素点的梯度大小和方向。

-3、为每一个cell单元构建梯度方向直方图
  • 目的是为局部图像区域提供一个编码,同时能够保持对图像中人体对象的姿势和外观的弱敏感性
  • 将图像分成若干个“单元格cell”,例如每个cell为66个像素。假设我们采用9个bin的直方图来统计这66个像素的梯度信息。也就是将cell的梯度方向360度分成9个方向块,就可以得到这个cell的梯度方向直方图了,就是该cell对应的9维特征向量(因为有9个bin)。
  • 梯度大小就是作为投影的权值的。
-4、有几个cells组成的block,在block内进行归一化梯度直方图
  • 局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。
  • 因此对梯度强度做归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。
  • 原文中,作者:把各个cell单元组合成大的、空间上连通的区间(blocks)。这样,一个block内所有cell的特征向量串联起来便得到该block的HOG特征。这些区间是互有重叠的,这就意味着:每一个单元格的特征会以不同的结果多次出现在最后的特征向量中。我们将归一化之后的块描述符(向量)就称之为HOG描述符
  • 区间有两个主要的几何形状——矩形区间(R-HOG)和环形区间(C-HOG)。R-HOG区间大体上是一些方形的格子,它可以有三个参数来表征:每个区间中细胞单元的数目、每个细胞单元中像素点的数目、每个细胞的直方图通道数目。
    • 例如:行人检测的最佳参数设置是:3×3细胞/区间、6×6像素/细胞、9个直方图通道。则一块的特征数为:339;
-5、收集HOG特征
  • 将检测窗口中所有重叠的blocks进行HOG特征收集,并将它们结果成为最终的特征向量
-6、HOG特征的维度
  • Dalal提出的Hog特征提取的过程:把样本图像分割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人体的特征。例如,对于64128的图像而言,每88的像素组成一个cell,每22个cell组成一个块,因为每个cell有9个特征,所以每个块内有49=36个特征,以8个像素为步长,那么,垂直方向x将有7个扫描窗口,水平方向y将有15个扫描窗口。
  • 64* 128的图片,总共有36715=3780个特征。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值