Hog特征综述

背景

方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。它是一种能够很好地描述图像局部纹理或边缘的方向密度分布的一种特征。Hog特征结合 SVM分类器用于行人检测具有很好效果。

两个概念

像素点梯度与梯度方向

假设图像中像素点(x,y)的像素值为: 
表示水平方向梯度: =  -  
 表示垂直方向梯度: =  -  
(x, y)像素点的梯度幅值跟梯度方向 
表示梯度幅值: =        (A) 
表示梯度方向: =            (B)

梯度方向直方图

如上面公式(B)所计算得到的梯度方向是在0度~360度之间,为了便于统计,我们将360度(2*PI)根据需要分割成若干个bin。例如:分割成12个bin,每个bin包含30度,如果图像中某个像素点的梯度方向计算为26度,我们就把0~30度这个bin计数加一个权值,如果某个像素点的梯度方向计算为45度,我们就把30~60度这个bin计数加一个权值,这个权值取这个像素点的梯度幅值。依此类推,我们就统计了图像的梯度方向直方图,如下图: 

Hog特征实现方法

综述

Hog特征提取的过程:把样本图像分割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在落在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元(cell)。最后将所有块的特征串联起来就形成了图像中目标的Hog特征。例如,对于64*128的图像而言,每2*2的单元(16*16的像素)构成一个块,每个块内有4*9=36个特征,以8个像素为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口。也就是说,64*128的图片,总共有36*7*15=3780个特征。

具体步骤

在实际目标检测过程中,除了上面提到的HOG特征提取过程,还包括彩图转灰度,亮度校正等步骤。总结一下,在目标检测中,HOG特征计算主要的步骤: 
(1)将输入的彩图转换为灰度图: 
   目的是方便计算梯度,弱化颜色对梯度的影响,也可以用三通道图像中梯度最大的通道来计算; 
(2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化): 
   目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰; 
(3)用公式(A)、(B)计算单元中每个像素点梯度: 
   主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。 
(4)按上述描述将检测窗口划分成很多单元cells(例如6*6像素/cell),将相邻的几个cells组成块(例如3*3个cell/block)。 
(5)将梯度投影到单元的梯度方向: 
   目的是为局部图像区域提供一个编码, 
(6)将所有单元格在块上进行归一化: 
   归一化能够更进一步对光照、阴影和边缘进行压缩,通常,每个单元格由多个不同的块共享,但它的归一化是基于不同块的,所以计算结果也不一样。因此,一个单元格的特征会以不同的结果多次出现在最后的向量中。我们将归一化之后的块描述符就称之为HOG描述符。 
(7)收集得到检测窗口块的HOG特征: 
   该步骤就是将检测窗口中所有重叠的块进行HOG特征的收集,并将它们结合成最终的特征向量供分类使用。

如下图:: 

Opencv中Hog特征

opencv中关于hog特征的源码文件是Objdetect.hpp,其中HOGDescriptor结构体表述了Hog特征类。在默认情况下,winSize(64,128)表示检测窗口大小宽64,高128;blockSize(16,16)表示块的大小,宽16,高16;blockStride(8,8)表示块的滑动步长为水平方向8垂直方向8;cellSize(8,8)表示单元的大小,宽8高8;nbins(9)表示将梯度方向的360度划分成9个bins来统计直方图。

如下图形象的表示了opencv中Hog特征的提取方式: 
 
 

感谢::: 
http://blog.csdn.net/xw20084898/article/details/21078801 
http://www.cnblogs.com/hrlnw/archive/2013/08/06/2826651.html 
http://blog.csdn.net/liulina603/article/details/8291093 
http://blog.csdn.net/abcjennifer/article/details/7365651 
http://blog.csdn.net/zouxy09/article/details/7929348/ 
http://blog.csdn.net/raodotcong/article/details/6239431

机器学习 之 Hog特征相关推荐

  1. 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算

    使用opencv作物件识别(一) -- 积分直方图加速HOG特征计算 博客分类: 图像识别.机器学习.数据挖掘 CC++C#  方向梯度直方图(Histograms of Oriented Gradi ...

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

    1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的 ...

  3. 【机器学习】HOG+SVM进行车辆检测的流程及源码

    在进行机器学习检测车道线时,参考了这篇博文,基于LBP+SVM实现了车道线检测的初步效果.觉得讲解很到位,代码也容易理解和修改,故在此分享,供更多人学习. HOG SVM 车辆检测 近期需要对卡口车辆 ...

  4. 基于HOG特征的Adaboost行人检测

    原地址:http://blog.csdn.net/van_ruin/article/details/9166591 1.方向梯度直方图(Histogramof Oriented Gradient, H ...

  5. image.merge图像有什么变化_图像特征工程:HOG特征描述子介绍

    介绍 在机器学习算法的世界里,特征工程是非常重要的.实际上,作为一名数据科学家,这是我最喜欢的方面之一!从现有特征中设计新特征并改进模型的性能,这就是我们进行最多实验的地方. 世界上一些顶级数据科学家 ...

  6. 图像特征提取三大法宝:HOG特征、LBP特征、Haar-like特征

    (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和 ...

  7. 车牌识别--提取HOG特征

    最近在研究车牌识别,利用到Opencv的ml.hpp,里面实现了各种机器学习算法,包括harrcascade.traincascade.支持向量机SVM提取HOG梯度向量特征,人工神经网络等等,而车牌 ...

  8. 人脸识别之Hog特征+SVM分类器训练与使用

    原文来自:https://juejin.im/post/5b0e70686fb9a00a1451c8e7 计算机视觉-人脸识别(Hog特征+SVM分类器) 一.SVM支持向量机 1.SVM原理 在机器 ...

  9. HOG 特征计算实现

    // 获取HOG直方图 cv::Mat getHog(Point pt,std::vector<Mat> &integrals) {// 判断当前点的位置是否符合条件 if( pt ...

  10. ​HOG特征也可以作为图像重建的目标!FAIRJHU提出新的one-stage自监督预训练模型MaskFeat!...

    ▊ 写在前面 在本文中,作者提出了用于视频模型自监督预训练的掩蔽特征预测(Masked Feature Prediction,MaskFeat).本文的方法首先随机掩蔽输入序列的一部分,然后预测掩蔽区 ...

最新文章

  1. 【组队学习】【29期】Datawhale组队学习内容介绍
  2. 配置yum源并与公网同步更新
  3. Unity编辑器扩展Texture显示选择框
  4. 团队项目个人进展——Day08
  5. [转]浅析DDD(领域驱动设计)
  6. LeetCode 167. 两数之和 II - 输入有序数组(双指针)
  7. JDK,JRE,JVM三者关系
  8. 分别描述TCP的3次握手和四次挥手的定义、目的和过程
  9. Android:浏览器跳转
  10. C# datetime 格式化
  11. Bag-of-words模型-可用于计算文本及图片相似度
  12. Python第3次作业
  13. 关于数据库主键和外键(终于弄懂啦)
  14. 计算机专业学生如何规划好大学四年的学习
  15. 关于Unable to read additional data from server sessionid 0x0问题的解决。
  16. 常见的一些代码编辑器
  17. 分布式和集群的概念区别
  18. erp系统软件到底是干嘛用的?
  19. Docker 容器技术,让你不再为环境而烦恼
  20. 大英百科挂了,维基百科赢了

热门文章

  1. 强化学习_Deep Q Learning(DQN)_代码解析
  2. 在Flask程序中实现GitHub登录和GitHub资源交互
  3. gh-ost 学习笔记
  4. 处理ionic项目中,输入框的光标不自动定位,键盘不弹出的问题
  5. 格式化一个文件的大小(size),或者说是格式化一个app的大小(size)
  6. ffmpeg-20160517-git-bin
  7. 坑爹的RockSaw和坑爹的windows7
  8. Java AJAX开发系列 - 5,ZK参考资料
  9. Windows Phone 7开发人员向导已经发布
  10. 【作业报告】作业5 四则运算 测试与封装 5.1