2.1.2 人脸特征提取算法

1.基于LBP的特征提取

局部二值模式(Local Binary Pattern,LBP)是由芬兰奥鲁大学的OjalaT教授在1996年提出的,并被用于图像处理领域,实现对纹理局部特征的刻画,之后便被应用于人脸识别领域,并衍生出许多改进的LBP算法,如MLBP等。

基本的LBP描述子是一个3×3的矩阵,以矩阵中间元素的值作为判定阈值,和其周围的另外 8 个像素点进行判别比较,若是比中间元素大则设为 1,若是比中间元素小则设为0。以图像的像素点(xy)为例,公式表示如下:

式中,(xpyp)是和(xy)相邻的p个像素点中的一个,R表示尺度。另外,sign(.)函数被定义为

除中心元素之外的九宫格内的其余8个像素值点经上述判别比较可生成一个8位二进制数序列(一般将其转换成10进制数即所谓的LBP码,该码共256种),如此便可以获得该九宫格内中心元素(像素点)的LBP值,并以此来刻画该矩形框纹理特征,如图2.7(a)所示。

如图 2.7(a)所示,按照某一指定顺序读取二进制数,则 LBP 的值为(10100110)2=166。原图像和得到的LBP图像对比如图2.7(b)所示。

图2.7 LBP算子及图像对比

通常若使用LBP描述子来获取人脸特征,则一般需要和上文所描述的图像分块相结合,如此对各个人脸块进行LBP直方图特征提取,最后将获得的所有块的直方图特征进行组合,形成整体的人脸特征描述符进行人脸识别,具体过程如下:

(1)首先对检测窗口进行分割,一般根据图像的大小不同采用不同的尺寸,以16像素×16像素为例,对一幅80像素×80像素的光学人脸照片则需要进行5×5=25块分割。

(2)对每个小尺度块中的每一个像素点,按照图 2.7 所示规律进行灰度值的比较,确定该像素点的LBP值。

(3)之后逐个统计小区域块的 LBP 特征值,即这种 LBP 值出现的频率,并对其直方图进行必要的归一化处理。

(4)最后对每个尺度块得到的直方图进行组合链接,形成一个独立的特征向量,此时也就得到完整人脸图像的特征向量,上述步骤的具体过程如图2.8所示。

此时,对待检测的素描人脸图像和图像库中的图像进行上述步骤的运算,得到目标特征向量和待比较特征向量,使用向量间的运算关系,便可轻易计算出相似度的大小,然后按照一定的顺序即可完成识别过程。

2.基于Surf算法的特征提取

快速鲁棒特征(Speed-up robust features,Surf)算法由Bay等人[15]在2008年最先提出,它的主要应用领域是计算机视觉领域的人脸验证或识别及 3D 重构[16-19]。Surf算子是由尺度不变特征变换(Scale-invariant feature transform,Sift)算子[20-22]改进而来的,但是又不同于传统的Sift算法。就理论分析而言,一般的Surf特征描述子的运算速度是要超前Sift特征算子的,而且相比于其他算法也具有相当高的鲁棒性。Surf 算子最主要的特性在于 Haar 特征[23]及积分特征Integral image[24]的使用,这极大提升了程序的运算速度,下面简单介绍Surf算法的特征提取过程。

(1)将二维图像转化为Hessian矩阵。

以图像像素作为二元构造函数,则其通过二阶标准高斯滤波器后对应的图像Lxyσ)为

图2.8 分割特征提取过程图

对图像Lxyσ)求二阶偏导数便可获得H矩阵

(2)构建尺度空间。

就计算机视觉而言,尺度空间的概念是通过图像金字塔模型的转换来描述的。Surf 描述子增添了人脸图像核的尺度,并实现了对尺度空间多个图层并行处理,并完全放弃了对图像采取的重复抽样,因此效率得到了提升。

(3)精确定位特征点。

此过程是检测过程,其主要方法是采用与该图层解析度相匹配的滤波器。下面以3×3的滤波器为例,可以得到某尺度层图像的9个特征点,选择其中一个和剩余的8个及相邻层的9×2个特征点比较,形成1对26的精确定位,如图2.9所示。

图2.9 尺度层图像解析

(4)为特征点分配方向值。

鉴于自身具有的旋转不变特性,该算法并不计算其总体的直方图特征,而是对上述粗特征点邻域内Haar小波特征进行计算。具体方法是将该粗点作为中心元素,在直径为12×S(中心元素所处位置的尺度)的邻域圆内,对占有六分之一邻域圆的所有粗特征点在两个方向上求总的Haar响应,这里的两个方向指的是直角坐标系的xy方向。然后为其附加权重,其作用是度量随着离粗特征点距离的变化所提供的贡献大小,远者小,近者大。之后,对该范围内的所有响应进行求和得到新的目标向量,以此统计分析整个邻域圆,确定该粗特征点的主方向。一般来讲,所选取的为最长矢量所指方向。

(5)生成Surf特征点描述子。

生成Surf特征点描述子,常按照以下步骤进行:

① 围绕特征点设置一边长为20×S矩形框(多为方形,便于计算。这里S如第(4)步),该矩形的方向为上述分配的方向值,即主方向(最长矢量所指方向);

② 对该矩形框进行分割,得到4×4个子块,则每个子块的像素为5×5=25,对所有子块的25×16个像素在沿主方向和垂直主方向上求Haar小波特征;

③ 该特征即在水平方向上求和,以及在垂直方向上求和,得到图 2.10 所示的4个值。

图2.10 Surf特征点描述子

上述单个子块有4个值,该矩形区域共16个子块,故而向量维数为16×4=64维,而传统的Sift算法维数为128维,因此Surf算法的运算效率是要优于Sift算法的。

这里有必要说明一下Sift特征描述子的生成过程。

按照图2.11所示,以特征点为中心,取16×16的像素块作为采样区域。把这个16×16的像素区域以4×4大小的像素块划分子块,可以得到16个子块,对于每个子块中的所有像素计算其在图2.11右侧所示的8个方向上的直方图,所以一个子块便可生成一个8维向量,共16个子块,故而得到一个128维的向量,这个向量即为Sift的特征向量。

此外,Sift/Surf 算法一般来说多用于人脸验证方面,而人脸识别和人脸验证一样,均为人脸图像处理领域的一个分支,仍然可以使用上述算法进行匹配识别,效果如图2.12所示。

图2.11 特征点描述子生成

图2.12 Surf匹配效果图示例

从图2.12可以看出,该算法的匹配效果优秀,能够获取到许多特征点,并且上图仅有一条匹配线出现错误,事实证明,该算法是可以使用在图像识别领域的。

3.基于HOG算法的特征提取

除以上所描述的特征提取算法之外,方向梯度直方图(Histogram of Oriented Gradient,HOG)特征自2005年由法国研究者Dalal等人[25]提出之后,便被计算机视觉和图像处理领域广泛使用,其主要用来进行目标物体检测和跟踪。

该算法的本质是统计目标表象及形状的边缘梯度,来计算和统计图像局部区域的梯度方向直方图,其常和支持向量机(Support Vector Machine,SVM)分类器[26]相结合应用于图像识别。下面简单描述 HOG算法实现特征提取的过程。

(1)确定需要HOG特征提取的目标图像或者扫描窗口,这里设为Image;并对其进行相应的灰度化处理。

(2)采用一定的图像配准算法(如 Gamma 校正法)对输入的 Image 进行颜色标准化,调整人脸Image的对比度,降低图像由于自身的因素(如光照影响或阴影等)所造成的影响,且可以削弱噪声的干扰。

(3)对图像的每个像素进行梯度方向及模值计算,捕获图像的轮廓信息,更进一步弱化噪声干扰。

(4)对图像进行小cell单元块的划分,这里设置为6×6像素/cell块,并统计每个cell块的梯度直方图,便得到每个cell块的特征描述子。

(5)组合相应的block块,即将相同数量的cell块进行组合形成block块,这里取 3×3 个 cell/block,同时将其包括在内的特征描述符进行串联得到整个block的特征描述子。

(6)按照第一步的思路,再将所有的 block 块及其特征描述子进行串联,得到整幅图像的 HOG 特征描述子,便可直接用此特征向量来进行相应的分类识别处理。

上述步骤的具体流程图如图2.13所示。

图2.13 HOG特征直方图获取流程图

与其他类型的特征描述算法相比,本算法是在图像局部区域进行的特征提取,可以极大限度缩小图像噪声带来的影响。通过上述流程也可看出,该算法可多次进行 cell 分割,从而得到非常优秀的 HOG 梯度特征描述子,实现图像检测识别。