Opencv HOG行人检测 源码分析(一)

OpenCV demo演示见本人的另一篇灌水博客 http://blog.csdn.net/soidnhp/article/details/11720801

本人源码分析见 http://blog.csdn.net/soidnhp/article/details/11880425

参考文献:《N. Dalal and B. Triggs, “Histograms of Oriented Gradients for Human Detection,”Proc. IEEE Conf. Computer Vision and Pattern Recognition,2005.》

作者源码: http://pascal.inrialpes.fr/soft/olt/

参考链接 http://www.cnblogs.com/tornadomeet/archive/2012/08/15/2640754.html

一、基本思想

Opencv HOG行人检测 源码分析(一)_第1张图片

     上图是目标检测的基本流程。

     HOG属于特征提取,它统计梯度直方图特征。具体来说就是将梯度方向(0->360°)划分为9个区间,将图像化为16x16的若干个block,每个block在化为4个cell(8x8)。对每一个cell,算出每一点的梯度方向和模,按梯度方向增加对应bin的值,最终综合N个cell的梯度直方图形成一个高维描述子向量。实际实现的时候会有各种插值。

     选用的分类器是经典的SVM。

    检测框架为经典的滑动窗口法,即在位置空间和尺度空间遍历搜索检测。

二、基本概念

      原始图像打完补丁后就直接用固定的窗口在图像中移动,计算检测窗口下的梯度,形成描述子向量,然后就直接SVM了

Opencv HOG行人检测 源码分析(一)_第2张图片

三、HOG算法流程

Opencv HOG行人检测 源码分析(一)_第3张图片

算法流程比较简单:

1、gamma校正

       r=0.5,暗区对比度提高,亮区对比度下降

2、计算梯度

      微分算子[-1 0 1],取RGB通道中模值最大的为该像素点的梯度。

      插值策略:对与该点梯度方向相邻的两个bin按距离进行线性插值。

3 、权值

   高斯权值:与到block中心负相关,对于图中的大圆圈

   cell中心权值:到对称cell中心的“距离”正相关,对应下图中小方块到十字的距离。

  这一部分比较复杂,  每一个像素点还要对cell插值。

1)F,J,G,K区域内的像素点对四个cell都有贡献,比如P4对cell 0 的权重是倒对称cell中心即cell 3的“距离” P4-cell 3 即图中绿色虚线的“长度”,对其它cell 的权值依次类推

2)B,C,E,I,N,O,H,L区域的像素点要对两个cell中心插值。比如P2虽然处在cell 1中,但是对cell 0 也有贡献,对虚线中的红,绿两个十字所在的cell 也有贡献。那对cell 0的权重计算方法同P4。

取到对称cell 中心的 “距离”,即到绿色中心的“距离”。

3)A,D,M,P,区域的点对周围的四个cell也有贡献,但是block覆盖的只有一个cell,自然只要对其本身所在的cell插值即可。比如P1,到对称cell 中心的“距离”,即图中的cell中心。

但是要注意:cell的编号顺序是从上到下,从左到右,即(cell 0 cell 1 cell 2 cell 3)但是四个cell的偏移量存储顺序却是(cell 0 ->cell 2 ->cell 1->cell 3)

  Opencv HOG行人检测 源码分析(一)_第4张图片

这张图没画完,也可以说有错误,大家参加这篇博客吧,http://blog.csdn.net/wobuaishangdiao/article/details/7750723,等找好工作了再来细改

 

 

4、归一化

L2 Hys归一化,比较简单

5、获取整个检测窗口内的所有block的梯度直方图组成一个很高很高维的描述子向量

用查表替代了八重循环,大大减少了时间开销。

最笨的方法是依次循环:

1.检测窗口在输入图像中滑动

2.block在检测窗口win中滑动

3.cell在block中滑动

4.在cell中循环获取像素的梯度值

每一层循环都是2维的这样下来就是八重循环…………子子孙孙无穷尽也

作者通过预先计算好的pixData,blockData基本上化为了3重循环。

1.循环图像中的每一个检测窗口win

2.循环检测窗口内的每一个block

3.循环每一个block中的像素点,getblock()

每一层都是一维。

6、SVM分类

     计算到分类超平面的距离

四、HOG算法OpenCV实现流程

Opencv HOG行人检测 源码分析(一)_第5张图片

五、源码分析

http://blog.csdn.net/soidnhp/article/details/11880425



你可能感兴趣的:(源码,opencv,行人检测,HOG)