HOG特征

来源:互联网 发布:股市数据接口 编辑:程序博客网 时间:2024/05/05 16:51


因为HOG特征在自己的学习过程中应用非常广泛,一直想把它搞懂。在网上找了很久,也没有找到一篇合适的文章。所以想自己动手,参照别人的一些文章,把这个问题搞得清楚一点。

HOG descriptors是计算机视觉和图像处理领域用于目标检测的特征描述器。在较小的细胞区域内首先计算图像局部梯度的方向信息,然后对所得梯度及其方向信息进行统计,最后得到梯度方向直方图特征,从而对图像中的目标进行检测。HOG描述器是在一个网格密集的、大小统一的细胞单元(dense grid of uniformly spaced cells)上计算。此外,为了提高性能,采用了重叠的局部对比度归一化(overlapping local contrast normalization)技术。个人认为,在所有的操作步骤中,重叠的局部对比度归一化这一点比较难以理解和实施。

HOG描述器最重要的思想是:在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。具体的实现方法是:首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。为了提高性能,我们还可以把这些局部直方图在图像的更大的范围内(区间或block)进行对比度归一化,所采用的方法是:先计算各直方图在这个区间(block)中的密 度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。

算法的实现:

step1 色彩和伽马归一化 (color and gamma normalization)

作者分别在灰度空间、RGB色彩空间和LAB色彩空间上对图像进行色彩和伽马归一化,但实验结果显示,这个归一化的预处理工作对最后的结果没有影响,原因可能是:在后续步骤中也有归一化的过程,那些过程可以取代这个预处理的归 一化。所以,在实际应用中,这一步可以省略。

step2 梯度的计算(Gradient computation)

最常用的方法是:简单 地使用一个一维的离散微分模板(1-D centered point discrete derivative mask)在一个方向上或者同时在水平和垂直两个方向上对图像进行处理,更确切地说,这个方法需要使用下面的滤波器核滤除图像中的色彩或变化剧烈的数据 (color or intensity data)

step3 构建方向的直方图(cell)

为图像的每个细胞单元构建梯度方向直方图。细胞单元中的每一个像素点都为某个基于方向的直方图通道投票。投票是采取加权投票(weighted voting)的方式,即每一票都是带权值的,这个权值是根据该像素点的梯度幅度计算出来。使用幅值来表示权值能获得最佳效果。细胞单元可以是矩形的(rectangular),也可以是星形的(radial)。方向的取值范围为0-pi(无向)或者是pi-2*pi(有向)采用无向的梯度和9个直方图通道,能在行人检测试验中取得最佳的效果。

step4 把细胞单元组合成大的区间-从细胞(cells)到块(blocks)

由于局部光照的变化 (variations of illumination)以及前景-背景对比度(foreground-background contrast)的变化,使得梯度强度(gradient strengths)的变化范围非常大。这就需要对梯度强度做归一化,作者采取的办法是:把各个细胞单元组合成大的、空间上连通的区间(blocks)。 这样以来,HOG描述器就变成了由各区间所有细胞单元的直方图成分所组成的一个向量。这些区间是互有重叠的,这就意味着:每一个细胞单元的输出会多次作用 该单元邻近的细胞单元。区间有两个主要的几何形状——矩形区间(R-HOG)和环形区间(C-HOG)。R-HOG区间大体上是一些方形的格子,它可以有三个参 数来表征:每个区间中细胞单元的数目、每个细胞单元中像素点的数目、每个细胞的直方图通道数目。作者通过实验表明,行人检测的最佳参数设置是:3×3细胞 /区间、6×6像素/细胞、9个直方图通道。作者还发现,在对直方图做处理之前,给每个区间(block)加一个高斯空域窗口(Gaussian spatial window)是非常必要的,因为这样可以降低边缘的周围像素点(pixels around the edge)的权重。

注:C-HOG区间(blocks)可以用四个参数来表征:角度盒子的个数(number of angular bins)、半径盒子个数(number of radial bins)、中心盒子的半径(radius of the center bin)、半径的伸展因子(expansion factor for the radius)。通过实验,对于行人检测,最佳的参数设置为:4个角度盒子、2个半径盒子、中心盒子半径为4个像素、伸展因子为2。前面提到过,对于R- HOG,中间加一个高斯空域窗口是非常有必要的,但对于C-HOG,这显得没有必要。C-HOG看起来很像基于形状上下文(Shape Contexts)的方法,但不同之处是:C-HOG的区间中包含的细胞单元有多个方向通道(orientation channels),而基于形状上下文的方法仅仅只用到了一个单一的边缘存在数(edge presence count)。

区间归一化 (Block normalization)

step5 SVM 分类器(SVM classifier)

把提取的HOG特征输入到SVM分类器中,寻找一个最优超平面作为决策函数。作者采用 的方法是:使用免费的SVMLight软件包加上HOG分类器来寻找测试图像中的行人。

Matlab源码:见TimeHandle的blog

转自:http://www.zhizhihu.com/html/y2010/1690.html

0 0
原创粉丝点击