光学指纹当前随着成本的下降,各大厂商都在低中高端旗舰用上了光学指纹。有别于传统的电容指纹,光学指纹在解锁性能上目前都进行了优化,性能接近电容指纹。
光学指纹电容指纹原理
两者原理都是对指纹的纹路脊谷进行信号采集,通过记录不同信号,实现指纹的录入比对。
电容式指纹模块是利用指纹与导电的皮下电解液形成电场,手指纹路的高低起伏会导致二者之间的压差出现不同的变化,因此可实现准确的指纹数据扫描。这种指纹识别方式比较通用,对环境要求比较弱,只要有指纹就能录入识别,更重要的是这种指纹识别的元器件对空间占用比较小。
光学指纹识别则是通过光线反射,利用一个短焦镜头,在可透光的OLED屏幕下方获取到指纹的图像,从而记录和识别指纹信息。从原理上来看,光学指纹无论是指纹模组的设计,屏结构、指纹的软件交互设计、整机功耗控制、整机结构上相较于电容指纹,条件都变的相对苛刻,对项目开发的挑战也是大大增加。
屏下指纹指纹录入识别流程
录入
用户手指按压->LCD高亮->指纹采图->指纹录入->存储模板->上报录入成功
解锁
用户指纹按压->LCD高亮->指纹采图->指纹识别->更新模板->上报解锁成功
当前这种方式是各大厂商一套通用的逻辑,细节部分各大厂商均有不同程度的差异,但是大都是围绕着这几个点进行的性能优化。
指纹问题常见情况
由于光学指纹的屏下的特性,导致了指纹方面对一些场景下的指纹识别体验非常不好,具体常见的有以下几类(以下指纹样张来源于互联网,不涉及任何用户安全及三方保密协议,均为原图加噪声图拟合而成)
- 按压不全:
- LCD高亮失败:
完全不高亮
高亮不完全
- 脱靶:
录入
解锁
- 贴软膜指纹:
- 贴硬膜指纹:
- 脱皮指纹:
- 衣物误触:
- 异物指纹:
- 沾水指纹:
- 掌纹误触:
- 干手指脏污
- 强光漏光
如果根据用户群体来分,新用户像从电容转到屏下指纹的绝大多数会出现按压面积不全的情况,因为电容指纹轻触一下就解锁开了,但是光学指纹需要等待LCD的高亮和器件曝光,如果轻触,指纹采图就是图5的这种图像,所以这类型用户就会出现这种解锁慢或者解锁不灵敏的反馈。针对这种情况,当前解决的方案基本都是通过用户界面引导来让用户适应。
一些光学指纹的老用户绝大多数的不灵敏场景主要有以下几种,洗手、起床、强光,手指脱皮,干手指(主要是年龄稍微大些的用户,出现的一些指纹糙化的纹理)、贴膜,对应于我们上面的贴图大家可以看到,这类型的指纹纹路都出现了不同程度的纹理破坏或者糊化,导致有些指纹的特征和录入相差过大,最终识别失败,特别是贴的硬膜,对指纹纹路破坏极其强大,所以建议大家都用出产手机自带的膜,这样指纹一定程度能保证比较好的解锁体验。
另外还有一类用户,应该大多数都碰到过,某个指纹解锁很灵敏,但是某个指纹解锁不灵敏,主要原因除了第二点里面叙述到的之外,最大的一个原因是脱靶,脱靶的意思,就是识别的指纹和录入的指纹相差过大。主要有两种情况,第一种,录入的时候手指状态很好(很差),但是因为季节的变化手指和之前的状态差别很大,比方说脱皮,裂纹。第二种,录入的时候录入的面积很局限,只有指纹的一小部分,但是解锁的时候,解锁的指纹区域和录入的区域不匹配,导致最后解锁不开,对应上面的贴图,主要就是脱靶部分,从这个脱靶的图看,录入的图和解锁的图纹路方向都不一致。通常解决这种问题,有两种方式,第一种是删除重录,这种对用户不太友好。另外一种是,要多使用录入的指纹,因为我们有模板学习的功能,在识别成功后,如果模板达到一定的条件,我们会把当前的指纹模板学习进去,以此来扩大录入的模板。
一种可用于指纹预处理的滤波算法
对于上述的差手指,目前Gabor滤波,能够一定程度上进行图像的特征增强对指纹图像进行优化。
- Gabor介绍
Gabor是一个用于边缘提取的线性滤波器,其频率和方向表达与人类视觉系统类似,能够提供良好的方向选择和尺度选择特性,比较适合纹理分析。
-
Gabor滤波公式:
其中:
- Gabor参数介绍
λ:正弦函数波长
θ:Gabor核函数的方向
ψ:相位偏移
σ:高斯函数的标准差
γ:空间的宽高比
这几个参数后面我们在代码中会先固定写好,看下实际的效果。
-
Gabor滤波流程
开发语言:Python
- 示例代码:
- 实验结果
从图像看,针对局部沾水和脏污导致的纹理不清晰,经过Gabor预处理后,可以一定程度上进行纹理增强。
后续指纹发展方向
目前来看,几种指纹识别各有优势,经典的电容式指纹解锁速度快、识别率高、成本低、安全性较高,但比较影响全面屏手机的外观。屏幕光学指纹的解锁速度、精度都还有所欠缺,不过更具有科技感,也有发展性。指纹组这边,会秉承用户至上的理念,吸纳各种不同方案的指纹种类来增加指纹的整体可选性,满足市场上来自不同人群的需求。在指纹的算法上,也会持续扎根,加大本模块的核心竞争力。