首页 » 刷脸背后:人脸检测 人脸识别 人脸检索 » 刷脸背后:人脸检测 人脸识别 人脸检索全文在线阅读

《刷脸背后:人脸检测 人脸识别 人脸检索》7.11 HOG算法

关灯直达底部

HOG,英文全称为Locally Normalised Histogram of Gradient Orientation in Dense Overlapping Grids,即局部归一化的梯度方向直方图,是一种对图像局部重叠区域的密集型描述符,它统计图像的局部区域的梯度方向信息作为局部凸显该区域的表征。具体来说,将梯度方向(0°~360°)划分成9个区间,将图像划分成16×16像素的若干块(Block),每个块再划分成4个8×8像素的单元格(Cell)。对于每一个Cell,计算每一像素点的梯度方向和模,按梯度方向增加对应bin的值,最终综合n个Cell的梯度直方图形成一个高维描述子向量[13-16]。

7.11.1 HOG算法的使用

在Windows 7环境下,安装CodeBlock编译环境,并配置OpenCV。

该算法对应的项目名称是HoG_Project。具体执行步骤如下。

(1)打开HoG_Project文件夹,然后用CodeBlocks打开HoG_Project.cbp文件。

(2)如果不修改输入数据及相关参数,则直接执行(4)。

(3)如果修改数据,则可在主函数中的第一行代码中进行修改:

其中,readImg的第一个参数是图像集的文件名,第二个参数是图像文件的后缀名。

(4)运行HoG.cpp文件即可。

注意:本实验中使用的图像为灰度图,尺寸大小都是相同的。

7.11.2 HOG算法原理

在 OpenCV 中,HOG描述子是针对一个检测窗口而言的,一个窗口有[(128-16)/8+1]×[(64-16)/8+1]=105个Block,一个Block有4个Cell,一个Cell的HOG描述子向量的长度是9,所以一个检测窗口的HOG描述子的向量长度是105×4×9=3780维。文献[15]中给出了HOG算法原理的步骤:

(1)灰度化图像处理。在本实验中,图像集是灰度图,所以该算法代码就没有再对图像一一进行灰度化处理。

(2)计算图像每一个像素的梯度,该梯度包括大小和方向。计算图像横坐标和纵坐标的梯度,在此基础上求每个像素位置的梯度方向值。这一步不仅可以捕获轮廓和纹理信息,还可以进一步弱化光照的影响。

(3)将图像分割成小的Cell。一个Cell是HOG特征最小的结构单位,Block和窗口win的滑动步长就是一个Cell的宽度或高度,因此,需要先把整幅图像分割成一个个的Cell。

(4)为每个Cell构建梯度方向直方图。这是最关键的一步,它主要是统计局部图像梯度信息并进行量化,得到局部图像区域的特征描述向量。

(5)将Cell组成大的Block,然后Block内归一化梯度直方图。这也是很关键的一步。

(6)生成HOG特征描述向量。将所有的Block的HOG描述符组合在一起,形成最终的特征向量,该特征向量描述了检测窗口的图像内容。

在本实验中,我们使用的图像集全部都是灰度图,尺寸大小都是150×200像素。在本实验中检测窗口的大小为64×128像素(其中Block大小为16×16像素,Block的滑动步长为8×8像素,Cell大小为8×8像素,一个Cell内统计9个方向的梯度直方图),窗口滑动步长为64×64像素,扩充像素数为42×56像素。也就是说,宽扩充42个像素点,高扩充56个像素点,因此每一幅图像的检测窗口共有9个,即我们使用3780×9=34 020维度的特征向量表示每一幅图像。于是,我们便得到了每一幅图像的表示,接着进行图像之间的匹配,本算法中我们使用的是欧氏距离度量方法。阈值为16,也就是说,我们认为欧氏距离小于16的图像都是相似图像。

7.11.3 HOG算法实现

我们使用的是OpenCV中的HOG特征提取功能,它使用了HOGDescriptor类的封装。下面程序中的部分代码来自文献[13-16]。

7.11.4 HOG算法的实验数据、实验结果及分析

1.实验数据

实验输入数据为150×200像素的原始图像,数据集路径为“..HoG_Projectimage150×200”。输入的测试图像为文件夹中的第一个图像。实验输出数据为图像的序号和图像之间的距离,输出数据存于“.HoG_ProjectHoG_distance.txt”。

2.实验结果

查询图像如图7-17所示。

图7-17 查询图像(7)

检索出的部分相似图像如图7-18所示。

图7-18 检索出的部分相似图像(7)

以下是HoG_distance.txt的部分内容展示,如表7-7所示。

表7-7 HoG_distance.txt部分内容展示

续表

3.实验分析

从检索结果中我们发现,返回结果并不多,但是结果中的误报数很小(为零),所有返回的图像都与查询相关。本次实验的查准率是37/37×100%=100%,查全率是37/42×100%=88.095%。