HOG特征检测算法——原理详解

HOG特征检测算法

原文出处:

N. Dalal, and B. Triggs, Histograms of oriented gradients for human detection, Computer Vision and Pattern Recognition, CVPR 2005, Google Citations: 21911

目的:

最近在学习黄老师的视频处理与分析,其中一节讲到了HOG特征检测算法,该算法是一个非常经典的算法,在这儿将上课学到的知识以及课下查询的知识做一个简单的整理。

HOG算法的流程:

在这里插入图片描述

  • 正则化与伽马校正
    首先判断输入的图像是否为灰度图像,如果不是灰度图像,需要进行图像的转化,具体的公式为:
    在这里插入图片描述
    将转化后的图像进行gama校正与压缩,目的是要改善图像的灰度。在图像照度不均匀的情况下,可以通过Gamma校正,将图像整体亮度提高或降低。如果实验结果没有提升,这一步可以省略。

- 计算梯度
HOG特征检测算法——原理详解_第1张图片
也可以用算子进行卷积运算。

  • 统计梯度直方图
    目的是为局部图像区域提供一个编码,同时能够保持对图像中人体对象的姿势和外观的弱敏感性。HOG特征检测算法——原理详解_第2张图片
    - block的计算

这里假设图像为128 * 64像素,选择8 * 8为一个cell,2 * 2个cell为一个block,那么计算当前有多少个block会有一个固定的公式为:
[(128-8x2)/8+1]x[(64-8x2)/8+1]由计算公式可以看出块的移动步长为1,块是有重叠的,而不是并行排列的。

- cell
将图像划分成若干个cells(单元),8x8=64个像素为一个cell,相邻的cell之间不重叠。在每个cell内统计梯度方向直方图,将所有梯度方向划分为9个bin(即9维特征向量),作为直方图的横轴,角度范围所对应的梯度值累加值作为直方图纵轴,每个bin的角度范围如下。
HOG特征检测算法——原理详解_第3张图片一般来说,不加改进的HOG算法一般是不考虑正反方向的,那么故可以理解上图。
如上图所示:例如:如果这个像素的梯度方向是20-40度,直方图第2个bin的计数就加一,这样,对cell内每个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),就可以得到这个cell的梯度方向直方图了,就是该cell对应的9维特征向量(因为有9个bin)。
像素梯度方向用到了,那么梯度大小呢?梯度大小就是作为投影的权值的。例如说:这个像素的梯度方向是20-40度,然后它的梯度大小是2(假设啊),那么直方图第2个bin的计数就不是加一了,而是加二(假设啊)。
如果恰巧落在了边缘上可以设定一种规则即可。

HOG特征检测算法——原理详解_第4张图片
局部特征的采样区域尝试了矩形和圆形两种方式,圆形局部特
征区域的采样方式基于这样一个事实- 即灵长类视觉神经细胞
感受野的形状为圆形,但实验结果并没有体现出更好的效果,
矩形由于计算的方便性,而成为一般的局部采样方式。

  • 直方图归一化处理:
    由于光照、对比度的局部差异,梯度强度在图像上的分布不均匀,因此需要进行归一化,以平衡整个检测窗口内的不同块的直方图分布。
    必须要注意的一点是局部归一化全局归一化不起作用。

- 用分类器进行训练

HOG算法的缺点:

HOG算法采用了太多的参数,参数选择是一个很重要的工作。
HOG算法只能刻画形状信息,受噪声干扰很大。

引用与参考:

【特征检测】HOG特征算法
HOG算法整理(本人)

你可能感兴趣的:(计算机视觉)