确定头部姿态的方法、装置、存储介质和终端设备与流程

文档序号:16694238发布日期:2019-01-22 19:19阅读:150来源:国知局
确定头部姿态的方法、装置、存储介质和终端设备与流程

本发明涉及计算机技术领域,尤其涉及一种确定头部姿态的方法、装置、存储介质和终端设备。



背景技术:

人们往往通过频繁的注视来表达对对象或某一视觉区域的兴趣。通过跟踪人眼的视点运动,并收集和分析人眼运动数据数据,获得用户兴趣。例如,在用户观看视频、电子书或网上商店时,通过跟踪用户的人眼运动,可以获知判断用户的偏好。其中,眼睛的视线落点可以传递大量反映人体心理活动的信息。

现有技术中,为了准确地测量眼睛的视线落点,通常要将被测试者的头部固定以固定头部姿态。或者,被测试者的头部戴上头戴式装置来跟踪头部姿态的变化数据,进而计算视线落点。但是,这两种方案在确定头部姿态时,都会给被测试者带来不便,而且后者的方案跟踪的头部姿态容易出现不准确、且一般利用传统的定位方式,计算时间长。因此,如何方便准确快速地计算人的头部姿态是目前亟需解决的技术问题。



技术实现要素:

本发明实施例提供一种确定头部姿态的方法、装置、存储介质和终端设备,以解决或缓解现有技术中的以上一个或多个技术问题。

第一方面,本发明实施例提供了一种确定头部姿态的方法,包括:

从脸部图像中获取形成脸部的刚性点云数据;

跟踪所述脸部图像的初始图片序列,获得头部姿态的粒子滤波估计值;其中,所述粒子滤波估计值用于估计所述头部姿态;

根据所述粒子滤波估计值,从预先划分的各视线区域中确定所述头部姿态所朝向的视线区域;以及

基于所述头部姿态所朝向的视线区域和所述粒子滤波估计值,对所述刚性点云数据进行迭代计算,获得所述头部姿态。

结合第一方面,在第一方面的第一种实施方式中,所述脸部图像包括深度图像和彩色图像;以及所述从脸部图像中获取形成脸部的刚性点云数据,包括:

从所述深度图像中提取前景区域;

判断所述前景区域是否包括人体脸部;

当所述前景区域包括人体脸部时,在所述深度图像中定位所述人体脸部的位置;以及

利用主动外观模型,从所述人体脸部在所述彩色图像中的位置提取脸部区域的刚性点云数据;其中,所述刚性点云数据用于描述所述人体脸部为标准表情时所述脸部区域的特征。

结合第一方面,在第一方面的第二种实施方式中,根据所述粒子滤波估计值,从预先划分的各视线区域中确定所述头部姿态所朝向的视线区域,包括:

获取预设划分的各视线区域对应的头部姿态模板;

测量各所述头部姿态模板中的各点与所述粒子滤波估计值的距离,并确定各视线区域的距离概率分布;以及

根据各视线区域的距离概率分布,确定所述头部姿态所朝向的视线区域。

结合第一方面,在第一方面的第三种实施方式中,基于所述头部姿态所朝向的视线区域和所述粒子滤波估计值,对所述刚性点云数据进行迭代计算,获得所述头部姿态,包括:

根据所述粒子滤波估计值,计算初始转换矩阵;其中,所述转换矩阵用于衡量所述头部姿态的角度;

获取所述头部姿态所朝向的视线区域以及相邻视线区域的头部姿态模板;

基于所述初始转换矩阵,计算各所述头部姿态模板对应的最优转换矩阵;其中,所述最优转换矩阵能使所述头部姿态模板与所述刚性点云数据的两个点集之间的误差最小;以及

对各所述最优转换矩阵进行加权并求均值,获得所述头部姿态的角度。

结合第一方面的第三种实施方式,在第一方面的第四种实施方式中,基于所述初始转换矩阵,计算各所述头部姿态模板对应的最优转换矩阵,包括:

对于刚性点云矩阵中的各点,确定属于模板矩阵且与该点最近的点;其中,初始刚性点云矩阵表示所述刚性点云数据,所述模板矩阵表示所述头部姿态模板;

计算最优转换矩阵,使所述刚性点云矩阵的各点与对应在所述模板矩阵的最近点的误差函数结果最小化;

如果所述误差函数结果大于预设的误差阈值,则根据所述最优转换矩阵和所述模板矩阵,更新所述刚性点云矩阵,并返回重新计算最优转换矩阵;以及

如果所述误差函数结果小于预设的误差阈值,则输出当前计算的最优转换矩阵;其中,第一次计算最优转换矩阵基于所述初始转换矩阵。

结合第一方面的第四种实施方式,在第一方面的第五种实施方式中,对于刚性点云矩阵中的各点,确定属于模板矩阵且与该点最近的点的计算公式,包括:

其中,pm表示所述模板矩阵,pj表示所述模块矩阵中的第j个点;q为所述刚性点云矩阵,qi表示所述刚性点云矩阵中的第i个点;nnsp表示最近邻域搜索点的算法。

结合第一方面的第五种实施方式,在第一方面的第六种实施方式中,计算最优转换矩阵,使所述刚性点云矩阵的各点与对应在所述模板矩阵的最近点的误差函数结果最小化所采用的计算公式,包括:

其中,表示最优转换矩阵;(r,t)表示前一次计算的最优转换矩阵。

结合第一方面的第六种实施方式,在第一方面的第七种实施方式中,根据所述最优转换矩阵和所述模板矩阵,更新所述刚性点云矩阵的计算公式,包括:

结合第一方面或其任一种实施方式,在第一方面的第八种实施方式中,跟踪所述脸部图像的初始图片序列,获得头部姿态的粒子滤波估计值,包括:

从所述初始图片序列中的首帧图片开始,采样n个初始粒子姿态样本;其中,各所述初始粒子姿态样本的权重值为1/n;各所述初始粒子姿态样本的先验密度为预设值;

按照前一帧图片所采样到的各粒子姿态样本的权重值之间的比例,从当前帧图片中重新采样粒子姿态样本;

根据前一帧图片的头部姿态向量与当前帧图片的头部姿态向量的关系,确定新采样到的粒子姿态样本的权重值;以及

利用最大后验概率估计公式,对新采样到的粒子姿态样本的权重值进行计算,获得下一帧图片的头部姿态向量的预测值。

结合第一方面的第八种实施方式,在第一方面的第九种实施方式中,所述根据前一帧图片的头部姿态向量与当前帧图片的头部姿态向量的关系,确定新采样到的粒子姿态样本的权重值,包括:

根据动态模型,画出新采样到的粒子姿态样本的近似预测分布;其中,所述动态模型描述前一帧图片的头部姿态向量与当前帧图片的头部姿态向量的关系;

根据所述近似预测分布,计算新采样到的粒子姿态样本的几何相似特征;

利用似然函数,对新采样到的粒子姿态样本的几何相似特征进行量化,获得新采样到的粒子姿态样本的似然值;以及

按照新采样到的粒子姿态样本的似然值的比例分布,确定新采样到的粒子姿态样本的权重值。

第二方面,本发明实施例提供一种确定头部姿态的装置,包括:

刚性点云获取模块,用于从脸部图像中获取形成脸部的刚性点云数据;

粒子滤波模块,用于跟踪所述脸部图像的初始图片序列,获得头部姿态的粒子滤波估计值;其中,所述粒子滤波估计值用于估计所述头部姿态;

视线区域确定模块,用于根据所述粒子滤波估计值,从预先划分的各视线区域中确定所述头部姿态所朝向的视线区域;以及

头部姿态获取模块,用于基于所述头部姿态所朝向的视线区域和所述粒子滤波估计值,对所述刚性点云数据进行迭代计算,获得所述头部姿态。

结合第二方面,在第二方面的第一种实施方式中,所述脸部图像包括深度图像和彩色图像;以及所述刚性点云获取模块包括:

前景区域提取单元,用于从所述深度图像中提取前景区域;

人体脸部判断单元,用于判断所述前景区域是否包括人体脸部;

脸部位置定位单元,用于当所述前景区域包括人体脸部时,在所述深度图像中定位所述人体脸部的位置;以及

脸部眼部特征提取单元,用于利用主动外观模型,从所述人体脸部在所述彩色图像中的位置提取脸部区域的刚性点云数据;其中,所述刚性点云数据用于描述所述人体脸部为标准表情时所述脸部区域的特征。

结合第二方面,在第二方面的第二种实施方式中,所述视线区域确定模块包括:

点云模板获取单元,用于获取预设划分的各视线区域对应的头部姿态模板;

距离分布确定单元,用于测量各所述头部姿态模板中的各点与所述粒子滤波估计值的距离,并确定各视线区域的距离概率分布;以及

当前视线区域确定单元,用于根据各视线区域的距离概率分布,确定所述头部姿态所朝向的视线区域。

结合第二方面,在第二方面的第三种实施方式中,所述头部姿态获取模块包括:

初始转换矩阵单元,用于根据所述粒子滤波估计值,计算初始转换矩阵;其中,所述转换矩阵用于衡量所述头部姿态的角度;

点云模板获取单元,用于获取所述头部姿态所朝向的视线区域以及相邻视线区域的头部姿态模板;

最优转换矩阵单元,用于基于所述初始转换矩阵,计算各所述头部姿态模板对应的最优转换矩阵;其中,所述最优转换矩阵能使所述头部姿态模板与所述刚性点云数据的两个点集之间的误差最小;以及

姿态角度获取单元,用于对各所述最优转换矩阵进行加权并求均值,获得所述头部姿态的角度。

结合第二方面或其任一种实施方式,在第二方面的第四种实施方式中,所述粒子滤波模块包括:

粒子采样单元,用于从所述初始图片序列中的首帧图片开始,采样n个初始粒子姿态样本;其中,各所述初始粒子姿态样本的权重值为1/n;各所述初始粒子姿态样本的先验密度为预设值;

重新采样单元,用于按照前一帧图片所采样到的各粒子姿态样本的权重值之间的比例,从当前帧图片中重新采样粒子姿态样本;

权重计算单元,用于根据前一帧图片的头部姿态向量与当前帧图片的头部姿态向量的关系,确定新采样到的粒子姿态样本的权重值;以及

姿态向量计算单元,用于利用最大后验概率估计公式,对新采样到的粒子姿态样本的权重值进行计算,获得下一帧图片的头部姿态向量的预测值。

所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,确定头部姿态的结构中包括处理器和存储器,所述存储器用于确定头部姿态的装置执行上述确定头部姿态的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述确定头部姿态的装置还可以包括通信接口,用于确定头部姿态的装置与其他设备或通信网络通信。

第三方面,本发明实施例还提供一种计算机可读存储介质,用于确定头部姿态的装置所用的计算机软件指令,其中包括用于执行上述确定头部姿态的方法所涉及的程序。

上述技术方案中的其中一个技术方案具有如下优点或有益效果:

本发明实施例预先建立各视线区域,确定脸部图像所朝向视线区域,从而无需固定被测试者的头部,可以方便地检测头部姿态。跟踪脸部图像的初始图片序列,获取该脸部图像的粒子滤波估计值。并且,基于头部姿态所朝向的视线区域和粒子滤波估计值,对刚性点云数据进行迭代计算,可以准确地计算得到头部姿态,减少迭代计算的时间。

上述技术方案中的其中一个技术方案具有如下优点或有益效果:

本发明实施例可以利用视线区域的头部姿态模板对头部姿态进行校准,有效地提高头部姿态检测的准确度。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。

图1是本发明提供的确定头部姿态的方法的一个实施例的流程示意图;

图2是本发明提供的实际驾驶室的视线区域划分的一个实施例的示意图;

图3是本发明提供的模拟驾驶室的视线区域划分的一个实施例的示意图;

图4是本发明提供的icp算法迭代过程的一个实施例的流程示意图;

图5是本发明提供的计算最优转换矩阵的过程的一个实施例的流程示意图;

图6是本发明提供的粒子滤波过程的一个实施例的流程示意图;

图7是本发明提供的确定头部姿态的一个应用示例的流程示意图;

图7-1是本发明提供的添加标记的训练图片的一个示意图;

图7-2是本发明提供的特征点集合的一个示意图;

图7-3是本发明提供的“形状无关”图像的一个示意图;

图7-4是本发明提供的飞机模型的坐标轴的一个示意图;

图8是本发明提供的确定头部姿态的装置的一个实施例的结构示意图;

图9是本发明提供的终端设备的一个实施例的结构示意图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。

请参阅图1,本发明实施例提供了一种确定头部姿态的方法。可以应用于人机交互的领域。例如,用户观看显示屏时检测用户的头部姿态以检测用户的兴趣。再如,用户在驾驶交通工具时,检测用户的头部姿态以确定用户的注意力变化等。本实施例包括步骤s100至步骤s400,具体如下:

s100,从脸部图像中获取形成脸部的刚性点云数据。

本实施例可以采用asm(activeshapemodel,主动形状模型)、aam(activeappearancemodel,主动外观模型)算法来获取脸部的特征点。刚性点云数据可以通过刚性头部模型来匹配得到。

以aam方法为例,其是广泛应用于模式识别领域的一种特征点提取方法。基于aam的人脸特征定位方法在建立人脸模型过程中,不但考虑局部特征信息,而且综合考虑到全局形状和纹理信息,通过对人脸形状特征和纹理特征进行统计分析,建立人脸混合模型,即为最终对应的aam模型。在图像的匹配过程中,为了能够既快速又准确地进行人脸特征标定,在对被测试人脸对象进行特征点定位时采取一种图像匹配拟合的方法,可形象概括为“匹配→比较→调整再匹配→再比较”的过程。aam算法主要分为aam建模和aam匹配计算两部分。aam建模所建立的模型是对象的主动表观模型。所谓表观模型,就是在aam形状模型的基础上结合所提取人脸对象的纹理信息建立起来的人脸模型;“主动”一词则形象具体地体现在aam匹配计算中。

首先,采用主成分分(principalcomponentanalysis,pca)方法来描述形状特征点的动态变化。形状特征点可以表明了人脸特征的位置。其次,以具体aam模型实例与输入图像的均方差来定义一个能量函数,利用该能量函数来评价aam模型的匹配程度。在人脸定位匹配的过程中,模型的线性表达式可以有效地利用匹配算法变化模型参数组,以控制形状特征点的位置变化来生成当前新的aam模型实例。再次,利用当前得到的能量函数值来更新模型的参数,如此反复迭代以实现能量函数的最小化。从而达到模型实例与输入图像相匹配的目的,最终得到的形状特征点位置就描述了当前人脸图像的特征点位置。

由于驾驶员在张嘴、闭眼等较大表情动作时,利用非刚性头部模型,aam方法是无法从脸部图像中检测出形成脸部的点云数据。因此,aam方法可以在此种情况下,找出三维头像的刚性头部模型来代替非刚性头部模型。可以避免获取到错误的特征点,提高头部姿态确定的准确度。

s200,跟踪所述脸部图像的初始图片序列,获得头部姿态的粒子滤波估计值;其中,粒子滤波估计值用于估计所述头部姿态。

本实施例可以通过粒子滤波算法预估头部姿态。粒子滤波(particlefilter,pf)算法,通过寻找一组在状态空间中传播的随机样本来近似的表示概率密度函数,用样本均值代替积分运算,进而获得样本状态的最小方差估计的过程。这此样本可以形象地称为“粒子”,故称,粒子滤波。基本的粒子滤波算法包括:最优贝叶斯估计算法、顺序重要采样算法、辅助采样-重采样算法、规则化采样算法、自适应粒子滤波算法等。

初始图片序列可以包括拍摄脸部图像之前的第一帧或连续几帧的图片序列。可以用y1:t={y1,...,yt}来表示。粒子滤波估计值实际上是头部姿态向量,描述初始图片序列的头部姿态角度的变化。

s300,根据粒子滤波估计值,从预先划分的各视线区域中确定头部姿态所朝向的视线区域。

在本实施例中,如图2所示,以实际驾驶室为例,可以将驾驶室的观测区域内划分成多个视线区域。例如,5、9、12等。在模拟驾驶室的观测区域,可以将驾驶室划分成图3所示。图中包括12个区域(zone1至zone12),当驾驶员观察不同位置时,如左后视镜(leftsidemirror)、右后视镜(rightsidemirror)、中间后视镜(rearviewmirror)、仪表盘(instrumentboard)、中控台(centerconsole)、驾驶(driver)、后窗(backwindows)、档风玻璃(windshield)、头部摄像头(headcamera)及行车记录仪(roadscenecamera)等视线区域,驾驶员在脸部图像中的头部位置是不相同的。由于粒子滤波估计值,预测了头部姿态角度的变化,因此,可以利用粒子滤波估计值来预测头部姿态所朝向的视线区域。

s400,基于头部姿态所朝向的视线区域和粒子滤波估计值,对刚性点云数据进行迭代计算,获得头部姿态。

本实施例可以采用最近点迭代算法(iterativeclosetpoint,icp)对头部姿态进行迭代计算。例如、pointtopoint(点对点)搜索算法、pointtoplane(点对面)搜索算法、pointtoprojection(点到对象)搜索算法等。采用最近点迭代算法可以从测量点集中确定其对应的最近点点集后,运用基于自由形态曲面的配准算法来计算新的最近点点集,直到残差平方和所构成的目标函数值不变,结束迭代过程。

在一种可能的实现方式中,在本实施例中,脸部图像包括深度图像和彩色图像(rgb图像)。此脸部图像可以包括人体的上半身。上述步骤s100可以包括:从所述深度图像中提取前景区域。然后,判断所述前景区域是否包括人体脸部。当所述前景区域包括人体脸部时,在所述深度图像中定位所述人体脸部的位置。最后,利用主动外观模型,从所述人体脸部在所述彩色图像中的位置提取脸部区域的刚性点云数据;其中,所述刚性点云数据用于描述所述人体脸部为标准表情时所述脸部区域的特征。

在本实施例中,深度图像由点组成的,每一个都是0-255之间的数值。数值代表的是这个点对应的图像到深度相机的距离,可以根据深度图像中每个点的值大小来得到它们到相机的距离。因此,可以利用前景区域与背景区域的深度的不同,从深度图像中提取出前景区域。此时,利用aam方法检测前景区域是否包括人脸脸部,可以在短时间内迅速判断rgb图像中是否包括人体脸部。

aam方法可以利用最小二乘法的方法,在匹配、比较、调整,再次匹配、比较、调整的迭代过程后,快速地匹配到新的图像。并利用刚性头部模型进行匹配,可以得到刚性头部点云数据。aam方法的建模过程以及迭代过程是一种常用的方法,在此不再赘述。

在一种可能的实现方式中,上述步骤s300中确定头部姿态当前的视线区域的过程,可以包括:在获取到粒子滤波估计值之后,获取预设划分的各视线区域对应的头部姿态模板。然后,测量各头部姿态模板中的各点与粒子滤波估计值的距离,并确定各视线区域的距离概率分布。根据各视线区域的距离概率分布,可以确定头部姿态所朝向的视线区域。

在本实施例中,可以利用自学习算法,对预设划分的各视线区域的头部姿态进行分类,建立索引。即,建立各视线区域的头部姿态模板。每个视线区域的头部姿态模板可以包括1个或多个。每个头部姿态模板可以对应一个头部姿态向量。由于头部姿态的粒子滤波估计值,实际上也表示为头部姿态向量。因此,计算各视线区域的各头部姿态模板的头部姿态向量与粒子滤波估计值之间的空间距离,可以得到各视线区域的距离概率分布。依据距离概率分布,则可以确定头部姿态所朝向的视线区域。

在本实施例中,除去头部向前或向后移动以及尺度的情况下,头部姿态向量被定义成六维列向量b。其中,θx,θy,θz是yaw,pitch,roll三个方向的角度,tx,ty,tz是x,y,z轴上的偏差。yaw方向是指y轴旋转,pitch是围绕x轴旋转,roll是围绕z轴旋转。

对于三维的头部刚性点云数据,icp算法不断的迭代校正过程,结合了平移和旋转的转换。这些转换需要使源数据(刚性点云数据)和参照数据(头部姿态模板)的点云在给定的三维空间内距离最小。参考头部姿态向量b,给出变换矩阵(r,t)的定义:

t=[tx,ty,tz]t

如图4所示,上述步骤s400的icp算法迭代过程,可以包括:

s410,根据粒子滤波估计值,计算初始转换矩阵。

在本实施例中,在迭代过程可以将脸部图像的第一帧或者连续图片的前几帧的头部姿态向量,作为初始头部姿态向量。

对于初始图片序列,其表示为y1:t={y1,...,yt},可以通过粒子滤波算法,获得初始头部姿态向量的粒子滤波估计值。然后,可以利用此粒子滤波估计值,转换成初始转换矩阵。

s420,获取头部姿态所朝向的视线区域以及相邻视线区域的头部姿态模板。

在本实施例中,头部姿态的角度可以通过欧几里德角度空间进行表示,即用yaw,pitch和roll来表示。通过计算头部姿态所朝向的视线区域与其他区域的头部姿态模板之间的欧式角度,来确度相邻视线匹配。假设视线区域的总数9,则各视线区域的头部姿态模板可以包括:p1,p2,...,pm,...p9

s430,基于所述初始转换矩阵,计算各所述头部姿态模板对应的最优转换矩阵。其中,最优转换矩阵能使所述头部姿态模板与刚性点云数据的两个点集之间的误差最小。

s440,对各最优转换矩阵进行加权并求均值,获得所述头部姿态的角度。

假设当前确定头部姿态所朝向的视线区域的头部姿态模板和相邻一个区域的头部姿态模板,则最优转换矩阵可以分别表示为:和(rneighbor,tneighbor)。然后,对这两者进行加权并求均值,可以计算出头部姿态的θx,θy,θz的角度精确值。

在一种可能的实现方式中,如图5所示,上述步骤s430的计算最优转换矩阵的过程,可以包括:

s432,对于刚性点云矩阵中的各点,确定属于模板矩阵且与该点最近的点。其中,初始的刚性点云矩阵q表示所述刚性点云数据,模板矩阵pm表示所述头部姿态模板。

具体地,可以利用nnsp(nearestneighborsearchpoint,最近邻域搜索点)算法计算两矩阵的最近点。公式如下:

其中,pm表示模板矩阵,pj为模块矩阵pm中的第j个点;qi为刚性点云矩阵q中的第i个点。m为头部姿态所朝向的视线区域的序号。

s434,计算最优转换矩阵,使刚性点云矩阵的各点与对应在模板矩阵的最近点的误差函数结果最小化。具体地,误差函数如下:

其中,表示最优转换矩阵;(r,t)表示前一次迭代计算的最优转换矩阵。第一次计算基于初始转换矩阵。

s436,如果误差函数结果大于预设的误差阈值,则根据最优转换矩阵和模板矩阵,更新刚性点云矩阵,并返回重新计算最优转换矩阵。

经步骤s434计算得到的适用于矩阵q,则更新后的刚性点云矩阵q为:

将上述步骤进行迭代,直至误差函数的耦合误差的变化降低到设定的阈值内,迭代停止。阈值大小为:ei-1-ei<τ。

s438,如果误差函数结果小于预设的误差阈值,则输出当前计算的最优转换矩阵,停止迭代。

对于视线区域m的相邻视线区域的头部姿态模板,均可以执上述步骤s432至步骤s438,获得其对应的最优转换矩阵(rneighbor,tneighbor)。

在一种可能的实现方式中,为了减小icp算法的迭代次数以及提高头部姿态确定的准确度,可以粒子滤波算法进行预处理。如图6所示,上述步骤s200的粒子滤波过程,可以包括:

s210,从所述初始图片序列中的首帧图片开始,采样n个初始粒子姿态样本。其中,各所述初始粒子姿态样本的权重值为1/n,采用表示;各所述初始粒子姿态样本的先验密度为预设值,采用p(b0)表示。初始粒子姿态样本采用表示。

s220,按照前一帧图片所采样到的各粒子姿态样本的权重值之间的比例,从当前帧图片中重新采样粒子姿态样本。

假设首帧图片第0帧图片,当前帧图片为第t帧图片,则可以根据第t-1帧图片所采样到的各粒子姿态样本的权重值之间形成的比例进行采样。例如,粒子1、粒子2和粒子3的权重值分别为2:3:5,则可以粒子1可以按0.2的总体采样比例进行采样,粒子2可以按0.3的总体采样比例进行采样,粒子3可以按0.5的总体采样比例进行采样。

s230,根据前一帧图片的头部姿态向量与当前帧图片的头部姿态向量的关系,确定新采样到的粒子姿态样本的权重值。

在本实施例中,可以采用似然函数来表达两个头部姿态向量之间的关系。例如,以当前帧图片的头部姿态向量bt为例,可以采用似然函数p(xt|bt)进行表示,此函数采用特征向量表达方式的统计纹理,量化x(bt)的纹理一致性。x()表示与形状无关的纹理。p(xt|bt)可以表示如下:

其中,c为似然函数的常数,c>0,e是重构误差,是和第一个特征向量m相关的特征值,ξ是似然函数的估计量;ρ是其余特征值的算术平均值。

进而,可以采用动态模型描述前一帧图片的头部姿态向量bt-1与当前帧图片的头部姿态向量bt的关系。

s240,利用最大后验概率估计公式,对新采样到的粒子姿态样本的权重值进行计算,获得下一帧图片的头部姿态向量的预测值。具体地,公式如下:

其中,是第t帧采到的粒子姿态样本的权重值,j∈n。

除了第0帧图片,对于每一帧图片均可以上述步骤s220至步骤s240进行计算,直到计算出最后一帧图片的头部姿态向量的预测值。步骤s300和步骤s400可以利用头部姿态向量的预测值进行后续的计算。

在一种可能的实现方式中,上述步骤s230的实施过程可以包括:

首先,根据动态模型画出新采样到的粒子姿态样本的近似预测分布p(bt|x1:(t-1))。x1:(t-1)表示第1帧图片到第t-1帧图片的与形状无关的纹理。

然后,根据所述近似预测分布p(bt|x1:(t-1)),计算新采样到的粒子姿态样本的几何相似特征x(bt);

进而,利用似然函数,对新采样到的粒子姿态样本的几何相似特征进行量化,获得新采样到的粒子姿态样本的似然值。对于第j个粒子姿态样本,其似然值可以表示:

最后,按照新采样到的粒子姿态样本的似然值的比例分布,确定新采样到的粒子姿态样本的权重值。对于第j个粒子姿态样本,其确定的权重值为:

通过在当前帧的时间,用n对采样到的粒子加权,使得加权后的粒子近似先前时间点的头部姿态向量p(bt-1x1:(t-1))的后验分布。

参见图7,其是本发明实施例的确定头部姿态的一个应用示例的流程示意图。本应用示例检测驾驶员的头部姿态。

一、获取脸部图像。

在获取数据阶段,通过kinect(微软生产的一个体感外部设备)中不同的摄像头获取rgb图像和深度图像。rgb图像由kinect的ccd(charge-coupleddevice,电荷耦合器件)镜头获得,而深度图像则由红外探测器镜头获得。其均为人体上半身的图像。

本实施例提供的图像处理方法可以使三维数据(刚性点云数据)更好地发挥作用。

首先利用深度图像进行头部检测,粗略地找到头部的位置。由于摄像机的位置只能拍到驾驶员上半身的图像,这样更有利于在深度图像中获取驾驶员的头部位置。由于驾驶室的条件所限,驾驶员头部的位置变化在尺度上不会有巨大的改变,也就是说,三维头部的中间点不会发生巨大的移动变化。因此,对于从深度图像中提取的头部位置的长度和宽度在rgb彩色图像中增大了人类检测的约束性。然后,利用用于脸部检测的aam方法检测头部输出的前景区域。此方法可以在短时间内迅速检测出rgb图像中是否有脸部区域。通过aam方法找出三维头像的刚性模型来代替非刚性头部模型,因为非刚性头部模型可能会导致错误的数据录入。例如,在非刚性头部模型中,驾驶员在张开嘴巴时是无法检测出脸部,以形成点云数据。aam方法在训练数据的统计分析条件下建立人脸模型,试图识别脸部的形状和特征,然后将检测目标的先验模型应用在图像匹配操作中。

利用最小二乘法的方法,amm方法可以在匹配、比较、调整,再次匹配、比较、调整的迭代过程中,非常迅速地匹配新的图像。因此,得到的头部刚性点云数据,可以在平滑滤波之后用来校准。预处理可以保持点云的几何特性并且减少噪声。当驾驶员在面对划分的不同区域中以自己头部为中心旋转时,可以得到用来校准的头部模板。然后我们利用普鲁克分析方法排列校准这些点集,建立统计形状模型。然后利用经过训练的图像,将这些点的平均形状进行弯曲匹配,获得一个“形状无关”图像。如图7-1,其为加了标记的训练照片。如图7-2为特征点集合。如图7-3为经匹配测试得到的“形状无关”图像。在本实施例中,由于aam模型的训练过程和测试过程与常规过程差不多,在此不再赘述。

二、利用icp算法估计头部姿态。

在真实的驾驶环境中,驾驶员很少会将头部向前向后移动。因此,除去尺度问题上的考虑,头部姿态向量被定义成六维列向量b。其中θx,θy,θz是yaw,pitch,roll三个方向的角度,tx,ty,tz是x,y,z轴上的偏差。

首先我们先解释一下yaw,pitch和roll的方向含义,如图7-4所示。其中,genterofgravity为世界坐标原点。

假设,有一个人站在世界坐标原点(genterofgravity),(0,0,0)点,面向x轴正向,头顶向上方向为y轴正向,右手方向为z轴正向,那么选择角度和方向的计算方法如下:

yaw是围绕y轴旋转,站在(0,0,0)点的人脚下面是xoz平面,以正角度为参数是向左转,以负角度为参数是向右转。

pitch是围绕x轴旋转,站在(0,0,0)点的人脚下是xoy平面,以正角度为参数是向右倒,以负角度为参数是向左倒。

roll是围绕z轴旋转,站在(0,0,0)点的人脚下是yoz平面,以正角度为参数是向后倒,以负角度为参数是向前倒。

对于三维的头部数据,icp算法迭代校正过程结合了平移和旋转的转换。这些转换需要使源数据和参照数据的点云在给定的三维空间内距离最小。首先,设定源点云数据为矩阵q,在数据获取阶段矩阵q的更新通过模板矩阵p获得。由于参考头部姿态向量b可以计算出转换矩阵,给出转换矩阵(r,t)的定义:

t=[tx,ty,tz]t

为了提高计算速度,先利用nnsp方法,可以加速最近点的搜索。主要利用icp算法从矩阵q和p中分别提取一组相关点(qi,pi),其中qi∈q,pi∈p。本文使用的nnsp算法是使用最近点的良好的近似值而不是精确的最近点来进行快速搜素。利用邻域关系来获取最近点的点集的首个近似值。然后利用本地搜索对近似值改进,代替一个全局结果。对于每一个qi∈q,都有一个对应的近似值pj可以在它的最近点矩阵p中找到,通过nnsp的方法可以降低复杂度。

为了减少错误率,可以利用各视线区域的头部姿态模板。在真实驾驶环境中,驾驶员头部通常会有幅度较大的转动,但是这些头部相关的姿态绝大多数都是集中在两边的侧视镜、后视镜、挡风玻璃等车上的配置物。在提出的算法中,icp校准步骤是指在各视线区域使用其对应的人脸模板(头部姿态模板)。这里用p1,p2,...,pm,...p9表示各视线区域下的参考模板。在本实施例中,将驾驶员在车内的注视区域分为9个不同的部分。

视线区域的排列初始化可以通过表示欧式零度角的区域进行排列。然后通过判断视线区域中当前头部位置和视线区域中各模板的头部位置的最小欧氏距离来划分。真实情况下,对于不同的人,头部的初始的零点位置都会有所不同。当驾驶员在车内坐好后,驾驶员的视线通常是直视前方的,所以我们默认这个位置作为驾驶员头部的初始角度。首先将第一帧或者连续图片的前几帧作为头部初始姿态向量,此连续图片用y1:t={y1,...,yt}表示。然后在icp算法中用确定的视线区域的人脸模板和它相邻内的视线区域的人脸模板来计算精确值。

具体的icp算法流程如下:

(1)初始图片序列y1:t={y1,...,yt},三维数据观测模板p={p1,p2,...,pm,...,p9}。

(2)对于第i个图片序列yi给出头部姿态向量的粒子滤波估计值,并转换成相应的转换矩阵的初始值(r,t)。

(3)利用nnsp算法计算最近点,公式如下:

(4)计算最优转换(r,t),使得两个点集的误差函数结果最小化。误差函数公式如下:

得到的适用于矩阵q,新的q为将上述步骤进行迭代,直到耦合误差的变化降低到设定的阈值内,迭代停止。阈值大小为:ei-1-ei<τ。

(5)对视线区域m的相邻视线区域头部模板重复步骤(4),得到最优解(rneighbor,tneighbor)

(7)根据校准方法,利用(rneighbor,tneighbor)和的加权平均值计算出θx,θy,θz的精确值。

(8)将步骤(7)中得到的精确值输出,执行步骤(2)对下一个yi+1进行循环操作。

本实施例减少迭代次数和数据点数量以及加速最近点搜索,目的都是为了减少索引复杂度,并增加icp算法的有效性。在icp算法中所采用的转换主要是结合point-to-plane的方法,取得一个有效值来进行模型匹配。

在本icp算法中,t表示x,y,z轴上的tx,ty,tz偏差。

三、利用粒子滤波算法预测和追踪头部姿态。

头部姿态的属性是一种非线性运动。本实施例可选择粒子滤波算法来预测可能的头部运动姿态。粒子滤波算法可以根据一组可以恢复错误跟踪结果的粒子来估计后验状态分布。为了从一组序列的噪声观测中预测未知状态,可以利用下面这个简易姿态转换模型:

bt=bt-1+ut

在这个模型中,ut是具有中心随机分布的一个随机变量,用n(0,∑)表示,其中∑是从与之前跟踪视频序列有关的姿态向量的差值bt-bt-1学习而来得到的协方差矩阵。观测似然函数p(xt|bt)的过程是通过用特征向量表达的统计纹理,即量化x(bt)上的纹理一致性,其中x()表示与形状无关的纹理。为了实现这个目标,利用公式以下进行似然估计:

其中,c为似然函数的常数,c>0,e是重构误差,是和第一个特征向量m相关的特征值,ξ是似然函数的估计量;ρ是其余特征值的算术平均值。

在重新采样阶段,可以选择高权重的粒子样本点,而低权重的粒子样本点则全部弃用。具体的粒子滤波步骤如下:

(1)在时间t=0(首帧图片对应的采样时间)的时候,初始化n个粒子姿态样本所有的样本先验密度用p(b0)表示,并有恒等的权重值

(2)在时间t时刻(当前帧图片对应的采样时间)时,根据各粒子姿态样本的权重,对粒子按权重比例重新采样。

(3)根据动态模型画出粒子近似预测分布p(btx1:(t-1))。

(4)计算几何相似特征x(bt)。

(5)对每一个新的粒子的似然值按比例加权。其中,加权公式如下:

(6)通过最大后验概率估计公式,计算头部姿态向量的预测值。方法如下:

在t时刻,用n对粒子加权。加权后的这些粒子近似先前时间点的姿态向量p(bt-1x1:(t-1))的后验分布。

(7)重复除步骤(1)以外的其他步骤,直到最后一帧图片的头部姿态向量的计算结束。

初始化转换矩阵定义为根据头部姿态向量计算得到的相关值。在粒子滤波过程中得到的预测值对icp算法的迭代过程有很大的影响。在早期学习阶段,由于驾驶员通常保持直视前方的头部姿态,粒子滤波具有一个更为稳定的特性。驾驶员在之后的实现视线区域的转换中具有相同的概率,因此,我们可以由此预测头部的运动。

四、预测头部姿态所朝向的视线区域

在本实施例中,可以将驾驶员在车内的驾驶观测区域划分成不同的区域。然后通过自学习的算法,系统跟踪头部并把头部化为不同的姿态落在相对应的区域内,建立各视线区域的头部姿态模板。头部姿态模板可以用来对驾驶员的头部姿态进行校准,更好地对驾驶员的驾驶行为进行判断。自学习是自主学习的简称。它是一种不需要外界监视者的学习方式。只要规定某种判据(准则),系统本身就能通过统计估计、自我检测、自我评价和自我校正等方式不断自行调整,直至达到准则要求为止。这种学习方式实质上是一个不断进行随机尝试和不断总结经验的过程。

为了达到最好的结果值,对传入每一个图像帧进行处理,整理归类到相对应的视线区域索引集。一旦每一个这样的索引集定义好后,新的当前帧就可以计算得到每一个视线区域索引集的标志(头部姿态模板)的距离。然后,根据条件概率分布确定哪一个区域是驾驶员正在看的。

参见图8,本发明实施例提供一种确定头部姿态的装置,包括:

刚性点云获取模块100,用于从脸部图像中获取形成脸部的刚性点云数据;

粒子滤波模块200,用于跟踪所述脸部图像的初始图片序列,获得头部姿态的粒子滤波估计值;其中,所述粒子滤波估计值用于估计所述头部姿态;

视线区域确定模块300,用于根据所述粒子滤波估计值,从预先划分的各视线区域中确定所述头部姿态所朝向的视线区域;以及

头部姿态获取模块400,用于基于所述头部姿态所朝向的视线区域和所述粒子滤波估计值,对所述刚性点云数据进行迭代计算,获得所述头部姿态。

在一种可能的实现方式中,所述脸部图像包括深度图像和彩色图像;以及所述刚性点云获取模块100包括:

前景区域提取单元,用于从所述深度图像中提取前景区域;

人体脸部判断单元,用于判断所述前景区域是否包括人体脸部;

脸部位置定位单元,用于当所述前景区域包括人体脸部时,在所述深度图像中定位所述人体脸部的位置;以及

脸部眼部特征提取单元,用于利用主动外观模型,从所述人体脸部在所述彩色图像中的位置提取脸部区域的刚性点云数据;其中,所述刚性点云数据用于描述所述人体脸部为标准表情时所述脸部区域的特征。

在一种可能的实现方式中,所述视线区域确定模块300包括:

点云模板获取单元,用于获取预设划分的各视线区域对应的头部姿态模板;

距离分布确定单元,用于测量各所述头部姿态模板中的各点与所述粒子滤波估计值的距离,并确定各视线区域的距离概率分布;以及

当前视线区域确定单元,用于根据各视线区域的距离概率分布,确定所述头部姿态所朝向的视线区域。

在一种可能的实现方式中,所述头部姿态获取模块400包括:

初始转换矩阵单元,用于根据所述粒子滤波估计值,计算初始转换矩阵;其中,所述转换矩阵用于衡量所述头部姿态的角度;

点云模板获取单元,用于获取所述头部姿态所朝向的视线区域以及相邻视线区域的头部姿态模板;

最优转换矩阵单元,用于基于所述初始转换矩阵,计算各所述头部姿态模板对应的最优转换矩阵;其中,所述最优转换矩阵能使所述头部姿态模板与所述刚性点云数据的两个点集之间的误差最小;以及

姿态角度获取单元,用于对各所述最优转换矩阵进行加权并求均值,获得所述头部姿态的角度。

在一种可能的实现方式中,所述粒子滤波模块200包括:

粒子采样单元,用于从所述初始图片序列中的首帧图片开始,采样n个初始粒子姿态样本;其中,各所述初始粒子姿态样本的权重值为1/n;各所述初始粒子姿态样本的先验密度为预设值;

重新采样单元,用于按照前一帧图片所采样到的各粒子姿态样本的权重值之间的比例,从当前帧图片中重新采样粒子姿态样本;

权重计算单元,用于根据前一帧图片的头部姿态向量与当前帧图片的头部姿态向量的关系,确定新采样到的粒子姿态样本的权重值;以及

姿态向量计算单元,用于利用最大后验概率估计公式,对新采样到的粒子姿态样本的权重值进行计算,获得下一帧图片的头部姿态向量的预测值。

所述装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,确定头部姿态的结构中包括处理器和存储器,所述存储器用于确定头部姿态的装置执行上述第一方面中确定头部姿态的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述确定头部姿态的装置还可以包括通信接口,用于确定头部姿态的装置与其他设备或通信网络通信。

本发明实施例还提供一种确定头部姿态的终端设备,如图9所示,该设备包括:存储器21和处理器22,存储器21内存储有可在处理器22上的计算机程序。处理器22执行计算机程序时实现上述实施例中的确定头部姿态的方法。存储器21和处理器22的数量可以为一个或多个。

该设备还包括:

通信接口23,用于处理器22与外部设备之间的通信。

存储器21可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

如果存储器21、处理器22和通信接口23独立实现,则存储器21、处理器22和通信接口23可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(isa,industrystandardarchitecture)总线、外部设备互连(pci,peripheralcomponent)总线或扩展工业标准体系结构(eisa,extendedindustrystandardcomponent)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器21、处理器22及通信接口23集成在一块芯片上,则存储器21、处理器22及通信接口23可以通过内部接口完成相互间的通信。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。

本发明实施例的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质的更具体的示例至少(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式只读存储器(cdrom)。另外,计算机可读存储介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。

在本发明实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于指令执行系统、输入法或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、射频(radiofrequency,rf)等等,或者上述的任意合适的组合。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成的程序,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。存储介质可以是只读存储器,磁盘或光盘等。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1