[0025] 下面结合附图,对具体实施方式说明如下。
[0026] 图1是终端设备用户姿态检测系统。终端设备用户姿态检测系统包括:一个或多个面向用户的摄像头1,一个或多个姿态传感器2,信息处理模块3,姿态提醒模块4。
[0027] 通过摄像头1获得用户面部图像或视频。通过设备上的一个或多个姿态传感器(例如采用重力传感器)获得终端设备绝对姿态参数(反映了显示屏所在平面的水平倾角)。
[0028] 信息处理模块3,包含姿态传感数据接口a、图像数据接口b、姿态提醒接口c。姿态传感数据接口a传递的数据包含终端设备姿态数据。信息处理模块3计算用户姿态参数,对姿态进行判断,当姿态不正确时触发姿态提醒模块4。图像数据接口b传递的数据包含图像或视频数据。姿态提醒接口c传递的数据包含报警数据和姿态矫正数据。报警数据是指用户姿态参数超出门限值时生成的,包含报警的方式、报警的强度、报警的时间长短等特征,这些数据是根据用户偏离正确姿态的程度和时间来确定的。姿态矫正数据是根据用户姿态参数和门限值之间的差,得到如何改变用户姿态以达到正确姿态的数据,包括距离、角度、及调整的方向等信息。
[0029] 姿态提醒模块4包含信息输出装置(提示灯、显示屏、振动装置、音频装置中一个或多个)。姿态提醒模块4输出的信号是用户感官可识别的信号。姿态提醒模块4通过以下一种或多种形式向用户发出提示信号和/或矫正建议信号:提示灯开关、颜色变化、闪烁;显示屏上显示的文本、图形、图像或视频;音频装置发出声音;振动装置发出的振动。
[0030] 上文所述“姿态参数”包括“相对姿态参数”和“绝对姿态参数”。相对姿态参数即上文所述“用户相对姿态参数”,是指用户面部相对于显示屏的位置和角度参数;所谓绝对姿态参数,是指反映物体在空间中的姿态、与相对位置无关的参数,绝对姿态参数包括“终端设备绝对姿态参数”,例如显示屏和水平面之间的夹角t1,还包括“用户绝对姿态参数”,例如用户面部各特征点所在平面与水平面之间的夹角t4。
[0031] 图2是终端设备用户姿态检测方法实施例的流程图,具体说明如下:
[0032] 第101步:显示屏姿态检测。采集终端显示屏所处空间状态获得设备姿态数据,计算得出显示屏所在平面的水平倾角,作为终端设备绝对姿态参数;
[0033] 第102步:用户姿态检测。采集用户图像,从图像信号中识别用户面部的特征点,计算出用户相对姿态参数;
[0034] 第103步:姿态比较。将至少一个所述姿态参数和该参数的门限值进行比较,判断是否至少一个所述姿态参数超过门限值。
[0035] 第104步:信号输出。当至少一个所述姿态参数超过门限值时,发出提示信号和/或矫正建议信号。
[0036] 以上步骤循环进行。当第103步未有姿态参数超出门限值的范围时、或第104步完成后,回归至第101步。
[0037] 图3是终端设备用户姿态检测方法另一实施例的流程图,具体说明如下:
[0038] 第201步:用户姿态检测:采集用户图像,从图像信号中识别用户面部的特征点,计算出用户相对姿态参数;
[0039] 第202步:显示屏姿态检测:采集终端显示屏所处空间状态获得设备姿态数据,计算得出显示屏所在平面的水平倾角,作为终端设备绝对姿态参数;
[0040] 第203步:姿态比较:将至少一个所述姿态参数和该参数的门限值进行比较,判断是否有至少一个所述姿态参数连续多次循环均超过门限值。
[0041] 第204步:信号输出:当至少一个所述姿态参数连续多次循环均超过门限值时,发出提示信号和/或矫正建议信号。
[0042] 以上步骤循环进行。当第203步未有姿态参数超出门限值的范围时、或第204步完成后,回归至第201步。作为与图2所示方案相比进一步优化的实施方式,为了减少信号发生频率,当至少一个所述姿态参数连续多次循环超过门限值时,发出提示信号和/或矫正建议信号。为了减少检测频率,本实施例还包含第205步:延迟。
[0043] 在图2和图3所示实施例中,还可以将用户相对姿态参数和设备绝对姿态参数相结合,计算得出用户绝对姿态参数,作为所述姿态比较(第103、203步)所使用的姿态参数。
[0044] 图4是摄像头在终端设备面板上的位置和功能示意图,一个终端设备5使用时大致呈平板状,有一个或多个面向用户的摄像头1。还要至少要包含一个面向用户的显示屏6,摄像头的镜头所在平面和显示屏所在平面相平行、或具有其它稳定的位置关系,使用户在面向设备阅读或工作时,面向摄像头、处于摄像头的图像采集空间中。
[0045] 图5是姿态传感器在终端设备上的位置和功能示意图。该终端设备5的硬件至少要包含一个面向用户的显示屏6和一个能检测出显示屏所在平面倾角的姿态传感器2。该传感器安装在终端设备上,与显示屏具有固定的位置关系。通过该传感器输出的数据,可以得到终端设备的显示屏6所在平面的倾角(如图5中t1),即终端设备的显示屏所在平面和水平面之间的夹角,作为终端设备绝对姿态参数。
[0046] 在上述各方案中所提到的“姿态参数”,可以用多种方法定义,以下举例说明定义和分析的方法。
[0047] 例如一种描述用户姿态的参数是:用户面部参考点与终端显示屏参考点之间的水平距离L1、垂直距离L2,用户面部中间线和显示屏之间的相对倾角t0,用户面部中间线和水平面之间的夹角t4。其中L1、L2、t0反映了用户面部与终端显示屏之间的相对位置关系,因此称为“用户相对姿态参数”,其中t4反映了用户面部与终端显示屏无关的位置参数,称为“用户绝对姿态参数”。即用户相对姿态参数为[L1,L2,t0]中至少一个参数。用户绝对姿态参数t4=t1+t0。
[0048] 再例如一种描述用户姿态的参数是:摄像头图像数据中用户面部占据的范围Af、面部中间线Cf偏离摄像头图像中间线Cc的平均距离为d,用户面部中间线和水平面之间的夹角t4等。也可以构建相对姿态参数,用户相对姿态参数为[Af,d,t0]中至少一个参数。用户绝对姿态参数t4=t1+t0。
[0049] 姿态参数的门限值是指相对姿态参数和绝对姿态参数为标定正确姿态定义的门限值,例如L1、L2、Af、t1、t0、t4的最大值或最小值。按照前述描述用户姿态的参数的实施例,相对姿态参数的门限值T1=[Min(L1),Max(L1),Min(L2),Max(L2),Min(t0),Max(t0)],或者T1=[Min(Af),Max(Af),Max(d),Min(t0),Max(t0)];绝对姿态参数的门限值T2=[Min(t1),Max(t1),Min(t0),Max(t0)]。用户姿态不正确,是指用户的姿态参数超出门限值的范围。
[0050] 图6是单目机器视觉方法面部位置的获取原理图。在单目机器视觉原理基础上,这里举例说明一种面部位置的获取方法,采用所述单目检测方法,存在一个摄像头,取人面部中线两个容易识别的特征点A、B,摄像头镜头中心点C,用单目机器视觉的方法得到长度AC、BC;长度AB使用典型值;再计算出各个姿态参数[L1、L2、t0]。详细说明如下:
[0051] 通过设备的前置摄像头获得的图像,采用计算机图形学的方法从这些图像中提取出用户面部的特征点,如眼睛、鼻子、嘴等。图中A、B分别为人面部两个容易识别的特征点,如两个眼睛中点位置、嘴巴中点位置。C点为设备前面板上的摄像头镜头中心点位置。DE所在平面为摄像头传感器所在的平面,D、E两点分别是A、B在传感器上的像。由于传感器与镜头的几何关系固定,因此可以由D、E在传感器上的位置及镜头与传感器的距离计算出角度t2,即BD与DE的夹角。通过单目机器视觉的方法,如几何相似法、几何光学法,可以得到AC、BC的长度。而AB的长度可以事先通过测量得到,或直接使用一些典型值。这样又可以用余弦定理计算出角度t3、以及C距A的水平距离L1和垂直距离L2。通过简单的平面几何推导可以得到t0=t3-t2,即上文所述头部和终端显示屏之间的相对倾角;t4=t1+t3-t2,即头部的水平倾角。
[0052] 当t1超出其门限T1,或t4超出其门限T4,或L1超出其门限Lt1,或L2超出其门限Lt2时,界面显示相应的提示信息。例如将正确姿态定义为:t1=t4≈90度,L1>30厘米,L2≈0,t1、t4、L1和L2门限值可分别定为T1=80度,T4=55度,Lt1=23厘米,Lt2=8厘米。以上门限值仅为举例,并不排除用其它最大或最小值方式确定门限值。
[0053] 长度AB通过校准过程得到典型值。测量面部相对于设备的姿态是否正确,可以加一个校准过程,校准时,要求用户必须用正确的姿态,保持特定已知的姿态参数值,例如头部正直,手机显示屏与眼睛几乎同高且正对眼睛,显示屏距离眼睛30厘米左右。摄像头将此时的面部信息进行分析,可以得到用户的特征信息,如两只眼睛、鼻子、下颌等比较容易识别的点的几何关系。这样前文所述识别过程中用到的AB长度的典型值就可以用单目机器视觉的方法得到了。
[0054] 如果直接使用经验值来确定面部器官中点间距的典型值,可省略头部姿态测量的校准过程。
[0055] 双目或多目机器视觉方法面部位置的获取。上述实施例的讨论是基于一个摄像头的方法,如果有两个或多个摄像头,这些摄像头对同一场景摄得的图像具有视差,通过对特征点之间视差的分析,可以得到A点和B点在空间中相对于摄像头中心点C(此时可定义为某一个摄像头镜头中心点)的距离,从而可以算出L1和L2两个距离参数以及角度t3,进而算出角度t4。采用所述双目或多目检测方法,存在两个或多个摄像头,采用双目及多目机器视觉的方法不需要校准过程。
[0056] 虚拟多摄像机进行面部位置的获取。可以将光学成像系统和单个摄像头结合,形成两个或多个虚拟摄像机,组成单摄像机的双目或多目视觉系统,获得虚拟的立体视觉。这样可以解决一般双目或多目系统中对多个摄像头的一致性要求。
[0057] 使用3D相机进行面部位置的获取。随着技术的进步,现在已经出现的3D相机可以直接输出立体图形,只要从中提取出所需要的特征点,如前面实施例中的A点和B点,就可以算出L1和L2两个距离信息以及角度t2、t3,进而算出角度t0、t4。
[0058] 图7是特征面提取法面部位置的获取原理图,摄像头图像数据中用户面部占据的范围为Af,取人面部中线两个容易识别的特征点A、B,获得面部中间线Cf,面部中间线Cf偏离摄像头图像中间线Cc的平均距离为d。其中,图7(a)表示摄像头图像数据中用户面部占据的范围Af过大的情形;图7(b)摄像头图像数据中用户面部占据的范围Af过小的情形;图7(c)表示面部中间线Cf偏离摄像头图像中间线Cc的平均距离为d较远的情形;图7(d)表示用户姿态正常的情形。
[0059] 图8是使用距离和角度参数的实施例流程图
[0060] 第301步:显示屏姿态检测。姿态传感器采集终端显示屏所处空间状态,输出设备姿态数据。姿态计算模块使用姿态传感器输出的设备姿态数据计算设备绝对姿态参数t1。
[0061] 第302步:用户姿态检测。摄像头采集用户图像,从图像中提取出用户的面部及面部的特征点,如眼睛、鼻子、嘴等,分析计算用户面部的相对姿态参数和绝对姿态参数。采用单目、双目或多目视觉的方法,测量出面部各器官中点与摄像头之间的距离,进一步计算出的几何关系,包括眼睛与显示屏的水平距离L1、垂直距离L2,面部中线(面部各器官中点连线)的与终端设备显示屏所在平面的相对倾角(如图6所示t2,t3,以及计算得出t0)。姿态计算模块根据以上角度值,计算用户面部中线的水平倾角t4。
[0062] 第303步:用户姿态分析。姿态判断模块将以上姿态参数(L1、L2、t0、t1、t2、t3、t4)中至少一个参数和该参数的门限值进行比较,判断用户姿态是否正确。此处用户姿态不正确,是指至少一个所述姿态参数超出该参数门限值表示的范围。
[0063] 第304步:信号输出。当第303步用户姿态分析的结果中发现用户姿态不正确时,触发姿态提醒模块发出提示信息。
[0064] 以上步骤循环进行。当第303步用户姿态分析结果中发现姿态参数均不超过门限值、或第304步完成后,回归第301步。为了减少检测的频率,本实施例中还包含第305步:延迟。延迟为0表示直接回归。
[0065] 对图8所示实施例进一步优化,为了减少信号发生频率,在第301~304步构成的循环过程中,至少一个所述姿态参数超过门限值,且持续多次循环该均参数均超出门限值,所述第304步才触发姿态提醒模块发出提示信号和/或矫正建议信号。此处用户姿态不正确,是指至少一个所述姿态参数超过门限值,且持续多次循环该均参数均超出门限值。
[0066] 图9是使用面积和角度参数的实施例流程图
[0067] 第401步:显示屏姿态检测。姿态传感器采集终端显示屏所处空间状态,输出设备姿态数据。姿态计算模块使用姿态传感器输出的设备姿态数据计算设备绝对姿态参数t1。
[0068] 第402步:用户姿态检测。摄像头采集用户图像,从图像中提取出用户的头部和面部的像素,用特征分析的方法确定用户面部和头部图像A,进一步在摄像头图像数据用户面部标准轮廓As中占据的范围Af、及面部中间线偏离图像中间线的程度d、以及面部中间线和显示屏的相对倾角t0。
[0069] 第403步:用户姿态分析。姿态判断模块将以上姿态参数(Af、d、t1、t0)中至少一个参数和该参数的门限值进行比较,判断用户姿态是否正确。用户姿态不正确,是指所述姿态参数中至少一个参数超出该参数门限值表示的范围。
[0070] 第404步:信号输出。当第403步用户姿态分析的结果中发现用户姿态不正确时,触发姿态提醒模块发出提示信息。
[0071] 以上步骤循环进行。当第403步用户姿态分析结果中发现姿态参数均不超过门限值、或第404步完成后,回归第401步。为了减少检测的频率,本实施例中还包含第405步:延迟。延迟为0表示直接回归。
[0072] 对图9所示实施例进一步优化,为了减少信号发生频率,在第401~404步构成的循环过程中,至少一个所述姿态参数超过门限值,且持续多次循环该均参数均超出门限值,所述第404步才触发姿态提醒模块发出提示信号和/或矫正建议信号。此处用户姿态不正确,是指至少一个所述姿态参数超过门限值,且持续多次循环该均参数均超出门限值。
[0073] 关于检测周期。由于人体从正确姿态变为不正确姿态的过程比较缓慢,作为本发明方法的优化的实施例,摄像头可以只是每隔数十秒才进行一次拍摄,其它单元根据这次拍摄的结果做出相应的响应。实现的方法的例子是使上述实施例中第205、305、405步中的延迟时间为数十秒,本方法也适用于本说明书所述其他实施例。
[0074] 关于显示模式。本发明的系统和方法在显示屏工作的状态下才有意义,作为本发明方法的优化的实施例,该发明在开始姿态检测之前先检测显示屏是否处于显示状态。如正常显示,则执行前述实施例所述的步骤。如无显示,则不开启检测过程以节省电能。
[0075] 当终端所运行的应用软件占据显示屏时,用户面向终端显示屏。将用户姿势检测及提醒功能开发成函数库,集成在操作系统或开发工具中的函数库中供一般应用程序开发者调用,这样可以降低一般应用程序开发者的开发难度,在更多的应用程序中为用户提供健康保证。
[0076] 应用在移动智能终端(例如3G手机或LTE手机)时,智能终端的操作系统(如Android、iOS、黑莓)可以基于本发明的方法提供一种系统服务,作为一种后台运行的服务,该服务在显示屏被应用程序占用并显示内容时检查用户的姿态,在姿态不正确时直接发出提示。例如,智能终端的操作系统可以提供一个API(应用程序编程接口),该API通过本发明的技术方案向应用程序提供用户的姿态,由应用程序发出姿态提醒。再例如,本发明也可以是智能终端上运行的一个普通应用程序或通用监控应用程序,该应用程序通过本发明的方法来决定是否发出姿态提醒。
[0077] 本方法还可以包含对功能进行设置的步骤。在操作系统、应用程序中对本发明的功能进行设置,使得该功能只在某些应用中启用,也可以通过设置让该功能在某些应用中不被启用。如前台应用程序是接听、拨打电话、听收音机或其它音频内容时,由于此时用户不会长时间关注显示屏,此时不必要开启本功能。这种设置可以是用户手动设置,也可以是操作系统、应用程序进行默认设置。