浅析HOG

方向梯度直方图(Histogram Oriented Gradient)

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。HOG特征通过计算和统计图像局部区域的梯度方向直方图来构成特征。
什么是特征描述子?
特征描述子是指通过提取有用的信息并抛弃无关的信息来表示这一张图片或者一张图片的一部分。
在HOG特征描述器中,梯度方向(梯度)的分布(直方图)作为特征。 图像的梯度(x和y导数)是有用的,因为梯度的大小在边缘和拐角处(突然强度变化的区域)很大,而且我们知道边和角在物体形状上的信息比平面区域要多得多。

HOG特征提取的过程:把样本图像分割为若干个像素的单元,把梯度方向平均划分为多个区间,在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个多维的特征向量,每相邻的单元构成一个区间,把一个区间内的特征向量联起来得到多维的特征向量,用区间对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了特征。
在这里插入图片描述
在这里插入图片描述

详细步骤

步骤一:预处理

分割图像
在这里插入图片描述
在这里插入图片描述
因为HOG是一个局部特征,因此如果你对一大幅图片直接提取特征,是得不到好的效果的。原理很简单。从信息论角度讲,例如一幅640*480的图像,大概有30万个像素点,也就是说原始数据有30万维特征,如果直接做HOG的话,就算按照360度,分成360个bin,也没有表示这么大一幅图像的能力。从特征工程的角度看,一般来说,只有图像区域比较小的情况,基于统计原理的直方图对于该区域才有表达能力,如果图像区域比较大,那么两个完全不同的图像的HOG特征,也可能很相似。但是如果区域较小,这种可能性就很小。最后,把图像分割成很多区块,然后对每个区块计算HOG特征,这也包含了几何(位置)特性。例如,正面的人脸,左上部分的图像区块提取的HOG特征一般是和眼睛的HOG特征符合的。

接下来说HOG的图像分割策略,一般来说有overlap和non-overlap两种,如下图所示。overlap指的是分割出的区块(patch)互相交叠,有重合的区域。non-overlap指的是区块不交叠,没有重合的区域。这两种策略各有各的好处。

下面展示了一个大尺寸的720×475图像。我们计算我们的HOG特征描述符选择一块大小100×200的补丁(patch)。并调整其大小为64×128。现在已经准备好计算这个图像补丁的HOG描述符了。
在这里插入图片描述

步骤二:计算图像梯度

计算每个区块的方向梯度直方图
将图像分割后,接下来就要计算每个patch的方向梯度直方图。步骤如下:

利用任意一种梯度算子,例如:sobel,laplacian等,对该patch进行卷积,计算得到每个像素点处的梯度方向和幅值。具体公式如下:

在这里插入图片描述
其中,Ix和Iy代表水平和垂直方向上的梯度值,M(x,y)代表梯度的幅度值,θ(x,y)代表梯度的方向。

在opencv中使用内核大小为1的Sobel算子实现同样的结果。
在这里插入图片描述


    //Read image
    Mat img = imread("F:/data/car/test1.jpg");
    img.convertTo(img, CV_32F, 1 / 255.0);
    // Calculate gradients gx, gy
    Mat gx, gy;
    //对X梯度绝对值
    Sobel(img, gx, CV_32F, 1, 0, 1);
    //对Y梯度绝对值
    Sobel(img, gy, CV_32F, 0, 1, 1);

接下来,我们可以用下面的公式找到梯度的大小和方向
在这里插入图片描述
使用opencv,计算梯度的大小和方向可以使用函数carttopolar,如下所示。

 Mat mag, angle;
    //mag 坡度梯度 大小
    //mag就是大小 
    //angle就是方向
    cartToPolar(gx, gy, mag, angle, 1);

在这里插入图片描述

步骤三:计算在8×8细胞梯度直方图

在这里插入图片描述
8×8图像补丁包含8x8x3 = 192像素值。这个补丁梯度每像素包含2个值(大小和方向),那就变成8x8x2 = 128个数。通过这一部分的最后我们会看到这128个数字是用9-bin直方图(可存储为长度9的数组)
在这里插入图片描述
箭头显示梯度的方向,其长度显示大小
梯度正值和它的负值用相同的数字表示。换句话说,梯度箭头和与之相对的180度箭头被认为是相同的。

创建一个8×8细胞梯度直方图
在这里插入图片描述
环绕在蓝色中的像素。它的角度(方向)为80度,大小为2。所以它放入到第五个箱子。用红色包围的像素的梯度方向为10度,大小为4。由于10度是0和20之间的一半,所以像素的也是均匀地分成两个箱子。
在这里插入图片描述
如果角度大于160度,则在160到180之间,我们知道角度绕成0和180相等。因此,在下面的例子中,角度为165度的像素正比于0度的箱子和160度的箱子。
180-160=20;
165-160=5 165更靠近160,160箱子分3/4;
180-165=15 0箱子分4/1.
在这里插入图片描述
可以看到直方图在0度和180度附近占很大比重。

步骤四:16x16步块归一化

在这里插入图片描述

步骤五:计算HOG特征向量

将从每个patch中提取出的“小”HOG特征首尾相连,组合成一个大的一维向量,这就是最终的图像特征。
在这里插入图片描述

优点总结

与其他的特征描述方法相比,HOG有很多优点。
首先,由于HOG是 在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。
其次,在粗的空域抽样、精细 的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响 检测效果。
因此HOG特征是特别适合于做图像中的人体检测的 。至今虽然有很多行人检测算法,但基本都是以HOG+SVM的思路为主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gallant Hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值