Histogram of Oriented Gridients(HOG) 方向梯度直方图

摘要:
例如,对于前脸,从左上图像块提取的HOG特征通常与眼睛的HOG特性一致。接下来,HOG有两种图像分割策略:覆盖和非覆盖,如下图所示。PHOG的意思是在不同的尺度上分割相同的图像,然后计算每个尺度上的小块HOG,最后将它们连接成一个长的一维向量作为特征。接下来,假设12个箱,即12个维度,计算分割面片的小HOG。与传统的HOG相比,PHOG的优点是可以检测不同尺度的特征,并且具有更强的表达能力。

Histogram of Oriented Gridients,缩写为HOG,是目前计算机视觉、模式识别领域很常用的一种描述图像局部纹理的特征。这个特征名字起的也很直白,就是说先计算图片某一区域中不同方向上梯度的值,然后进行累积,得到直方图,这个直方图呢,就可以代表这块区域了,也就是作为特征,可以输入到分类器里面了。那么,接下来介绍一下HOG的具体原理和计算方法,以及一些引申。

 

1.分割图像

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

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

non-overlapoverlap

先说overlap,这种分割方式可以防止对一些物体的切割,还是以眼睛为例,如果分割的时候正好把眼睛从中间切割并且分到了两个patch中,提取完HOG特征之后,这会影响接下来的分类效果,但是如果两个patch之间overlap,那么至少在一个patch会有完整的眼睛。overlap的缺点是计算量大,因为重叠区域的像素需要重复计算。

再说non-overlap,缺点就是上面提到的,有时会将一个连续的物体切割开,得到不太“好”的HOG特征,优点是计算量小,尤其是与Pyramid(金字塔)结合时,这个优点更为明显。

2.计算每个区块的方向梯度直方图

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

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

 Histogram of Oriented Gridients(HOG) 方向梯度直方图第3张

其中,Ix和Iy代表水平和垂直方向上的梯度值,M(x,y)代表梯度的幅度值,θ(x,y)代表梯度的方向。

 

B.将360度(2*PI)根据需要分割成若干个bin,例如:分割成12个bin,每个bin包含30度,整个直方图包含12维,即12个bin。然后根据每个像素点的梯度方向,利用双线性内插法将其幅值累加到直方图中。

 Histogram of Oriented Gridients(HOG) 方向梯度直方图第4张Histogram of Oriented Gridients(HOG) 方向梯度直方图第5张

C.(可选)将图像分割成更大的Block,并利用该Block对其中的每个小patch进行颜色、亮度的归一化,这一步主要是用来去掉光照、阴影等影响的,对于光照影响不剧烈的图像,例如很小区域内的字母,数字图像,可以不做这一步。而且论文中也提及了,这一步的对于最终分类准确率的影响也不大。

3.组成特征

将从每个patch中提取出的“小”HOG特征首尾相连,组合成一个大的一维向量,这就是最终的图像特征。可以将这个特征送到分类器中训练了。例如:有4*4=16个patch,每个patch提取12维的小HOG,那么最终特征的长度就是:16*12=192维。

4.一些引申

 与pyramid相结合,即PHOG。PHOG指的是,对同一幅图像进行不同尺度的分割,然后计算每个尺度中patch的小HOG,最后将他们连接成一个很长的一维向量,作为特征。例如:对一幅512*512的图像先做3*3的分割,再做6*6的分割,最后做12*12的分割。接下来对分割出的patch计算小HOG,假设为12个bin即12维。那么就有9*12+36*12+144*12=2268维。需要注意的是,在将这些不同尺度上获得的小HOG连接起来时,必须先对其做归一化,因为3*3尺度中的HOG任意一维的数值很可能比12*12尺度中任意一维的数值大很多,这是因为patch的大小不同造成的。PHOG相对于传统HOG的优点,是可以检测到不同尺度的特征,表达能力更强。缺点是数据量和计算量都比HOG大了不少。

Histogram of Oriented Gridients(HOG) 方向梯度直方图第6张

参考文献:

Navneet Dalal and Bill Triggs,《Histograms of Oriented Gradients for Human Detection》,2005

A. Bosch, A. Zisserman, and X. Munoz, 《Representing shape with a spatial pyramid kernel》,2007

免责声明:文章转载自《Histogram of Oriented Gridients(HOG) 方向梯度直方图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Datalab实验java事务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

AI框架导学篇--01

AI框架入门 01 作者:elfin 目录 1、数据加载与数据分析 1.1 导入数据 1.2 查看对象的方法、属性 1.3 查看数据集的描述 1.4 查看波士顿数据集的特征名 1.5 查看房间数信息 2、波士顿房价预测 2.1 数据转换与分析 2.2 根据历史报价(报价字典) 2.3 KNN-K近邻估计 2.4 线性回归 2.4.1...

ZedGraph如何动态的加载曲线

ZedGraph的在线文档 http://zedgraph.sourceforge.net/documentation/default.html  官网的源代码 http://sourceforge.net/projects/zedgraph/?source=directory  zedgraph的demo在线范例  http://zedgraph.sou...

OpenCV 2.4+ C++ 行人检测

HOG特征描述 首先我们来了解一下HOG特征描述子。 HOG特征描述子(HOG descriptors)是由Navneet Dalal和 Bill Triggs在2005年的一篇介绍行人检测方法的论文提到的特征描述子(论文以及演讲可参见参考资料1、2)。 其主要思想是计算局部图像梯度的方向信息的统计值,来作为该图像的局部特征值。 如上图,归一化图像后,...

RNN学习笔记

传统的语言模型在预测序列中的下一个单词时只会考虑到前面的有限个单词,RNN与之不同,RNN网络会根据前面已经出现的所有输入来调整整个网络。下图是RNN网络的典型结构: Xt表示在t时刻的输入,ht表示t时刻的隐藏层状态,yt表示t时刻的输出。每一个隐藏层都有许多的神经元,这些神经元将上一层的输入做线性变换(矩阵乘法,也就是乘以权重),然后再使用非线性激活...

两篇论文之CNN中正交操作

  CNN的权值正交性和特征正交性,在一定程度上是和特征表达的差异性存在一定联系的。   下面两篇论文,一篇是在训练中对权值添加正交正则提高训练稳定性,一篇是对特征添加正交性的损失抑制过拟合。 第一篇:Orthonormality Regularization Xie D, Xiong J, Pu S. All You Need is Beyond a G...

分水岭算法实现图像分割及其应用

将图像分割为多个同质区域, 分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特征。 watershed原理:对图像中部分区域做标记,表明已知,根据这个已知区域确定其他区域(参考点问题) void waters...