简书首页

简介

HOG 特征, histogram of oriented gradient, 梯度方向直方图特征, 作为提取基于梯度的特征, HOG 采用了统计的方式(直方图)进行提取. 其基本思路是将图像局部的梯度统计特征拼接起来作为总特征. 局部特征在这里指的是将图像划分为多个Block, 每个Block内的特征进行联合以形成最终的特征. 具体来说:

  • 将图像分块: 以Block 为单位, 每个Block以一定的步长在图像上滑动, 以此来产生新的Block.

  • Block作为基本的特征提取单位, 在其内部再次进行细分: 将Block 划分为(一般是均匀划分)NxN的小块, 每个小块叫做cell.

  • cell是最基本的统计单元, 在cell内部, 统计每个像素的梯度方向, 并将它们映射到预设的M个方向的bin里面形成直方图.

  • 每个Block 内部的所有cell的梯度直方图联合起来并进行归一化处理(L1-norm, L2-Norm, L2-hys-norm, etc), 据说这样可以使特征具有光照不变性. 光照属于加性噪声, 归一化之后会抵消掉关照变化对特征的影响.

  • 所有Block的特征联合起来, 就是最终的HOG特征

  • 这里牵扯到一些技术细节, 比如将局部的梯度方向映射到预设的方向Bin里面需要双线性插值或三线性插值. 某点的梯度方向的映射是按照改点的梯度强度进行加权的.

实现

基于python的scikit-image库提供了HOG特征提取的接口:

from skimage import feature as ft
features = ft.hog(image,  # input imageorientations=ori,  # number of binspixels_per_cell=ppc, # pixel per cellcells_per_block=cpb, # cells per blcokblock_norm = 'L1', #  block norm : str {‘L1’, ‘L1-sqrt’, ‘L2’, ‘L2-Hys’}transform_sqrt = True, # power law compression (also known as gamma correction)feature_vector=True, # flatten the final vectorsvisualise=False) # return HOG map

参数说明:

  • image: input image, 输入图像

  • orientation: 指定bin的个数. scikit-image 实现的只有无符号方向.
    (根据反正切函数的到的角度范围是在-180°~ 180°之间, 无符号是指把 -180°~0°这个范围统一加上180°转换到0°~180°范围内. 有符号是指将-180°~180°转换到0°~360°范围内.)
    也就是说把所有的方向都转换为0°~180°内, 然后按照指定的orientation数量划分bins. 比如你选定的orientation= 9, 则bin一共有9个, 每20°一个:
    [0°~20°, 20°~40°, 40°~60° 60°~80° 80°~100°, 100°~120°, 120°~140°, 140°~160°, 160°~180°]

  • pixels_per_cell : 每个cell的像素数, 是一个tuple类型数据,例如(20,20)

  • cell_per_block : 每个BLOCK内有多少个cell, tuple类型, 例如(2,2), 意思是将block均匀划分为2x2的块

  • block_norm: block 内部采用的norm类型.

  • transform_sqrt: 是否进行 power law compression, 也就是gamma correction. 是一种图像预处理操作, 可以将较暗的区域变亮, 减少阴影和光照变化对图片的影响.

  • feature_vector: 将输出转换为一维向量.

  • visualise: 是否输出HOG image, (应该是梯度图)

  • scikit-image 版的HOG 没有进行cell级别的gaussian 平滑, 原文对cell进行了gamma= 8pix的高斯平滑操作.

    [作者原文] Dalal, N and Triggs, B, Histograms of Oriented Gradients for Human Detection, IEEE Computer Society Conference on Computer Vision and Pattern Recognition 2005 San Diego, CA, USA,https://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf, DOI:10.1109/CVPR.2005.177

HOG 特征的提取--基于scikit-image相关推荐

  1. 目标检测(三)传统目标检测与识别的特征提取——基于HOG特征的目标检测原理

    目录 简介 提取HOG特征的步骤 1.预处理获取要计算其特征的输入图像 2.计算图像的梯度 3.计算8×8细胞梯度直方图 4.直方图归一化 5.计算HOG特征向量 Opencv利用HOG特征实现行人检 ...

  2. 一文理解图像处理之HOG特征

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 HOG特征学习 1.特征描述 特征描述符是图像或图像块的表示,其通过提取有用信息和丢弃无关信息来简化图像. 通常,特 ...

  3. 人脸检测(八)--HOG特征原理及实现

     原文: http://blog.csdn.net/icvpr/article/details/8454527 1)HOG特征的原始文献 "Histograms of Oriented ...

  4. Opencv3.0 手写数字识别(Hog特征+SVM分类器)

    配置:VS2013+Opencv3.0 参考: http://blog.csdn.net/iamzhangzhuping/article/details/51254567 http://blog.cs ...

  5. 基于HSV+HOG特征和SVM的人脸口罩检测算法

    基于HSV+HOG特征和SVM的人脸口罩检测算法 基于python语言编写,使用retinaface检测人脸和定位五个特征点,利用特征点进一步定位口鼻区域,提取该区域的HSV特征和HOG特征,使用SV ...

  6. (上)基于提升HOG特征的自动多斑马鱼跟踪 Automatic multiple zebrafish tracking based on improved HOG features

    www.nature.com/scientificreports scientific reports 二区 摘要 As an excellent model organism, zebrafish ...

  7. 【交通标志识别】基于matlab HOG特征机器学习交通标识识别【含Matlab源码 2200期】

    一.SVM路标检测识别简介 1 路标识别 完整的路标识别系统包括:图像的获取与预处理,图像分割(路标定位),特征提取,模式分类(路标识别)等部分.其中模式分类是系统的关键技术.较常用的模式分类方法是神 ...

  8. ZippyPoint: 一种基于学习的特征点提取+二进制描述子,速度提升5倍+,为移动平台提供一种ORB的替代方案...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Realcat 来源丨 计算机视觉SLAM 作者来自ETHZ Computer Vision实验 ...

  9. 图像haar特征提取 c语言,基于C语言的特征点提取程序 本程序是利用C语言对各种信号数据的特征点提取程序 - 下载 - 搜珍网...

    基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ilk 基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ob ...

最新文章

  1. 怎么把快捷键改成eclipse_Java IDE超好用的10个快捷键
  2. mysql+enable+sql+log_CentOS7下利用rsyslog+loganalyzer配置日志服务器及Linux和windows客户端配置...
  3. 爬虫学习--豆瓣top250
  4. MySQL查询时通过修改字段的排序规则来忽略大小写的操作讲解
  5. 【全链路质量监控与QoE】
  6. 基于Echarts的HTML5 Canvas折线图柱状图DEMO演示
  7. 漫画:什么是MD5算法
  8. MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔
  9. 图解算法学习笔记(四):快速排序
  10. ICCV2021 | 最新ICCV2021论文抢先看,附全部下载链接!ICCV2021下载
  11. vue生命周期整理学习
  12. PostgreSQL 最佳实践 - 在线增量备份与任意时间点恢复
  13. python语言核心理念是什么_Python 编程语言的核心是什么?
  14. AVG开发过程记录(3) —— 半透明的实现
  15. BZOJ1036[ZJOI2008] 树的统计
  16. python语言是胶水语言吗_为什么只有python是胶水语言?
  17. 2020 IDEA插件无法安装问题
  18. ORA-28100 策略函数方案NCSI无效
  19. $('xx')[0].files[0]的意思
  20. win7虚拟机iOS坑爹法语键盘冲突解决方法

热门文章

  1. 2022年全新数据仓库面试总结大全
  2. 装了oracle 开机卡黑屏,开机黑屏进不了系统,手把手教你解决电脑开机黑屏进不了系统...
  3. 基于复化梯度求积的求积步长自适应matlab实现
  4. JSRUN有什么用?
  5. 利用谷歌语法查找网站后台和数据库
  6. 项目经理的软技能、硬技能
  7. 在线html编辑器 富文本转为html代码
  8. javaScript解决浏览器兼容问题,判断浏览器是ie或者Chrome
  9. 职业规划,如何月入1万、3万、5万、10万?
  10. 人脸检测和识别的开源库总结