本文大部分内容总结于其他文章
1.介绍

HOG(Histogram of Oriented Gradient)2005CVPR会议上,法国国家计算机科学及自动控制研究所的Dalal等人提出的一种解决人体目标检测的图像描述子,该方法使用梯度方向直方图(Histogram of Oriented Gradients,简称HOG)特征来表达人体,提取人体的外形信息和运动信息,形成丰富的特征集。

 
2.生成过程
1)图像归一化
归一化图像的主要目的是提高检测器对光照的鲁棒性,因为实际的人体目标可能出现的各种不同的场合,检测器,必须对光照不太敏感才会有好的效果。 因为颜色信息作用不大所以通常先把image转换为灰度。
 gamma压缩公式。
 
2)利用一阶微分计算图像梯度
图像平滑 
对于灰度图像,一般为了去除噪点,所以会先利用离散高斯平滑模板进行平滑。原文中,Dalal等人用了不同尺度的高斯函数(包括σ=0 也就是不做处理)进行对灰度图像进行平滑操作,选择的算子有一阶uncenterd梯度算子【-1 1】,一阶centred梯度算子【-1 0 1】,cubic-corrected 【1 -8 0 8 -1】, 和3*3 sobel 算子等。实验表明在下,不做高斯平划且搭配【-1 0 1】 一阶梯度算子实验效果最佳。可能原因:图像时基于边缘的,平滑会降低边缘信息的对比度,从而减少图像中的信号信息。
梯度法求图像梯度
一阶微分处理一般对灰度阶梯有较强的响应  
一阶微分: 
对于函数f(x,y),在其坐标(x,y)上的梯度是通过如下二维列向量定义的: 
这个向量的模值由下式给出:
 
因为模值的计算开销比较大,一般可以按如下公式近似求解:
 

Dalal等人利用许多一阶微分模板进行求梯度近似值,但在实验中表明模板[-1,0,1]效果最好。

采用模板[-1,0,1]为例计算图像梯度以及方向,通过梯度模板计算水平和垂直方向的梯度分别如下:
其中,分别表示该像素点的水平,垂直梯度值。计算该像素点的梯度值(梯度强度)以及梯度方向
对于梯度方向的范围限定,一般采用无符号的范围即 0<θ<180,故梯度方向可表示为:
 
3)基于梯度幅值的方向权重投影
HOG结构
通常使用的HOG结构大致有三种:矩形HOG(简称为R-HOG),圆形HOG和中心环绕HOG。它们的单位都是Block(即块)。Dalal的试验证明矩形HOG和圆形HOG的检测效果基本一致,而环绕形HOG效果相对差一些。
矩形HOG块的划分:
一般一个块(Block)都由若干单元(Cell)组成,一个单元都有如干个像素点组成。
对于人体对象检测,块的大小为3×3个单元格,单元格的大小为6×6个象素时,检测效果是最好的,错误率约为10%左右。块的大小为2×2个单元格,单元格大小为8×8个象素时,也相差无几。6-8个象素宽的单元格,2-3个单元格宽的块,其错误率都在最低的一个平面上。块的尺寸太大时标准化的作用被削弱了从而导致错误率上升,而如果块的尺寸太小时,有用的信息反而会被过滤掉。
在实际应用中,在Block和Cell划分之后,对于得到各个像区域中,有时候还会为了进行一次高斯平滑,但是对于人体目标检测等问题,该步骤往往可以忽略,实际应用效果不大,估计在主要还是去除区域中噪点,因为梯度对于噪点相当敏感。下图为不同参数下miss rate的对比。
对梯度方向的投影权重方式的选取: 
对于梯度方向的加权投影,一般都采用一个权重投影函数,它可以是像素点的梯度幅值,梯度幅值的平方根或梯度幅值的平方,甚至可以使梯度幅值的省略形式,它们都能够一定程度上反应出像素上一定的边缘信息。根据Dalal等人论文的测试结果,采用梯度幅值量级本身得到的检测效果最佳,使用量级的平方根会轻微降低检测结果,而使用二值的边缘权值表示会严重降低效果(约为5%个单位10-4FPPW(False Positives Per Window))。
 
4)HOG特征向量归一化
对block块内的HOG特征向量进行归一化。对block块内特征向量的归一化主要是为了使特征向量空间对光照,阴影和边缘变化具有鲁棒性。还有归一化是针对每一个block进行的,一般采用的归一化函数有以下四种:
在人体检测系统中进行HOG计算时一般使用L2-norm,Dalal的文章也验证了对于人体检测系统使用L2-norm的时候效果最好。

5)得出HOG最终的特征向量
最终我们可以得到一个a*b*c维的特征向量。其中a表示每个cell中方向单元(bin)的数目。b表示block的个数,c表示每个block中cell的数目。
举例说明,上述中我们选择9为每个cell中bin的个数。 block的size是2*2个cell,每个cell由6*6个pixels组成。那么每个block中我们有4*9 = 36个features。
假设滑动的步长是8,那么对于64*128的窗口来说竖直方向要扫描128/8 -1  = 15个block,水平方向要扫描64/8 -1 =7个block。
那么总的特征数目为36*15*7 =3780个

3.HOG的应用:
主要用在object detection 领域,特别是行人检测,智能交通系统,当然也有文章提到把HOG用在手势识别,人脸识别等方面。
 
4.HOG与SIFT区别
HOG和SIFT都属于描述子,以及由于在具体操作上有很多相似的步骤,所以致使很多人误认为HOG是SIFT的一种,其实两者在使用目的和具体处理细节上是有很大的区别的。HOG与SIFT的主要区别如下:
① SIFT是基于关键点特征向量的描述。
② HOG是将图像均匀的分成相邻的小块,然后在所有的小块内统计梯度直方图。
③ SIFT需要对图像尺度空间下对像素求极值点,而HOG中不需要。
④ SIFT一般有两大步骤,第一个步骤是对图像提取特征点,而HOG不会对图像提取特征点。
 
5.HOG的优点:
HOG表示的是边缘(梯度)的结构特征,因此可以描述局部的形状信息;
位置和方向空间的量化一定程度上可以抑制平移和旋转带来的影响;
采取在局部区域归一化直方图,可以部分抵消光照变化带来的影响。
由于一定程度忽略了光照颜色对图像造成的影响,使得图像所需要的表征数据的维度降低了。
而且由于它这种分块分单元的处理方法,也使得图像局部像素点之间的关系可以很好得到的表征。
 
6.HOG的缺点:
描述子生成过程冗长,导致速度慢,实时性差;
很难处理遮挡问题。
由于梯度的性质,该描述子对噪点相当敏感

HoG feature for human detection(HoG 行人识别)的更多相关文章

  1. 目标检测之hog(梯度方向直方图)---hog简介0

    梯度直方图特征(HOG) 是一种对图像局部重叠区域的密集型描述符, 它通过计算局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功 ...

  2. 利用Hog特征和SVM分类器进行行人检测

    在2005年CVPR上,来自法国的研究人员Navneet Dalal 和Bill Triggs提出利用Hog进行特征提取,利用线性SVM作为分类器,从而实现行人检测.而这两位也通过大量的测试发现,Ho ...

  3. HOG feature

  4. 目标检测之行人检测(Pedestrian Detection)---行人检测之简介0

    一.论文 综述类的文章 [1]P.Dollar, C. Wojek,B. Schiele, et al. Pedestrian detection: an evaluation of the stat ...

  5. 【Detection】物体识别-制作PASCAL VOC数据集

    PASCAL VOC数据集 PASCAL VOC为图像识别和分类提供了一整套标准化的优秀的数据集,从2005年到2012年每年都会举行一场图像识别challenge 默认为20类物体 1 数据集结构 ...

  6. 行为识别笔记:HOG,HOF与MBH特征(转载)

    在行为识别的iDT算法中,主要使用了HOG,HOF,MBH和Dense Trajectory四种特征.这里主要对前三者进行介绍. 1. HOG特征(histogram of gray) 此处HOG特征 ...

  7. 第十八节、基于传统图像处理的目标检测与识别(HOG+SVM附代码)

    其实在深度学习中我们已经介绍了目标检测和目标识别的概念.为了照顾一些没有学过深度学习的童鞋,这里我重新说明一次:目标检测是用来确定图像上某个区域是否有我们要识别的对象,目标识别是用来判断图片上这个对象 ...

  8. Hog SVM 车辆 行人检测

    HOG SVM 车辆检测 近期需要对卡口车辆的车脸进行检测,首先选用一个常规的检测方法即是hog特征与SVM,Hog特征是由dalal在2005年提出的用于道路中行人检测的方法,并且取的了不错的识别效 ...

  9. 行人检測之HOG特征(Histograms of Oriented Gradients)

    之前的文章行人计数.计次提到HOG特征这个概念,这两天看了一下原版的论文,了解了一下HOG特征的原理,并依据自己的理解将这种方法的流程写了下来,假设有不正确的地方欢迎指正. HOG(Histogram ...

随机推荐

  1. 阅读记录:Learning multiple layers of representation(杂乱笔记)

    典型的浅层学习结构: 传统隐马尔可夫模型(HMM).条件随机场 (CRFs).最大熵模型(Maxent).支持向量机(SVM).核回归及仅含单隐层的多层感知器(MLP)等. 局部表示,分布式表示和稀疏 ...

  2. 开始慢慢学习这本书了。。Python编程实战:运用设计模式、并发和程序库创建高质量程序

    没办法,不到设计模式,算法组合这些,在写大一点程序的时候,总是力不从心...:( 一开始可能要花很多时间来慢慢理解吧,,这毕竟和<大话设计模式>用的C#语言有点不太一样... 书上代码是3 ...

  3. Qt for Windows - Deployment和它的参数

    http://doc.qt.io/qt-5/windows-deployment.html

  4. 开机启动tomcat

    windows: 成功之后在dos窗口键入 service.bat install Tomcat 输完然后按Enter键,出现如下窗口,便成功了. 进入windows服务管理,设成是自动的. #chk ...

  5. MVC4.0系统开发新手历程(三)---数据导入计算

      数据导入计算 数据的重要意义就不需要我多说了吧,本项目中的数据来源是来自荆艺系统(熟悉物流报关的朋友应该知道)导出的一张Excel,包含了一段时间内整个公司所有销售的全部记录,保密级别那是杠杠的, ...

  6. hdu4085

    http://acm.hdu.edu.cn/showproblem.php?pid=4085 斯坦纳树. 用状压DP. 一共有2K个关键点:1,2...,K和N-K+1,N-K+2...,N,我们用一 ...

  7. bzoj1676[Usaco2005 Feb]Feed Accounting 饲料计算

    Description Farmer John is trying to figure out when his last shipment of feed arrived. Starting wit ...

  8. 第20讲- Spinner与适配器模式

    第20讲 Spinner与适配器模式 使用Spinner相当于从下拉列表中选择项目,Spinner是一个每次只能选择所有项的一个项的控件.它的项来自于与之相关联的适配器中.Spinner的重点问题就是 ...

  9. XSS完全解决方案

    xss 为什么不能阻止用户输入不安全数据 比如用户想发一篇标题的文章 1+1>2吗? 为什么不在数据库存的时候就处理好或者接口里处理好 1<2 会被转义为 1<2,放到html中确实 ...

  10. JavaScript运算符有哪些

    JavaScript中的运算符有很多,主要分为算术运算符,等同全同运算符,比较运算符,字符串运算符,逻辑运算符,赋值运算符等.这些运算符都有一些属于自己的运算规则,下面就为大家介绍一下JavaScri ...