HOG 特征的提取--基于scikit-image
简书首页
简介
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相关推荐
- 目标检测(三)传统目标检测与识别的特征提取——基于HOG特征的目标检测原理
目录 简介 提取HOG特征的步骤 1.预处理获取要计算其特征的输入图像 2.计算图像的梯度 3.计算8×8细胞梯度直方图 4.直方图归一化 5.计算HOG特征向量 Opencv利用HOG特征实现行人检 ...
- 一文理解图像处理之HOG特征
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 HOG特征学习 1.特征描述 特征描述符是图像或图像块的表示,其通过提取有用信息和丢弃无关信息来简化图像. 通常,特 ...
- 人脸检测(八)--HOG特征原理及实现
原文: http://blog.csdn.net/icvpr/article/details/8454527 1)HOG特征的原始文献 "Histograms of Oriented ...
- Opencv3.0 手写数字识别(Hog特征+SVM分类器)
配置:VS2013+Opencv3.0 参考: http://blog.csdn.net/iamzhangzhuping/article/details/51254567 http://blog.cs ...
- 基于HSV+HOG特征和SVM的人脸口罩检测算法
基于HSV+HOG特征和SVM的人脸口罩检测算法 基于python语言编写,使用retinaface检测人脸和定位五个特征点,利用特征点进一步定位口鼻区域,提取该区域的HSV特征和HOG特征,使用SV ...
- (上)基于提升HOG特征的自动多斑马鱼跟踪 Automatic multiple zebrafish tracking based on improved HOG features
www.nature.com/scientificreports scientific reports 二区 摘要 As an excellent model organism, zebrafish ...
- 【交通标志识别】基于matlab HOG特征机器学习交通标识识别【含Matlab源码 2200期】
一.SVM路标检测识别简介 1 路标识别 完整的路标识别系统包括:图像的获取与预处理,图像分割(路标定位),特征提取,模式分类(路标识别)等部分.其中模式分类是系统的关键技术.较常用的模式分类方法是神 ...
- ZippyPoint: 一种基于学习的特征点提取+二进制描述子,速度提升5倍+,为移动平台提供一种ORB的替代方案...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨Realcat 来源丨 计算机视觉SLAM 作者来自ETHZ Computer Vision实验 ...
- 图像haar特征提取 c语言,基于C语言的特征点提取程序 本程序是利用C语言对各种信号数据的特征点提取程序 - 下载 - 搜珍网...
基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ilk 基于C语言的特征点提取程序\修改后 特征点提取程序\提取特征点\Debug\football.ob ...
最新文章
- 怎么把快捷键改成eclipse_Java IDE超好用的10个快捷键
- mysql+enable+sql+log_CentOS7下利用rsyslog+loganalyzer配置日志服务器及Linux和windows客户端配置...
- 爬虫学习--豆瓣top250
- MySQL查询时通过修改字段的排序规则来忽略大小写的操作讲解
- 【全链路质量监控与QoE】
- 基于Echarts的HTML5 Canvas折线图柱状图DEMO演示
- 漫画:什么是MD5算法
- MySQL实现当前数据表的所有时间都增加或减少指定的时间间隔
- 图解算法学习笔记(四):快速排序
- ICCV2021 | 最新ICCV2021论文抢先看,附全部下载链接!ICCV2021下载
- vue生命周期整理学习
- PostgreSQL 最佳实践 - 在线增量备份与任意时间点恢复
- python语言核心理念是什么_Python 编程语言的核心是什么?
- AVG开发过程记录(3) —— 半透明的实现
- BZOJ1036[ZJOI2008] 树的统计
- python语言是胶水语言吗_为什么只有python是胶水语言?
- 2020 IDEA插件无法安装问题
- ORA-28100 策略函数方案NCSI无效
- $('xx')[0].files[0]的意思
- win7虚拟机iOS坑爹法语键盘冲突解决方法