热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

HOG特征提取原理and计算步骤,方向梯度直方图

HOG简介方向梯度直方图(HistogramofOrientedGradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子

HOG简介

        方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。        


原理

        其实本质就是梯度的统计信息,而梯度主要存在于边缘的地方。在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。


方法

        Hog特征提取主要依靠于三个参数: 检测窗口、块(block)、细胞单元。假定提取参数为      winSize(64,128), blockSize(16,16), blockStride(8,8), cellSize(8,8),nbins(9)
其中nBins表示在一个胞元(cell)中统计梯度的方向数目,例如nBins=9时,在一个胞元内统计9个方向的梯度直方图,每个方向为180/9=20度

Hog特征提取中最小的统计单位,我们把它叫细胞单元(cell)。采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。

        性能提升 :把每个Block进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。具体步骤中第5点所述。


具体步骤

HOG提取流程图如下

以一个检测窗口提取HOG为例
1. 灰度化
2.Gamma归一化

        采用Gamma校正法对输入图像进行颜色空间的标准化(归一化);目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰;
        其实就是对像素点做 幂率 处理

 梯度大小就是作为投影的权值,比如某个像素的梯度方向是20-40度,然后它的梯度大小是100, 那么直方图第2个bin的计数就在原基础上+100.

5.Block梯度强度归一化
之前就提到了,多个cell组成一个block。
        由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化。归一化能够进一步地对光照、阴影和边缘进行压缩。
        把各个细胞单元组合成大的、空间上连通的区间(blocks)。这样,一个block内所有cell的特征向量串联起来便得到该block的HOG特征。这些区间是互有重叠的,这就意味着:每一个单元格的特征会以不同的结果多次出现在最后的特征向量中。我们将归一化之后的块描述符(向量)就称之为HOG描述符。

 

6.收集HOG特征

        最后一步就是将检测窗口中所有重叠的块进行HOG特征的收集,并将它们结合成最终的特征向量供分类使用。

7.一个图像的HOG特征维数总共有多少呢?

        对于128*64的图像,cell为8*8,2*2个cell组成一个block,则block为16*16,每个像素9个梯度方向,则每个block内有 9*2*2=36,滑动步长为8像素,则水平方向有128/8 -1 =  15个扫描窗口,垂直方向有64/8 -1 = 7个扫描窗口,所以 总共有 36 * 15 * 7 = 3780个特征
        所以HOG特征维数 取决于一个block内有多少个cell和滑动步长


推荐阅读
  • 分类与聚类
    一:分类1:定义分类其实是从特定的数据中挖掘模式,做出判断的过程。分类是在一群已经知道类别标号的样本中,训练一种分类器 ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
  • http:geek.csdn.netnewsdetail127365本系列文章面向深度学习研发者,希望通过ImageCaptionGeneration,一个有意思的具体任务,深入浅出地介 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • 老电影和图片变清晰的秘密!分辨率提升400%的AI算法
    老电影和图片变清晰的秘密!分辨率提升400%的AI算法-如上图,从100x133pix→400x532pix,除了肉眼可见的清晰,拥有可以将分辨率提升400%的技术到底意味着什么 ... [详细]
  • 脑机接口和卷积神经网络的初学指南(一)
    脑机接口和卷积神经网络的初学指南(一) ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了人工智能与工业4.0在智能制造的应用相关的知识,希望对你有一定的参考价值。美国辛辛那提大学特聘讲座教授,美国白宫信息物理系统与美国挑 ... [详细]
  • 搜索:eclipse:ctrlhidea:ctrlshiftf(如果失效,两种方法,搜狗拼音 ... [详细]
  • 在讲胶囊网络之前,首先我们回顾一下我们熟悉的CNN。CNN做了什么事情呢?假设这里有一个卷积核(左图),除了曲线轨迹上的值很 ... [详细]
  • procsysvm该目录下的文件用来优化虚拟内存比较重要的参数如下justin_$uname-aLinuxjustin2.6.32-100.26.2.el5#1SMPTueJan1 ... [详细]
author-avatar
传导网络
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有