1.本技术涉及电子信息领域,尤其涉及一种面部识别方法及装置。
背景技术:2.面部识别被广泛用于电子设备对授权用户的识别。例如,对于人脸解锁功能,依据面部识别是否通过,判决是否解锁屏幕。
3.目前通常使用rgb(red green blue)数据进行面部识别,因为rgb数据受光线的影响较大,所以使用rgb数据的面部识别很容易受到攻击,因此面部识别的安全性有待提升。
技术实现要素:4.本技术提供了一种面部识别方法及装置,目的在于解决如何提高面部识别的安全性的问题。
5.为了实现上述目的,本技术提供了以下技术方案:
6.本技术的第一方面提供一种面部识别方法,包括:获取飞行时间tof数据;在可信执行环境tee将所述tof数据处理为tof图像,在所述tee使用所述tof图像进行面部识别,得到识别结果。使用tof数据进行面部识别具有较高的安全性,在tee处理tof数据并进行面部识别,能够进一步提高安全性。
7.可选的,在所述在可信执行环境tee将所述tof数据处理为tof图像之前,还包括:将获取的所述tof数据存储至所述tee,以为在tee处理tof数据奠定基础。
8.可选的,还包括:将所述tof数据在所述tee的存储信息,向所述tee传输,以为在tee处理tof数据奠定基础,并且,传输存储信息,而非tof数据,能够进一步提高安全性,还能够节省传输带宽资源。
9.可选的,所述在可信执行环境tee将所述tof数据处理为tof图像,包括:在所述tee,使用所述存储信息,读取所述tof数据;将所述tof数据处理为tof图像,以适应传输存储信息而非tof数据的传输方式。
10.可选的,所述将所述tof数据处理为tof图像,包括:使用所述tof数据以及tof相机的标定数据,生成所述tof图像。使用标定数据生成tof数据,有利于得到质量较高的tof图像。
11.可选的,在所述使用所述tof数据以及tof相机的标定数据,生成所述tof图像之前,还包括:将所述标定数据,从通用执行环境ree向所述tee传输,以为在tee生成tof图像奠定基础。
12.可选的,还包括:在所述tee,依据所述tof数据,生成安全标识或者ae结果,所述安全标识用于指示tof光源对人眼是否安全,所述ae结果用于调整所述tof相机的曝光参数。安全标识或者ae结果生成,有利于实现更多的功能。
13.可选的,在所述生成安全标识或者ae结果之后,还包括:将所述安全标识或者ae结果向通用执行环境ree传输;在所述ree依据所述安全标识或者ae结果,控制所述tof相机,
有利于提高tof相机的安全性,或者,提高后续采集的tof数据的质量。
14.可选的,所述生成安全标识,包括:依据所述tof数据中的安全指示帧,生成所述安全标识。安全指示帧来自于tof数据,因此,能够更准确地反应tof相机的红外光对人眼是否安全。
15.可选的,生成ae结果,包括:依据所述tof数据中的面部识别帧,生成所述ae结果。所述将所述tof数据处理为tof图像,包括:将所述面部识别帧处理为所述tof图像。将tof数据划分为安全指示帧和面部识别帧,能够实现人眼安全指示功能,因此,对面部识别帧进行处理,目的在于实现基于tof数据的面部识别的前提下,兼容人眼安全指示功能。
16.可选的,所述tof图像包括深度图像和红外图像。所述使用所述tof图像进行面部识别,包括:使用所述深度图像和红外图像进行防伪识别;使用所述红外图像与预设的面部模板进行面部比对。既进行防伪识别又进行面部比对,有利于提高面部识别的安全性。
17.可选的,在所述得到识别结果之后,还包括:将所述识别结果从tee向ree的应用传输,以触发所述应用使用所述识别结果执行任务,从而实现将基于tof数据的面部识别用于应用实现特定功能的目的。
18.可选的,所述使用所述tof图像进行面部识别,得到识别结果,包括:使用第一帧tof数据生成的tof图像进行面部识别,得到识别结果,以提高面部识别的执行速度。
19.可选的,所述tof数据包括:第一帧tof数据,所述第一帧tof数据包括投射关闭数据以及红外数据,所述投射关闭数据为tof相机在关闭tof光源的情况下采集的tof数据。投射关闭数据为减轻红外数据的过曝光奠定基础。
20.可选的,所述将所述tof数据处理为tof图像,包括:确定所述红外数据中存在数值大于第一阈值的数据点的数量大于第二阈值的数据块;将所述红外数据与所述投射关闭数据之差,处理为所述tof图像。数值大于第一阈值的数据点的数量大于第二阈值的数据块为过曝光的数据块,而投射关闭数据为tof相机在关闭tof光源的情况下采集的tof数据,所以红外数据与投射关闭数据之差,能够纠正红外数据的过曝光问题。
21.可选的,所述将所述tof数据处理为tof图像,包括:在相机域,将所述tof数据处理为tof图像;所述使用所述tof图像进行面部识别,包括:在面部域,使用所述tof图像进行面部识别。因此不同的域之间不需要太多的交互,能够减少耦合工作量,逻辑清晰,便于开发和维护。
22.可选的,在所述在可信执行环境tee将所述tof数据处理为tof图像之前,还包括:通过内核层将获取的所述tof数据,以第一存储信息,存储至所述tee的第一安全缓冲存储单元;将所述第一存储信息通过ree的通信协议,向所述tee传输。通过安卓操作系统实现第一存储信息的传输,有利于提高兼容性和可实施性。
23.可选的,所述将所述第一存储信息通过ree的通信协议,向所述tee传输,包括:通过所述内核层,向硬件抽象层的camera hal3传输所述第一存储信息;通过所述camera hal3,向应用程序框架层的相机服务传输所述第一存储信息;通过所述相机服务,向所述硬件抽象层的面部应用客户端传输所述第一存储信息;通过所述面部应用客户端向所述tee的面部可信应用传输所述第一存储信息。因此能够使用安卓操作系统中各层之间的通信协议实现第一存储信息的传输,具有较高的兼容性和可实施性。
24.可选的,所述将所述第一存储信息通过ree的通信协议,向所述tee传输的另一种
实现方式包括:通过所述内核层,向硬件抽象层的tof node传输所述第一存储信息;通过所述tof node,向所述硬件抽象层的tof应用客户端传输所述第一存储信息;通过所述tof应用客户端,向所述tee的tof可信应用传输所述第一存储信息。该实现方式适用于相机域数据与面部域数据分开处理的场景。
25.可选的,所述在可信执行环境tee将所述tof数据处理为tof图像,包括:通过所述tee的面部可信应用或tof可信应用,将所述第一存储信息向所述tee的数据处理模块传输;通过所述数据处理模块,依据所述第一存储信息从所述第一安全缓冲存储单元中读取所述tof数据,并将所述tof数据处理为所述tof图像。
26.可选的,在所述tof数据处理为所述tof图像之后,还包括:通过所述数据处理模块,以第二存储信息,将所述tof图像存储在所述tee的第二安全缓冲存储单元;通过所述数据处理模块,向面部可信应用或tof可信应用传输所述第二存储信息;通过所述面部可信应用或tof可信应用,向面部识别模块传输所述第二存储信息。传输tof图像的存储信息而非tof图像,能够节省tee的传输带宽资源。
27.可选的,通过所述tof可信应用,向所述tee的面部识别模块传输所述第二存储信息,包括:通过所述tof可信应用,向硬件抽象层的tof应用客户端传输所述第二存储信息;通过所述tof应用客户端,向所述硬件抽象层的tof node传输所述第二存储信息;通过所述tof node,向所述硬件抽象层的camera hal3传输所述第二存储信息;通过所述camera hal3,向应用程序框架层的相机服务传输所述第二存储信息;通过所述相机服务,向所述硬件抽象层的面部应用客户端传输所述第二存储信息;通过所述面部应用客户端,向所述tee的面部可信应用传输所述第二存储信息;通过所述面部可信应用,向所述tee的面部识别模块传输所述第二存储信息,以适用于相机域数据与面部域数据分开处理的场景。
28.可选的,所述在所述tee使用所述tof图像进行面部识别,得到识别结果,包括:通过所述面部识别模块,依据所述第二存储信息读取所述tof图像;对所述tof图像进行面部识别,得到所述识别结果。
29.可选的,在所述将所述tof数据处理为所述tof图像之前,还包括:通过所述camera hal3,将所述ree中的标定数据,向所述相机服务传输;通过所述相机服务,将所述标定数据向所述面部应用客户端传输;通过所述面部应用客户端,将所述标定数据向所述tee的面部可信应用传输。基于安卓操作系统的各层传输标定数据,为在tee生成tof图像奠定基础,并且,具有较高的兼容性和可实施性。
30.可选的,在所述将所述tof数据处理为所述tof图像之前,还包括:通过所述tof node,将所述ree中的标定数据,向硬件抽象层的tof应用客户端传输;通过所述tof应用客户端,将所述标定数据向所述tee的tof可信应用传输,以适用于相机域数据与面部域数据分开处理的场景。
31.可选的,还包括:通过所述面部可信应用或tof可信应用将所述标定数据存储至所述tee的标定数据存储单元,可以在运行tee的处理器不掉电的情况下,不再重复传输标定数据,以节省传输带宽资源。
32.可选的,在所述得到识别结果之后,还包括:通过所述tee的面部可信应用,将所述识别结果向所述ree的硬件抽象层的面部应用客户端传输;通过所述面部应用客户端,将所述识别结果向所述ree的应用程序框架层的面部服务传输;通过所述面部服务,将所述识别
结果向所述ree的应用程序层的发起任务的应用传输,所述识别结果用于所述应用执行所述任务。通过ree的各层,提供了向触发面部识别的应用传输识别结果的通路,具有较高的兼容性和可实施性。
33.可选的,在所述获取飞行时间tof数据之前,还包括:通过应用程序层的应用,向应用程序框架层的面部服务传输任务请求;通过所述面部服务,将所述任务请求向硬件抽象层的面部应用客户端传输;通过所述面部应用客户端,向所述应用程序框架层的相机服务传输图像请求,以响应所述任务请求;通过所述相机服务,向硬件抽象层的camera hal3传输所述图像请求,所述图像请求用于所述camera hal3控制tof相机采集所述tof数据,以基于安卓操作系统,为触发tof相机采集tof数据提供一种实现方式。
34.可选的,还包括:通过所述tee的数据处理模块,依据所述tof数据生成安全标识或者ae结果,所述安全标识用于指示tof光源对人眼是否安全,所述ae结果用于调整所述tof相机的曝光参数,以为实现更多的功能奠定基础。
35.可选的,在所述生成安全标识或者ae结果之后,还包括:通过所述tee的面部可信应用,将所述安全标识或者ae结果,向ree的硬件抽象层的面部应用客户端传输;通过所述面部应用客户端,将所述安全标识或者ae结果,向所述ree的应用程序框架层的相机服务传输;通过所述相机服务,向所述硬件抽象层的所述camera hal3传输;通过所述camera hal3,依据所述安全标识或者ae结果,控制所述tof相机。通过安卓操作系统,实现在提高面部识别安全性的前提下,实现更多的功能。
36.可选的,在所述生成安全标识或者ae结果之后,还包括:通过所述tee的tof可信应用,将所述安全标识或者ae结果,向ree的硬件抽象层的tof应用客户端传输;通过所述tof应用客户端,将所述安全标识或者ae结果,向所述硬件抽象层的tof node传输;通过所述tof node,向所述硬件抽象层的所述camera hal3传输;通过所述camera hal3,依据所述安全标识或者ae结果,控制所述tof相机,以适用于相机域数据与面部域数据分开处理的场景。
37.本技术的第二方面提供一种电子设备,包括:tof相机、存储器和处理器。tof相机用于采集飞行时间tof数据,存储器用于存储程序代码,处理器用于运行所述程序代码,以执行本技术的第一方面提供的面部识别方法。
38.本技术的第三方面提供一种芯片系统,包括:至少一个处理器以及接口,所述接口用于接收代码指令,并传输至所述至少一个处理器;所述至少一个处理器运行所述代码指令,以实现本技术的第一方面提供的面部识别方法。
39.本技术的第四方面提供一种可读存储介质,其上存储有程序代码,所述程序代码被计算机设备执行时,实现本技术的第一方面提供的面部识别方法。
附图说明
40.图1a为使用电子设备进行面部识别的场景示例图;
41.图1b为强光下使用电子设备进行面部识别的场景示例图;
42.图2为本技术实施例公开的一种电子设备的结构示意图;
43.图3为本技术实施例公开的电子设备实现面部识别的软件框架示意图;
44.图4为本技术实施例公开的一种面部识别方法的流程图;
45.图5为本技术实施例公开的又一种面部识别方法的流程图;
46.图6为本技术实施例公开的又一种面部识别方法的流程图;
47.图7为本技术实施例公开的一种数据处理方法的流程图;
48.图8为本技术实施例公开的又一种数据处理方法的流程图;
49.图9为图8中s819的具体实现流程图;
50.图10为本技术实施例公开的一种数据获取方法的流程图;
51.图11为本技术实施例公开的又一种数据获取方法的流程图;
52.图12为本技术实施例公开的又一种数据获取方法的流程图;
53.图13为电子设备实现面部识别的又一种软件框架示意图;
54.图14为本技术实施例公开的电子设备实现面部识别的又一种软件框架示意图;
55.图15为本技术实施例公开的又一种面部识别方法的流程图;
56.图16为本技术实施例公开的又一种面部识别方法的流程图;
57.图17为本技术实施例公开的又一种面部识别方法的流程图;
58.图18为本技术实施例公开的一种数据处理方法的流程图;
59.图19为本技术实施例公开的又一种数据处理方法的流程图。
具体实施方式
60.图1a为面部识别应用在电子设备的场景,用户在使用电子设备例如手机实现某项需要用户授权的功能时,用户自发或依据电子设备发出的提示信息,将电子设备的摄像头对准面部。电子设备目前通常配置rgb相机。电子设备通过rgb相机采集到图像后,将图像进行面部识别,面部识别包括但不限于与已存储的面部模板进行比对以及防伪识别,得到识别结果后,依据识别结果执行任务。
61.例如,用户预期使用人脸解锁屏幕,将手机屏幕朝向人脸,以使得手机的前置相机采集面部图像。手机在采集图像后,将图像进行面部识别,如果识别通过则解锁屏幕,如果识别不通过,则保持锁屏状态。
62.发明人在研究的过程中发现,电子设备在使用识别结果识别授权用户时,安全性有待提高:目前对于面部的恶意攻击主要可划分为平面攻击(如用照片冒充真实人脸)、头模面具攻击(如用3d模型冒充真实人脸)以及相似面部仿冒。
63.发明人在研究的过程中还发现,将飞行时间(time
‑
of
‑
flight,tof)数据用于面部识别,具有如下特点:1、tof数据可以生成深度图像以及红外图像,所以具有较好的防伪性能(即防止平面攻击和头模面具攻击)。2、tof数据受光线的影响较小,所以tof数据的质量较高,因此人脸比对可以使用较高的门限值,从而降低了相似面部的仿冒的可能性。可见,将tof数据用于面部识别可以提高安全性。
64.然而,目前主流的硬件平台仅支持rgb数据的处理,而不支持tof数据的处理,例如,目前主流的处理器中的图像信号处理器(image signal processor,isp)仅支持将rgb相机采集的rgb相机原始数据(camera raw data)数据处理为rgb原始数据(raw data),而无法对tof相机采集的tof数据(如tof camera data)进行处理。而为了处理tof相机采集的tof数据重新设计硬件平台的代价过大。所以,需要借助软件框架处理tof相机采集的tof数据,而与硬件相比,软件更易受到攻击,在这种情况下,即使将tof数据用于面部识别,仍然
有安全漏洞。
65.本技术的以下实施例提供了一种面部识别方法,应用于电子设备,目的在于提高面部识别的安全性。
66.图2为电子设备的示例图,包括:tof相机1,处理器2、存储器3、以及i/o子系统4。
67.tof相机1用于采集tof数据。在某些实现方式中,tof相机1被设置为电子设备的前置相机,用于采集电子设备的显示屏(图2中未画出)前方的tof数据。例如,采集位于电子设备的显示屏之前的人脸的tof数据。
68.tof相机1包括tof传感器11、tof传感器控制器12、tof光源13以及tof光源控制器14。
69.在某些实施方式中,tof光源控制器14受tof传感器控制器12的控制,实现对tof光源13的控制。tof光源13在tof光源控制器14的控制下,发射红外(ir)光。tof传感器11用于感应红外(ir)光在物体例如人脸反射的光线,以采集tof数据。
70.tof传感器控制器12以及tof光源控制器14设置在i/o子系统4中,通过i/o子系统4与处理器2通信。
71.存储器3可以用于存储计算机可执行的程序代码。具体的,存储器3可以包括程序存储区和数据存储区。其中,程序存储区可存储用于实现操作系统、软件系统、至少一个功能所需的程序代码等。数据存储区可存储电子设备使用过程中所获取、生成以及使用的数据等。
72.在某些实现方式中,存储器3的全部或一部分,可以集成在处理器2中,作为处理器2的内部存储器。在某些实现方式中,存储器3为相对于处理器2的外部存储器,通过处理器2的外部存储器接口与处理器2通信。
73.在某些实现方式中,存储器3可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
74.处理器2可以包括一个或多个处理单元,例如:处理器2可以包括应用处理器(application processor,ap),图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp)等。
75.在某些实现方式中,处理器2可以包括安全区域处理器21,面部识别涉及的数据可以存放在安全区域处理器21中,并由安全区域处理器21通过调用存储器3中的程序代码执行对这些数据的处理流程,以提高面部识别的安全性。
76.在某些实现方式中,安全区域处理器21用于存储tof相机1采集的tof数据,并使用tof数据生成tof图像,使用tof图像进行面部识别处理,得到识别结果。处理器2可使用识别结果执行人脸解锁或人脸支付等任务。
77.可选的,电子设备还可以包括环境光传感器(图2中未画出),用于感应环境电子设备所处的环境的光线强度。可以理解的是,环境光传感器通过设置在i/o子系统4中的环境光传感器控制器(图2中未画出)与处理器2通信。
78.可以理解的是,本实施例示意的结构并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件、软件或软件和硬件的组合实现。
79.可以理解的是,处理器2通过运行存储器3中存储的代码,实现的操作系统可以为ios操作系统、android开源操作系统、windows操作系统、鸿蒙操作系统等。在以下实施例中,将以android开源操作系统为例进行说明。
80.电子设备的处理器2运行存储器3中存储的程序代码,可以实现图3所示的基于android开源操作系统的软件框架:
81.软件框架包括可信执行环境(trusted execution environment,tee)以及可以执行富指令的通用执行环境(rich execution environment,ree)。tee可由处理器2中的安全区域处理器21通过运行程序代码实现。
82.ree中包括android开源操作系统的各层,包括但不限于:应用程序层、应用程序框架层、硬件抽象层以及内核层。
83.应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括支付应用以及锁屏应用。各个应用可以在不同场景下发起任务请求,以触发面部识别。
84.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。如图3所示,应用程序框架层可以包括相机服务(camera service)以及面部服务(face service)。camera service用于实现相机功能。face service用于实现面部识别功能。
85.硬件抽象层用于将硬件抽象化。它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。硬件抽象层中的相机硬件抽象层(camera hal3)用于响应camera service的指令,对相机进行控制。面部应用客户端(face client application,face ca,又称为面部客户应用)通过调用位于ree的tee客户端的api(application programming interface,应用编程接口)去访问tee的可信应用,从而使用tee及可信应用提供的安全功能。
86.内核层是硬件与软件之间的层。硬件的驱动软件通常设置在内核层。图3中,内核层中的isp
‑
lite的作用之一为驱动处理器中的isp
‑
lite(isp的一部分),将tof传感器采集的tof数据(如tof camera raw data)转换为图像处理常用的数据格式,例如tof原始数据(raw data)。在以下实施例中,将isp
‑
lite处理得到的数据以及tof相机采集的tof数据,统称为tof数据。内核层中的tof相机驱动用于驱动tof相机。tee中包括用于基于tof数据进行面部识别的各个应用、模块以及单元。其中,面部可信应用(face trusted application,face ta)的作用为调度tee中的各个模块以及单元,并与ree通信。数据处理模块用于处理raw data等数据。面部识别模块用于实现使用面部模板进行面部识别、以及面部模板管理等功能。
87.基于图3所示的框架,电子设备能够在tee将tof数据处理为tof图像,并在tee使用tof图像进行面部识别,得到识别结果,即在使用tof数据进行面部识别以提高安全性的基础上,数据处理以及识别均在tee中实现,能够进一步提高安全性。
88.下面将结合图3,对本技术实施例公开的面部识别方法进行详细说明,如图4所示,本技术实施例公开的电子设备执行的面部识别方法包括以下步骤:
89.s401、通过应用程序层的应用,向应用程序框架层的面部服务(face service)传输任务请求。
90.可以理解的是,应用可以响应于至少一种指令、用户的至少一种操作、或至少一种
传感器信号等,或周期性地,发起任务,并向面部服务发送任务请求。以锁屏应用为例,用户按下电源键,触发解锁任务,解锁应用向face service发送解锁请求。
91.s402、通过face service向硬件抽象层的面部应用客户端(face client application,face ca)传输任务请求。
92.s403、通过face ca向应用程序框架层的相机服务(camera service)传输图像请求,以响应任务请求。
93.s404、通过camera service向硬件抽象层的相机硬件抽象层(camera hal3)传输图像请求。
94.s405、通过camera hal3响应图像请求,向内核层的tof相机驱动传输出图指令,以驱动tof相机采集tof数据。
95.s406、内核层的isp
‑
lite将接收并处理后的tof数据,以第一存储信息存储在tee的第一安全缓冲存储单元(secure buffer)。第一存储信息指示存储地址。
96.由isp
‑
lite将接收并处理后的tof数据存入tee,相当于tof数据从硬件(处理器的isp)直接被存入安全区,所以,降低了被攻击的可能性。
97.s407、通过内核层的isp
‑
lite向硬件抽象层的camera hal3传输第一存储信息。
98.因为第一存储信息在ree中传输,所以,为了保证第一存储信息的安全性,可选的,第一存储信息可以为加密信息,即密文。本步骤中,加密信息的一种示例为文件描述符(file descriptor,fd),用于描述存储位置以及读取方式。
99.为了便于描述,将第一存储信息的密文简称为fd1。
100.s408、通过camera hal3,向应用程序框架层的camera service传输fd1以及标定数据。
101.因为后续tof图像的生成需要用到标定数据,所以,camera hal3获取预先配置在ree中的标定数据,并跟fd1一并向tee传输。
102.可选的,camera hal3可以从ree的存储单元获取一部分标定数据,可以从tof相机获取另一部分标定数据。
103.s409、通过camera service,向硬件抽象层的face ca传输fd1以及标定数据。
104.s410、通过face ca向tee的面部可信应用(face trusted application,face ta)传输fd1以及标定数据。
105.可以理解的是,上述ree中各层的模块之间的信息交互,均可以遵循各层之间的通信协议。
106.基于现有的操作系统的框架,将tof数据的存储信息传输至tee,为在tee中处理tof数据奠定了基础。并且,由isp
‑
lite将接收并处理后的tof数据存入tee,保证了tof数据的安全。
107.s411、通过tee的face ta,将fd1向tee的数据处理模块传输,并将标定数据存储至tee的标定数据存储单元。
108.s412、通过数据处理模块,依据fd1从第一安全缓冲存储单元中读取tof数据,并从标定数据存储单元读取标定数据。
109.s413、通过数据处理模块,使用tof数据和tof相机的标定数据,生成深度图像和红外图像。
110.s414、通过数据处理模块,以第二存储信息,将tof图像存储在tee的第二安全缓冲存储单元。
111.因为均在tee实现,所以,第二存储信息可以不加密。
112.s415、通过数据处理模块,向face ta传输第二存储信息。
113.s416、通过face ta,向面部识别模块传输第二存储信息。
114.s417、通过面部识别模块,依据第二存储信息从第二安全缓冲存储单元读取tof图像。
115.s418、通过面部识别模块对读取的tof图像进行面部识别,得到识别结果。
116.具体的,面部识别模块通过调用预先配置的面部模板,对tof图像进行面部比对,得到比对结果,并且,使用tof图像进行防伪识别,得到防伪结果。识别结果可以依据比对结果和防伪结果确定,例如,比对结果为比对通过,防伪结果为防伪通过,则识别结果为通过。
117.如前所述,因为tof图像包括深度图像和红外图像,所以,将红外图像与人脸模块进行比对时可以使用较高的比对门限值,因此,准确性较高,从而能够降低相似面部仿冒的可能性。又因为深度图像和红外图像可同时被用于防伪识别,所以具有较高的防伪性能(即防止平面攻击和头模面具攻击的性能较高)。
118.s419、通过面部识别模块将识别结果向face ta传输。
119.s420、通过tee的face ta,将识别结果向ree的face ca传输。
120.s421、通过face ca,将识别结果向应用程序框架层的face service传输。
121.s422、通过face service,将识别结果向应用程序层中发起任务请求的应用传输。
122.以应用程序层的锁屏应用为例,锁屏应用发起解锁请求后,接收到识别结果,并基于识别结果指示识别通过,执行解锁任务,基于识别结果指示识别不通过,执行保持锁屏状态的任务。
123.可以理解的是,应用程序层的其它应用发起任务请求,获得面部识别结果的流程类似,这里不再赘述。
124.本实施例所述的面部识别方法,使用tof数据进行面部识别,所以具有较高的安全性。进一步的,在tee实现基于tof数据的面部识别,所以能够保障tof数据、数据处理过程以及识别过程的安全,从而进一步提高面部识别的安全性。
125.并且,基于安卓操作系统的各层,实现数据的存储信息、识别结果以及标定数据等在ree与tee之间的传输,具有较好的兼容性。
126.可以理解的是,因为标定数据属于相机域的数据,而非面部域的数据,所以,在某些实现方式中,标定数据还可以从camera service经由face service中转至face ca。
127.可以理解的是,在标定数据被存储在tee的标定数据存储单元后,只要处理器不掉电,则tee的标定数据存储单元中的标定数据不会丢失,所以,不必再重新加载标定数据。当然,也可以重新加载标定数据,这里不做限定。标定数据与fd1一并传输仅为一种实现方式,也可以分开传输,传输路径如前所述。
128.可以理解的是,tof相机曝光一次采集到一组tof数据,连续曝光多次,采集到多组tof数据后,停止第一时长,再次连续曝光多次,再停止第一时长,以此类推
……
。将连续采集的多组tof数据称为一帧tof数据,间隔第一时长后再次采集的多组tof数据为另一帧tof数据。在不考虑其它模块自身的处理时延以及传输时延的前提下,isp
‑
lite也以第一时长
间隔,依次将每帧tof数据存储至第一安全缓冲存储单元,并也以第一时长间隔,依次将各帧tof数据的存储信息传输至face ca。face ca也以第一时长间隔,依次将每帧tof数据的存储信息传输至face ta。因此,face ta也以第一时长间隔依次接收每帧tof数据的存储信息。图4中的s406可以为存储任意一帧tof数据,s407
‑
s411可以为传输任意一帧tof数据的fd,s413
‑
s419为针对这一帧tof数据的处理流程。s420
‑
s422可以为针对这一帧tof数据的识别结果的处理流程,也可以为针对多帧tof数据的识别结果的处理流程。
129.因为tof相机通过投射红外光采集tof数据,所以,有必要关注在采集过程中人眼的安全性。又因为tof图像的质量关系到识别结果的准确性,而tof相机的曝光参数又直接关系tof图像的质量,所以,有必要对tof相机的曝光参数进行调优。
130.本技术的实施例中,将图4所示的流程进一步改进,数据处理模块可以依据接收到的tof数据的类型,生成不同的用于调整tof相机的参数。
131.图5所示为生成并反馈自动曝光(automatic exposure,ae)结果、以及依据ae结果控制相机的流程,这里仅说明图5与图4的区别:
132.s413a、通过tee的数据处理模块,响应于tof数据为面部识别帧,生成深度图像和红外图像以及ae结果。
133.本技术的实施例中,tof相机将采集的tof数据划分为安全指示帧和面部识别帧。安全指示帧中携带人眼安全标志位,用于指示tof相机发射的红外光对于人眼是否安全。面部识别帧是用于进行面部识别的tof数据帧。在一些实现方式中,通过tof数据帧中的某个数值、字符、字符串的至少一项,指示tof数据帧的类型。
134.在一些实现方式中,tof数据采集的tof数据中,第一帧至第四帧tof数据为安全指示帧,后续帧tof数据为面部识别帧。在安全指示帧中包括人眼安全标志位。
135.ae结果用于调整tof相机的曝光参数。可选的,ae结果包括但不限于曝光时长以及tof传感器的物理增益。生成ae结果的一种方式为:提取tof原始数据(raw data)即原始图像中的面部区域,计算面部区域的亮度值,并与预先配置的目标亮度值相比,得到曝光时长以及tof传感器的物理增益。可以每帧tof数据生成一个ae结果,也可以多帧tof数据生成一个ae结果。
136.s415a、通过tee的数据处理模块,将第二存储信息以及ae结果,向tee的face ta传输。
137.可以理解的是,在上一帧tof数据的ae结果与最新得到的ae结果相同的情况下,可以不传输最新得到的ae结果,以节省tee的资源。
138.s420a、通过tee的face ta,将识别结果以及ae结果,向ree的硬件抽象层的face ca传输。
139.s423a、通过face ca,将ae结果,向ree的应用程序框架层的camera service传输。
140.s424a、通过camera service,将ae结果,向硬件抽象层的camera hal3传输。
141.s425a、通过camera hal3,依据ae结果,通过tof相机驱动调整tof相机。
142.camera hal3可以通过tof相机驱动向tof传感器控制器发送ae结果,由tof传感器控制器控制tof传感器按照ae结果采集tof数据。
143.图6所示为生成并反馈安全标识、以及依据安全标识控制相机的流程,这里仅说明图6与图4的区别:
144.s413b、通过tee的数据处理模块,响应于tof数据为安全指示帧,生成安全标识。
145.安全标识用于指示tof光源对人眼是否安全。
146.可选的,安全标识的生成方式为:在接收到携带人眼安全标志位的tof数据帧(即安全指示帧)后,提取人眼安全标志位,并依据提取的人眼标志位判断人眼是否安全,生成安全标识。人眼安全标志位指示安全,则得到指示安全的安全标识。如果人眼安全标志位指示不安全,则得到指示不安全的安全标识。
147.s415b、通过tee的数据处理模块,将第二存储信息、以及安全标识,向tee的face ta传输。
148.一般情况下,在tof相机从启动采集到结束采集的过程中,各安全指示帧携带的人眼安全标志位相同,例如,第一帧安全指示帧至第四帧安全指示帧中,人眼安全标志位均指示人眼安全,或均指示人眼不安全。在此情况下,得到的多个安全标识相同,因此,还可以仅传输一个安全标识,以节省tee的资源。
149.但不排除有些情况下,多帧安全指示帧中的人眼标志位不相同。因此,还可以仅传输最后一个安全标识,即依据最后接收到的安全指示帧确定的安全标识,以节省tee的资源。
150.s420b、通过tee的face ta,将识别结果、以及安全标识,向ree的硬件抽象层的face ca传输。
151.s423b、通过face ca,将安全标识,向ree的应用程序框架层的camera service传输。
152.s424b、通过camera service,将安全标识,向硬件抽象层的camera hal3传输。
153.s425b、通过camera hal3,依据安全标识,通过tof相机驱动调整tof相机。
154.调整tof相机包括但不限于:安全标识指示人眼不安全,则关闭tof相机,或者,降低tof光源的发射强度。安全标识指示人眼安全,则采集tof数据帧,并标识为用于面部识别的tof数据帧(即面部识别帧)。
155.基于图2,可选的,camera hal3可以通过tof相机驱动向tof传感器控制器发送关闭指令,以关闭tof相机。
156.综上所述,电子设备通过处理器获得tof raw data之后,将tof raw data,在tee中处理为tof图像,并使用tof图像进行面部识别,所以使得面部识别具有更高的安全性。
157.并且,结合安卓系统的各层,实现了tof数据的存储信息向tee的传输,不仅为tee中的处理奠定了基础,还实现了与安卓系统的兼容。
158.可见,即使电子设备的处理器不支持tof图像的生成,本实施例所述的上述框架以及流程,也能够实现使用tof数据实现面部识别,从而提高安全性的目的。
159.进一步的,还能实现人眼安全保障以及曝光参数的调整,从而在提高面部识别安全性的基础上,使得电子设备具有更优的性能。
160.可以理解的是,以上图4
‑
图6虽然以安卓操作系统为例进行说明,但本技术实施例所述的面部识别方法,并不限于安卓操作系统。例如,tee的运行不限于安卓操作系统,所以,tee中的各个应用、模块以及单元的功能,在其它操作系统也能够实现。ree的运行也不限于安卓操作系统,所以,tof数据、标定数据传输至tee的传输通路,以及任务请求的传输通路、识别结果的反馈通路等,均能够适应于不同的操作系统而调整,只要能够实现tof数
据、标定数据从ree传输至tee,以及任务请求触发tof数据的采集、识别结果用于执行任务即可。
161.发明人发现,除了安全性之外,面部识别的准确性和执行速度也有提升空间,即面部识别还存在以下问题:
162.图像质量不高导致的识别结果不准确:因为环境光的影响,相机采集的数据可能存在过度曝光、模糊、亮度不够等质量缺陷,而面部识别以相机采集的数据为基础,所以,有可能出现比对结果错误的问题,例如原本是同一人,但人脸识别结果不通过。
163.时延过大导致用户体验不好:结合图1a所示的场景,如果面部识别的速度太慢,用户需要等待的时长过长,则会降低用户的使用舒适度。图像质量不高通常是导致时延过大的原因。
164.提高图像质量和提高执行速度是一对矛盾体:要提高图像质量,就要对图像进行迭代、降噪等处理使得图像收敛,处理的手段越多,则处理速度越慢。
165.发明人在研究的过程中还发现,tof成像具有以下特点:
166.(1)tof相机采集的tof数据受环境光的影响较小,所以大多数场景下,tof相机采集的首帧tof数据(如首帧面部识别帧)的质量能够满足识别准确性的需求。因此,在大多数场景下,使用首帧tof数据即可得到准确性较高的面部识别结果。
167.还以人脸解锁业务为例:假设尝试解锁的人脸即为电子设备中已录入的人脸,也就是说,尝试解锁的人脸能够解锁屏幕,在此情况下,首帧tof数据就可以实现解锁。
168.(2)在反馈调整机制(反馈调整机制是指,使用先采集的数据以及相机的标定数据,调整后续采集数据的曝光参数以提升图像质量)生效的情况下,tof数据的收敛(收敛是指不再变化)速度快,大概3
‑
4帧tof数据即收敛。
169.接上例,假设采集的首帧tof数据没有实现解锁,那么在使用反馈调整机制调整曝光参数的情况下,采集的第3帧或第4帧tof数据实现收敛(即后续即使再调整曝光参数,tof数据也不再变化),则采集的第3帧或第4帧tof数据即可实现解锁。
170.基于上述tof成像的特点,在使用tof数据进行面部识别以提高安全性的前提下,为兼顾准确性和速度提供了可能性。
171.在以下实施例中,基于前述以第一时长间隔依次将每一帧tof数据存储至tee,并将每一帧tof数据的存储信息传输至tee的方式,结合tof成像的上述特点,通过face ta对数据处理模块以及面部识别模块的调度,实现准确且快速地获取识别结果的目的。
172.图7为本技术实施例公开的一种数据处理方法,与图4、图5或图6相比,改进在于tee中的应用以及模块,ree中的各个模块的功能以及数据传输方式均与图4、图5或图6相同,不再赘述。图7中所示的流程,从face ta接收到fd1以及标定数据后开始,包括以下步骤:
173.s701、face ta接收到第一帧tof数据的fd(简称为fd1)后,将fd1传输至数据处理模块。
174.在一些实现方式中,第一帧tof数据为camera hal3响应图像请求,控制tof相机驱动,驱动tof相机采集的第一帧tof数据。
175.在另一些实现方式中,tof相机采集的tof数据帧分别标识为安全指示帧和面部识别帧。安全指示帧中携带人眼安全标志位,用于指示tof相机发射的红外光对于人眼是否安
全。面部识别帧是用于进行面部识别tof数据帧。在此情况下,本步骤中的第一帧tof数据,为第一帧面部识别帧。
176.s702、数据处理模块使用fd1,从第一安全缓冲存储单元读取第一帧tof数据,并从标定数据存储单元读取标定数据。
177.本实施例中,假设标定数据已经被存储至标定数据存储单元。
178.s703、数据处理模块使用第一帧tof数据以及标定数据,生成tof图像,并生成自动曝光(automatic exposure,ae)结果。
179.如前所述,tof图像包括深度图像和红外图像。
180.ae结果用于tof相机调整采集tof数据的曝光参数。ae结果包括但不限于曝光时长以及tof传感器的物理增益。生成ae结果的一种方式为:提取tof原始图像(raw data)中的面部区域,计算面部区域的亮度值,并与预先配置的目标亮度值相比,得到曝光时长以及tof传感器的物理增益。
181.为了便于描述,将第一帧tof数据处理得到的tof图像称为第一帧tof图像。将第一帧tof数据得到的ae结果称为第一ae结果。
182.s704、数据处理模块将第一帧tof图像存储在第二安全缓冲存储单元。
183.s705、数据处理模块将第一帧tof图像的存储信息以及第一ae结果向face ta传输。
184.可以理解的是,因为第一帧tof图像的存储信息仅在tee传输,所以可以使用明文形式传输。
185.s706、face ta将第一ae结果向tof相机传输。
186.第一ae结果向tof相机传输的通路,结合图4、图5或图6所示的示例为:face ta、face ca、camera service、camera hal3、以及tof相机的tof传感器控制器,再由tof传感器控制器使用第一ae结果调整tof相机的参数,包括但不限于曝光时长。
187.可以理解的是,第一ae结果能够作用的tof数据帧,与处理器处理tof数据的时长相关。以tof相机30ms的采集间隔为例,假设处理器生成第一tof图像以及第一ae结果的总耗时也为30ms,则第一ae结果最早能够作用于tof相机采集的第三帧tof数据。
188.生成以及传输ae结果为可选步骤。目的在于,改善后续采集的tof数据的质量,进而得到质量更好的tof图像,以及更准确的识别结果。
189.第一帧tof数据可以使用预先配置的固定曝光参数采集。
190.s707、face ta将第一帧tof图像的存储信息向面部识别模块传输,以触发面部识别模块进行面部识别。
191.可以理解的是,s706以及s707的执行顺序不做限定。
192.s708、面部识别模块使用第一帧tof图像的存储信息,从第二安全缓冲存储单元读取第一帧tof图像。
193.s709、面部识别模块使用第一帧tof图像进行面部识别,得到第一识别结果。
194.结合图3,面部识别模块调用面部模板,对第一帧tof图像进行面部比对。除了面部比对之外,还可以使用深度图和红外图进行防伪识别。因此,面部识别包括面部比对和防伪识别。面部比对和防伪识别均通过,则面部识别的识别结果指示通过。
195.s710、面部识别模块将第一识别结果向face ta传输。
196.s711、face ta判断第一识别结果是否指示识别通过,如果是,执行s712,如果否,执行s713。
197.s712、face ta向face ca传输第一识别结果。
198.如前所述,face ca将第一识别结果传输至任务的发起方,例如解锁应用。
199.s713、face ta判断是否满足结束条件,如果是,执行s712、如果否,执行s714。
200.结束条件可以预先设置,本步骤中,结束条件包括:执行任务的时长达到第二时长门限。第二时长门限的一个示例为5秒。结束条件为可选,也可以不判断是否满足结束条件,在第一识别结果指示识别不通过的情况下,执行s714。
201.可见,设置结束条件的目的为避免任务执行过程中不必要的耗时:如果经历一定的时长后,面部识别还是不通过,则基本可以确定面部识别结果确定为不通过,例如,尝试解锁的人脸没有被预先存储在电子设备中。所以没有必要再继续面部识别。而应该尽快向任务反馈面部识别结果,以减小任务执行的时延,从而保证较好的用户体验。
202.s714、face ta再次从tof相机接收一帧tof数据。
203.还以tof相机30ms的采集间隔,生成第一帧tof图像以及第一ae结果的耗时也为30ms为例,在此情况下,再次从tof相机接收的一帧tof数据为tof相机采集到的第七帧tof数据。
204.可以理解的是,因为第一ae最早可以作用于第三帧tof数据,所以,第七帧tof数据是使用第一ae结果调整曝光参数后采集的tof数据帧。
205.再次接收到tof数据帧后,face ta要执行的后续流程,可以参见s701
‑
s714,即将s701
‑
s714中的作为处理对象的第一帧tof数据,替换为再次接收的一帧tof数据如第七帧tof数据,将第一帧tof数据的处理结果,适应性替换为再次接收的一帧tof数据的处理结果(例如将第一帧tof图像替换为第二帧tof图像)即可,这里不再赘述。
206.图7所示的流程,与现有的面部识别流程相比,至少具有以下区别:现有技术的图像数据的处理流程中包括迭代处理图像数据,以获取到收敛的图像数据的步骤,目的在于获得质量满足识别准确性需求的图像。
207.以rgb数据为例,因为rgb数据很容易受到环境光的影响,所以采集的首帧rgb数据的质量通常不能满足识别准确性的需求,因此,需要对rgb数据进行迭代处理,以获取到收敛的rgb数据,再使用收敛的rgb数据执行面部识别,以保证识别结果的准确性。通常,rgb数据基于迭代算法的不同,较快能够10帧左右收敛,较慢则需30
‑
40帧收敛。所以,本领域技术人员的共识为,首帧rgb数据大概率因为环境光的影响质量很差,直接用于面部识别没有意义。
208.而本实施例中,基于上述tof成像原理(1)大多数场景下,首帧tof数据即收敛,可知,第一帧tof数据大概率可以得到较为准确的识别结果。因此,在电子设备采集到首帧tof数据后,即使用首帧tof数据生成的首帧tof图像得到面部识别结果,所以,能够在保证识别结果具有较高的准确性的前提下,获得更小的处理时延。也就是说,基于tof成像的上述原理,省略了迭代图像数据以期望获得收敛的图像数据的步骤,以换取图像数据处理速度的提升。
209.进一步的,发明人在研究中发现,tof相机采集tof数据的间隔以及一个处理器生成tof图像的时长通常均为30ms,人脸识别的时长通常为150ms,所以,使用tof数据得到识
别结果的时长为:30ms+150ms=180ms。在其他条件等同的情况下,该数值能够说明本实施例所述的方法能够使用户明显感受到解锁速度的加快,所以能够改善用户体验。
210.因为再次接收的一帧tof数据使用第一ae结果确定的曝光参数采集,所以收敛的概率更大,因此,即使首帧tof数据因为质量问题没有识别通过,那么,再次接收到的一帧tof数据也能够识别成功,耗时为:(30ms+150ms)*2=360ms,跟rgb数据收敛的时长相比,仍然具有优势。
211.本实施例应用的一种更为具体的场景示例为:
212.受限于手机的硬件条件,仅有一个处理器(如图2所示的安全区域处理器21)能够被用于实现面部识别。
213.假设尝试解锁的人脸即为电子设备中已录入的人脸,用户将人脸对准手机屏幕后,tof相机以30ms的间隔采集tof数据,并向处理器传输,处理器在接收到第一帧tof数据后,按照本实施例所述的流程,将第一帧tof数据处理为第一帧深度图像和第一帧红外图像,并使用为第一帧深度图像和第一帧红外图像得到第一识别结果,在处理器生成第一帧tof图像并计算识别结果的过程中,因为处理器被占用,所以虽然tof相机还在向处理器传输tof数据帧,但处理器不能再接收后续的tof数据帧,也就是说,除了接收到的第一帧tof数据,其它tof数据帧被丢弃。
214.可见,本实施例不考虑tof数据迭代过程的流程,恰好能够契合上述一个处理器的场景。也就是说,在仅有一个处理器被用于tof数据处理和面部识别的场景下,如果既要实现识别处理,还要执行tof数据的迭代以等待tof数据的收敛,则必须由处理器串行处理,所以耗时过长。而本实施例所述的方法,因为不执行tof数据的迭代步骤,所以,能够缩短耗时,又因为tof数据在绝大多数情况下首帧即收敛的特性,在缩短面部识别耗时的情况下,还能够保证识别结果较为准确。
215.综上所述,本实施例所述的数据方法,基于tof数据大概率首帧收敛的特性,保证了绝大多数情况下能够准确且快速地进行面部识别,又因为tof数据被用于面部识别的安全性较高,因此能够实现安全、准确、以及快速地实现面部识别的目的。
216.发明人在研究的过程中进一步发现,在室外场景下,因为自然光中也存在与tof光源发射的红外光的波长接近的光,所以,采集的首帧tof数据可能会过曝,在此情况下,首帧tof数据的质量不足以获得准确的识别结果。如前述示例,在首帧不能解锁的情况下,所需的解锁时延至少为360ms,这个时延还有进一步缩小的空间。
217.本技术实施例公开的又一种数据处理方法,如图8所示:
218.s801
‑
s806与s701
‑
s706相同,具体可参见图8,这里不再赘述。
219.s807
‑
s812为接收到第二帧tof数据的存储信息后,对第二帧tof数据的处理流程,与对第一帧tof数据处理的处理流程相同,具体可参见图8,这里不再赘述。
220.可以理解的是,第二帧tof数据可能为tof相机使用基于第一ae结果调整的曝光参数采集的tof数据帧,也可能与第一帧tof数据的曝光参数相同。具体是以上哪种情况,取决于tof相机采集tof数据帧的间隔(如前述第一时长间隔)以及处理器从接收到tof数据帧至反馈ae结果的时长。
221.假设tof相机采集以及传输数据的间隔为30ms,处理器将tof数据处理为tof图像并获得ae结果的时长也为30ms,则第一ae结果不能作用于第二帧tof数据的采集。
222.s813
‑
s818为接收到第三帧tof数据的存储信息后,对第三帧tof数据的处理流程,与对第一帧tof数据处理的处理流程相同,具体可参见图8,这里不再赘述。
223.从上述流程可以看出,本实施例与上述实施例的不同在于,接收并处理前三帧tof数据。
224.s819、face ta调用面部识别模块进行面部识别。
225.s819的一种可选的实现方式如图9所示:
226.s901、face ta将第三帧tof图像的存储信息向面部识别模块传输。
227.s902、面部识别模块使用第三帧tof图像的存储信息读取第三帧tof图像后,使用第三帧tof图像进行面部识别,得到第三帧tof图像的识别结果。
228.可以理解的是,面部识别模块从第二安全缓冲存储单元读取第三帧tof图像,图9中不再赘述。
229.为了便于区别,第三帧图像的识别结果称为第三识别结果。
230.s903、面部识别模块将第三识别结果向face ta传输。
231.s904、face ta判断第三识别结果是否指示识别通过,如果是,执行s905,如果否,执行s906。
232.s905、face ta将第三识别结果向face ca传输。
233.因为第三帧tof数据最有可能是使用ae结果调整曝光参数后采集的数据,所以,质量最有可能最优,因此,先使用第三帧tof图像进行面部识别,可以进一步减少耗时。
234.s906、face ta将第一帧tof图像的存储信息以及第二帧tof图像的存储信息向面部识别模块传输。
235.s907、面部识别模块得到第一识别结果和第二识别结果。
236.第一识别结果为第一帧tof图像进行面部识别的结果。第二识别结果为第二帧tof图像进行面部识别的结果。
237.可以理解的是,使用第一帧tof图像以及第二帧tof图像进行面部识别的顺序不限定。
238.s908、面部识别模块将第一识别结果和第二识别结果向face ta传输。
239.s909、如果第一识别结果和第二识别结果的至少一个指示通过,face ta将识别通过的识别结果向tof ca传输。
240.s910、如果第一识别结果和第二识别结果均指示识别不通过,face ta判断是否满足结束条件,如果是,执行s911,如果否,再次执行图8所示的流程。
241.结束条件的定义可参见上述实施例。本步骤中,结束条件中的时长门限可以比上述实施例中的结束条件的时长门限短,原因在于,本实施例中,已经采集并处理了多帧tof数据。本步骤中,时长门限的一个示例为3秒。
242.需要说明的是,再次执行图8所示的流程时,“第n帧tof数据”,n不再是tof相机采集的数据帧的序列,n=1,2,3,是指处理器在本次执行图8所示的流程时,接收到的tof数据帧的排序。例如,s801再次被执行时,tof相机采集到的可能是第9帧tof数据,但在本次执行图8所示的流程中,处理器接收的是第一帧tof数据。因此,s801所述“第一帧tof数据”是指本次执行图8所示的流程中的第一帧tof数据,而非tof相机实际采集的第一帧tof数据。
243.s911、face ta将识别不通过的识别结果向tof ca传输。
244.可以理解的是,除了图9所示之外,还可以使用另外的方式实现s819,例如依次使用第一帧tof图像、第二帧tof图像以及第三帧tof图像进行面部识别等,又或者,仅使用第三帧tof图像进行识别,如果识别结果指示不通过,重新执行图8所示的流程,以节省内存等资源。其它实现方式这里不再一一列举。本实施例所述的方法,基于上述tof成像的原理(2)tof数据2
‑
3帧即收敛,连续处理3帧tof数据,并得到识别结果,对于室外场景,能够获得比上述实施例更小的处理时延。
245.图8所示的流程的应用场景示例为:
246.假设尝试解锁的人脸即为电子设备中已录入的人脸,用户在室外环境下将人脸对准屏幕,tof相机以30ms的间隔采集tof数据,并向处理器传输,处理器在接收到第一帧tof数据后,对接收的tof数据进行处理,生成第一tof图像以及第一ae结果。
247.因为电子设备处于室外环境,所以大概率依据首帧tof数据不会被解锁,所以处理器在生成第一tof图像并传输第一ae结果后,不会进行面部识别,而是继续接收并处理tof数据帧。因为生成tof图像以及ae结果的时长为30ms,与tof相机采集并传输tof数据的时长相当,所以,在处理完第一帧tof数据后,可以继续接收并处理第二帧tof数据,在处理完第二帧tof数据后,可以继续接收并处理第三帧tof数据。
248.基于上述时长,第一帧tof数据生成的第一ae结果,最快能够作用于第三帧tof数据,因此,第三帧tof数据大概率会解锁成功。
249.通过第三帧tof数据得到识别结果消耗的最短时长为:30ms*3+150ms,相比于上述实施例,在首帧tof数据解锁不成功的情况下,从第七帧解锁变化为第三帧解锁,所以能够提高速度,减小时延。
250.可见,如果首帧tof数据可以解锁,则与上述实施例相比,增加了两个tof数据的处理(生成tof图像以及ae结果)的时长即60ms。因此本实施例所述的数据处理方法,通过牺牲首帧tof数据解锁的速度,提高室外强光场景下的解锁速度。
251.可以理解的是,因为第一ae结果作用于第三帧tof数据,所以,可选的,在图8中,可以不处理第二帧tof数据以及第二帧tof数据的ae结果,即不执行s807
‑
s812,以节省资源。相适应的,获得识别结果也不再有第二帧tof图像的参与。
252.综上所述,第二帧tof数据可以仅被接收,而不做处理。或者,第二帧tof数据也可以不被接收而被丢弃。
253.本实施例中,以一个流程中连续处理三帧tof数据为例,实际上,连续处理的tof数据帧的数量,与生成并反馈结果ae结果的耗时,以及tof相机采集数据帧的第一时长间隔相关。
254.基于上述实施例分别适用的场景,可以理解的是,以上图7或图8所述的方法,可以使用判断条件,择优使用,基于图3所示的软件框架,本技术实施例公开的又一种数据处理方法包括以下步骤:
255.1、face ca获取环境光的强度值。
256.基于图3所示的软件框架,face ca接收到任务请求后,还可以发送光线强度请求,以获取环境光的强度值。可以理解的是,可以通过应用程序框架层、以及硬件抽象层相应模块,向内核层的相应驱动发送光线强度请求,内核层的相应驱动,驱动光线传感器感应环境光的强度值,并反馈至face ca。
257.2、face ca将环境光的强度值向face ta传输。
258.3、face ta判断环境光的强度值是否大于预设的第一强度阈值,如果是,执行图7所示的数据处理流程,如果否,执行图8所示的数据处理流程。
259.本实施例中,使用光线的强度值判断电子设备所处的环境,并使用与环境更适配的流程获得面部识别结果,所以在提高安全性的基础上,还能够最大程度地提高获得面部识别结果的准确性和速度。
260.发明人在研究的过程中还进一步发现,无论是室外还是室内场景,在环境光极强且tof相机的传感器面对强光源的情况下,首帧tof数据的质量不能支持得到准确的面部识别结果,所以,还需要对tof数据进行收敛,从而增加面部识别的时长。
261.例如图1b中,用户位于太阳光极强的室外,且用户背对太阳。在这种情况下,用户将手机的前置相机对准人脸,以预期进行人脸解锁(假设用户的人脸已经作为人脸模块存储在手机中),与室内环境相比,需要花费更多的时间才能解锁。
262.本技术实施例针对以上问题,提供一种数据获取方法,目的在于获取更高质量的首帧tof数据,以在使用tof数据进行面部识别以获得更高安全性的前提下,提高首帧tof数据的识别结果的准确性,从而进一步实现快速完成面部识别的目的。
263.图10为本技术实施例公开的一种数据获取方法,由上述电子设备执行,结合图2
‑
图6所示,图10所述流程从camera hal3通过tof相机驱动,驱动tof相机采集数据开始执行,包括以下步骤:
264.s1001、camera hal3响应于图像请求,向tof相机传输出图指令。
265.结合图2以及图3,可以理解的是,camera hal3可以通过内核层的tof相机驱动,向tof相机传输出图指令。
266.s1002、tof相机响应于出图指令,采集包括深度数据、投射关闭数据以及红外数据的第一帧tof数据。
267.深度数据为用于生成深度图像的数据。投射关闭数据为tof相机在关闭tof光源的情况下采集的tof数据。红外数据为用于生成红外图像的数据。
268.深度数据以及红外数据均为tof相机在开启tof光源的情况下采集的tof数据。
269.tof相机(上电)启动时,默认开启tof光源。在某些实现方式中,tof相机的tof传感器控制器向tof传感器传输出图指令,tof传感器响应于出图指令,采集深度数据,并向tof光源控制器传输关闭指令。tof光源控制器响应于关闭指令,关闭tof光源,tof传感器采集投射关闭数据。tof传感器向tof光源控制器传输开启指令,tof光源控制器响应于开启指令,开启tof光源,tof传感器采集红外数据。
270.在一些实现方式中,第一帧tof数据的一种示例为:4组深度数据、一组投射关闭数据、以及一组红外数据。“一组数据”可以理解为一个二维数组。
271.tof传感器先以第一曝光时长,依次采集每一组深度数据,以第二曝光时长采集红外数据,以第一曝光时长或第二曝光时长采集投射关闭数据。第一曝光时长和第二曝光时长,可以由camera hal3携带在出图指令中或单独向tof相机传输,也可以由其它模块向tof相机传输,还可以由tof相机预先从存储模块获取。
272.可以理解的是,tof传感器向tof光源控制器发送关闭指令的时机,与第一曝光时长相关,tof传感器向tof光源控制器发送开启指令的时机,与投射关闭数据的曝光时长相
关。
273.在一些实现方式中,tof传感器可以将第一时间范围内采集到的tof数据标记为投射关闭数据。第一时间范围可以依据tof传感器发出关闭指令的时间与发出开启指令的时间之间的间隔时长确定。tof传感器可以将第一时间范围之前采集的tof数据标记为深度数据,将第一时间范围之后采集的tof数据标记为红外数据。
274.可以理解的是,上述tof相机采集深度数据、投射关闭数据以及红外数据的顺序不作为限定。例如,也可以按照投射关闭数据、红外数据、深度数据的顺序采集,还可以按照红外数据、深度数据、投射关闭数据的顺序采集。tof传感器向tof光源控制器传输关闭指令以及开启指令的时机,依据顺序调整。
275.本步骤中,使用tof传感器控制tof光源的开启或关闭tof光源,具有更高的执行速度。
276.s1003、数据处理模块获取第一帧tof数据后,判断第一帧tof数据中的红外数据中是否包含目标数据块,如果是,执行s1004,如果否,执行s1005。
277.数据处理模块获取第一帧tof数据的具体方式,如图4、图5或图6所示,不再赘述。
278.红外数据为二维数组,可以理解的是,二维数组中包括一些排列成行和列的数值,每个数值可以看作一个数据点,目标数据块为满足以下预设条件的数据块:数值大于第一阈值的数据点的数量大于第二阈值。
279.如前所述,tof传感器采集的红外数据为二维数组,在经过isp
‑
lite处理为红外原始数据,即红外原始图像。因此,可以理解的是,目标数据块为红外原始图像中的目标区域,目标数据块中的各个数值为目标区域中的对应像素点的亮度值,因此,对于红外原始图像而言,目标区域为:亮度值大于第一阈值的像素的数量大于第二阈值的区域。
280.在环境光极强且tof相机面对强光源的情况下,tof相机采集的tof数据,通常会因为强光产生过曝,所以,tof数据生成的红外原始图像中的过曝区域的大部分像素值的亮度太高,而影响识别,本步骤中的目标区域(数据块)的条件,基于这一原理设置。
281.s1004、使用第一帧tof数据中的红外数据,减去第一帧tof数据中的投射关闭数据,得到处理后的第一帧tof数据,并将处理后的第一帧tof数据处理为tof图像。
282.s1005、将第一帧tof数据处理为tof图像。
283.可以理解的是,将第一帧tof数据处理为tof图像是指,将第一帧tof数据中的深度数据处理为深度图像,将第一帧tof数据中的红外数据处理为红外图像。
284.本实施例所述的方法,在首帧tof数据中的红外数据过曝的情况下,通过将首帧tof数据中的红外数据减去投射关闭数据的方式,去除环境光对于红外数据的影响,从而提高首帧tof数据的质量,进一步得到较高质量的tof图像,有利于提高面部识别的准确性和速度。
285.图11为本技术实施例公开的又一种数据获取方法,由图3中所示的camera hal3执行,包括以下步骤:
286.s1101、响应于图像请求,判断间隔时长是否在预设范围内,如果是,执行s1102,如果否,执行s1103。
287.间隔时长为最后一次采集tof数据的时刻(简称为第一时刻)与将要采集第一帧tof数据的时刻(简称为第二时刻)之间的间隔时长。
288.可以理解的是,因为camera hal3通过内核层的tof相机驱动,驱动tof相机采集tof数据,所以,camera hal3可以依据向tof相机驱动发送出图指令的时间,选择第二时刻,例如,将向tof相机驱动发送出图指令的时刻,增加一定的时延后的时刻,作为第二时刻。又例如,为了简化流程,camera hal3可以直接将系统的当前时刻,作为第二时刻。
289.本实施例中,第一帧tof数据是指,如图4、图5、或图6所示,应用发出一次任务请求,而触发tof相机采集的第一帧tof数据。最后一次可以为,应用上一次发出的任务请求触发的tof相机采集的最后一帧tof数据。
290.s1102、指示tof相机使用最后一次采集tof数据使用的曝光参数,在第二时刻采集第一帧tof数据。
291.如前所述,因为可以使用ae结果调整tof相机的参数,所以,最后一次采集tof数据使用的曝光参数,很大可能性是调整后的曝光参数,又因为第一时刻与第二时刻的间隔时长在预设范围内,所以,很有可能与最后一次采集处于相同的环境,所以,最后一次采集tof数据使用的曝光参数,有很大可能性也适用于当前环境,所以有利于得到较高质量的tof数据,从而有利于得到较高质量的tof图像。
292.s1103、指示tof相机使用预先配置的曝光参数采集第一帧tof数据。
293.因为如果第一时刻与第二时刻的间隔时长较长,说明距离最后一次采集tof数据已经过去较长的时间,所以,很有可能电子设备所处的环境已经发生改变,因此,最后一次采集tof数据使用的曝光参数已经不适用于当前环境,所以再使用最后一次采集tof数据使用的曝光参数的意义不大,因此使用预先配置的曝光参数。
294.本实施例所述的数据获取方法,充分利用ae调整机制调整后的曝光参数,提高首帧tof数据的质量,进一步得到较高质量的tof图像,有利于提高面部识别的准确性和速度。
295.可以理解的是,上述步骤中,最后一次采集tof数据使用的曝光参数仅为一种实现方式,因为最后一次采集tof数据的时刻,是距离第二时刻最晚的时刻,所以与最后一次采集tof数据进行比较的目的在于节省算力资源。
296.但本实施例中,并不限定于与最后一次采集tof数据进行比较,只要是第二时刻之前的任意一次采集,均可与第二时刻进行比较。所以,第一时刻满足的条件可概括为:早于第二时刻且与第二时刻的间隔时长在预设范围内。
297.图12为本技术实施例公开的又一种数据获取方法,由图3中所示的camera hal3执行,包括以下步骤:
298.s1201、响应于图像请求,获取光线强度。
299.本步骤中,可以使用电子设备上的环境光传感器获取电子设备所处的环境的光线强度。
300.s1202、指示tof相机使用光线强度对应的曝光时长采集第一帧tof数据。
301.本实施例中,预先配置多个光线强度区间与曝光时长的对应关系,对应关系满足以下原则:
302.1、光线强度区间包括室内光线强度区间以及室外光线强度区间。
303.预先配置的固定曝光时长可能不适用于室外环境,所以,室内环境与室外环境使用的曝光时长不同,因此,需要使用光线强度区间体现这种不同。
304.进一步的,因为在室外环境下,光线强度的变化范围很大,所以有必要进一步区分
室外环境下的不同光线强度区间使用的曝光参数。
305.2、各个光线强度区间中的数值越大,对应的曝光时长越短。
306.因为曝光时长越长则图像的亮度越高,所以,在室外环境下,要缩短曝光时长才有可能避免图像的亮度太高而降低清晰度的问题。
307.基于以上原则配置的对应关系的一种示例为:
308.l<=500lux,t=1ms(默认的固定值);
309.500lux<l<=3000lux,t=0.7ms;
310.3000lux<l<=30000lux,t=0.5ms;
311.l>30000lux,t=0.3ms。
312.在上述示例中,l表示光线的强度值,t表示曝光时长,l<=500lux为室内光线强度区间,即:小于500lux可认为电子设备处于室内环境,在此情况下,使用默认的固定曝光时长即可。
313.500lux<l<=3000lux,3000lux<l<=30000lux,以及l>30000lux为针对室外环境进一步划分的是区间,可见三个区间中,数值越大的区间,对应的曝光时长越短。
314.可以理解的是,上述示例中的室外环境的强度区间的颗粒度可以调整,颗粒度越小,则对曝光时间的控制越精细,越有利于提高图像的质量,从而越有利于提高图像处理的速度。
315.可以理解的是,camera hal3可通过tof相机驱动,将光线强度对应的曝光时长传输至tof相机的tof传感器控制器。
316.可见,本实施例中,以电子设备所处环境的光线强度作为依据,获取采集tof数据的曝光时长,所以,有利于在首帧采集到亮度满足面部识别要求的tof数据,从而有利于提高面部识别的准确性和速度。
317.需要说明的是,图7
‑
图12所示的流程,并不限于图3所示的软件框架,还可以应用在图13所示的软件框架中。
318.图13中,不设置tee,也就是说,tof数据的处理以及面部识别均在ree中执行,具体的,可以在face ca中执行。因此,各个模块之间可以直接传输tof数据,而非tof数据的存储信息。即图13与图3的区别为:isp
‑
lite接收到tof相机采集的tof数据后,经由camera hal3以及camera service向face ca传输的是tof数据。face ca将tof数据处理为tof图像,并使用tof图像进行面部识别。
319.基于图13,图7所示的流程中,各个步骤均由face ca执行:face ca接收到第一帧tof数据后,将第一帧tof数据处理为第一帧tof图像,并得到第一ae结果,将第一ae结果向camera hal3传输,并使用第一帧tof图像进行面部识别,得到第一识别结果,第一识别结果指示识别通过,则将第一识别结果向face service传输,第一识别结果指示不通过,再次接收第七帧tof数据。
320.基于图13,图8所示的流程中的,各个步骤均由face ca执行,这里不再赘述。
321.基于图13,图10所示的流程,将数据处理模块替换为face ca即可,不再赘述。
322.图11
‑
图12所示的流程,适用于图13。
323.可以理解的是,图7
‑
图12所示的流程,也不限定于安卓操作系统。其它操作系统中,与数据模块具有相同功能的模块可以实现上述数据模块执行的步骤,与camera hal3具
有相同功能的模块,可以实现上述camera hal3执行的步骤。
324.本技术的实施例中,在tee将tof数据处理为tof图像,并在tee使用tof图像进行面部识别,除了可以使用图3所示的软件框架实现之外,还可以使用图14所示的软件框架实现。
325.图14与图3的区别在于:硬件抽象层除了camera hal3以及face ca之外,还增加了tof节点(node)以及tof ca。在以下实施例中,tof节点(node)为相机域数据的交互中心。
326.tee中,新增了tof ta,作用为调度数据处理单元并与ree通信。tof ca的功能与face ca类似,在以下实施例中,tof ca用于访问tof ta。
327.基于图14,本技术公开的面部识别方法的实现流程如图15所示:
328.s1501
‑
s1506如s401
‑
s406,可参见图15,这里不再赘述。
329.s1507、通过内核层的isp
‑
lite向tof node传输fd1。
330.s1508、通过tof node向tof ca传输fd1以及标定数据。
331.因为后续tof图像的生成需要用到标定数据,所以,tof node获取预先配置在ree中的标定数据,并跟fd1一并向tee传输。可选的,tof node可以从ree的存储单元获取一部分标定数据,可以从tof相机获取另一部分标定数据。
332.可以理解的是,标定数据还可以由camera hal3获取并传输至tof node。
333.s1509、通过tof ca向tof ta传输fd1以及标定数据。
334.s1510、通过tof ta将fd1向tee的数据处理模块传输。
335.s1511、通过tof ta将标定数据存储至tee的标定数据存储单元。
336.可以理解的是,s1510与s1511的执行顺序不做限定。
337.s1512
‑
s1514为数据处理模块的功能,与图4所示的数据处理模块的功能相同,可参见图15,这里不再赘述。
338.s1515、通过数据处理模块,向tof ta传输第二存储信息。
339.s1516、通过tof ta,向tof ca传输第二存储信息。
340.可以理解的是,第二存储信息也以密文形式传输,为了便于描述,将第二存储信息的密文简称为fdi。
341.s1517、通过tof ca向tof node传输fdi。
342.s1518、通过tof node向camera hal3传输fdi。
343.s1519、通过camera hal3向camera service传输fdi。
344.s1520、通过camera service向face ca传输fdi。
345.s1521、通过face ca向face ta传输fdi。
346.s1522、通过face ta向tee的面部识别模块传输fdi。
347.s1523
‑
s1524为面部识别模块的功能,与图4所示的面部识别模块的功能相同,可参见图15,这里不再赘述。
348.s1525
‑
s1528为将识别结果向发起任务的应用传输的流程,与图4所示相同,可参见图15,这里不再赘述。
349.可以理解的是,因为标定数据属于相机域的数据,而非面部域的数据,所以使用tof node、tof ca以及tof ta将tof数据传输至tee,并在tee处理为tof图像,与tof图像的处理分开进行,与相机域与面部域的划分逻辑相符。并且,不同的域之间不需要太多的交
互,能够减少耦合工作量,逻辑清晰,便于开发和维护。
350.图15中,在不考虑其它模块自身的处理时延以及传输时延的前提下,isp
‑
lite也以第一时长间隔,依次将每帧tof数据存储至第一安全缓冲存储单元,并也以第一时长间隔,依次将各帧tof数据的存储信息传输至tof node。tof node也以第一时长间隔,依次将每帧tof数据的存储信息,经由tof ca传输至tof ta。因此,tof ta也以第一时长间隔依次接收每帧tof数据的存储信息。图15中的s1506可以为存储任意一帧tof数据,s1507
‑
s1510可以为传输任意一帧tof数据的fd,s1513
‑
s1515为针对这一帧tof数据的处理步骤。s1516
‑
s1522为针对这一帧tof数据生成的tof图像的存储信息的传输流程,s1523
‑
s1525为针对这一帧tof数据生成的tof图像的处理流程。s1526
‑
s1528可以为针对这一帧tof数据生成的tof图像的识别结果的处理流程,也可以为针对多帧tof数据生成的tof图像的识别结果的处理流程。
351.图16所示为生成并反馈自动曝光(automatic exposure,ae)结果、以及依据ae结果控制相机的流程,这里仅说明图16与图15的区别:
352.s1513a、通过tee的数据处理模块,响应于tof数据为面部识别帧,生成深度图像、红外图像以及ae结果。
353.s1515a、通过tee的数据处理模块,将第二存储信息以及ae结果,向tee的tof ta传输。
354.s1516a、通过tof ta向tof ca传输fdi以及ae结果。
355.s1517a、通过tof ca向tof node传输fdi以及ae结果。
356.s1518a、通过tof node向camera hal3传输fdi以及ae结果。
357.s1529a、通过camera hal3,依据ae结果,通过tof相机驱动调整tof相机。
358.以上各个步骤的具体实现方式可参见图5步骤的说明,这里不再赘述。
359.图17所示为生成并反馈安全标识、以及依据安全标识控制相机的流程,这里仅说明图17与图15的区别:
360.s1513b、通过tee的数据处理模块,响应于tof数据为安全指示帧,生成深度图像、红外图像以及安全标识。
361.s1515b、通过tee的数据处理模块,将第二存储信息以及安全标识,向tee的tof ta传输。
362.s1516b、通过tof ta向tof ca传输fdi以及安全标识。
363.s1517b、通过tof ca向tof node传输fdi以及安全标识。
364.s1518b、通过tof node向camera hal3传输fdi以及安全标识。
365.s1529b、通过camera hal3,依据安全标识,通过tof相机驱动调整tof相机。
366.以上各个步骤的具体实现方式可参见图6步骤的说明,这里不再赘述。
367.图18为图7所示的流程,基于图14所示的软件框架的实现方式,图18与图7的区别在于:tof数据帧的fd由tof ta向数据处理模块传输,ae结果以及tof图像的fd(以fdi为例)也由tof ta传输。其它步骤与图7相同,详见图18所示,这里不再赘述。
368.可以理解的是,因为与处理tof数据以及面部识别的耗时相比,tof ta通过图15、图16或图17所示的通路向面部识别模块传输fdi的用时很短,所以可以忽略。因此,图18所示的流程,与图7所示的流程具有相当的处理时长。
369.图19为图8所示的流程,基于图14所示的软件框架的实现方式,图19与图8的区别在于:tof数据帧的fd由tof ta向数据处理模块传输,ae结果以及tof图像的fd(以fdi为例)也由tof ta传输。其它步骤与图8相同,详见图18所示,这里不再赘述。
370.可以理解的是,类似的,以上图18或图19所述的方法,可以使用判断条件,择优使用:tof ta判断环境光的强度值是否大于预设的第一强度阈值,如果是,执行图18所示的数据处理流程,如果否,执行图19所示的数据处理流程。
371.可以理解的是,图10
‑
图12所示的流程,也适用于图14所示的软件框架。
372.本技术实施例还公开了一种芯片系统,包括:至少一个处理器以及接口,所述接口用于接收代码指令,并传输至至少一个处理器,至少一个处理器运行代码指令,实现上述面部识别方法、数据获取方法、以及数据处理方法的至少一种。
373.处理器实现上述功能的具体流程,可以参见上述实施例,这里不再赘述。
374.本技术实施例还公开了一种计算机可读存储介质,其上存储有程序代码,所述程序代码被计算机设备执行时,实现上述实施例所述的面部识别方法、数据获取方法、以及数据处理方法的至少一种。