HOG特征描述算子-行人检测

HOG特征描述算子-行人检测

  • 简介与说明
  • HOG特征HOG特征简介
  • HOG特征的原理
    • 图像预处理
    • 计算图像梯度
    • Block 归一化
    • 获得HOG描述子
  • 经验总结

简介与说明

今次学习主要与一种在深度学习的图像特征提取技术——方向梯度直方图,为HOG特征,曾发表于CVPR的会议上,对手工图像特征的 方面有非常重要作用。被广泛用于行人检测领域。

HOG特征HOG特征简介

HOG特征属于图像提取的局部特征。对图像局部的梯度幅值和方向进行投票统计。形成基于梯度特性的直方图,然后将局部特征拼接起来作为总特征。局部特征在这里指的是将图像划分为多个子块(Block), 每个Block内的特征进行联合以形成最终的特征。
在这里插入图片描述

HOG特征的原理

图像预处理

预处理包括灰度化和Gamma变换。

灰度处理是可选操作,因为灰度图像和彩色图像都可以用于计算梯度图。对于彩色图像,先对三通道颜色值分别计算梯度,然后取梯度值最大的那个作为该像素的梯度。

然后进行伽马矫正,调节图像对比度,减少光照对图像的影响(包括光照不均和局部阴影),使过曝或者欠曝的图像恢复正常,更接近人眼看到的图像。

伽马矫正公式:

f ( I ) = I γ f(I)=I^\gamma f(I)=Iγ

I I I表示图像, γ \gamma γ表示幂指数。

如图,当 γ \gamma γ取不同的值时对应的输入输出曲线( γ = 1 \gamma=1 γ=1时输入输出保持一致) :
1) 当 γ < 1 \gamma<1 γ<1时,输入图像的低灰度值区域动态范围变大,进而图像低灰度值区域对比度得以增强;在高灰度值区域,动态范围变小,进而图像高灰度值区域对比度得以降低。 最终,图像整体的灰度变亮。

2) 当 γ > 1 \gamma>1 γ>1时,输入图像的高灰度值区域动态范围变小,进而图像低灰度值区域对比度得以降低;在高灰度值区域,动态范围变大,进而图像高灰度值区域对比度得以增强。 最终,图像整体的灰度变暗。

计算图像梯度

为了得到梯度直方图,那么首先需要计算图像水平方向和垂直方向梯度。
一般使用特定的卷积核对图像滤波实现,可选用的卷积模板有:soble算子、Prewitt算子、Roberts模板等等。

一般采用soble算子,OpenCV也是如此,利用soble水平和垂直算子与输入图像卷积计算 d x dx dx d y dy dy

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

进一步可以得到图像梯度的幅值:

在这里插入图片描述

为了简化计算,幅值也可以作如下近似:

在这里插入图片描述

角度为:

在这里插入图片描述

这里需要注意的是:梯度方向和图像边缘方向是互相正交的。

在这里插入图片描述

Block 归一化

图像被分成若干个8×8的cell,例如我们将图像resize至64x128的大小,那么这幅图像就被划分为8x16个8x8的cell单元,并为每个8×8的cell计算梯度直方图。当然,cell的划分也可以是其他值:16x16,8x16等,根据具体的场景确定。

在计算梯度直方图,让我们先了解一下为什么我们将图像分成若干个cell?

这是因为如果对一整张梯度图逐像素计算,其中的有效特征是非常稀疏的,不但运算量大,而且会受到一些噪声干扰。于是我们就使用局部特征描述符来表示一个更紧凑的特征,计算这种局部cell上的梯度直方图更具鲁棒性。

以8x8的cell为例,一个8x8的cell包含了8x8x2 = 128个值,因为每个像素包括梯度的大小和方向。

在HOG中,每个8x8的cell的梯度直方图本质是一个由9个数值组成的向量, 对应于0、20、40、60…160的梯度方向(角度)。那么原本cell中8x8x2 = 128个值就由长度为9的向量来表示,用这种梯度直方图的表示方法,大大降低了计算量,同时又对光照等环境变化更加地鲁棒。

获得HOG描述子

每一个16 * 16大小的block将会得到一个长度为36的特征向量,并进行归一化。 那会得到多少个特征向量呢?

例如,对于上图被划分8 * 16个cell ,每个block有2x2个cell的话,那么cell的个数为:(16-1)x(8-1)=105。即有7个水平block和15个竖直block。

每个block有36个值,整合所有block的特征值,最终获得由36 * 105=3780个特征值组成的特征描述符,而这个特征描述符是一个一维的向量,长度为3780。

获得HOG特征向量,就可以用来可视化和分类了。对于多维的HOG特征,SVM就可以排上用场了。

经验总结

HOG描述的是边缘结构特征,可以描述物体的结构信息
对光照影响不敏感
分块的处理可以使特征得到更为紧凑的表示
特征描述子获取过程复杂,维数较高,导致实时性差
遮挡问题很难处理
对噪声比较敏感
【1】https://github.com/datawhalechina/team-learning/blob/master/

你可能感兴趣的:(cv,学习笔记,opencv,机器学习,计算机视觉)