HOG特征-理解篇
网上去找关于HOG的资料,发现理解性的较少,并且较为冗长,为方便大家理解便自己写了篇,希望能对奋斗在特征提取第一线的同志们有所帮助:
HOG即histogram of oriented gradient, 是用于目标检測的特征描写叙述子,该技术将图像局部出现的方向梯度次数进行计数,该方法和边缘方向直方图、scale-invariant feature transform类似,不同的是hog的计算基于一致空间的密度矩阵来提高准确率。Navneet Dalal and Bill Triggs首先在05年的CVPR中提出HOG,用于静态图像or视频的行人检測。
HOG特征原理:
HOG的核心思想是所检測的局部物体外形可以被光强梯度或边缘方向的分布所描写叙述。通过将整幅图像切割成小的连接区域(称为cells),每一个cell生成一个方向梯度直方图或者cell中pixel的边缘方向,这些直方图的组合可表示出(所检測目标的目标)描写叙述子。为改善准确率,局部直方图可以通过计算图像中一个较大区域(称为block)的光强作为measure被对照标准化,然后用这个值(measure)归一化这个block中的全部cells.这个归一化过程完毕了更好的照耀/阴影不变性。
与其它描写叙述子相比,HOG得到的描写叙述子保持了几何和光学转化不变性(除非物体方向改变)。因此HOG描写叙述子尤其适合人的检測。
通俗的讲:
HOG特征提取方法就是将一个image:
1. 灰度化(将图像看做一个x,y,z(灰度)的三维图像)
2. 划分成小cells(2*2)
3. 计算每一个cell中每一个pixel的gradient(即orientation)
4. 统计每一个cell的梯度直方图(不同梯度的个数),就可以形成每一个cell的descriptor
再小谈下Hog、SIFT与PCA-SIFT的应用与差别:
Hog没有旋转和尺度不变性,因此计算量小;而SIFT中每一个feature须要用128维的向量来描写叙述,因此计算量相对非常大。
那么行人检測中怎么应用HOG呢?
对于解决Scale-invariant 的问题:将图片进行不同尺度的缩放,就相当于对模板进行不同尺度scale的缩放
对于解决Rotation-invariant 的问题:建立不同方向的模版(一般取15*7的)进行匹配
总的来说,就是在不同尺度上的图像进行不同方向的模板(15*7)匹配,每一个点形成一个8方向的梯度描写叙述。
SIFT因为其庞大计算量不用与行人检測,而PCA-SIFT的方法过滤掉非常多维度的信息,仅仅保留20个主分量,因此仅仅适用于行为变化不大的物体检測。
method |
Time |
Scale |
Rotation |
Blur |
Illumination |
Affine |
Sift |
common |
best |
best |
common |
common |
good |
PCA-sift |
good |
good |
good |
best |
good |
best |
Surf |
best |
common |
common |
good |
best |
good |
关于sift的其它解说:
http://blog.csdn.net/abcjennifer/article/details/7639681
http://blog.csdn.net/abcjennifer/article/details/7372880
http://blog.csdn.net/abcjennifer/article/details/7365882
关于computer vision的很多其它讨论与交流,敬请关注本博客和新浪微博Sophia_qing。
相关文章
- 我对java String的理解 及 源码浅析
- 理解java的 多态
- 理解Python中的装饰器
- 深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存
- 彻底理解PHP的SESSION机制
- Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结
- ML之二分类预测:以岩石水雷数据集(RockMine)为例从0到1深入理解科学预测之分类问题的思路框架(特征工程详细步骤(特征分析与特征处理)+分类模型设计)
- HOG特征-理解篇
- 消息队列的简单理解与各种消息队列的对比
- 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来
- 对Fiber架构的理解?解决了什么问题?
- 理解CNN中的特征图 feature map