1.本技术涉及图像处理领域,尤其涉及一种实时连续定位瞳孔中心的方法、装置、介质及设备。
背景技术:2.视线是指人眼的注视方向,反映了一个人关注的焦点,可以通过研究一个人的注视情况来获得他的心里活动和行为特点,对人的视线进行跟踪来实现人机交互是当今热门的一个应用。眼动追踪离不开眼瞳定位,眼瞳定位是虚拟现实、增强现实等各种计算机视觉应用中不可缺少的技术之一,能否从实时的视频中正确快速地提取瞳孔中心,是影响眼动追踪系统精度的关键因素之一。
3.现有技术中,实现眼动追踪的主要研究方法有直接观察法、眼电图法和眼动仪法,其中眼动仪法是主流方法,其技艺比较完善,商业化程度较高,有头戴式眼动仪和托架式眼动仪等,但是其红外光线会对人眼造成一定的伤害,无法长时间佩戴。为了解决这个问题,现有技术中还提出了用深度相机来进行眼动追踪的方法,但也存在搭建系统配置、用户标定过程较为复杂以及视线估计精确度不高等问题。总而言之,现有技术中对于眼动追踪的解决方案存在技术成本高,硬件具有侵入性以及测量不准确的问题。
技术实现要素:4.本技术提供了一种实时连续定位瞳孔中心的方法、装置、介质及设备,用于实现基于图像灰度值的瞳孔中心定位,并提高瞳孔中心定位的准确性和实时性。
5.本技术第一方面提供了一种实时连续定位瞳孔中心的方法,包括:
6.从视频帧中检测人脸图像,并将所述人脸图像转换为灰度图像;
7.计算所述灰度图像的积分投影;
8.根据所述积分投影在所述灰度图像中确定眼球区域;
9.在所述眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置。
10.可选的,所述计算所述灰度图像的积分投影包括:
11.分别计算所述灰度图像的垂直积分投影和水平积分投影;
12.所述根据所述积分投影在所述灰度图像中确定眼球区域包括:
13.根据所述灰度图像的垂直积分投影确定眼球区域的横坐标,并根据所述灰度图像的水平积分投影确定所述眼球区域的纵坐标。
14.可选的,所述根据所述灰度图像的水平积分投影确定所述眼球区域的纵坐标包括:
15.确定所述灰度图像的水平积分投影中波谷的第一极值和第二极值;
16.分别对所述第一极值和第二极值进行水平方向上的相邻像素进行差分计算,得到差分计算结果;
17.根据所述差分计算结果确定所述眼球区域的纵坐标。
18.可选的,所述差分计算结果包括若干差分值,所述根据所述差分计算结果确定所述眼球区域的纵坐标包括:
19.对所述若干个差分值的绝对值进行累加计算,得到差分累加值;
20.根据所述差分累加值确定所述眼球区域的纵坐标。
21.可选的,所述根据所述差分累加值确定所述眼球区域的纵坐标包括:
22.根据所述水平积分投影和所述差分累加值通过预设公式计算目标投影;
23.根据所述目标投影中波谷的极值确定所述眼球区域的纵坐标;
24.所述预设公式为:
25.t(y)=a
×
h(y)-b
×
c(y);
26.其中,a和b是预设权值,a,b∈(0,1),h(y)表示所述水平积分投影,c(y)表示所述差分累加值。
27.可选的,在所述根据所述灰度图像的垂直积分投影确定眼球区域的水平坐标,并根据所述灰度图像的水平积分投影确定眼球区域的垂直坐标之后,所述方法还包括:
28.判断是否满足设定的阈值条件,所述阈值条件为所述水平坐标小于水平阈值且所述垂直坐标小于垂直阈值;
29.若是,则根据所述水平坐标和所述垂直坐标确定眼球区域。
30.可选的,在所述根据所述积分投影在所述灰度图像中确定眼球区域之后,所述方法还包括:
31.判断当前帧是否出现眼球区域的数据中断;
32.若是,则根据过去至少一帧的眼球区域预测当前帧的眼球区域,并在预测出的眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置;
33.若否,则直接在所述眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置。
34.可选的,所述判断当前帧是否出现眼球区域的数据中断包括:
35.确定所述眼球区域的直径;
36.若所述眼球区域的直径小于预设直径,则确定当前帧出现眼球区域的数据中断;
37.若所述眼球区域的直径大于或等于所述预设直径,则确定当前帧未出现眼球区域的数据中断。
38.可选的,所述根据过去至少一帧的眼球区域预测当前帧的眼球区域包括:
39.获取过去至少一帧的眼球区域;
40.根据所述过去至少一帧的眼球区域通过线性逼近的方法预测当前帧的眼球区域。
41.可选的,所述线性逼近的公式为:
[0042][0043]
其中,k0和k1为待求解的参数;
[0044]
过去i帧中对n个点的测量值与逼近值的均方误差为:
[0045][0046]
通过逼近e(δεi)的最小值,求解k0和k1,并根据k0和k1以及过去i帧的眼球区域
预测当前帧的眼球区域。
[0047]
可选的,所述在所述眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置包括:
[0048]
通过shi-tomasi算法检测所述眼球区域中的若干角点;
[0049]
根据检测到的所述若干角点联合定位瞳孔中心位置。
[0050]
本技术第二方面提供了一种视线估计方法,包括:
[0051]
检测视频帧中人脸的面部特征;
[0052]
通过第一方面及第一方面中任一项可选实时连续定位瞳孔中心的方法确定所述视频帧中人脸的瞳孔中心位置;
[0053]
根据所述面部特征以及所述瞳孔中心位置估计所述视频帧中人脸的注视方向。
[0054]
本技术第三方面提供了一种实时连续定位瞳孔中心的装置,包括:
[0055]
检测单元,用于从视频帧中检测人脸图像,并将所述人脸图像转换为灰度图像;
[0056]
计算单元,用于计算所述灰度图像的积分投影;
[0057]
确定单元,用于根据所述积分投影在所述灰度图像中确定眼球区域;
[0058]
定位单元,用于在所述眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置。
[0059]
可选的,所述计算单元具体用于:
[0060]
分别计算所述灰度图像的垂直积分投影和水平积分投影;
[0061]
所述确定单元包括:
[0062]
第一确定模块,用于根据所述灰度图像的垂直积分投影确定眼球区域的横坐标;
[0063]
第二确定模块,用于根据所述灰度图像的水平积分投影确定所述眼球区域的纵坐标。
[0064]
可选的,所述第二确定模块具体用于:
[0065]
确定所述灰度图像的水平积分投影中波谷的第一极值和第二极值;
[0066]
分别对所述第一极值和第二极值进行水平方向上的相邻像素进行差分计算,得到差分计算结果;
[0067]
根据所述差分计算结果确定所述眼球区域的纵坐标。
[0068]
可选的,所述第二确定模块具体还用于:
[0069]
对所述若干个差分值的绝对值进行累加计算,得到差分累加值;
[0070]
根据所述差分累加值确定所述眼球区域的纵坐标。
[0071]
可选的,所述第二确定模块具体还用于:
[0072]
根据所述水平积分投影和所述差分累加值通过预设公式计算目标投影;
[0073]
根据所述目标投影中波谷的极值确定所述眼球区域的纵坐标;
[0074]
所述预设公式为:
[0075]
t(y)=a
×
h(y)-b
×
c(y);
[0076]
其中,a和b是预设权值,a,b∈(0,1),h(y)表示所述水平积分投影,c(y)表示所述差分累加值。
[0077]
可选的,所述装置还包括:
[0078]
第一判断单元,用于判断是否满足设定的阈值条件,所述阈值条件为所述水平坐
标小于水平阈值且所述垂直坐标小于垂直阈值;
[0079]
所述第一确定单元具体用于当所述第二判断单元的判断结果为是时,根据所述水平坐标和所述垂直坐标确定眼球区域。
[0080]
可选的,所述装置还包括:
[0081]
第二判断单元,用于判断当前帧是否出现眼球区域的数据中断;
[0082]
预测单元,用于当所述第二判断单元的判断结果为是时,根据过去至少一帧的眼球区域预测当前帧的眼球区域,所述定位单元具体用于在预测出的眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置;
[0083]
所述定位单元还用于当所述第二判断单元的判断结果为否时,直接在所述眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置。
[0084]
可选的,所述第二判断单元具体用于:
[0085]
确定所述眼球区域的直径;
[0086]
若所述眼球区域的直径小于预设直径,则确定当前帧出现眼球区域的数据中断;
[0087]
若所述眼球区域的直径大于或等于所述预设直径,则确定当前帧未出现眼球区域的数据中断。
[0088]
可选的,所述预测单元具体用于:
[0089]
获取过去至少一帧的眼球区域;
[0090]
根据所述过去至少一帧的眼球区域通过线性逼近的方法预测当前帧的眼球区域。
[0091]
可选的,所述线性逼近的公式为:
[0092][0093]
其中,k0和k1为待求解的参数;
[0094]
过去i帧中对n个点的测量值与逼近值的均方误差为:
[0095][0096]
通过逼近e(δεi)的最小值,求解k0和k1,并根据k0和k1以及过去i帧的眼球区域预测当前帧的眼球区域。
[0097]
可选的,所述定位单元具体用于:
[0098]
通过shi-tomasi算法检测所述眼球区域中的若干角点;
[0099]
根据检测到的所述若干角点联合定位瞳孔中心位置。
[0100]
本技术第四方面提供了一种实时连续定位瞳孔中心的装置,所述装置包括:
[0101]
处理器、存储器、输入输出单元以及总线;
[0102]
所述处理器与所述存储器、所述输入输出单元以及所述总线相连;
[0103]
所述存储器保存有程序,所述处理器调用所述程序以执行第一方面以及第一方面中任一项可选的实时连续定位瞳孔中心的方法。
[0104]
本技术第五方面提供了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行第一方面以及第一方面中任一项可选的实时连续定位瞳孔中心的方法。
[0105]
本技术第六方面提供了一种视线定位设备,所述视线定位设备包括处理器和摄像头,所述处理器运行时执行第一方面以及第一方面中任一项可选的实时连续定位瞳孔中心的方法。
[0106]
从以上技术方案可以看出,本技术具有以下优点:
[0107]
首先对视频帧进行人脸检测,再将人脸转化为灰度图像,通过计算灰度积分投影来初步确定眼球区域,再在该眼球区域中进行角点检测,并通过检测到的若干角点联合定位眼球区域中的瞳孔中心位置。该算法简单,准确率高,不仅可快速找到输入的视频图像中的人眼,并且能对人眼移动时瞳孔位置的变化进行定位和跟踪,整个过程仅需要通过灰度值即可实现瞳孔中心定位计算,不具有侵入性,即使是普通相机(例如,智能手机或网络摄像头)也能够通过本方法实现眼动追踪,并且在有限的条件下保证了瞳孔中心定位的准确性和实时性,具有推广应用前景。
附图说明
[0108]
为了更清楚地说明本技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0109]
图1为本技术提供的实时连续定位瞳孔中心的方法一个实施例流程示意图;
[0110]
图2为本技术提供的实时连续定位瞳孔中心的方法中灰度图像的示意图;
[0111]
图3为本技术提供的实时连续定位瞳孔中心的方法中瞳孔中心位置示意图;
[0112]
图4为本技术提供的实时连续定位瞳孔中心的方法另一个实施例流程示意图;
[0113]
图5-a为本技术提供的实时连续定位瞳孔中心的方法中灰度图像的垂直积分投影示意图;
[0114]
图5-b为本技术提供的实时连续定位瞳孔中心的方法中眼球区域横坐标定位示意图;
[0115]
图6-a为本技术提供的实时连续定位瞳孔中心的方法中灰度图像的水平积分投影示意图;
[0116]
图6-b为本技术提供的实时连续定位瞳孔中心的方法中眼球区域纵坐标定位示意图;
[0117]
图7为本技术提供的实时连续定位瞳孔中心的方法中目标投影示意图;
[0118]
图8为本技术提供的实时连续定位瞳孔中心的方法中眼球区域定位示意图;
[0119]
图9为本技术提供的实时连续定位瞳孔中心的装置一个实施例结构示意图;
[0120]
图10为本技术提供的实时连续定位瞳孔中心的装置另一个实施例结构示意图。
具体实施方式
[0121]
本技术提供了一种实时连续定位瞳孔中心的方法、装置、介质及设备,用于实现基于图像灰度值的瞳孔中心定位,并提高瞳孔中心定位的准确性和实时性。
[0122]
需要说明的是,本技术提供的实时连续定位瞳孔中心的方法,可以应用于终端,还可以应用于服务器上,例如终端可以是智能手机或电脑、平板电脑、智能电视、智能手表、便携计算机终端也可以是台式计算机等固定终端。为方便阐述,本技术中以终端为执行主体
进行举例说明。
[0123]
请参阅图1,图1为本技术提供的实时连续定位瞳孔中心的方法的一个实施例,该方法包括:
[0124]
101、从视频帧中检测人脸图像,并将人脸图像转换为灰度图像;
[0125]
终端通过摄像头获取视频流,并从视频流中逐帧获取彩色图像的视频帧,利用opencv中的dlib库,即已经训练好的68特征点人脸检测模型对视频帧进行人脸检测得到人脸图像,再将检测到的人脸图像转化为灰度图像。灰度图像又称灰阶图,是把白色与黑色之间按对数关系分为若干等级,称为灰度,灰度具体可分为256阶。请参阅图2,图2为经灰度处理后的人脸图像,即本技术中的灰度图像,将人脸图像转化为灰度图像能够减少后续的运算量,简化处理过程。
[0126]
需要说明的是,本技术中的视频帧可以是从相机的实时视频流中提取,也可以是从离线视频流中提取,具体此处不做限定。102、计算灰度图像的积分投影;
[0127]
终端计算人脸的灰度图像的积分投影,积分投影是指将图像沿着水平和/或竖直形成两个积分投影向量,在图像分析中,水平积分投影和垂直积分投影可以用来描述图像的灰度分布结构,通过水平积分投影和垂直积分投影可以了解到图像在对应方向上的灰度分布特征。
[0128]
103、根据积分投影在灰度图像中确定眼球区域;
[0129]
请参阅图2,在人脸的灰度图像中,眼球区域与周围区域相比较暗,即灰度值较低,利用该特征可以进行眼球区域的定位,具体是根据灰度图像的积分投影中波谷的分布情况来定位眼球区域。
[0130]
104、在眼球区域中检测若干角点,通过若干角点联合定位曈孔中心位置。
[0131]
瞳孔中心具体是指动物或人眼睛内虹膜中心的小圆孔,为光线进入眼睛的通道,从灰度图像的角度来看:瞳孔中心呈现为高密度黑色圆形区域。眼动追踪即追踪眼睛的运动,若要准确的实现眼动追踪,离不开瞳孔中心位置的确定。终端在确定灰度图像中的眼球区域后,则在眼球区域中检测若干角点,再通过多角点联合定位瞳孔中心位置,请参阅图3,图3为本技术中最终定位到的瞳孔中心位置示意图。在定位到瞳孔中心位置后,即可计算人的注视点,通过对一段时间内的瞳孔中心位置进行连续定位,即实现眼动追踪。
[0132]
具体的,角点通常被定义为两条边的交点,或者说角点的局部邻域应该具有两个不同区域的不同方向的边界,对于灰度图像的角点检测则主要考虑的是像素邻域点的灰度变化,即图像亮度的变化,将与邻点亮度对比足够大的点定义为角点。而灰度图像中的瞳孔中心位置相对于眼球区域来说亮度对比足够大,因此可以通过在眼球区域中进行角点检测来定位瞳孔中心位置,而多角点联合定位则能够进一步提高定位准确度。
[0133]
现有技术中的大多数基于视频的眼动跟踪系统都依赖于红外摄像机,利用红外光照射人眼,而光线接触到人眼会对人眼造成一定影响甚至造成伤害,而在本实施例中,只需要获取到人脸图像的灰度值即可实现瞳孔中心定位,对于人眼不具有侵入性。
[0134]
在本实施例中,首先对视频帧进行人脸检测,再将人脸转化为灰度图像,通过计算灰度积分投影来初步确定眼球区域,再在该眼球区域中进行角点检测,并通过检测到的若干角点联合定位眼球区域中的瞳孔中心位置。该算法简单,准确率高,不仅可快速找到输入的视频图像中的人眼,并且能对人眼移动时瞳孔位置的变化进行定位和跟踪,整个过程仅
需要通过灰度值即可实现瞳孔中心定位计算,不具有侵入性,即使是普通相机(例如,智能手机或网络摄像头)也能够通过本方法实现眼动追踪,并且在有限的条件下保证了瞳孔中心定位的准确性和实时性,具有推广应用前景。
[0135]
下面对本技术提供的实时连续定位瞳孔中心的方法进行详细说明,请参阅图4,图4为本技术提供的实时连续定位瞳孔中心的方法另一个实施例,该方法包括:
[0136]
401、从视频帧中检测人脸图像,并将人脸图像转换为灰度图像;
[0137]
本实施例中步骤401与前述实施例步骤101类似,此处不再赘述。
[0138]
402、分别计算灰度图像的垂直积分投影和水平积分投影;
[0139]
终端分别计算人脸的灰度图像的积分投影:假设图像大小为m
×
n,g(x,y)表示图像中(x,y)处的灰度值。
[0140]
在图像[x1,x2]区域的水平积分投影为h(y),其中x1,x2∈[0,m],且x2》x1:
[0141][0142]
在图像[y1,y2]区域的垂直积分投影为v(x),其中y1,y2∈[0,n],且y2》y1:
[0143][0144]
403、根据灰度图像的垂直积分投影确定眼球区域的横坐标;
[0145]
请参阅图5-a和图5-b,图5-a为灰度图像垂直积分投影示意图,通过左右两边垂直积分投影的最小值,即波谷极值对应的坐标来进行横坐标的定位,灰度图像中垂直积分投影的最小值坐标即如图5-b所示,由此可以确定左右两个眼球区域的横坐标。
[0146]
404、确定灰度图像的水平积分投影中波谷的第一极值和第二极值;
[0147]
步骤404至步骤406为确定眼球区域纵坐标的过程,在确定眼球区域的纵坐标时,考虑到某些情况下眉毛的灰度值会比眼球的灰度值要低,这时如果直接通过水平积分投影的波谷极值来定位就有可能将眉毛误判为眼球,从而会导致纵坐标定位不准确,因此在进行眼球区域的纵坐标确定时,需要在积分投影的基础上结合差分计算来进行确定。具体的,首先确定出灰度图像的水平积分投影中最小的两个波谷,即确定波谷的第一极值和第二极值,这两个极值分别对应着眉毛区域和眼球区域的纵坐标。
[0148]
请参阅图6-a和图6-b,图6-a为灰度图像水平积分投影示意图,可见水平积分投影中两个波谷分别对应眉毛和眼睛,但是两者差距不大,如果直接通过波谷极值来确定可能会定位到眉毛的位置,即定位结果如图6-b所示。
[0149]
405、分别对第一极值和第二极值进行水平方向上的相邻像素进行差分计算,得到差分计算结果;
[0150]
因为眼球区域在水平方向的灰度变化比较丰富,即由皮肤经过眼白到瞳孔,再由瞳孔经过眼白到皮肤,而眉毛区域的灰度值分布比较集中,水平方向变化率小,通过该特征可以对眉毛区域和眼球区域进行分辨。因此终端通过分别对第一极值和第二极值进行水平方向上的相邻像素进行差分计算,得到差分计算结果,利用该差分计算结果来分辨眼球区域和眉毛区域的纵坐标。
[0151]
具体的,水平方向上相邻像素之间的差分计算公式为:
[0152]
δg(x+1,y)=g(x+1,y)-g(x,y)
ꢀꢀ
(3)
[0153]
进一步的,终端还可以对于第一极值和第二极值水平方向上相邻像素之间的差分计算结果进行绝对值的累加计算,通过该差分累加值来准确反应第一极值和第二极值水平方向上灰度值的变化率,具体的,差分累加值的计算公式如下:
[0154][0155]
其中,c(y)表示差分累加值,灰度值变化率越大,该差分累加值越大。
[0156]
406、根据差分计算结果确定眼球区域的纵坐标;
[0157]
终端可以直接通过差分累加值来进行眼球区域纵坐标的确定,即对于第一极值y1和第二极值y2进行水平方向上差分累加值计算,将差分累加值较大的确定为眼球区域的纵坐标。
[0158]
进一步的,为了提高眼球区域纵坐标的定位准确性,终端可以根据水平积分投影和差分累加值通过预设公式计算目标投影,再将目标投影中波谷的极值确定为眼球区域的纵坐标,该预设公式为:
[0159]
t(y)=a
×
h(y)-b
×
c(y)
ꢀꢀ
(5)
[0160]
其中,a和b是预设权值,a,b∈(0,1),ah(y)表示水平积分投影,c(y)表示差分累加值,a和b的具体数值可根据不同的应用场景和精度需求进行调整。
[0161]
对于第一极值和第二极值y1,y2分别进行差分累加值的计算,得到s(y1),s(y2)。若s(y1)《s(y2),则将h(y1)的值赋给h(y2),保证t(y)在眼睛处取得最小值,此时的y即可确定为眼球区域的纵坐标。通过预设公式计算出的目标投影t(y)如图7所示,眼球区域的定位结果如图8所示。
[0162]
需要说明的是,在一些具体的实施例中,通过步骤402至406确定了眼球区域的横、纵坐标后,还需要进一步判断该横、纵坐标是否满足设定的阈值条件,根据具体实验给定的阈值条件:水平阈值τ
x
和垂直阈值τy,当x《τ
x
,y《τy时得到眼部区域e(x,y)。
[0163]
407、判断当前帧是否出现眼球区域的数据中断,若是则执行步骤408,若否则直接执行步骤409;
[0164]
在进行眼球区域的定位时,经常会遇到睫毛或眼睑部分地甚至严重地遮蔽了眼球的情况,以及眼睛本身的固有抖动、眨眼等因素,造成当前帧无法定位到眼球区域或者定位到的眼球区域不完全的情况,这类情况即会导致本技术中的数据中断。其中眨眼带来的影响最大,据统计,正常人平均每分钟要不由自主地眨眼十几次,通常2~6s就要眨眼一次,每次眨眼要用0.2~0.4s时间,这就很有可能会导致瞳孔定位不连续甚至定位失败,进而导致无法准确的实现眼动追踪。
[0165]
因此在本实施例中,对于每一帧图像都需要进行是否出现眼球区域数据中断的判断,即判断当前帧是否成功定位眼球区域。如果当前帧出现了眼球区域的数据中断,就需要先执行步骤408再执行步骤409,如果当前帧未出现眼球区域的数据终端,就直接执行步骤409。
[0166]
需要说明的是,判断是否出现数据中断的条件可根据不同应用场景以及不同的精度需求来作具体设定,在一些具体的实施例中,终端可以通过当前帧检测到的眼球区域的直径来判断是否出现数据中断。由于成年人的眼球直径通常为一个固定值,因此可以通过
设定一个预设直径,如果当前帧检测到的眼球区域的直径小于预设直径,即可确认为出现数据中断,此时执行步骤408;如果当前帧检测到的眼球区域的直径大于或等于该预设直径,则认为未出现数据中断,此时执行步骤409。
[0167]
408、获取过去至少一帧的眼球区域,根据过去至少一帧的眼球区域通过线性逼近的方法预测当前帧的眼球区域;
[0168]
当确定当前帧出现眼球区域的数据中断时,则使用过去至少一帧的眼球区域来预测当前帧被中断的眼球区域,弥补当前帧的数据中断。需要说明的是,在根据过去至少一帧的眼球区域预测当前帧的眼球区域时,具体可采用深度学习的方法进行,还可以采用数学逼近的方法进行,主要是利用过去至少一帧中眼球区域的相关特征来预测当前帧的眼球区域,具体此处不做限定。
[0169]
在一些具体的实施例中,当前帧如果出现数据中断,终端则获取过去至少一帧的眼球区域,再通过线性逼近的方法来确定当前帧被中断的眼球区域,即由过去n帧预测出眨眼时,即第n+1帧时的眼球区域。
[0170]
下面对本技术提供的线性逼近方法进行详细描述:
[0171]
假设灰度函数g(x,y)在n个顺序时刻的值为g
ti
(x,y),记为g(ti)(i=1,2,...,n)。用如下公式对t时刻的灰度值g(t)进行最佳线性逼近:
[0172][0173]
ti时刻测量值与逼近值之间的误差为:δεi=g(ti)-k
0-k1ti,对n个点估计的均方误差为:
[0174][0175]
为了检验线性逼近算法性能与实际位置的关系,本技术中采用均方差对其性能进行验证。采用最佳逼近就是使上式e(δεi)取得最小值。采用最小二乘法来计算逼近函数的系数过程如下:
[0176]
e(δεi)是关于自变量k0和k1的二元函数,欲使e(δεi)取到最小值要满足:
[0177][0178]
从而利用消元法或克莱姆法则可计算出k0,k1。
[0179]
经计算,在表1中给出在n=1,2,3,4,5情况下的最佳线性逼近算法预测器的解。
[0180][0181]
表1:最佳线性逼近预测器具体解
[0182]
对于插值方法而言,一般情况下是n越大逼近效果越好。经实验测试,当n=3准确率已经有95%,考虑到计算量的问题,在本技术中具体可选择n=3来预测。即:
[0183][0184]
终端则在确定当前帧出现数据中断时,通过上式由过去3帧的眼球区域计算得到当前帧的眼球区域e(x,y)。
[0185]
409、在眼球区域中检测若干角点,通过若干角点联合定位曈孔中心位置。
[0186]
终端在确定眼球区域e(x,y)后,利用shi-tomasi算法,将得到的眼部区域e(x,y)向x,y方向分别移动微小位移u,v,然后根据灰度的变化来检测角点。当e(x,y)平移(u,v)后,其灰度变化量为:
[0187][0188]
其中,ω(x,y)为加权函数,一般是选用高斯加权函数。
[0189]
对g(x+u,y+v)用泰勒公式展开:
[0190]
g(x+u,y+v)≈g(x,y)+ug
x
+vgyꢀꢀ
(11)
[0191]
其中,g
x
、gy分别表示图像灰度在x、y方向上的梯度值。进而将式(11)推导为:
[0192][0193]
其中,
[0194]
[0195]
由式(13)可知,灰度值的变化大小取决于自相关函数m,计算矩阵m的两个特征值λ1,λ2,进行对比。通过实验给定一个阈值τ,计算角点响应函数r:
[0196]
r=min(λ1,λ2)》τ
ꢀꢀꢀꢀꢀꢀ
(14)
[0197]
即如果较小的特征值仍比给定的阈值大,则这个特征点就是shi-tomasi角点。
[0198]
利用多个shi-tomasi角点联合定位的方式进行瞳孔定位,以提高瞳孔定位的准确率。多角点联合定位公式为:
[0199][0200]
其中,ri为自相关函数m的两个特征值中较小的一个,n为角点的个数,c为最终的角点,即终端最终定位到的瞳孔中心位置,如图3所示。
[0201]
在本实施例中,由于在处理连续眼图数据时会出现眼睛本身的固有抖动,以及眨眼等因素造成的数据中断的情况,因此在每一帧都需要进行是否出现数据中断的判断,在出现数据中断时使用过去至少一帧的眼球区域来预测当前帧的眼球区域,再进行瞳孔中心的定位,弥补数据中断造成的瞳孔中心定位失败和眼动追踪失败,保证瞳孔中心定位的准确性、连续性和实时性。进一步的,对于数据中断的情况采用眼球区域的直径来进行判断,并且在出现数据中断时,使用过去至少一帧的眼球区域通过线性逼近的方法来确定当前帧被中断的眼球区域,并且使用基于shi-tomasi的多角点联合定位方法在眼球区域中确定瞳孔中心位置,进一步提高瞳孔中心定位的连续性。
[0202]
进一步的,本技术还提供了一种视线估计方法,具体为通过本技术图1或图4所示实施例先对视频流中的瞳孔中心位置进行定位,再结合视频流中的人脸面部特征,进行视线估计,获取用户当前注视方向,从而实现人机交互。
[0203]
下面对本技术提供的实时连续定位瞳孔中心的装置进行详细说明,请参阅图9,图9为本技术提供的实时连续定位瞳孔中心的装置的一个实施例,该装置包括:
[0204]
检测单元901,用于从视频帧中检测人脸图像,并将人脸图像转换为灰度图像;
[0205]
计算单元902,用于计算灰度图像的积分投影;
[0206]
确定单元903,用于根据积分投影在灰度图像中确定眼球区域;
[0207]
定位单元904,用于在眼球区域中检测若干角点,通过若干角点联合定位曈孔中心位置。
[0208]
可选的,计算单元902具体用于:
[0209]
分别计算灰度图像的垂直积分投影和水平积分投影;
[0210]
确定单元903包括:
[0211]
第一确定模块9031,用于根据灰度图像的垂直积分投影确定眼球区域的横坐标;
[0212]
第二确定模块9032,用于根据灰度图像的水平积分投影确定眼球区域的纵坐标。
[0213]
可选的,第二确定模块9032具体用于:
[0214]
确定灰度图像的水平积分投影中波谷的第一极值和第二极值;
[0215]
分别对第一极值和第二极值进行水平方向上的相邻像素进行差分计算,得到差分计算结果;
[0216]
根据差分计算结果确定眼球区域的纵坐标。
[0217]
可选的,第二确定模块9032具体还用于:
[0218]
对若干个差分值的绝对值进行累加计算,得到差分累加值;
[0219]
根据差分累加值确定眼球区域的纵坐标。
[0220]
可选的,第二确定模块9032具体还用于:
[0221]
根据水平积分投影和差分累加值通过预设公式计算目标投影;
[0222]
根据目标投影中波谷的极值确定眼球区域的纵坐标;
[0223]
预设公式为:
[0224]
t(y)=a
×
h(y)-b
×
c(y);
[0225]
其中,a和b是预设权值,a,b∈(0,1),h(y)表示水平积分投影,c(y)表示差分累加值。
[0226]
可选的,装置还包括:
[0227]
第一判断单元905,用于判断是否满足设定的阈值条件,阈值条件为水平坐标小于水平阈值且垂直坐标小于垂直阈值;
[0228]
确定单元903具体用于当第二判断单元905的判断结果为是时,根据水平坐标和垂直坐标确定眼球区域。
[0229]
可选的,装置还包括:
[0230]
第二判断单元906,用于判断当前帧是否出现眼球区域的数据中断;
[0231]
预测单元907,用于当所述第二判断单元906的判断结果为是时,根据过去至少一帧的眼球区域预测当前帧的眼球区域,所述定位单元904具体用于在预测出的眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置;
[0232]
所述定位单元904还用于当所述第二判断单元906的判断结果为否时,直接在所述眼球区域中检测若干角点,通过所述若干角点联合定位曈孔中心位置。
[0233]
可选的,第二判断单元906具体用于:
[0234]
确定眼球区域的直径;
[0235]
若所述眼球区域的直径小于预设直径,则确定当前帧出现眼球区域的数据中断;
[0236]
若所述眼球区域的直径大于或等于所述预设直径,则确定当前帧未出现眼球区域的数据中断。
[0237]
可选的,预测单元907具体用于:
[0238]
获取过去至少一帧的眼球区域;
[0239]
根据过去至少一帧的眼球区域通过线性逼近的方法预测当前帧的眼球区域。
[0240]
可选的,线性逼近的公式为:
[0241][0242]
其中,k0和k1为待求解的参数;
[0243]
过去i帧中对n个点的测量值与逼近值的均方误差为:
[0244][0245]
通过逼近e(δεi)的最小值,求解k0和k1,并根据k0和k1以及过去i帧的眼球区域预测当前帧的眼球区域。
[0246]
可选的,定位单元904具体用于:
[0247]
通过shi-tomasi算法检测眼球区域中的若干角点;
[0248]
根据检测到的所述若干角点联合定位瞳孔中心位置。
[0249]
本实施例装置中,各单元及模块的功能与前述图1或图4所示方法实施例中的步骤对应,此处不再赘述。
[0250]
本技术还提供了一种实时连续定位瞳孔中心的装置,请参阅图10,图10为本技术提供的实时连续定位瞳孔中心的装置一个实施例,该装置包括:
[0251]
处理器1001、存储器1002、输入输出单元1003、总线1004;
[0252]
处理器1001与存储器1002、输入输出单元1003以及总线1004相连;
[0253]
存储器1002保存有程序,处理器1001调用程序以执行如上任一实时连续定位瞳孔中心的方法。
[0254]
本技术还涉及一种计算机可读存储介质,计算机可读存储介质上保存有程序,其特征在于,当程序在计算机上运行时,使得计算机执行如上任一实时连续定位瞳孔中心的方法。
[0255]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0256]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0257]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0258]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0259]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。