目标检測的图像特征提取之(一)HOG特征
1、HOG特征:
方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检測中获得了极大的成功。须要提醒的是,HOG+SVM进行行人检測的方法是法国研究人员Dalal在2005的CVPR上提出的,而现在尽管有非常多行人检測算法不断提出,但基本都是以HOG+SVM的思路为主。
(1)主要思想:
在一副图像中,局部目标的表象和形状(appearance and shape)可以被梯度或边缘的方向密度分布非常好地描写叙述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。
(2)详细的实现方法是:
首先将图像分成小的连通区域,我们把它叫细胞单元。然后採集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就能够构成特征描写叙述器。
(3)提高性能:
把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对照度归一化(contrast-normalized),所採用的方法是:先计算各直方图在这个区间(block)中的密度,然后依据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。
(4)长处:
与其它的特征描写叙述方法相比,HOG有非常多长处。首先,因为HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持非常好的不变性,这两种形变仅仅会出如今更大的空间领域上。其次,在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,仅仅要行人大体上能够保持直立的姿势,能够容许行人有一些细微的肢体动作,这些细微的动作能够被忽略而不影响检測效果。因此HOG特征是特别适合于做图像中的人体检測的。
2、HOG特征提取算法的实现过程:
大概过程:
HOG特征提取方法就是将一个image(你要检測的目标或者扫描窗体):
1)灰度化(将图像看做一个x,y,z(灰度)的三维图像);
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空间和颜色空间
为了降低光照因素的影响,首先须要将整个图像进行规范化(归一化)。在图像的纹理强度中,局部的表层曝光贡献的比重较大,所以,这样的压缩处理可以有效地降低图像局部的阴影和光照变化。由于颜色信息作用不大,通常先转化为灰度图;
Gamma压缩公式:

比方能够取Gamma=1/2;
(2)计算图像梯度
计算图像横坐标和纵坐标方向的梯度,并据此计算每一个像素位置的梯度方向值;求导操作不仅可以捕获轮廓,人影和一些纹理信息,还能进一步弱化光照的影响。
图像中像素点(x,y)的梯度为:

最经常使用的方法是:首先用[-1,0,1]梯度算子对原图像做卷积运算,得到x方向(水平方向,以向右为正方向)的梯度分量gradscalx,然后用[1,0,-1]T梯度算子对原图像做卷积运算,得到y方向(竖直方向,以向上为正方向)的梯度分量gradscaly。然后再用以上公式计算该像素点的梯度大小和方向。
(3)为每一个细胞单元构建梯度方向直方图
第三步的目的是为局部图像区域提供一个编码,同一时候可以保持对图像中人体对象的姿势和外观的弱敏感性。
我们将图像分成若干个“单元格cell”,比如每一个cell为6*6个像素。如果我们採用9个bin的直方图来统计这6*6个像素的梯度信息。也就是将cell的梯度方向360度分成9个方向块,如图所看到的:比如:如果这个像素的梯度方向是20-40度,直方图第2个bin的计数就加一,这样,对cell内每一个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),就能够得到这个cell的梯度方向直方图了,就是该cell相应的9维特征向量(由于有9个bin)。
像素梯度方向用到了,那么梯度大小呢?梯度大小就是作为投影的权值的。比如说:这个像素的梯度方向是20-40度,然后它的梯度大小是2(如果啊),那么直方图第2个bin的计数就不是加一了,而是加二(如果啊)。

细胞单元能够是矩形的(rectangular),也能够是星形的(radial)。
(4)把细胞单元组合成大的块(block),块内归一化梯度直方图
因为局部光照的变化以及前景-背景对照度的变化,使得梯度强度的变化范围很大。这就须要对梯度强度做归一化。归一化可以进一步地对光照、阴影和边缘进行压缩。
作者採取的办法是:把各个细胞单元组合成大的、空间上连通的区间(blocks)。这样,一个block内全部cell的特征向量串联起来便得到该block的HOG特征。这些区间是互有重叠的,这就意味着:每个单元格的特征会以不同的结果多次出如今最后的特征向量中。我们将归一化之后的块描写叙述符(向量)就称之为HOG描写叙述符。

区间有两个基本的几何形状——矩形区间(R-HOG)和环形区间(C-HOG)。R-HOG区间大体上是一些方形的格子,它能够有三个參数来表征:每一个区间中细胞单元的数目、每一个细胞单元中像素点的数目、每一个细胞的直方图通道数目。
比如:行人检測的最佳參数设置是:3×3细胞/区间、6×6像素/细胞、9个直方图通道。则一块的特征数为:3*3*9;
(5)收集HOG特征
最后一步就是将检測窗体中全部重叠的块进行HOG特征的收集,并将它们结合成终于的特征向量供分类使用。
(6)那么一个图像的HOG特征维数是多少呢?
顺便做个总结:Dalal提出的Hog特征提取的过程:把样本图像切割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每一个单元里面对全部像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。最后将全部块的特征串联起来,就得到了人体的特征。比如,对于64*128的图像而言,每8*8的像素组成一个cell,每2*2个cell组成一个块,由于每一个cell有9个特征,所以每一个块内有4*9=36个特征,以8个像素为步长,那么,水平方向将有7个扫描窗体,垂直方向将有15个扫描窗体。也就是说,64*128的图片,总共同拥有36*7*15=3780个特征。
HOG维数,16×16像素组成的block,8x8像素的cell
凝视:
行人检測HOG+SVM
整体思路:
1、提取正负样本hog特征
2、投入svm分类器训练,得到model
3、由model生成检測子
4、利用检測子检測负样本,得到hardexample
5、提取hardexample的hog特征并结合第一步中的特征一起投入训练,得到终于检測子。
深入研究hog算法原理:
一、hog概述
hog是05年一位nb的博士提出来的,论文链接 http://wenku.baidu.com/view/676f2351f01dc281e53af0b2.html
最终到10月了,最终能够松一口气了,整理一下hog的算法流程。
x 块中的胞元数 x 每个胞元相应的特征向量数。
(16/8)*(16/8) =4个胞元,到这里我们能够看到要求最后须要的维数n,仅仅须要计算每个胞元相应的向量,这个參数在哪呢?别急,我们把每个胞元投影到9个bin(怎样投影?这里卡了非常长一段时间,后面会说),那么每个胞元相应的向量就是9维,每个bin相应该9维向量的一个数,如今看一下是不是计算窗体维数的三个需求量都知道了,n = 窗体中的块数
x 块中的胞元数 x 每个胞元相应的特征向量数,带入看一下n= 105x4x9 = 3780,这就是这个窗体相应的特征了。有人会说,为什么opencv里的getDefaultPeopleDetector()得到的是3781维呢?这是由于另外一维是一维偏移,(非常崩溃是吧,我也崩溃非常久。。。,下一段解释)。
目标检測的图像特征提取之(一)HOG特征的更多相关文章
- 【从零学习openCV】IOS7下的人脸检測
前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app,总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...
- 利用opencv中的级联分类器进行人脸检測-opencv学习(1)
OpenCV支持的目标检測的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).注意,新版本号的C++接口除了Haar特征以外 ...
- 背景建模或前景检測之PBAS
申明,本文非笔者原创,原文转载自:http://blog.csdn.net/kcust/article/details/9931575 Pixel-Based Adaptive Segmenter(P ...
- 目标检测的图像特征提取(一)HOG特点
1.HOG特点: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检測的特征描写叙述子.它通过计算和统计图像局部区 ...
- paper 80 :目标检测的图像特征提取之(一)HOG特征
1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的 ...
- 目标检测的图像特征提取之(一)HOG特征(转载)
目标检测的图像特征提取之(一)HOG特征 zouxy09@qq.com http://blog.csdn.net/zouxy09 1.HOG特征: 方向梯度直方图(Histogram of Orien ...
- Matlab实现Hough变换检測图像中的直线
Hough变换的原理: 将图像从图像空间变换至參数空间.变换公式例如以下: 变换以后,图像空间与參数空间存在下面关系: 图像空间中的一点在參数空间是一条曲线,而图像空间共线的各点相应于參数空间交于一点 ...
- 图像边缘检測--OpenCV之cvCanny函数
图像边缘检測--OpenCV之cvCanny函数 分类: C/C++ void cvCanny( const CvArr* image, CvArr* edges, double threshold1 ...
- Python下opencv使用笔记(七)(图像梯度与边缘检測)
梯度简单来说就是求导,在图像上表现出来的就是提取图像的边缘(无论是横向的.纵向的.斜方向的等等),所须要的无非也是一个核模板.模板的不同结果也不同.所以能够看到,全部的这些个算子函数,归结究竟都能够用 ...
随机推荐
- CSS3制作苹果风格键盘
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtMAAAEICAIAAAASh+8XAAAgAElEQVR4nOzdaXBU14E3/FPVBVUq5X
- ArcGIS API Reference & Flex API samples学习进度备忘
书签:跳过:另外跳过的内容有待跟进 __________________学习资源: 1.http://help.arcgis.com/en/webapi/flex/apiref/index.html ...
- Time vs Story Points Estimation [转]
One of the most common questions we get is whether to estimate in time or points. It seems like poin ...
- A JavaFX based Game Authoring System
http://www.mirkosertic.de/doku.php/javastuff/javafxgameauthoring ——————————————————————————————————— ...
- Windows Socket 最大连接数
Socket 编程时,单机最多可以建立多少个 TCP 连接,受到操作系统的影响. Windows 下单机的TCP连接数受多个参数影响: 最大TCP连接数 [HKEY_LOCAL_MACHINE \Sy ...
- 在Windows Server2008R2中导入Excel不能使用Jet 4.0的解决方法
一直使用以下代码从Excel中取数据,速度快方便: string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Dat ...
- HTML5-企业宣传6款免费源码
本文主要分享了6个很不错的HTML5宣传模板源码,这些生动具体的介绍了各个公司的产品及公司各类应用,有汽车.旅游.公司,房产等Query特效,大家一起来欣赏吧. 一.九秒教育企业海报(移动端)这次要分 ...
- Codeforces 161 B. Discounts (贪心)
题目链接:http://codeforces.com/contest/161/problem/B 题意: 有n个商品和k辆购物车,给出每个商品的价钱c和类别t(1表示凳子,2表示铅笔),如果一辆购物车 ...
- HDU 5444 Elven Postman (二叉树,暴力搜索)
题意:给出一颗二叉树的先序遍历,默认的中序遍历是1..2.……n.给出q个询问,询问从根节点出发到某个点的路径. 析:本来以为是要建树的,一想,原来不用,其实它给的数是按顺序给的,只要搜结点就行,从根 ...
- C# 实现无标题栏窗体点击任务栏图标正常最小化或还原的解决方法
/// <summary> /// 实现窗体的最小化 /// </summary> protected override CreateParams CreateParams { ...