一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种人脸识别方法和装置与流程

2022-08-10 17:22:08 来源:中国专利 TAG:


1.本技术涉及终端领域,尤其涉及一种人脸识别方法和装置。


背景技术:

2.飞行时间(time of flight,tof)摄像头可以包括发射器(tx)和接收器(rx),tx用于发射红外光或激光脉冲,rx用于接收反射光并成像(tof图像)。由于tx可以自主发射光信号用于成像,因此tof图像不受环境中大多数光线的影响。这样,可以将tof图像应用在解锁业务中,能够提高人脸识别的安全性。
3.但是在过亮(太阳光场景)或者过暗(全黑场景)的场景,tof的图像会出现过曝或欠曝的情况,导致电子设备无法及时进行人脸解锁。


技术实现要素:

4.本技术实施例提供一种人脸识别方法和装置,能够解决由于tof摄像头拍摄的图像出现过曝和欠曝的情况导致电子设备人脸解锁的耗时过长的问题,从而提高人脸解锁的效率。
5.第一方面,本技术实施例提供一种人脸识别方法,应用于电子设备,电子设备包括飞行时间tof摄像头模组方法包括:接收用户的第一操作,第一操作用于触发人脸识别;控制tof摄像头模组基于第一曝光时间采集第一图像帧;根据第一图像帧确定第二曝光时间,第二曝光时间与第一曝光时间不同;控制tof摄像头模组基于第二曝光时间采集第二图像帧;基于第二图像帧执行人脸识别。
6.基于本技术实施例提供的方法,tof摄像头模组基于第一曝光时间采集第一图像帧,当根据第一图像帧确定第二曝光时间,第二曝光时间与第一曝光时间不同时,控制tof摄像头模组基于第二曝光时间采集第二图像帧;基于第二图像帧执行人脸识别。可以理解的是,当根据第一图像帧确定的第二曝光时间与第一曝光时间不同时,可以认为第一图像帧出现了过曝和欠曝的情况,从而可以及时控制tof摄像头模组基于第二曝光时间采集第二图像帧;基于第二图像帧执行人脸识别,这样,可以及时根据第二图像帧进行人脸识别,从而可以提高人脸解锁的效率。
7.在一种可能的实现方式中,电子设备包含人脸识别控制模块、相机服务、相机硬件抽象层hal、摄像头驱动模块和人脸识别可信应用ta,人脸识别ta包括帧管理模块、tof算法模块和人脸标识id算法模块,相机hal包括传感器节点,控制tof摄像头模组基于第二曝光时间采集第二图像帧包括:tof算法模块根据第一图像帧计算第二曝光时间;tof算法模块向帧管理模块发送第二曝光时间;帧管理模块向人脸识别控制模块发送第二曝光时间;人脸识别控制模块通过硬件抽象层接口定义语言hidl接口调用第一函数将第二曝光时间写入相机hal;相机hal中的传感器节点调用第二函数读取第二曝光时间;传感器节点调用第三函数对第二曝光时间进行处理得到tof摄像头模组的曝光寄存器对应的曝光值;传感器节点向摄像头驱动模块发送tof摄像头模组的曝光寄存器对应的曝光值;摄像头驱动模块
将曝光值写入到tof摄像头模组的曝光寄存器中;tof摄像头模组根据曝光寄存器中的曝光值采集第二图像帧;基于第二图像帧执行人脸识别包括:帧管理模块获取第二图像帧;帧管理模块确定第二图像帧对应的曝光时间和第二曝光时间相同;帧管理模块向tof算法模块发送第二图像帧;tof算法模块根据第二图像帧计算灰度图和深度图;tof算法模块向人脸id算法模块发送灰度图和深度图;人脸id算法模块基于灰度图进行人脸对比,基于深度图进行防伪检测,得到人脸识别结果。
8.其中,tof算法模块计算出第二曝光时间后,直接向帧管理模块发送第二曝光时间;帧管理模块向人脸识别控制模块发送第二曝光时间。这样,可以避免tof算法模块计算出下一帧的曝光时间经过人脸id算法模块后才回传给人脸识别控制模块造成曝光时间传输滞后的情况,可以提高曝光时间传输的效率。并且,人脸识别控制模块直接通过hidl接口调用第一函数将第二曝光时间写入相机hal;相机hal中的传感器节点调用第二函数读取第二曝光时间。这样,无需人脸识别控制模块通过应用框架层的相机服务向相机hal发送第二曝光时间,可以节省第二曝光时间的传输时间。这样,tof摄像头模组可以尽快根据更新后的曝光时间(下一帧的曝光时间)进行拍摄,以便电子设备可以尽快人脸解锁成功。另外,判断第二图像帧对应的曝光时间和第二曝光时间是否相同,若相同,才将第二图像帧送入tof算法模块和人脸id算法模块进行计算。这样,可以避免无效帧(即曝光时间与第二曝光时间不同的图像帧)反复送入tof算法模块和人脸id算法模块进行计算,耗费人脸识别时间(降低解锁效率)的问题。
9.在一种可能的实现方式中,方法还包括:若帧管理模块确定第二图像帧对应的曝光时间和第二曝光时间不相同,帧管理模块丢弃第二图像帧。这样,避免无效帧(若第二图像帧对应的曝光时间与第二曝光时间不同,则第二图像帧属于无效帧)反复送入tof算法模块和人脸id算法模块进行计算,耗费人脸识别时间(降低解锁效率)的问题。
10.在一种可能的实现方式中,电子设备包含人脸识别控制模块、相机服务、相机硬件抽象层hal、摄像头驱动模块和人脸识别可信应用ta,人脸识别ta包括帧管理模块、tof算法模块和人脸标识id算法模块,相机hal包括传感器节点,控制tof摄像头模组基于第二曝光时间采集第二图像帧包括:tof算法模块根据第一图像帧计算第二曝光时间;tof算法模块向帧管理模块发送第二曝光时间;帧管理模块向人脸识别控制模块发送第二曝光时间;人脸识别控制模块向相机服务发送第二曝光时间;相机服务向相机hal发送第二曝光时间;相机hal中的传感器节点根据第二曝光时间得到tof摄像头模组的曝光寄存器对应的曝光值;传感器节点向摄像头驱动模块发送tof摄像头模组的曝光寄存器对应的曝光值;摄像头驱动模块将曝光值写入到tof摄像头模组的曝光寄存器中;tof摄像头模组根据曝光寄存器中的曝光值采集第二图像帧。其中,tof算法模块计算出第二曝光时间后,直接向帧管理模块发送第二曝光时间;帧管理模块向人脸识别控制模块发送第二曝光时间。这样,可以避免tof算法模块计算出下一帧的曝光时间经过人脸id算法模块后才回传给人脸识别控制模块造成曝光时间传输滞后的情况,可以提高曝光时间传输的效率。这样,tof摄像头模组可以尽快根据更新后的曝光时间(下一帧的曝光时间)进行拍摄,以便电子设备可以尽快人脸解锁成功。
11.在一种可能的实现方式中,电子设备包含人脸识别控制模块、相机硬件抽象层hal、摄像头驱动模块和人脸识别可信应用ta,人脸识别ta包括帧管理模块、tof算法模块和
人脸标识id算法模块,相机hal包括传感器节点,控制tof摄像头模组基于第二曝光时间采集第二图像帧包括:tof算法模块根据第一图像帧计算第二曝光时间;tof算法模块向人脸id算法模块发送第二曝光时间;人脸id算法模块向帧管理模块发送第二曝光时间;帧管理模块向人脸识别控制模块发送第二曝光时间;人脸识别控制模块通过硬件抽象层接口定义语言hidl接口调用第一函数将第二曝光时间写入相机hal;相机hal中的传感器节点调用第二函数读取第二曝光时间;传感器节点调用第三函数对第二曝光时间进行处理得到tof摄像头模组的曝光寄存器对应的曝光值;传感器节点向摄像头驱动模块发送tof摄像头模组的曝光寄存器对应的曝光值;摄像头驱动模块将曝光值写入到tof摄像头模组的曝光寄存器中;tof摄像头模组根据曝光寄存器中的曝光值采集第二图像帧。
12.其中,人脸识别控制模块直接通过hidl接口调用第一函数将第二曝光时间写入相机hal;相机hal中的传感器节点调用第二函数读取第二曝光时间。这样,无需人脸识别控制模块通过应用框架层的相机服务向相机hal发送第二曝光时间,可以节省第二曝光时间的传输时间。这样,tof摄像头模组可以尽快根据更新后的曝光时间(下一帧的曝光时间)进行拍摄,以便电子设备可以尽快人脸解锁成功。
13.在一种可能的实现方式中,电子设备包含人脸识别控制模块、相机服务、相机硬件抽象层hal、摄像头驱动模块和人脸识别可信应用ta,人脸识别ta包括帧管理模块、tof算法模块和人脸标识id算法模块,相机hal包括传感器节点,控制tof摄像头模组基于第二曝光时间采集第二图像帧包括:tof算法模块根据第一图像帧计算第二曝光时间;tof算法模块向帧管理模块发送第二曝光时间;帧管理模块向人脸识别控制模块发送第二曝光时间;人脸识别控制模块通过hidl接口调用第一函数将第二曝光时间写入相机hal;相机hal中的传感器节点调用第二函数读取第二曝光时间;传感器节点调用第三函数对第二曝光时间进行处理得到tof摄像头模组的曝光寄存器对应的曝光值;传感器节点向摄像头驱动模块发送tof摄像头模组的曝光寄存器对应的曝光值;摄像头驱动模块将曝光值写入到tof摄像头模组的曝光寄存器中;tof摄像头模组根据曝光寄存器中的曝光值采集第二图像帧。
14.其中,tof算法模块计算出第二曝光时间后,直接向帧管理模块发送第二曝光时间;帧管理模块向人脸识别控制模块发送第二曝光时间。这样,可以避免tof算法模块计算出下一帧的曝光时间经过人脸id算法模块后才回传给人脸识别控制模块造成曝光时间传输滞后的情况,可以提高曝光时间传输的效率。并且,人脸识别控制模块直接通过hidl接口调用第一函数将第二曝光时间写入相机hal;相机hal中的传感器节点调用第二函数读取第二曝光时间。这样,无需人脸识别控制模块通过应用框架层的相机服务向相机hal发送第二曝光时间,可以节省第二曝光时间的传输时间。这样,tof摄像头模组可以尽快根据更新后的曝光时间(下一帧的曝光时间)进行拍摄,以便电子设备可以尽快人脸解锁成功。
15.在一种可能的实现方式中,第一曝光时间包括第一灰度图曝光时间和第一深度图曝光时间;第二曝光时间包括第二灰度图曝光时间和第二深度图曝光时间;第二灰度图曝光时间与第一灰度图曝光时间不同,和/或,第二深度图曝光时间与第一深度图曝光时间不同。在第一图像帧过曝的情况下,第二曝光时间可以小于第一曝光时间。也即第二灰度图曝光时间小于第一灰度图曝光时间,和/或,第二深度图曝光时间小于第一深度图曝光时间。这样,通过减小曝光时间,可以避免tof摄像头再次拍摄到过曝的图像帧。在第一图像帧欠曝的情况下,第二曝光时间可以大于第一曝光时间。也即第二灰度图曝光时间大于第一灰
度图曝光时间,和/或,第二深度图曝光时间大于第一深度图曝光时间。这样,通过增加曝光时间,可以避免tof摄像头再次拍摄到欠曝的图像帧。
16.在一种可能的实现方式中,tof摄像头模组包括用于发射光信号的发射器和用于接收反射光和成像的图像传感器,控制tof摄像头模组基于第一曝光时间采集第一图像帧之前,方法还包括:控制发射器以第一光强度工作;确定发射器是否处于正常工作状态;在发射器处于正常工作状态的情况下,控制发射器以第二光强度工作,第二光强度大于第一光强度。
17.在一种可能的实现方式中,发射器工作在第一电流值时发射的光信号为第一光强度,发射器工作在第二电流值时发射的光信号为第二光强度,第二电流值大于第一电流值。
18.在一种可能的实现方式中,基于第二图像帧执行人脸识别包括:基于第二图像帧获取第二灰度图和第二深度图;基于第二灰度图进行人脸对比,基于第二深度图进行防伪检测,得到人脸识别结果。若人脸对比结果满足第一预设条件,防伪检测结果满足第二预设条件,可以认为人脸识别结果为成功,从而可以及时执行人脸解锁等操作。
19.在一种可能的实现方式中,方法还包括:基于第一图像帧执行人脸识别失败。基于第一图像帧执行人脸识别失败后,可以及时根据第二图像帧进行人脸识别,从而可以提高人脸解锁的效率。
20.在一种可能的实现方式中,第一操作包括用于解锁电子设备的操作,用于在线支付的操作,用于录入人脸的操作,或者用于安全注册或登录应用程序的操作。第一操作例如可以是按压电源键、点击、滑动等操作,本技术不做限定。
21.第二方面,本技术提供一种芯片系统,该芯片系统包括一个或多个接口电路和一个或多个处理器。该接口电路和处理器通过线路互联。上述芯片系统可以应用于包括通信模块和存储器的电子设备。该接口电路用于从电子设备的存储器接收信号,并向处理器发送接收到的信号,该信号包括存储器中存储的计算机指令。当处理器执行该计算机指令时,电子设备可以执行如第一方面及其任一种可能的设计方式所述的方法。
22.第三方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令。当计算机指令在电子设备(如手机)上运行时,使得该电子设备执行如第一方面及其任一种可能的设计方式所述的方法。
23.第四方面,本技术提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面及其任一种可能的设计方式所述的方法。
24.第五方面,本技术实施例提供了一种装置,包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时使得所述装置实现上述第一方面及其任一种可能的设计方式所述的方法。所述装置可以为电子设备或服务器设备;或可以为电子设备或服务器设备中的一个组成部分,如芯片。
25.第六方面,本技术实施例提供了一种装置,所述装置可以按照功能划分为不同的逻辑单元或模块,各单元或模块执行不同的功能,以使得所述装置执行上述第一方面及其任一种可能的设计方式所述的方法。
26.可以理解地,上述提供的第二方面所述的芯片系统,第三方面所述的计算机可读存储介质,第四方面所述的计算机程序产品及第五方面、第六方面所述的装置所能达到的有益效果,可参考如第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。
附图说明
27.图1为本技术实施例提供的一种电子设备的结构示意图;
28.图2为本技术实施例提供的一种tof成像技术的原理示意图;
29.图3为本技术实施例提供的一种软件模块架构示意图;
30.图4为本技术实施例提供的一种软件模块间的交互示意图;
31.图5为本技术实施例提供的又一种软件模块间的交互示意图;
32.图5a为本技术实施例提供的又一种软件模块间的交互示意图;
33.图5b为本技术实施例提供的又一种软件模块间的交互示意图;
34.图5c为本技术实施例提供的又一种软件模块间的交互示意图;
35.图5d为本技术实施例提供的又一种软件模块间的交互示意图;
36.图6a为本技术实施例提供的一种信号交互示意图;
37.图6b为本技术实施例提供的又一种信号交互示意图;
38.图7为本技术实施例提供的一种显示示意图;
39.图8为本技术实施例提供的又一种显示示意图;
40.图9为本技术实施例提供的又一种显示示意图;
41.图10为本技术实施例提供的又一种信号交互示意图;
42.图11为本技术实施例提供的一种芯片结构示意图。
具体实施方式
43.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。其中,在本技术的描述中,除非另有说明,“至少一个”是指一个或多个,“多个”是指两个或多于两个。另外,为了便于清楚描述本技术实施例的技术方案,在本技术的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
44.为了下述各实施例的描述清楚简洁,首先给出相关概念或技术的简要介绍:
45.通用运行环境(rich execution environment,ree),也可以称为富执行环境或普通执行环境或不可信执行环境,是指移动端的系统运行环境,其中可以运行android、ios和linux等操作系统。ree的开放和扩展性好但安全性不高。
46.可信执行环境(trusted execution environment,tee),也可以称安全侧或安全区,是需要授权才能访问的区域。tee与ree共存于电子设备中的运行环境,其通过硬件的支撑,实现与ree的隔离,具有安全能力并且能够抵御常规ree侧易遭受的软件攻击。tee有自身的运行空间,定义了严格的保护措施,因此,比ree的安全级别更高,能够保护tee中的资产(assets),如数据,软件等,免受软件攻击,抵抗特定类型的安全威胁。
47.ree tee架构,是指通过tee与ree结合共同为应用提供服务的架构。也就是说,tee与ree共同存在于电子设备中。示例性的,tee通过硬件的支撑,可实现与ree相隔离的运行机制。tee有自身的运行空间,比ree的安全级别更高,能够保护tee中的资产(如数据,软件等)免受软件攻击。只有授权的安全软件才能在tee中执行,同时它也保护了安全软件的资源和数据的机密性。相比ree,由于其隔离和权限控制等保护机制,tee能够更好的保护数据
和资源的安全性。
48.ta,即可信应用,是运行在tee中的应用,能够为运行在tee之外的ca提供安全服务,如输入密码,生成交易签名,人脸识别等。
49.ca,即客户端应用。ca通常指运行在ree中的应用。ca可以通过客户端(client)应用程序编程接口(application programming interface,api)对ta进行调用并指示ta执行相应的安全操作。
50.软件开发工具包(software development kit,sdk):广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
51.raw data,即原始数据,可以理解为“未经加工和未经压缩的数据”。本技术实施例中,raw data可以是指tof摄像头将捕捉到的光源信号转化为数字信号的原始图像数据。raw data中还记录有相机拍摄所产生的一些元数据(metadata)。
52.元数据,又可以称为中介数据、中继数据,是用于描述数据的数据(data about data),主要是描述数据属性(property)的信息。本技术实施例中,metadata可以指示摄像头的工作模式,打光电流值大小,tof摄像头器件工作状态、曝光值等信息。
53.飞行时间(time of flight,tof)成像技术,是指由一组人眼看不到的红外光(或激光脉冲)向外发射,遇到物体后反射,反射到摄像头结束,计算从发射到反射回摄像头的时间差或相位差,并将数据收集起来,形成一组距离深度数据,从而得到一个立体的3d模型的成像技术。也即,tof成像技术是在传统的2d xy轴的成像基础上,加入来自z轴方向的深度信息,最终生成3d的图像信息。本技术实施例中,tof技术可以是指间接光飞行时间(indirect tof,itof)技术。
54.tof摄像头(tof摄像头模组),可以包括发射器(tx)和接收器(rx),tx用于发射红外光或激光脉冲,rx用于接收反射光并成像。由于tx可以自主发射光信号用于成像,因此tof图像不受环境中大多数光线的影响,这样,将tof图像应用在解锁业务中,能够提高人脸识别的安全性。
55.但是,在过亮场景(太阳光场景)或者过暗场景(全黑场景)下,tof摄像头拍摄的图像也会出现过曝和欠曝的情况,导致电子设备无法及时进行人脸解锁。
56.本技术实施例提供一种人脸识别方法,可以及时调整tof摄像头的曝光时间,避免由于过曝或欠曝导致电子设备无法及时进行人脸解锁的问题,能够提高用户体验。
57.图1为本技术实施例提供的一种电子设备100的结构示意图。
58.如图1所示,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。
59.其中,传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
60.可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一
些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
61.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
62.控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
63.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
64.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
65.可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
66.充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
67.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
68.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
69.天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。
70.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器
(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
71.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。
72.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
73.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,gsm),通用分组无线服务(general packet radio service,gprs),码分多址接入(code division multiple access,cdma),宽带码分多址(wideband code division multiple access,wcdma),时分码分多址(time-division code division multiple access,td-scdma),长期演进(long term evolution,lte),bt,gnss,wlan,nfc,fm,和/或ir技术等。所述gnss可以包括全球卫星定位系统(global positioning system,gps),全球导航卫星系统(global navigation satellite system,glonass),北斗卫星导航系统(beidou navigation satellite system,bds),准天顶卫星系统(quasi-zenith satellite system,qzss)和/或星基增强系统(satellite based augmentation systems,sbas)。
74.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
75.显示屏194用于显示图像,视频等。该显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),发光二极管(light-emitting diode,led),有机发光二极管(organic light-emitting diode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,amoled),柔性发光二极管(flex light-emitting diode,fled),miniled,microled,micro-oled,量子点发光二极管(quantum dot light emitting diodes,qled)等。
76.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。isp用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数
字信号。视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
77.摄像头193可以包括1~n个。例如电子设备可以包括2个前置摄像头和4个后置摄像头。其中,前置摄像头中可以包括tof摄像头。tof摄像头包括tx和rx,tx可以用于发射光信号(红外光或激光脉冲),rx可以用于接收成像。tx例如可以为红外光发射器。rx例如可以为互补金属氧化物半导体(complementary metal oxide semiconductor,cmos)或者电荷耦合器件(charge coupled device,ccd)图像感应器。
78.示例性的,如图2中的(a)所示,可以通过tof摄像头的光发射器(tx)向被测目标(例如,用户)连续发送光信号(红外光或激光脉冲),在tof摄像头的传感器端(rx)接收被测目标返回的光信号,如图2中的(b)所示,根据发射和接收光信号的相位差(延迟)可以得到被测目标的深度信息。
79.其中,tx和rx可以通过总线进行信息交互。例如,rx可以通过总线(例如,串行外设接口(serial peripheral interface,spi)总线)向tx发送配置参数,该配置参数用于指示tx对应的寄存器的地址和针对该寄存器的值。例如tx对应的寄存器的地址可以是0x11,0x11对应的存储空间中可以存储电流值。tx可以基于相应的配置参数工作在相应电流值下从而发射出相应光强度的光信号。rx可以基于发射器发出的相应强度的光信号的反射光获取相应的图像数据。需要说明的是,tx工作在不同的电流值下,可以发射出不同光强度的光信号。例如,tx工作在第一电流值下,可以发射出第一光强度的光信号。tx工作在第二电流值下,可以发射出第二光强度的光信号。第二电流值大于第一电流值。第二光强度大于第一光强度。rx基于不同强度的光信号的反射光获取的图像数据也是不同的。例如,当tx工作在第一电流值下,发射出第一光强度的光信时,rx在相应的曝光时间内获取第一图像数据;tx工作在第二电流值下,发射出第二光强度的光信号时,rx在相应的曝光时间内获取第二图像数据;第二图像数据与第一图像数据不同。
80.tx工作在相应电流值下时,可以判断自身的工作状态,工作状态可以是正常或异常。rx可以通过总线向tx请求tx的工作状态,tx可以通过总线向rx反馈自身的工作状态(例如,正常or异常),从而rx可以获取tx的工作状态。rx可以将tx的工作状态和自身的工作状态以及两者的工作模式打包在第一数据包(例如,metadata)中。rx还可以将metadata和基于反射光获取的图像数据打包在第二数据包(例如,raw data)中。
81.npu为神经网络(neural-network,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过npu可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
82.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。例如,在本技术实施例中,处理器110可以通过执行存储在内部存储器121中的指令,内部存储器121可以包括存储程序
区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
83.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
84.音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170d用于连接有线耳机。
85.按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。sim卡接口195用于连接sim卡。sim卡可以通过插入sim卡接口195,或从sim卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或n个sim卡接口,n为大于1的正整数。sim卡接口195可以支持nano sim卡,micro sim卡,sim卡等。
86.以下实施例中的方法均可以在具有上述硬件结构的电子设备100中实现。
87.上述电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的android系统为例,示例性说明电子设备100的软件结构。
88.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过接口通信。在一些实施例中,android系统可以包括应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,硬件抽象层(hardware abstraction layer,hal)以及内核层。需要说明的是,本技术实施例以android系统举例来说明,在其他操作系统中(例如鸿蒙系统,ios系统等),只要各个功能模块实现的功能和本技术的实施例类似也能实现本技术的方案。
89.其中,应用程序层可以包括一系列应用程序包。
90.如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息、锁屏应用、设置应用等应用程序。当然,应用程序层还可以包括其他应用程序包,例如支付应用,购物应用、银行应用、聊天应用或理财应用等,本技术不做限定。
91.其中,设置应用具有录入人脸的功能,该录入的人脸用于人脸解锁。锁屏应用具有响应于用户的解锁操作(例如,按压电源键)进行解锁的功能。锁屏应用可以进行人脸解锁、指纹解锁、密码解锁等解锁处理,本技术实施例主要以人脸解锁为例进行说明。
92.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。例如可以包括活动管理器、窗口管理器,内容提供器,视图系统,资源管理器,通知管理器,相
机服务(camera service)和人脸识别服务等,本技术实施例对此不做任何限制。
93.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),opengl es,sgl等。
94.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
95.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
96.opengl es用于实现三维图形绘图,图像渲染,合成,和图层处理等。
97.sgl是2d绘图的绘图引擎。
98.安卓运行时(android runtime)包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
99.hal层是对linux内核驱动程序的封装,向上提供接口,屏蔽低层硬件的实现细节。
100.hal层中可以包括wi-fi hal,音频(audio)hal,相机hal(camera hal),人脸识别控制模块(face ca)和人脸可信应用等。
101.其中,相机hal是camera的核心软件框架,相机hal中可以包括传感器节点(sensor node)和图像前处理(image front end,ife)节点(ife node)。传感器节点和ife节点是相机hal创建的图像数据和控制指令传输通路(也可以称为传输管道)中的组件(节点)。
102.人脸识别控制模块是人脸识别的核心软件框架/应用。
103.人脸可信应用(face trusted application,face ta):运行在tee环境下的用于人脸识别的应用。本技术实施例中,将face ta称为人脸识别ta。
104.其中,face ta(也可以称为人脸识别ta)中可以包括帧管理模块(frame manager)、tof算法(algo)模块和人脸(face)id算法模块。帧管理模块可以将每帧图像对应的raw data发送给tof算法模块。tof算法模块可以将raw data转化成灰度图(ir图)和深度图(depth图)。tof算法模块可以将灰度图和深度图发送给人脸id算法模块。人脸id算法模块可以基于灰度图进行人脸识别(即判断当前用户是否是机主),基于深度图进行活体检测(防伪检测),从而得到人脸识别结果。
105.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
106.其中,摄像头驱动是camera器件的驱动层,主要负责和硬件的交互。
107.硬件层包括显示器、tof摄像头、ife模块和安全内存(secure buffer)等。
108.其中,安全内存是指具有安全保护功能的内存,可以用于存放tof摄像头采集的raw data。
109.tof摄像头,也可以称为tof传感器(tof sensor),可以包括发射器(tx)和接收器(rx),tx用于发射红外光或激光脉冲,rx用于接收反射光并成像。
110.ife模块(ife-lite):可以称为图像前处理模块,可以用于转发图像数据,转发过程中不对图像数据进行处理。
111.下面对本技术实施例提供的人脸识别方法所涉及的软件模块和模块间的交互进行说明。如图4所示,应用层中的锁屏应用可以与人脸识别sdk交互,人脸识别sdk可以通过调用预设的应用程序接口(application programming interface,api)接口与框架层中的人脸识别服务交互,人脸识别服务可以与hal层中的人脸识别控制模块交互,人脸识别控制模块可以通过框架层中的相机服务与hal层中的相机hal交互,或者,人脸识别控制模块可以直接与hal层中的相机hal交互。相机hal中可以包括传感器节点和ife节点。传感器节点可以与内核层中的摄像头驱动模块交互,摄像头驱动模块可以用于驱动硬件层中的tof摄像头以默认的工作模式(例如,人眼安全模式,具体可以参见下文s112中的说明)采集图像数据。ife模块可以将tof摄像头采集的图像数据存储至安全内存中。tof摄像头采集的图像数据在安全内存中的存储位置,可以使用文件描述符(file descriptor,fd)表示。ife模块可以将图像数据的fd发送至摄像头驱动模块。摄像头驱动模块可以将fd传递到相机hal的ife节点。ife节点可以将fd传递到相机服务。相机服务可以将fd传递到人脸识别控制模块。人脸识别控制模块可以将fd传递到人脸识别ta。人脸识别ta中的帧管理模块可以根据fd从安全内存中读取图像数据(raw data 1),并将raw data发送给tof算法模块。tof算法模块可以将raw data 1转化成灰度图和深度图,而后将灰度图和深度图发送给人脸id算法模块。人脸id算法模块可以用于灰度图的匹配和深度图判断防伪,以得到人脸识别结果。人脸id算法模块可以通过帧管理模块将人脸识别结果发送给人脸识别控制模块。人脸识别控制模块可以继续通过相机服务向相机hal发送人脸识别结果,或者,人脸识别控制模块可以直接向相机hal发送人脸识别结果,以便相机hal根据人脸识别结果切换tof摄像头的工作模式。相机hal可以继续与摄像头驱动模块交互,使得摄像头驱动模块可以驱动tof摄像头以切换后的工作模块(例如,人脸id模式,具体可以参见下文s112中的说明)采集图像数据,该图像数据对应的fd可以继续通过ife模块、摄像头驱动模块、ife节点、相机服务和人脸控制模块传递到人脸识别ta,人脸识别ta可以再次读取图像数据并进行处理,将处理结果(人脸识别成功或人脸识别失败)反馈给人脸识别控制模块。人脸识别控制模块可以通过人脸识别服务、人脸识别sdk将处理结果反馈给锁屏应用,以便锁屏应用确定是否解锁(若人脸识别成功,解锁;若人脸识别失败,不解锁,即解锁失败)。其中,图4中的实线箭头可以用于表示控制流,虚线箭头可以用于表示数据流。
112.具体的,如图5所示,相机hal中的传感器节点可以用于选择tof摄像头的工作模式,包括人眼安全模式(第一工作模式)、人脸id模式(第二工作模式)和tx关闭模式(第三工作模式)等,各种工作模式的具体可以参见下文s112中的说明。tof摄像头默认的初始工作模式可以为人眼安全模式。当tof摄像头工作在人眼安全模式时,可以从内存中读取产线标定的人眼安全安全电流值(第一电流值),根据该电流值更新人眼安全模式配置,并可以将人眼安全模式的配置参数发送至摄像头驱动模块。在得到人眼安全检测结果后,可以进行模式切换处理。具体的,若人眼安全检测结果为成功,tof摄像头可以切换到人脸id模式。若人眼安全检测结果失败,tof摄像头可以切换到tx关闭模式。这样,可以保证人眼安全。
113.需要说明的是,上文中切换tof摄像头的工作模式的过程也可以替换为如下两种切换过程:
114.切换过程一,ife模块可以将图像数据的fd(例如,fd1)发送至摄像头驱动模块,摄像头驱动模块可以将fd1传递到相机hal的ife节点,ife节点接收到fd1后,可以将fd1传递
到相机hal的传感器节点,传感器节点接收到fd1后,触发读取tof摄像头工作状态的流程。即传感器节点可以通过摄像头驱动模块读取tof摄像头的工作状态寄存器(即用于存储tof摄像头的工作状态的寄存器),根据工作状态寄存器的值确定人眼安全检测结果,并根据人眼安全检测结果切换tof摄像头的工作模式。
115.切换过程二,tof摄像头采集的图像数据中可以包括metadata。ife模块可以将tof摄像头采集的图像数据中的其他数据删除,保留metadata,并可以将metadata发送至摄像头驱动模块,摄像头驱动模块可以将metadata传递到相机hal的ife节点,ife节点可以将metadata传递到传感器节点,传感器节点可以解析metadata,计算出人眼安全检测结果,根据人眼安全监测结果切换tof摄像头的工作模式。
116.当相机hal中的传感器节点选择将tof摄像头的工作模式切换到人脸id模式时,传感器节点可以将人脸id模式的配置参数发送到摄像头驱动模块。其中,人脸id模式的配置参数可以是默认的,例如可以包括:电流值(第二电流值)为2800ma,ir灰度图曝光时间为500μs,深度图曝光时间为800μs。摄像头驱动模块将人脸id模式的配置参数写入(更新)到tof摄像头的寄存器中。tof摄像头基于人脸id模式采集raw data。
117.但是在过亮(太阳光场景)或者过暗(全黑场景)的场景,默认的人眼安全模式的配置参数可能无法适应当前环境,导致tof摄像头拍摄的图像出现过曝和欠曝的情况,从而导致电子设备无法及时进行人脸解锁。
118.为了解决上述问题,本技术可以采用以下三种改进方式,解决由于tof摄像头拍摄的图像出现过曝和欠曝的情况导致电子设备人脸解锁的耗时过长或无法解锁的问题,以便提高人脸解锁的效率。
119.方式一,如图5a所示,人脸识别ta的帧管理模块获取到tof摄像头模组工作在人脸id模式下的第一帧图像数据(raw data 2,即第一图像帧)后,向tof算法模块发送raw data 2。raw data 2是tof摄像头模组基于人脸id模式默认的曝光时间(第一曝光时间)采集到的。tof算法模块根据raw data 2获取灰度图和深度图,并进行下一帧曝光时间(用于调整下一帧图像的曝光,第二曝光时间)的计算。下一帧曝光时间可以包括ir灰度图曝光时间(例如,750us)和深度图曝光时间(例如,1200us)。而后,一方面,可以将灰度图和深度图送到人脸id算法模块进行人脸识别和活体校验;另一方面,tof算法模块可以直接通过帧管理模块回传下一帧曝光时间到人脸识别控制模块。人脸识别控制模块可以通过相机服务将下一帧的曝光时间发送至相机hal。相机hal中的传感器节点可以对下一帧曝光时间进行处理得到tof摄像头的曝光寄存器对应的曝光值。这样,可以避免tof算法模块计算出下一帧的曝光时间经过人脸id算法模块后才回传给人脸识别控制模块造成曝光时间传输滞后的情况,可以提高曝光时间传输的效率。进而,tof摄像头模组可以尽快根据更新后的曝光时间(下一帧的曝光时间)进行拍摄,以便电子设备可以尽快人脸解锁成功。
120.方式二,如图5b所示,tof算法模块计算出下一帧曝光时间后,可以先发送至人脸id算法模块。下一帧曝光时间可以包括ir灰度图曝光时间(例如,750us)和深度图曝光时间(例如,1200us)。人脸id算法模块将人脸识别结果和下一帧曝光时间一同发送至帧管理模块,由帧管理模块将人脸识别结果和下一帧曝光时间一同发送至人脸识别控制模块。人脸识别控制模块接收到下一帧曝光时间后,可以直接通过hidl接口将下一帧曝光时间传递到相机hal。例如,人脸识别控制模块可以调用第一函数(例如,相机配置服务(camcfgserver)
中的setitofaecdata函数)将下一帧曝光时间写入相机hal。这样,可以避免人脸识别控制模块通过相机服务向相机hal传递下一帧曝光时间导致的耗时,可以提高曝光时间的传输效率。当接收到框架层(framework)的下一帧请求(用于请求拍摄下一帧图像)后,相机hal中的传感器节点可以调用第二函数(例如,执行进程请求(executeprocessrequest)中的getitofaecdata函数)读取被人脸识别控制模块写入相机hal的下一帧曝光时间。传感器节点还可以通过第三函数(例如,calcitofregisteraecdatas函数)对下一帧曝光时间进行处理得到tof sensor曝光寄存器对应的曝光值。其中,tof sensor曝光寄存器可以包括ir灰度图曝光寄存器和深度图曝光寄存器。ir灰度图曝光寄存器的地址及其对应的取值可以分别为:0x2129,0x01;0x212a,0x5f;0x212b 0x90;深度图曝光寄存器的地址及其对应的取值可以为:0x2125,0x02;0x2126,0x32;0x2127,0x80。其中,calcitofregisteraecdatas函数可以将ir灰度图曝光时间(例如,750us)转换为0x01,0x5f,0x90;将深度图曝光时间(例如,1200us)转换为0x02,0x32,0x80。然后传感器节点下发tof摄像头的曝光寄存器对应的曝光值给摄像头驱动模块。摄像头驱动模块通过i2c总线将曝光值写入到tof摄像头模组中。tof摄像头模组开始按照此曝光值进行曝光,并输出对应的图像数据(raw data 3)。这样,无需人脸识别控制模块通过应用框架层的相机服务向相机hal发送第二曝光时间,可以节省第二曝光时间的传输时间。tof摄像头模组可以尽快根据更新后的曝光时间(下一帧的曝光时间)进行拍摄,以便电子设备可以尽快人脸解锁成功。
121.另外,传感器节点如果未获取到下一帧曝光时间(即传感器节点调用getitofaecdatas函数未读取到人脸识别控制模块写入相机hal的下一帧曝光时间),则无需下发tof摄像头的曝光寄存器对应的曝光值给摄像头驱动模块(即不对tof sensor曝光寄存器对应的曝光值进行重新配置,tof摄像头仍采用默认曝光值)。如果传感器节点连续两次获取到的下一帧曝光时间相同,也无需重复下发tof摄像头的曝光寄存器对应的曝光值给摄像头驱动模组(即无需重复配置tof摄像头的曝光寄存器对应的曝光值)。
122.方式三,如图5c所示,人脸识别ta的帧管理模块获取到tof摄像头模组工作在人脸id模式下的第n帧(n大于或等于2)图像数据(例如,raw data 3)后,可以判断raw data 3中的曝光时间和预期配置的曝光时间(tof算法模块根据raw data 2计算得到的下一帧曝光时间,下一帧曝光时间可以包括ir灰度图曝光时间(例如,750us)和深度图曝光时间(例如,1200us))是否相同。若相同,则可以将raw data 3发送至tof算法模块进行灰度图和深度图的计算以及下一帧曝光时间的计算。若不相同,则丢帧(即丢弃raw data3),避免无效帧反复送入tof算法模块和人脸id算法模块进行计算,耗费人脸识别时间(降低解锁效率)的问题。另外,连续丢帧达到预设阈值(例如,3帧)后,可以不再丢帧,避免因为连续丢帧导致人脸解锁算法无法继续运行的问题。
123.当然,以上三种方式可以择一使用或结合使用(方式一、方式二或方式三中的任意两种结合使用,或者三种方式同时结合使用,本技术不做限定),以使得电子设备可以及时调整tof摄像头模组的曝光时间,从而能够成功进行人脸解锁。
124.例如,以上三种方式同时结合使用时,如图5d所示,人脸识别ta的帧管理模块获取到tof摄像头模组工作在人脸id模式下的第一帧图像数据(raw data 2)后,向tof算法模块发送raw data 2。tof算法模块根据raw data 2获取灰度图和深度图,并进行下一帧曝光时间(用于调整下一帧图像的曝光)的计算。而后,一方面,tof算法模块可以将灰度图和深度
图送到人脸id算法模块进行人脸识别和活体校验;另一方面,tof算法模块可以通过帧管理模块直接回传下一帧曝光时间到人脸识别控制模块。人脸识别控制模块接收到下一帧曝光时间后,可以直接通过hal接口定义语言(hal interface definition language,hidl)接口将下一帧曝光时间传递到相机hal。例如,人脸识别控制模块可以调用camcfgserver中的seticaecdatas函数将下一帧曝光时间写入相机hal。当接收到framework的下一帧请求后,相机hal中的传感器节点可以调用executeprocessrequest中的getitofaecdatas函数读取人脸识别控制模块写入相机hal的下一帧曝光时间。传感器节点还可以通过calcitofregisteraecdatas函数对下一帧曝光时间进行处理得到tof sensor曝光寄存器对应的曝光值。然后,传感器节点下发tof摄像头的曝光寄存器对应的曝光值给摄像头驱动模块。摄像头驱动模块通过i2c总线将曝光值写入到tof摄像头模组中。tof摄像头模组开始按照此曝光值进行曝光,并输出对应的图像数据(例如,raw data 3)。人脸识别ta的帧管理模块获取到tof摄像头模组工作在人脸id模式下的第n帧(n大于或等于2)图像数据(例如,raw data 3)后,可以判断raw data 3中的曝光时间和预期配置的曝光时间(例如,tof算法模块根据raw data 2计算得到的下一帧曝光时间)是否相同。若相同,帧管理模块将raw data 3发送至tof算法模块进行灰度图和深度图的计算以及下一帧曝光时间的计算。若不相同,帧管理模块可以丢帧(即丢弃raw data 3),避免无效帧反复送入tof算法模块和人脸id算法模块进行计算,耗费人脸识别时间(降低解锁效率)的问题。另外,连续丢帧达到预设阈值(例如,3帧)后,可以不再丢帧,避免因为连续丢帧导致人脸识别算法无法继续运行的问题。
125.为了便于理解,以下结合附图对本技术实施例提供的方法进行具体介绍。
126.如图6a所示,本技术实施例提供一种基于tof图像的人眼安全检测和人脸识别的方法,流程如下:
127.s101、锁屏应用调用人脸识别sdk进行人脸识别。
128.检测到用户的解锁操作(第一操作)时,锁屏应用调用人脸识别sdk进行人脸识别。其中,用户的解锁操作包括用户拿起手机,或者按下电源键,或者在屏幕上操作(点击、滑动等),或者拔出充电线等操作。
129.同时,锁屏应用可以向人脸识别sdk注册一个回调,注册该回调的作用是当人脸识别sdk获得人脸识别结果后,可以向锁屏应用返回该人脸识别结果。
130.s102、人脸识别sdk向人脸识别服务发送人脸识别的请求。
131.其中,人脸识别的请求中携带人脸识别类型的标识、图像的分辨率大小和数据流格式。其中,人脸识别类型包括2d人脸识别类型(例如,可以对应标识0)和3d人脸识别类型(例如,可以对应标识1)。
132.示例性的,人脸识别的请求中携带的人脸识别类型可以为1(即3d人脸识别类型),图像的分辨率大小可以为1280x2898像素(pixel),数据流格式可以为原始图像格式(raw image format,raw)16。
133.同时,人脸识别sdk可以向人脸识别服务注册一个回调,注册该回调的作用是当人脸识别服务获得人脸比对结果后,可以向人脸识别sdk返回该人脸识别结果。
134.s103、人脸识别服务向人脸识别控制模块发送人脸识别的请求。
135.人脸识别的请求可以参考s102的描述,在此不做赘述。
136.也就是说,人脸识别sdk可以通过人脸识别服务通知人脸识别控制模块执行人脸识别。人脸识别服务可以将从人脸识别sdk接收到的人脸识别的请求发送给人脸识别控制模块。
137.同时,人脸识别服务可以向人脸识别控制模块注册一个回调,注册该回调的作用是当人脸识别控制模块获得人脸比对结果后,可以向人脸识别服务返回该人脸比对结果。
138.s104、响应于接收到人脸识别的请求,人脸识别控制模块根据人脸识别的请求匹配摄像头。
139.具体的,人脸识别控制模块可以从人脸识别的请求中获得人脸识别类型的标识、图像的分辨率大小和数据流格式,通过从相机服务查询摄像头能力确定匹配的摄像头。
140.应该理解的是,电子设备开机过程中,相机服务可以向相机hal发送摄像头能力查询请求,摄像头能力查询请求用于请求查询电子设备支持的摄像头能力。相机hal接收到摄像头能力查询请求后,可以将电子设备支持的摄像头的能力发送给相机服务,相机服务可以将接收到的电子设备支持的摄像头的能力存储起来。其中,电子设备支持的摄像头能力包括各摄像头的摄像头标识(identity,id)、支持的最大分辨率大小、数据流的格式和摄像头是否支持采集深度信息等。
141.示例性的,假设手机上安装有三个摄像头,该三个摄像头的能力信息可以如表1所示:
142.表1
143.摄像头id安装位置支持的最大分辨率数据流格式深度信息1后置4096x3072pixelyuyno2前置3264x2448pixelyuyno3前置1280x2898pixelraw16yes
144.其中,摄像头id为3的摄像头可以是tof摄像头,支持采集深度信息。摄像头id为1和2的摄像头可以是普通摄像头,不支持采集深度信息。当然,手机上可以安装更多前置或后置摄像头,例如手机可以安装2个前置摄像头和4个后置摄像头。
145.人脸识别控制模块可以向相机服务发送摄像头能力查询请求,相机服务可以向将电子设备支持的摄像头的能力发送给人脸识别控制模块,人脸识别控制模块可以根据电子设备支持的摄像头的能力确定匹配的摄像头,例如可以确定匹配的摄像头是id为3的摄像头(即tof摄像头)。
146.需要说明的是,表1仅是一种示例,每个摄像头对应的数据流格式可以包括多种。例如,摄像头标识为1的摄像头不仅可以对应yuy的数据流格式,还可以对应raw16的数据流格式,本技术不做限定。
147.s105、人脸识别控制模块向相机服务发送打开相机(camera)的请求。
148.示例性的,人脸识别控制模块可以通过供应商原生开发套件(vendor native development kit,vndk)接口向相机服务发送用于打开camera的请求。其中,用于打开camera的请求中携带安全标识、摄像头id、分辨率的大小和数据流格式等信息。其中,安全标识用于指示将数据存储在安全buffer中。也就是说,安全标识可以用于申请一块安全内存,后续用于存储摄像头采集的数据。例如,安全标识可以为1或0,1表示将数据存储在安全buffer,0表示将数据存储在非安全buffer。
149.示例性的,用于打开camera的请求中携带的安全标识可以为1(即将数据存储在安全buffer),图像的分辨率大小可以为1280x2898pixel,数据流格式可以为raw16,摄像头id可以为3。
150.同时,人脸识别控制模块可以向camera服务注册一个回调,注册该回调是用于在相机服务完成camera打开后通知人脸识别控制模块camera打开完成。
151.s106、响应于接收到打开camera的请求,相机服务向相机hal发送打开camera的请求,打开camera的请求携带安全标识、摄像头id、分辨率的大小和数据流格式等信息。
152.相机服务调用相机hal的过程中,相机服务可以向相机hal发送安全标识、摄像头id、图像的分辨率、数据流格式等信息。相机hal可以将安全标识、摄像头id、图像的分辨率、数据流格式等信息缓存预设时间。
153.同时,相机服务可以向相机hal注册回调,该回调用于相机hal将创建通路的结果通知相机服务。
154.s107、相机hal根据摄像头id、图像的分辨率和数据流格式创建对应的通路。
155.相机hal可以根据摄像头id、分辨率和数据流格式选择可用的节点,再根据可用的节点创建相应的通路。示例性的,若分辨率为1280x2898 pixel,数据流格式是raw16,摄像头id为3,则可以确定选择传感器节点和ife节点。这是由于传感器节点和ife节点可以支持传输摄像头id为3的摄像头采集到的分辨率为1280x2898 pixel、数据流格式是raw 16的数据。
156.其中,传感器节点对应的通路可以为:传感器节点-摄像头驱动-tof摄像头-ife模块-安全内存组成的通路。ife节点对应的通路可以为:ife模块(携带fd)-摄像头驱动-ife节点组成的通路。相机hal可以在hal层将传感器节点的输出端口和ife节点的输入端口进行连接。从而传感器节点对应的通路和ife节点对应的通路可以组成一条闭环的通路。通路创建完成后,通路中的硬件完成上电(即硬件电路通电)等待数据请求。
157.s108、相机hal向相机服务返回创建通路的结果。
158.其中,创建通路的结果可以是成功或失败。若创建通路的结果是失败,相机hal通知相机服务通路创建失败。若创建通路的结果是成功,相机hal通知相机服务通路创建成功,可以继续执行s109及其后续步骤。
159.s109、响应于接收到通路创建成功的通知,相机服务向人脸识别控制模块返回相机打开完成的消息。
160.可以理解的是,相机打开完成是指相机进行拍照或摄像前的准备工作(例如,相机参数配置、上电等准备工作)已完成。
161.s110、响应于接收到相机打开完成的消息,人脸识别控制模块向相机服务发送数据请求。
162.其中,数据请求用于请求获取相机的数据流。
163.s111、响应于接收到人脸识别控制模块发送的数据请求,相机服务调用相机hal获取数据流。
164.s112、相机hal通过传感器节点进行摄像头工作模式选择。
165.具体的,传感器节点可以通过s106中缓存的相机分辨率和数据流格式选择传感器节点对应的摄像头工作模式。示例性的,传感器节点可以通过查表(例如,表2)选择传感器
节点对应的摄像头工作模式。
166.表2
[0167][0168]
其中,人眼安全模式(eyesafe mode),是指tof摄像头的tx工作在一个小电流(小于预设阈值的电流,第一电流值)下的模式,人眼安全模式用于检查tof摄像头是否有损坏。人脸id模式(face id mode),是tof摄像头的tx工作在一个正常电流(第二电流值,预设阈值范围内)的模式,人脸id模式用于进行安全人脸解锁和安全支付等场景。其中,第二电流值大于第一电流值。tx关闭模式(tx off mode),是指tof摄像头的tx不通电(从而不发光)的模式,tx关闭模式用于检测到tof摄像头的tx器件损坏或无法正常工作的情况下。这是由于tx器件损坏的情况下仍通电使用可能会对人眼产生不利影响,因此当检测到tof摄像头的tx器件损坏时,采用tx关闭模式使得tx器件不通电,从而避免对人眼造成伤害。
[0169]
当然,摄像头的工作模式还可以包括更多,本技术不做限定。
[0170]
根据表2可知,在图像的分辨率的最大值为1280x2898 pixel,数据流格式为raw时,摄像头工作模式可以包括人眼安全模式、人脸id模式、tx关闭模式等。传感器节点可以默认摄像头的初始工作模式为人眼安全模式。当摄像头工作模式为人眼安全模式时,传感器节点可以从内存(例如,oeminfo)中读取产线标定的人眼安全电流值(即对人眼没有伤害的电流值),根据人眼安全电流值更新tof摄像头的人眼安全模式设置(setting)。例如,可以通过查表的方式获取tof摄像头的电流寄存器的地址,将人眼安全电流值写入tof摄像头的电流寄存器中。应该理解的是,传感器节点可以存储有tof摄像头的各个寄存器的地址,tof摄像头的各个寄存器的地址可以如表3所示。
[0171]
表3
[0172]
寄存器标识存储数据类型地址1电流0x12分辨率0x23数据流格式0x34tof摄像头器件工作状态0x45tof摄像头的工作模式0x5
[0173]
示例性的,通过查询表3,可以确定电流值对应的寄存器的地址为0x1,从而可以将人眼安全电流值写入0x1对应的存储空间中。
[0174]
s113、传感器节点将人眼安全模式的配置参数发送到kernel层的摄像头驱动(camera driver)模块。
[0175]
示例性的,人眼安全模式的配置参数可以为:电流值为700ma,ir灰度图曝光时间为10μs,深度图曝光时间为10μs。
[0176]
s114a、摄像头驱动模块将人眼安全模式的配置参数写入(更新)到tof摄像头的寄存器中。
[0177]
也即,摄像头驱动模块可以向tof摄像头发送人眼安全模式的配置参数。
[0178]
示例性的,摄像头驱动模块可以通过集成电路总线(inter-integrated circuit,i2c)将人眼安全模式的配置参数写入tof摄像头的rx的寄存器中。rx的寄存器对应的地址可以是0x01。rx对应的寄存器可以包括多个,本技术不做限定。即可以通过i2c向tof摄像头的rx发送人眼安全模式的配置参数。其中,人眼安全模式的配置参数包括针对rx和tx的配置参数。例如,针对tx的配置参数可以是第一电流值。针对rx的配置参数可以是曝光时间。rx可以将tx对应的配置参数通过spi总线写入tx对应的寄存器。tx对应的寄存器的地址可以是0x11。tx对应的寄存器可以包括多个,本技术不做限定。
[0179]
s114b、摄像头驱动模块向tof摄像头发送启动(stream on)命令/指令(第二启动命令)。
[0180]
stream on命令用于驱动tof摄像头进行数据采集。
[0181]
需要说明的是,s114b之前,s114a之后,摄像头驱动模块还可以向传感器节点发送配置参数写入完成的消息;响应于接收配置参数写入完成的消息,传感器节点向摄像头驱动模块发送启动命令(第一启动命令)。
[0182]
s115、响应于接收到stream on命令,tof摄像头基于人眼安全模式采集raw data 1。
[0183]
具体的,响应于接收到stream on命令,rx可以向tx发送发光信号的请求,tx工作在对应的电流值(第一电流值)下发送第一光强度的光信号;rx在相应的曝光时间(曝光值,例如,10us)接收光信号,rx接收到的光信号中包括第一光强度的光信号的反射光。基于接收到的光信号,rx获取第一图像数据。
[0184]
也就是说,raw data 1(原始数据1)是指tof摄像头的tx工作在产线标定的人眼安全电流值向人脸发射光信号时,tof摄像头的rx接收反射光并成像得到的图像数据(第一图像数据)。其中,tx工作在产线标定的人眼安全电流值时发射光信号为第一光强度。
[0185]
rx还可以通过spi总线向tx获取工作状态,然后tx可以向rx返回自己的工作状态,rx接收到tx发送的工作状态后,rx中可以获得tof摄像头器件工作状态,包括:tx的工作状态和rx的工作状态。
[0186]
其中,raw data中包含metadata。示例性的,metadata保存有当前tof摄像头的工作模式(例如,人眼安全模式),打光电流值大小(例如,产线标定的人眼安全电流值),tof摄像头器件工作状态(例如,正常or异常)和图曝光值(例如,10μs)等信息。
[0187]
s116、tof摄像头将基于人眼安全模式采集到的raw data 1发送到ife模块。
[0188]
示例性的,tof摄像头可以通过移动产业处理器接口(mobile indμstry processor interface,mipi)将tof摄像头采集的raw data 1传输到ife模块。ife模块也可以称为图像前处理模块(ife-lite),ife模块可以不对raw data 1进行处理。
[0189]
s117、ife模块将raw data 1发送至安全内存(secure buffer)中存储。
[0190]
tof摄像头基于人眼安全模式采集的raw data 1在安全内存中的存储位置可以使用fd1表示。
[0191]
示例性的,当fd1为69时,可以表示存储位置为xx安全内存;当fd1为96时,可以表示存储位置为yy非安全内存(普通内存)。
[0192]
s118、ife模块将fd1发送至摄像头驱动模块。
[0193]
s119、摄像头驱动模块将fd1发送至ife节点。
[0194]
s120、ife节点通过相机hal的接口将fd1发送给相机服务。
[0195]
s121、相机服务将fd1发送至人脸识别控制模块。
[0196]
s122、人脸识别控制模块将fd1发送至人脸识别ta(face ta)。
[0197]
其中,人脸识别ta中包含有tof算法和人脸id算法。其中,tof算法用于将raw data转化成灰度图和深度图,根据灰度图和深度图计算人脸是否安全(即当前用户是否是机主)。人脸id算法用于灰度图的匹配和深度图判断防伪。
[0198]
s123、人脸识别ta的帧管理模块根据fd1从安全内存中读取raw data 1。
[0199]
人脸识别ta可以根据fd1向安全内存请求raw data 1,安全内存向人脸识别ta发送raw data 1。
[0200]
s124a、帧管理模块将raw data 1发送给tof算法模块。
[0201]
s124b、tof算法模块根据raw data 1得到人眼安全检测结果。
[0202]
tof算法模块对raw data 1中的metadata进行处理,得到人眼安全检测结果。
[0203]
具体的,tof算法模块可以根据metadata确定tof摄像头是否在人眼安全工作模式,若是(即工作在人眼安全工作模式),确定器件工作状态是否正常,若器件工作状态正常,人眼安全检测结果为安全/正常(或者说人眼安全检测成功)。若器件工作状态异常,人眼安全检测结果为不安全/异常(或者说人眼安全检测失败)。
[0204]
s124c、tof算法模块将人眼安全检测结果发送给帧管理模块。
[0205]
s125、帧管理模块将人眼安全检测结果发送至人脸识别控制模块。
[0206]
s126、人脸识别控制模块将人眼安全检测结果发送至相机hal。
[0207]
在一种可能的设计中,若人眼安全检测结果为安全/正常(或者说人眼安全检测成功),人脸识别控制模块将人眼安全检测结果发送至相机hal,由相机hal根据人眼安全检测结果确定相应的工作模式(参见s127)。若人眼安全检测结果为不安全(异常),人脸识别控制模块可以认为人脸识别失败,人脸识别控制模块可以基于之前(s103中)人脸识别服务注册的回调,将人脸识别结果(失败)传递到人脸识别服务。人脸识别服务基于之前(s102中)人脸识别sdk注册的回调,将人脸识别结果(失败)传递到人脸识别sdk。人脸识别sdk基于之前(s101中)锁屏应用注册的回调,将人脸识别结果(失败)传递到锁屏应用。锁屏应用可以根据人脸识别结果(失败)决定不进行解锁。
[0208]
在一种可能的设计中,人脸识别控制模块可以通过相机服务将人眼安全检测结果发送至相机hal(无论人眼安全检测结果是成功还是失败)。即人脸识别控制模块可以将人眼安全检测结果发送至相机服务,相机服务再将人眼安全检测结果发送至相机hal。相机hal根据人眼安全检测结果确定相应的工作模式(参见s127)。
[0209]
在另一种可能的设计中,人脸识别控制模块可以直接将人眼安全检测结果发送至相机hal(无论人眼安全检测结果是成功还是失败),由相机hal根据人眼安全检测结果确定相应的工作模式(参见s127)。
[0210]
示例性的,人脸识别控制模块可以将人眼安全检测结果通过hidl接口直接传递到相机hal中。或者,人脸识别控制模块可以通过vndk接口将人眼安全检测结果发送给相机服务,使得相机服务将人眼安全检测结果发送给相机hal。
[0211]
s127、相机hal的传感器节点基于人眼安全检测结果确定tof摄像头的工作模式。
[0212]
若人眼安全检测结果为安全(正常),则确定tof摄像头的工作模式为人脸id模式;
若人眼安全检测结果为不安全(异常),则确定tof摄像头的工作模式为tx关闭模式。
[0213]
需要说明的是,传感器节点中可以存储有人脸id模式和tx关闭模式对应的配置参数。
[0214]
示例性的,人脸id模式对应的配置参数可以为:电流值(第二电流值)为2800ma,ir灰度图曝光时间为500μs,depth为yes,深度图曝光时间为800μs。txoff模式对应的配置参数可以为:电流值(第三电流值)为0ma,ir灰度图曝光时间为10μs,depth为no,深度图曝光时间为10μs。
[0215]
需要说明的是,本技术实施例不限定s101-s127的执行顺序。在一些实施例中,s101-s107执行完毕后,可以直接执行s112-s126,s126之后再执行s108-s111,s111之后可以再执行s127。当然,s101-s127还可以有其他的组合顺序,以保证相机hal的传感器节点可以获取人眼安全检测结果,从而确定tof摄像头的工作模式,本技术在此不做一一赘述。
[0216]
下面以传感器节点确定的tof摄像头的工作模式为人脸id模式为例进行说明,s127之后,还包括s128-s144:
[0217]
s128、传感器节点将人脸id模式的配置参数发送到摄像头驱动模块。
[0218]
s129、摄像头驱动模块将人脸id模式的配置参数写入tof摄像头的寄存器中,以驱动tof摄像头基于人脸id模式进行数据采集。
[0219]
也即,摄像头驱动模块可以向tof摄像头发送人脸id模式的配置参数。
[0220]
示例性的,摄像头驱动模块可以通过i2c将人脸id模式的配置参数写入tof摄像头寄存器中。也即,摄像头驱动模块可以通过i2c向tof摄像头发送人脸id模式的配置参数。
[0221]
s130、tof摄像头基于人脸id模式采集raw data 2。
[0222]
其中,raw data 2可以是tof摄像头的tx工作在第二电流值(例如,2800ma)向人脸发射光信号时,tof摄像头的rx接收反射光并成像得到的图像数据(第二图像数据)。tof摄像头的tx工作在第二电流值时发射的光信号为第二光强度。第二光强度大于第一光强度。
[0223]
其中,raw data 2中包含metadata。示例性的,metadata保存有当前tof摄像头的工作模式(例如,人脸id模式),打光电流值大小(例如,2800ma),tof摄像头器件工作状态(例如,正常)和深度图曝光时间(例如,800μs)等信息。
[0224]
s131、tof摄像头将raw data 2发送至ife模块。
[0225]
示例性的,tof摄像头可以通过mipi将tof摄像头基于人脸id模式采集的raw data 2传输到ife模块。
[0226]
s132、ife模块将raw data 2发送至安全内存中存储。
[0227]
tof摄像头基于人脸id模式采集的raw data 2在安全内存中的存储位置可以使用fd2表示。
[0228]
本步骤中的fd2与s117中的fd1可以相同或不同。本步骤中的fd2与s117中的fd1相同时,即tof摄像头基于人脸id模式采集的raw data 2与s117中tof摄像头基于人眼安全模式采集的raw data 1被存入同一块安全内存。可以将s117中tof摄像头基于人眼安全模式采集的raw data 1删除掉,从而tof摄像头基于人脸id模式采集的raw data 2可以被重新存入安全内存。在fd2与fd1不同的情况下,tof摄像头基于人脸id模式采集的raw data 2与s117中tof摄像头基于人眼安全模式采集的raw data 1可以被存入不同的安全内存。
[0229]
s133、ife模块将fd2发送至摄像头驱动模块。
[0230]
s134、摄像头驱动模块将fd2发送给ife节点。
[0231]
s135、ife节点通过相机hal的接口将fd2发送给相机服务。
[0232]
s136、相机服务将fd2发送至人脸识别控制模块。
[0233]
s137、人脸识别控制模块将fd2发送至人脸识别ta。
[0234]
s138、人脸识别ta的帧管理模块根据fd2从安全内存中读取raw data 2。
[0235]
s139a、帧管理模块向tof算法模块发送raw data 2。
[0236]
s139b、tof算法模块根据raw data 2得到灰度图(第一灰度图)、深度图(第一深度图)和下一帧曝光时间(t1)。
[0237]
tof算法模块可以根据itof算法对raw data 2进行计算得到下一帧曝光时间(t1)。下一帧曝光时间可以包括ir灰度图曝光时间(例如,750us)和深度图曝光时间(例如,1200us)。
[0238]
tof算法模块可以从raw data 2中的metadata获取tof摄像头的工作模式,例如可以是人脸id模式。然后,人脸识别ta可以通过tof算法对raw data 2中的第二图像数据进行处理得到第一灰度图和第一深度图。
[0239]
一方面,当tof算法模块根据raw data 2得到灰度图和深度图后,可以执行步骤s139c-s139f。
[0240]
另一方面,当tof算法模块根据raw data 2得到下一帧曝光时间(t1)后,可以执行步骤s140a-s141k。
[0241]
s139c、tof算法模块向人脸id算法模块发送灰度图和深度图。
[0242]
s139d、人脸id算法模块根据灰度图和深度图得到人脸识别结果。
[0243]
人脸id算法模块可以基于灰度图(第一深度图)进行人脸识别,基于深度图(第二深度图)和防伪检测,从而得到人脸识别结果。
[0244]
需要说明的是,人脸id算法模块中可以存储用户之前录入的人脸信息转化成的灰度图和深度图。若当前采集的人脸信息(tof摄像头基于人脸id模式采集的raw data,即raw data2)与之前录入的人脸信息(即用户进行人脸录入操作时电子设备采集到的raw data)对应的灰度图匹配,可以认为是同一个用户(即进行录入人脸的操作和进行解锁的操作的是同一个用户),并且,若当前采集的人脸信息包括深度信息,可以认为当前用户是真实可信的(非照片、视频等伪装),此时可以认为当前用户的人脸安全,即人脸识别结果为成功。若当前采集的人脸信息(tof摄像头基于人脸id模式采集的raw data,即raw data 2)与之前录入的人脸信息(即用户进行人脸录入操作时电子设备采集到的raw data)对应的灰度图不匹配,或者,若当前采集的人脸信息不包括深度信息,认为当前用户的人脸不安全,即人脸识别结果为失败。
[0245]
若人脸识别失败,人脸识别ta后续可以获取调整曝光时间后tof摄像头模组的raw data,并根据该raw data继续进行人脸识别直至解锁成功或解锁超时退出解锁。
[0246]
s139e、人脸id算法模块将人脸识别结果发送至帧管理模块。
[0247]
s139f、帧管理模块将人脸识别结果发送至人脸识别控制模块。
[0248]
人脸识别控制模块接收人脸识别结果,若人脸识别结果为安全/正常(或者说人脸识别成功),可以执行步骤143-步骤147。即电子设备可以成功解锁。
[0249]
若人脸识别结果为失败,在解锁超时(例如,解锁时间为3s)之前,人脸识别控制模
块可以继续从人脸识别ta获取新的人脸识别结果(例如,下文的步骤143),直至人脸识别成功。在解锁超时后,若人脸识别仍未成功,人脸识别控制模块可以基于之前(s103中)人脸识别服务注册的回调,将人脸识别结果(失败)传递到人脸识别服务。人脸识别服务基于之前(s102中)人脸识别sdk注册的回调,将人脸识别结果(失败)传递到人脸识别sdk。人脸识别sdk基于之前(s101中)锁屏应用注册的回调,将人脸识别结果(失败)传递到锁屏应用。锁屏应用可以根据人脸识别结果(失败)决定不进行解锁。
[0250]
如图6b所示,该方法还包括:
[0251]
s140a、tof算法模块向帧管理模块发送下一帧曝光时间(t1)。
[0252]
s140b、帧管理模块向人脸识别控制模块发送下一帧曝光时间(t1)。
[0253]
tof算法模块可以直接通过帧管理模块回传下一帧曝光时间到人脸识别控制模块。这样,可以避免tof算法模块计算出下一帧的曝光时间经过人脸id算法模块后才回传给人脸识别控制模块造成曝光时间传输滞后的情况,可以提高曝光时间传输的效率。进而,tof摄像头模组可以尽快根据更新后的曝光时间进行拍摄,避免tof摄像头拍摄的图像出现过曝和欠曝的情况,从而电子设备可以尽快人脸解锁成功。
[0254]
s140c、人脸识别控制模块将下一帧曝光时间发送至相机hal。
[0255]
在一种可能的设计中,人脸识别控制模块可以通过相机服务将下一帧曝光时间发送至相机hal。即人脸识别控制模块可以将下一帧曝光时间发送至相机服务,相机服务再将下一帧曝光时间发送至相机hal。
[0256]
在另一种可能的设计中,人脸识别控制模块可以直接通过hal接口定义语言(hal interface definition language,hidl)接口将下一帧曝光时间传递到相机hal。例如,人脸识别控制模块可以调用第一函数(例如,camcfgserver中的seticaecdatas函数)将下一帧曝光时间写入相机hal。相机hal可以根据下一帧曝光时间重新确定tof摄像头模组对应的曝光值。其中,重新确定的曝光值与人脸id模式默认的曝光值不同。
[0257]
s140d、相机hal的传感器节点接收来自相机服务的下一帧请求,调用第二函数读取下一帧曝光时间,根据下一帧曝光时间得到曝光值。
[0258]
可以理解的是,当相机服务确定安全内存中的图像数据(例如,raw data 2)被读取(被“消费”),可以向相机hal发送下一帧请求,以请求采集下一帧图像数据。
[0259]
当相机hal的传感器节点接收到来自相机服务的下一帧请求时,传感器节点可以调用第一函数(例如,executeprocessrequest中的getitofaecdata函数)读取人脸识别控制模块写入相机hal的下一帧曝光时间。并且,传感器节点还可以通过第三函数(例如,calcitofregisteraecdatas函数)对下一帧曝光时间进行处理得到tof sensor曝光寄存器对应的曝光值(t1)。曝光值(t1)包括ir灰度图曝光寄存器对应的取值和深度图曝光寄存器对应的取值。例如,ir灰度图曝光寄存器的地址及其对应的取值可以分别为:0x2129,0x01;0x212a,0x5f;0x212b 0x90;深度图曝光寄存器的地址及其对应的取值可以为:0x2125,0x02;0x2126,0x32;0x2127,0x80。
[0260]
另外,传感器节点如果未获取到下一帧曝光时间(即传感器节点调用getitofaecdata函数未读取到人脸识别控制模块写入相机hal的下一帧曝光时间),则无需下发tof摄像头的曝光寄存器对应的曝光值给摄像头驱动模块(即不对tof摄像头的曝光寄存器对应的曝光值进行重新配置,tof摄像头仍采用默认曝光值)。如果传感器节点连续两
次获取到的下一帧曝光时间相同,也无需重复下发tof摄像头的曝光寄存器对应的曝光值给摄像头驱动模组(即无需重复配置tof摄像头的曝光寄存器对应的曝光值)。
[0261]
s140e、传感器节点将曝光值发送到摄像头驱动模块。
[0262]
s140f、摄像头驱动模块将曝光值写入tof摄像头的寄存器中,以驱动tof摄像头基于曝光值进行数据采集。
[0263]
也即,摄像头驱动模块可以向tof摄像头发送曝光值。
[0264]
示例性的,摄像头驱动模块可以通过i2c将曝光值写入tof摄像头寄存器中。也即,摄像头驱动模块可以通过i2c向tof摄像头发送曝光值。
[0265]
s140g、tof摄像头基于曝光值采集raw data 3。
[0266]
其中,raw data 3可以是tof摄像头以下一帧曝光时间(对应的曝光值)工作时得到的图像数据。tof摄像头以下一帧曝光时间(对应的曝光值)工作时,rx可以是根据下一帧曝光时间曝光的,tx的打光时间也是根据下一帧曝光时间确定的。rx可以通过同步信号(sync信号)向tx配置打光时间。
[0267]
tof摄像头的工作模式仍为人脸id模式,tx可以工作在第二电流值,其发射的光信号为第二光强度。第二光强度大于第一光强度。
[0268]
其中,raw data 3中包含metadata。示例性的,metadata保存有当前tof摄像头的工作模式(例如,人脸id模式),打光电流值大小(例如,2800ma),tof摄像头器件工作状态(例如,正常),ir灰度图的曝光时间(例如,750us)和深度图曝光时间(例如,1200us)等信息。
[0269]
s140h、tof摄像头将raw data 3发送至ife模块。
[0270]
示例性的,tof摄像头可以通过mipi将tof摄像头基于人脸id模式采集的raw data 3传输到ife模块。
[0271]
s140i、ife模块将raw data 3发送至安全内存中存储。
[0272]
tof摄像头基于人脸id模式采集的raw data 3在安全内存中的存储位置可以使用fd3表示。
[0273]
本步骤中的fd3与s117中的fd1可以相同或不同。本步骤中的fd3与s117中的fd1相同时,即tof摄像头基于人脸id模式采集的raw data 3与s117中tof摄像头基于人眼安全模式采集的raw data 1被存入同一块安全内存。可以将s117中tof摄像头基于人眼安全模式采集的raw data 1删除掉,从而tof摄像头基于人脸id模式采集的raw data 3可以被重新存入安全内存。在fd3与fd1不同的情况下,tof摄像头基于人脸id模式采集的raw data 3与s117中tof摄像头基于人眼安全模式采集的raw data 1可以被存入不同的安全内存。
[0274]
s141a、ife模块将fd3发送至摄像头驱动模块。
[0275]
s141b、摄像头驱动模块将fd3发送给ife节点。
[0276]
s141c、ife节点通过相机hal的接口将fd3发送给相机服务。
[0277]
s141d、相机服务将fd3发送至人脸识别控制模块。
[0278]
s141e、人脸识别控制模块将fd3发送至人脸识别ta。
[0279]
s141f、人脸识别ta的帧管理模块根据fd3从安全内存中读取raw data 3。
[0280]
s141g、帧管理模块判断raw data 3中的曝光时间和预期配置的曝光时间相同。
[0281]
帧管理模块获取到tof摄像头模组工作在人脸id模式下的第n帧(n大于或等于2)
图像数据(例如,raw data 3)后,可以判断raw data 3中的曝光时间和预期配置的曝光时间(例如,tof算法模块根据raw data 2计算得到的下一帧曝光时间)是否相同。
[0282]
若相同,则将raw data 3发送至tof算法模块进行灰度图和深度图的计算以及下一帧曝光时间的计算。若不相同,则丢帧(即丢弃raw data 3),避免无效帧反复送入tof算法模块和人脸id算法模块进行计算,耗费人脸识别时间(降低解锁效率)的问题。另外,连续丢帧达到预设阈值后,可以不再丢帧,避免因为连续丢帧导致算法无法继续运行的问题。
[0283]
s141h、帧管理模块向tof算法模块发送raw data 3。
[0284]
s141i、tof算法模块根据raw data 3得到灰度图(第二灰度图)和深度图(第二深度图)。
[0285]
具体的,人脸识别ta可以从raw data 3中的metadata获取tof摄像头的工作模式,例如可以是人脸id模式。然后,人脸识别ta可以通过tof算法对raw data 3中的图像数据进行处理得到灰度图和深度图。
[0286]
tof算法模块还可以根据raw data 3得到下一帧曝光时间(t2,与t1相同或不同)。t2的传输过程可以参考步骤s140a-s140d的相关描述,在此不做赘述。
[0287]
s141j、tof算法模块向人脸id算法模块发送灰度图和深度图。
[0288]
s141k、人脸id算法模块根据灰度图和深度图得到人脸识别结果。
[0289]
人脸id算法模块可以基于灰度图(第二灰度图)进行人脸识别,基于深度图(第二深度图)和防伪检测,从而得到人脸识别结果。具体可以参考步骤139d,在此不做赘述。
[0290]
s142、人脸id算法模块将人脸识别结果发送至帧管理模块。
[0291]
s143、帧管理模块将人脸识别结果发送至人脸识别控制模块。
[0292]
s144、人脸识别控制模块将人脸识别结果发送至人脸识别服务。
[0293]
人脸识别控制模块可以基于之前(s103中)人脸识别服务注册的回调,将人脸识别结果(成功或失败)传递到人脸识别服务。
[0294]
s145、人脸识别服务将人脸识别结果传递到人脸识别sdk。
[0295]
人脸识别服务基于之前(s102中)人脸识别sdk注册的回调,将人脸识别结果(成功或失败)传递到人脸识别sdk。
[0296]
s146、人脸识别sdk将人脸识别结果传递到锁屏应用。
[0297]
人脸识别sdk基于之前(s101中)锁屏应用注册的回调,将人脸识别结果(成功或失败)传递到锁屏应用。
[0298]
s147、锁屏应用根据人脸识别结果决定是否解锁。
[0299]
若人脸识别结果为成功,锁屏应用可以成功解锁,从而电子设备可以显示桌面或者应用(系统应用或第三方应用)的界面。若人脸识别结果为失败,锁屏应用不解锁,即人脸解锁失败。人脸解锁失败后,锁屏应用可以在人脸识别失败的一段时间内(例如,5分钟)禁用人脸识别功能。
[0300]
示例性的,若用户设置了人脸解锁,如图7中的(a)所示,当用户拿起手机进行人脸识别时,响应于用户拿起手机的操作,如图7中的(b)所示,手机可以显示锁屏界面701,手机在进行人脸识别过程中可以在锁屏界面701显示解锁图标702和提示文字“正在识别人脸”703。
[0301]
若人脸识别成功,如图8中的(a)所示,可以显示界面704,界面704中可以包括解锁
图标705(呈打开状,可以形象地提示用户人脸解锁成功)以及提示文字“上滑进入”706,响应于用户的上滑操作,手机可以显示桌面或者应用(系统应用或第三方应用)的界面。或者,如图8中的(b)所示,若人脸识别成功,无需用户额外操作,手机可以直接解锁,即可以立即显示桌面707(或者直接显示应用的界面)。
[0302]
若人脸识别失败,如图9中的(a)所示,可以显示界面708,界面708中可以包括解锁图标709(呈关闭状,可以形象地提示用户人脸未解锁成功)以及提示文字“未识别成功,双击屏幕重试”710,响应于用户的双击操作,手机可以再次进行人脸识别(即再次采集用户的人脸信息进行比对和防伪判断)。或者,响应于用户在界面708中的上滑操作,如图9中的(b)所示,手机可以显示界面711,进入界面711后手机可以再次进行人脸识别,界面711中可以包括人脸识别图标712和提示文字“正在进行人脸识别”713。若仍未识别成功,如图9中的(c)所示,手机可以显示界面714,界面714中可以包括提示文字“未识别成功,点击此处重试”715,用户可以点击相应位置重新触发人脸识别,或者也可以通过软键盘716输入密码进行解锁,避免一直无法识别成功导致用户体验低的问题。
[0303]
需要说明的是,上述实施例是以锁屏应用进行人脸解锁的方法流程为例对tof摄像头的工作模式选择进行说明的,tof摄像头的工作模式选择也可以应用在支付或转账时(例如,用户在支付应用/理财应用/聊天应用/购物应用(例如,)中进行支付或转账操作)的人脸识别,用户在安全注册或登录应用程序的人脸安全验证(例如,用户在中进行注册或登录操作)等场景中,本技术不做限定。即可以将锁屏应用替换为购物应用、聊天应用、支付应用、银行应用或理财应用等,本技术不做限定。
[0304]
下面以传感器节点确定的tof摄像头的工作模式为tx关闭模式为例进行说明,如图10所示,s127之后,还包括s150-s167:
[0305]
s150、相机hal的传感器节点基于人眼安全检测结果确定tof摄像头的工作模式为tx关闭模式。
[0306]
s151、传感器节点将tx关闭模式的配置参数发送到摄像头驱动模块。
[0307]
s152、摄像头驱动模块将tx关闭模式的配置参数写入(更新)到tof摄像头的寄存器中,以驱动tof摄像头进行数据采集。
[0308]
也即,摄像头驱动模块可以向tof摄像头发送tx关闭模式的配置参数。
[0309]
示例性的,摄像头驱动模块可以通过i2c将tx关闭模式的配置参数写入tof摄像头寄存器中。即通过i2c向tof摄像头发送tx关闭模式的配置参数。
[0310]
s153、tof摄像头基于tx关闭模式采集raw data4。
[0311]
其中,raw data 4可以是tof摄像头的tx不通电不发光时,tof摄像头的rx接收反射光(无发射光或环境发射光)并成像得到的图像数据,通常是无清晰人脸图像的“黑图”。
[0312]
其中,raw data 4中包含metadata。示例性的,metadata保存有当前tof摄像头的工作模式(例如,tx关闭模式),打光电流值大小(例如,0ma),tof摄像头器件工作状态(例如,异常)和图曝光时间(例如,10μs)等信息。
[0313]
s154、tof摄像头将raw data 4传输到ife模块。
[0314]
示例性的,tof摄像头可以通过mipi将tof摄像头采集的raw data 4传输到ife模块。
[0315]
s155、ife模块将raw data 4发送至安全内存中存储。
[0316]
tof摄像头基于tx关闭模式采集的raw data 4在安全内存中的存储位置可以使用fd4表示。
[0317]
本步骤中的fd4与s117中的fd1可以相同或不同。本步骤中的fd4与s117中的fd1相同时,即tof摄像头基于tx关闭模式采集的raw data4与s117中tof摄像头基于人眼安全模式采集的raw data 1被存入同一块安全内存。可以将s117中tof摄像头基于人眼安全模式采集的raw data 1删除掉,从而tof摄像头基于tx关闭模式采集的raw data 4可以被重新存入安全内存。在fd4与fd1不同的情况下,tof摄像头基于tx关闭模式采集的raw data 4与s117中tof摄像头基于人眼安全模式采集的raw data 1可以被存入不同的安全内存。
[0318]
s156、ife模块将fd4发送至摄像头驱动模块。
[0319]
s157、摄像头驱动模块将fd4发送给ife节点。
[0320]
s158、ife节点通过相机hal的接口将fd4发送给相机服务。
[0321]
s159、相机服务将fd4发送至人脸识别控制模块。
[0322]
s160、人脸识别控制模块将fd4发送至人脸识别ta。
[0323]
s161、人脸识别ta根据fd4从安全内存中读取raw data4。
[0324]
s162、人脸识别ta根据raw data 4得到人脸识别结果。
[0325]
具体的,人脸识别ta可以从tof摄像头基于tx关闭模式采集的raw data 4中的metadata数据获取当前是tx关闭模式,然后通过tof算法基于raw data4中的图像数据得到第三灰度图和第三深度图,通过人脸id算法基于第三灰度图进行人脸识别,基于第三深度图进行防伪检测,得到人脸识别结果。
[0326]
需要说明的是,tof摄像头工作在tx关闭模式下时,人脸识别结果为失败。这是由于tof摄像头在tx关闭模式下无法发射光线,因此tof摄像头无法采集到清晰的人脸图像,即使当前解锁的用户是认证过的用户(即机主),人脸识别结果仍为失败。
[0327]
s163、人脸识别ta将人脸识别结果(为失败)传递到人脸识别控制模块。
[0328]
即人脸识别ta可以通知人脸识别控制模块人脸识别结果为失败。
[0329]
s164、人脸识别控制模块将人脸识别结果(为失败)传递到人脸识别服务。
[0330]
人脸识别控制模块基于之前人脸识别服务注册的回调,将人脸识别结果(为失败)传递到人脸识别服务。即人脸识别控制模块通知人脸识别服务人脸识别结果为失败。
[0331]
s165、人脸识别服务将人脸识别结果(为失败)传递到人脸识别sdk。
[0332]
人脸识别服务基于之前人脸识别sdk注册的回调,将人脸识别结果(为失败)传递到人脸识别sdk。即人脸识别服务可以通知人脸识别sdk人脸识别结果为失败。
[0333]
s166、人脸识别sdk将人脸识别结果(为失败)传递到锁屏应用。
[0334]
人脸识别sdk基于之前锁屏应用注册的回调,将人脸识别结果(为失败)传递到锁屏应用。即人脸识别sdk可以通知锁屏应用人脸识别结果为失败。
[0335]
s167、锁屏应用根据人脸识别结果(为失败)决定不解锁。
[0336]
由于人脸识别结果为失败,因此锁屏应用不解锁。
[0337]
示例性的,若人脸识别失败,如图9中的(a)所示,可以显示界面708,界面708中可以包括解锁图标709(呈关闭状,可以形象地提示用户人脸未解锁成功)以及提示文字“未识别成功,双击屏幕重试”710,响应于用户的双击操作,手机可以再次进行人脸识别(即再次采集用户的人脸信息进行比对和防伪判断)。或者,响应于用户在界面708中的上滑操作,手
机可以显示界面711,进入界面711后手机可以再次进行人脸识别,界面711中可以包括人脸识别图标712和提示文字“正在进行人脸识别”713,若仍未识别成功,手机可以显示界面714,界面714中可以包括提示文字“未识别成功,点击此处重试”715,用户可以点击相应位置重新触发人脸识别,或者也可以通过软键盘716输入密码进行解锁,避免一直无法识别成功导致用户体验低的问题。
[0338]
本技术一些实施例提供了一种电子设备,该电子设备可以包括:触摸屏、存储器和一个或多个处理器。该触摸屏、存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中电子设备执行的各个功能或者步骤。该电子设备的结构可以参考图1所示的电子设备100的结构。
[0339]
本技术实施例还提供一种芯片系统(例如,片上系统(system on a chip,soc)),如图11所示,该芯片系统包括至少一个处理器1101和至少一个接口电路1102。处理器1101和接口电路1102可通过线路互联。例如,接口电路1102可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路1102可用于向其它装置(例如处理器1101或者电子设备的触摸屏)发送信号。示例性的,接口电路1102可读取存储器中存储的指令,并将该指令发送给处理器1101。当所述指令被处理器1101执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本技术实施例对此不作具体限定。
[0340]
本技术实施例还提供一种tof摄像头,该tof摄像头可以用于实现上述实施例中人眼安全模式、人脸id模式和tx关闭模式等,安装有该tof摄像头的电子设备可以执行上述方法实施例中电子设备执行的各个功能或者步骤。
[0341]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中电子设备执行的各个功能或者步骤。
[0342]
本技术实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行上述方法实施例中电子设备执行的各个功能或者步骤。
[0343]
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0344]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0345]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的
目的。
[0346]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0347]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0348]
以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献