发明内容
本发明所要解决的技术问题在于提供一种基于多特征点集活动形状模型的头部姿态估计方法,能够降低因少数特征点定位不准对头部姿态估计造成的影响,同时对光照还具有较强的鲁棒性,能够估计出正面、左转、右转、抬头和低头五种头部姿态。
本发明主要根据活动形状模型(Active Shape Model,ASM)算法拟合的对应人脸特征点集在数帧间的位移量,估计出头部姿态,头部姿态的基本思路是:以首帧拟合的正面人脸特征点作为基准点,先通过判断数帧内所有对应特征点在上下左右四个方向上的位移量大小是否超过设定的位移阈值,再统计超过设定位移阈值的特征点数,若大部分特征点都超过某一方向的位移阈值,则说明头部倾向于向这个方向摆动,否则说明头部还处于正面。
为了实现最终的头部姿态估计,本发明提供了一种基于多特征点集活动形状模型的头部姿态估计方法,主要包括如下步骤:
步骤(1)训练ASM模型。训练人脸样本分别得到ASM全局形状模型和局部纹理模型。
步骤(2)采集人脸图像序列。通过光学镜头或CMOS图像传感器组件获取人脸图像序列。
步骤(3)当前帧数判断。如果当前帧等于l的整数倍,则进入步骤(4);否则,跳至步骤(2),l表示帧数。
步骤(4)拟合人脸特征点。具体是:利用步骤(1)获得的ASM全局形状模型和局部纹理模型对步骤(2)采集的人脸图像序列进行n个人脸特征点拟合,将特征点对应的横、纵坐标记录到数组temp_x[n]和temp_y[n]中。
步骤(5)更新基准坐标。具体是:如果步骤(7)估计出的姿态为正脸,则根据公式(1)和(2)更新基准坐标;否则,直接跳到步骤(6)。
fiducial_x[i]=temp_x[i],i∈(0,1,...,n-1) (1)
fiducial_y[i]=temp_y[i],i∈(0,1,...,n-1) (2)
这里,基准坐标fiducial_x[n]、fiducial_y[n]分别表示更新后的n个正面人脸特征点对应的横、纵坐标。初始化时,将首帧拟合得到的n个正面人脸特征点横纵坐标作为基准坐标。
步骤(6)计算各个特征点的位移量并统计出超过位移阈值的特征点数。具体是:将步骤(4)中的人脸特征点坐标分别与基准坐标作差得到每个特征点在x、y轴方向上的位移量,若该位移量超过位移阈值Throffset,则该方向移动的特征点数加1。
位移阈值的计算公式为
Throffset=η×widthface (3)
式中,η是比例因子,当η∈[0.08,0.12]时可获得较好效果;widthface是拟合人脸的宽度。
步骤(7)根据统计出的特征点数及位移方向估计出头部姿态。具体是:若步骤(6)中某方向上统计出的特征点数大于阈值Num,则判断头部往该方向偏转;若特征点数在四个方向上都没有超过该阈值,则判断人脸处于正面。该步结束后,返回步骤(2)。
阈值Num的计算方法为
Num=ζ×n (4)
式中,n为人脸标定的特征点数,ζ为比例系数。为了获得好的效果,ζ取0.8。
本发明的有益效果:利用人脸多特征点集的信息变化来估计头部姿态。也就是说,本发明通过统计超过位移量的特征点数,达到一定阈值时,就可以估计出头部姿态,从而克服单一或少数特征点因环境等因素定位不准而造成的头部姿态错估计,最终提高头部姿态估计的准确率。
具体实施方式
以下结合附图对本发明作进一步说明。
ASM是建立在点分布模型(Point Distribution Model,PDM)的基础上,通过训练图像样本获取样本中特征点分布的统计信息,并且获取特征点允许存在的变化方向,实现在目标图像上寻找对应特征点的位置。训练样本需要手动标记所有的特征点位置,记录特征点的坐标,并且计算每一个特征点所对应的局部灰度模型作为局部特征点调整用的特征向量。再将训练好的模型放在目标图像上,寻找每一个特征点的下一个位置。采用局部灰度模型寻找在当前特征点指定方向上局部灰度模型马氏距离最小的特征点,并作为当前特征点的下一个位置,这个位置称为兴趣点,找到所有兴趣点就可以获得一个搜索的感兴趣形状,然后将当前的模型通过参数调整到感兴趣形状,重复迭代直到实现收敛。
ASM的优势主要体现在:第一,它是可变性模型,克服了以往刚体模型的缺点,能很好的适应复杂形状的目标定位,有良好的适应性;第二,它是参数化的模型,通过改变参数可以产生一定约束范围内可容许的形状样本,保持形状的特异性;第三,充分利用了物体的纹理信息建立局部纹理模型,再结合全局形状模使得定位更加准确。而本发明综合了ASM的优势,训练得到全局形状模型和局部纹理模型,有利于下一步头部姿态的准确估计。
如图1所示,为本发明所述的基于多特征点集ASM的头部姿态估计方法流程框图。本方法的实施主要包括以下六个步骤:(1)训练人脸样本分别得到ASM全局形状模型和局部纹理模型;(2)通过光学镜头或CMOS图像传感器组件获取人脸图像序列;(3)当前帧数判断。如果当前帧等于l的整数倍,则进入(4);否则,跳至(2);(4)拟合人脸特征点。利用(1)获得的ASM全局形状模型和局部纹理模型对(2)采集的人脸图像序列进行n个人脸特征点拟合,将特征点对应的横、纵坐标内存中;(5)更新基准坐标。如果(7)估计出的姿态为正脸,则更新基准坐标;否则,进入下一步;(6)计算各个特征点的位移量并统计出超过位移阈值的特征点数;(7)根据统计出的特征点数及位移方向估计出头部姿态,并返回(2)。下面逐一对各步骤进行详细说明。
步骤(1):ASM全局形状模型和局部纹理模型的建立。
训练ASM全局形状模型和局部纹理模型都需要预先知道人脸轮廓信息。因此,本发明选择在眼角、嘴角、眼睛、鼻子、嘴巴和人脸外轮廓边界上手工标定n=68个特征点,如图2所示。
本发明的手工标注遵循以下两点原则:1)每幅图像标注的特征点位置必须相同;2)标注特征点的顺序也必须相同。
这样便得到所有训练样本的样本点集合{Xi}{Xi},则第i个训练样本是
Xi=(xi0,yi0,xi1,yi1,...,xik,yik,...,xi(n-1),yi(n-1))T (1)
其中Xi是一个大的列向量,(xik,yik)<k=0,1,...,n-1>表示第i个训练样本中按照一定顺序排列的特征点坐标值。
然后将人脸形状向量进行旋转、缩放和平移操作来实现归一化处理,并通过主元分析(PCA)方法得到最终的全局形状模型m:
式中,
为样本集的平均形状向量;μ
i为PCA分析所得到的特征点所对应的特征向量;p
i对应了在相应向量方向上的变化程度,也就是说,改变p
i就能生成对应的新形状;t<n。
从式(2)中可以看出,训练集中的任何一个形状向量都可以通过平均形状和形状参数变化来近似表示。为了控制拟合的程度,防止形变程度太剧烈,我们将pi的取值设定在-2.5λi≤pi≤2.5λi之间。
局部纹理模型是通过统计训练样本人脸图像上特征点局部纹理的灰度采样值而建立的。设gij是第j个训练样本图像的第i个特征点,沿着第i个特征点,找到其前后两个特征点i-1,i+1,再沿着i-1,i+1这两个特征点连线方向的法线方向,分别在第i个特征点的两侧找m个点,构成2m+1长度的向量,作为第i个特征点的灰度信息,其表示方法为:
gji=(gji,1,gji,2,...,gji,2m+1) (3)
然后用归一化的灰度梯度向量来表示灰度信息,目的是为了减少样本易受光照的影响。这样,每个特征点都会得到一个局部纹理模型g
i,再通过计算各个特征点对应的平均纹理模型
和协方差矩阵S
i,最终得到局部纹理模型。步骤(2):人脸图像序列的采集。
人脸图像序列通过光学镜头或CMOS图像传感器组件获取。
步骤(3):当前帧数判断。
如果当前帧等于l的整数倍,则进入步骤(4);否则,跳至步骤(2)。
需要说明的是,如果取相邻两帧拟合的人脸特征点坐标进行比较的话,
即使头部正在往某一个方向摆动,其位移量也较小,不能顺利地判断出头部的摆动方向,而隔数帧后,头部的变化相对较大。所以,本发明取l=7,即每隔7帧进行一次头部姿态估计。
步骤(4):人脸特征点的拟合。
考虑到由于环境变化的影响,ASM人脸特征点拟合算法并不能完全准确地拟合出所有特征点,因此,本发明通过手工标定n=68个特征点来提高姿态估计的准确性,如图2所示。
ASM人脸特征点拟合算法首先是建立在人脸大致位置已知的基础上进行的,因此需要初始化人脸形状模型,本发明使用基于Haar-like的Adaboost人脸分类器检测出人脸,再将根据全局形状模型得到的平均形状向量(即,式(2)中pi=0,就得到平均形状向量)置于已检测到的人脸位置附近,实现初始模型的初始化。
然后将初始形状特征点的局部纹理与原纹理模型进行马氏距离匹配,选择距离最小的点最为最佳候选点,并根据统计出的新特征点与原特征点之间的位移矢量,通过修改旋转、缩放和平移量来调整当前模型的参数,使得调整以后的模型与目标模型的位置最为接近。再将新得到的特征点局部纹理与与原纹理模型进行马氏距离匹配,再一次得到新形状,以此类推,直到新形状与原形状的变化足够小,或者达到最大迭代次数,搜索和定位算法结束,得到最终拟合的人脸特征点。
这里所谓的新形状与原形状的变化足够小,就是先判断对应特征点的距离是否在某一邻域范围内,若是,则说明对应两个特征点的位置没有发生变化;然后再判断是否一定数量的对应特征点位置没有发生变化,若是则说明新形状与原形状的变化足够小。
最后将拟合得到的人脸特征点横、纵坐标记录到数组temp_x[n]和temp_y[n]中。
步骤(5):更新基准坐标。
如果步骤(7)估计出的姿态为正脸,则根据公式(4)和(5)更新基准坐标;否则,直接进入步骤(6)。
fiducial_x[i]=temp_x[i],i∈(0,1,...,n-1) (4)
fiducial_y[i]=temp_y[i],i∈(0,1,...,n-1) (5)
这里,基准坐标fiducial_x[n]、fiducial_y[n]分别表示更新后的n个正面人脸特征点对应的横、纵坐标。初始化时将首帧拟合的n个正面人脸特征点横纵坐标作为基准坐标。
步骤(6):计算各个特征点的位移量并统计出超过位移阈值的特征点数。
分别将步骤(4)对应的temp_x[n]和temp_y[n]与基准坐标fiducial_x[n]和fiducial_y[n]作差,得到每个特征点在x轴和y轴的正负半轴四个方向上的位移量。
比较已得到的四个方向上的位移量和位移阈值,若位移量超过所对应的位移阈值,则往该方向移动的特征点数加1,这样就可以统计出向四个方向移动的特征点数目。
需要说明的是,这里的位移阈值是动态设定的。因为,头部在摆动过程中难免会出现前后晃动,头部和固定的摄像头的距离就会发生变化,这样,屏幕上所成像的整个人脸大小就会发生变化。若用固定位移阈值的话,无论头部远离摄像头还是接近摄像头,都会造成误判断。因此,本发明根据人脸拟合宽度来动态的设定位移阈值来克服这些不确定因素,使得识别效果达到最佳,位移阈值的计算公式为:
Throffset=η×widthface (6)
式中,η是比例因子,多次实验结果表明当η∈[0.08,0.12]范围时,识别效果最佳;widthface是拟合人脸的宽度,也就是图2中第1和13特征点的横坐标距离。
步骤(7):头部姿态估计。
根据统计出的特征点数及位移方向估计出头部姿态。
由于环境光照变化和拟合精度的影响,当头部往某一方向偏转时,并非所有特征点的位移量都超过对应的位移阈值,本发明中,规定只要一定量特征点的位移量超过对应的位移阈值,就可以认为头部往某一方向偏转。这里,若步骤(6)中某方向上统计出的特征点数大于阈值Num,则判断头部往该方向偏转,如图3(b)、3(c)、3(d)、3(e)所示。若特征点数在四个方向上都没有超过该阈值,则判断人脸处于正面,如图3(a)所示。该步结束后,返回步骤(2)。
阈值Num的计算方法为:
Num=ζ×n (7)
式中,n为人脸标定的特征点数,ζ为比例系数。为了获得好的效果,ζ取0.8。也就是有80%的特征点位移量超过位移阈值,就可断定头部往某一方向偏转。若特征点数在四个方向上都没有超过标定点总数的80%,则表示当前人脸处于正面。