方向梯度直方图(HOG)

方向梯度直方图(HOG)是一种用于物体检测的特征描述子,尤其在行人检测中表现出色。它通过计算图像局部区域的梯度直方图来描述物体特征,包括颜色空间归一化、梯度计算、直方图统计和对比度归一化等步骤。HOG特征结合SVM在行人检测中的应用由Dalal在2005年提出,并成为后续算法的基础。
摘要由CSDN通过智能技术生成

引言

向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005的CVPR上提出的,而如今虽然有很多行人检测算法不断提出,但基本都是以HOG+SVM的思路为主。

主要思想

一副图像中,局部目标表观和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(其本质在于:梯度的统计信息,而梯度主要存在于边缘的地方,就类似于LBP编码的统计信息,大家都是用直方图来表示)。首先将图像分成小的连通区域,通常称细胞单元(cell)。然后采集胞元中各像素点的梯度的或边缘的方向直方图,最后把这些直方图组合起来就可以构成一种特征描述了。

block

把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。

与其他的特征描述方法相比,HOG有很多优点。首先,由于HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。其次,在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。因此HOG特征是特别适合于做图像中的人体检测的。

HOG特征提取

对检测窗口进行如下操作:


这里写图片描述

1)颜色空间归一化

由于图像的采集环境、装置等因素,采集到的图像效果可能不是很好,容易出现误检或漏检的情况,所以需要对采集到的人脸进行图像预处理,主要是处理光线太暗或太强的情况,这里有两次处理:图像灰度化、Gamma校正。

1、灰度处理
对于彩色图像,将RGB分量转化成灰度图像,其转化公式为:

Gray=0.3×R+0.59×G+0.11×B

2、gamma校正


这里写图片描述

在实际情况下,图像经常会出现照度不均匀、局部阴影等情况,为了达到较好的检测效果,检测器需要对光照不敏感。这里一般使用Gamma校正法对输入图像进行颜色空间的标准化(归一化),从而将图像整体亮度提高或降低,调节图像的对比度,减少图像局部的阴影和光照变化带来的影响,提高算法对光照的鲁棒性。

关于gamma矫正

在实际中可以采用两种不同的方式进行Gamma标准化,平方根、对数法。这里我们采用平方根的办法,公式如下(其中γ=0.5、1/2.2):

f(I)=Iγ

为什么使用gamma矫正?

这里不得不提到韦伯定律,那么,什么是韦伯定律呢?其定义为感觉的差别阈限随原来刺激量的变化而变化,且表现为一定的规律性,即

Φ/Φ=C

其中 Φ 为原刺激量, Φ 为此时的差别阈限, C 为常数,又称为韦伯率。简而言之,就是人对自然界刺激的感知,是非线性的,外界以一定的比例加强刺激,对人来说,这个刺激是均匀增长的。(也就是自然界的一个物理量是非线性变化的,这对于人来说可能是线性的,人通过比较来感知世界),比如:里氏地震级数,每增加一级,释放的物理能量大32倍;声音的强度是按照“分贝”来描述,倍数增加的音量听起来是均匀增加的。其中值得注意一点是,人眼是按照 γ < 1的曲线对输入图像进行处理的。

使用须知

作者在他的博士论文里有提到,对于涉及大量的类内颜色变化,如猫,狗和马等动物,没标准化的RGB图效果更好,而牛,羊的图做gamma颜色校正后效果更好。gamma校正需要适应你的数据,你需要分析你的数据特性,需不需要把图像变亮\暗一点

int main()  
{  
    Mat picture = imread("test.jpg", 0);//灰度  
    Mat img;  
    picture.convertTo(img, CV_32F); //转换成浮点  
    sqrt(img, img);                 //gamma校正  
    normalize(img, img, 0, 255, NORM_MINMAX, CV_8UC1);//归一化像素值[0,255]  
    imshow("原图", picture);  
    imshow("Gamma校正", img);  
    waitKey();  

    return 0;  
}
2)每个像素点的梯度计算(大小、方向)

主要是为了捕获轮廓信息,同时进一步弱化光照的干扰。对经过颜色空间归一化后的图像,求取其梯度及梯度方向。分别在水平和垂直方向进行计算,水平梯度算子: [1 0 1] ,垂直梯度算子: [1 0 1]T

Gx(x,y)=I(x+1,y)I(x1,y)Gy(x,y)=I(x,y+1)I(x,y1)
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值