在苹果手机上实现虹膜识别(通过改装实现)



一.概要

本文会详细的介绍如何改装苹果手机,使其具有虹膜识别的功能

二.目标、成果

使用苹果手机实现虹膜的注册、登录、匹配识别的功能,

在苹果4s可以进行真机验证、在苹果6s上的速度<0.05s

跳转到视频(如果产生疑惑可回来看解答)

三.改装简介

1.      硬件

a.      改装手机的摄像头,使摄像头可以实现红外拍摄

b.      改装闪光灯,改成红外灯

2.      软件

a.      获取摄像头拍摄的视频流

b.      对获取的图片进行虹膜特征的提取、识别

c.      实现各种用户交互

四.详细的步骤


好的,本文的大致思路已经理清楚,现在开始。

为了更加直观的给大家讲解,这里需要先介绍一下本次将要实现虹膜识别,下图就使用的虹膜识别的流程


那么我们的识别设备就可以简化为一个相机,如下图所示:


既然虹膜识别设备就是一个相机,那么用手机自带的摄像头可以实现吗?答案当然是不可以,如果可以的话,本文就没有意义了。

 虹膜识别要求高质量虹膜图片,需要相机采集到非常丰富的虹膜图像纹理。可见光拍摄是无法采集到虹膜图像的,只有红外拍摄才可以,下面就是效果,一看便知



上图显示:

1.      可见光拍摄的照片,眼球是黑色的,无法看到纹理,即便的采用超高像素+近距离拍摄也不行,根本就没法提取虹膜纹理

2.      红外拍摄可以提取到丰富的虹膜纹理,(上图的中间那张是500W像素的,放大后就可以看到清晰的虹膜纹理)


那么问题来了,我们的手机是可以见光相机,无法进行红外拍摄,难道要就此打住?不!,下面看一下相机尽头的结构,看看是否可以突破。


我们发现,相机的镜头组中有一层镜片是 红外光阻止镜片,它原本的作用是阻止红外光进入相机照射到感光芯片上,这样相机的感光芯片上就只会接受到可见的光谱,少了红外线的干扰,成像的质量会提升很多。

 这里做个补充:苹果4s上的 红外光阻止镜片 效果 比小米Note的好,我用两个手机同时拍一个打开的红外灯,苹果拍照片和肉眼一样(看不出来红外灯是开着、还是关着),小米的照片就会看出红外灯发出了红色的光(如果灯开着的话)。所以看一个红外灯是否工作可以用手机相机拍照试试。

回归正题,如果我们把这层镜片拆掉(红外光阻止镜片),是否相机就可以进行红外成像了能?我们看看成像芯片的资料。

 


我淘宝买的的红外灯的波长就是850的,上面的曲线显示,成像芯片对850波长的响应还是非常不错的,但可惜这不是苹果摄像头的资料,它的资料也不会找得到。于是把镁光、ov、索尼芯片个找十几个,找到芯片资料的这个图,惊喜发现了,几乎所有的芯片都对850的光谱有响应,只是有多有少罢了。所以初步的估计苹果的成像芯片很大的可能可以对850的红外光进行响应。

         淘宝上还可以找到截止可见光通过红外光的帯通滤光片,这就再好不过了。实际发现即便是不加这种镜片也是可以红外成像的,因为成像芯片在850时,rgb三种感光器的响应都比较高的值,叠加后更高(我需要的是亮度图),并且我使用的就是850的补光灯,但是最好还是加上,加上后效果会好一些。




总结:摄像头理论上是可以改装的,至少有希望,虽然有几个地方不确定。

理论分析完毕,开始实际操作:拆!

拆解步骤:

第一步. 取出摄像头

第二步. 撬开闪光灯板

第三步. 分离镜头和sensor板

第四步. 拆除红外光阻止镜片

如上图所示,有点偏蓝色的那块玻璃就是我们要拆除的东西。这里的坑比较多,首先你需要慢慢的打磨四个角、四条边,然后尝试着把他翘起,这里有几个需要注意的地方:

1.      不能碰到旁边的任何原件,有的很容易掉(重新焊接上基本不可能),有的很容易碎。

2.      下面的塑料方框上是有走线的,所以必须保证不被划到。

3.      不能把玻璃给弄碎掉。

a.      碎掉的话很肯能会划伤成像芯片,如果碎掉就没希望了,因为很难保证拆除碎片的玻璃时不碰到其他的地方(sensor)。

b.      不能有玻璃碎片、残渣落在了上面时,因为你是没有办法清除碎片颗粒的,有的体积极小看不见,但是拍照后发现全是点点。

4.      如果有大块的东西掉到了sensor上,切记不能用嘴吹,你的唾液它来说有腐蚀性,并且不纯,所以干了之后会有程沉淀,如果拍照就会有一大块褐色斑停留在上面

5.      如果真的有东西在上面,最好用纯净水清洗,然后立刻弄干。


第五步.装回去



第六步:

把相机自带的闪光灯换成红外灯就比较简单了,大家自行补脑即可。


整体的流程是这样的:





我拆毁大概20~30个,如果你们有兴趣要尝试,请准备至少20个(因为你已经有了我的经验),当然不是所有的手机摄像头都可以拆,

因为红外阻止镜片的位置有多种:

1.      红外阻止镜片直接和成像芯片一体的  =>   放弃

2.      红外阻止镜片在镜头组的内部  =>   放弃

3.      红外阻止镜片在镜头组的顶层  =>   放弃

4.      红外阻止镜片在镜头组的底部  =>   可拆(没遇到过)

5.      苹果4s、三星Note、荣耀7i 这几款都可拆,其他的就不清楚了

 

注意事项:

1.      镜头sensor的分离、滤光片的拆除,这两个的难度最大,成功率极低,只要保证不激动、冷静、不骂脏话、多试几次就会成功

2.      如果发现拆坏了,就不要在插回去开机,会导致手机发烫、不能开机、严重的会手机报废

3.      确定没问题再装机,因为摄像头的排线不在最上面,相当于手机基本拆完了,才能拆摄像头,尽量减少次数。我的主板壳掉了,挂了一次,发现有东西掉了,后来又被焊可回去,险胜

4.      很多时候要把后壳装上,才能开机。好几次误以为挂了

5.      镜头是有自动变焦功能的,不能把它弄坏了,所以:所有以前拆开的触点还是要焊接回去,尽量不要使用胶水。如果没有对焦功能,采集到的图片全是模糊的,就失去了意义


大功告成!先看看效果



左边的图片,可以看到相机是能工作正常的,只是有点偏黄,自动对焦功能管用。可以很清晰的看到上面有一个黑色的点点,那就是落在sensor上的污染物,已经没救了,不过虹膜识别还是可以实现的。

右边的图片,是用6s拍的一张4s正在显示4s拍的6s的照片(4s是改装过的),同样可以看出颜色偏向红色的方向。细心的朋友可能已经注意到了,听筒的上面感觉有一个红色的灯,没错!那就是手机自带的红外灯(用来进行距离识别)。如果再加上可见光截止镜片的话就只能看到那个小灯,屏幕就是一片漆黑。

 

Ok!硬件准备完毕,至少勉强达到了虹膜识别的最低要求。




接下来进行软件的开发!

1.      安装xcode、opencv、sql…   

PS:codex安装opencv超级方便,直接拖进去就可以,根本就不需要整什么包括目录、库目录、连接、dll之类的东西。页面跳转页很好写,直接拖拽即可。页面的跳转逻辑可视。很可视化。

2.      移植虹膜识别算法,xode它竟然支持c++,直接拷贝进去,失败!竟然是因为文本格式问题,改掉格式之后,只有很少的错误,随便改改就可以。

3.      开始写代码,结果发现一个叫code4app的网站,竟然会有如此神奇的网站,上面什么样的ios例子都有,并且几乎全部随便下载,可以说99.99%下载后绝对可用(因为下载好的工程基本不需要任何配置)。

4.      从来没有做什么东西如此顺畅,结果2个星期左右就写好了全部的东西(我是从0开始object-c的,主要是感谢牛逼的code4app),但是装虚拟的Mac同样花了2个星期,这就有点尴尬了(注意:必须配240G的固态,不然会卡爆的,经验告诉我必须这样,内存12G就够了,i5CPU即可,这样的话同时开VS2017、Xcode、Matlab、Ps都不会卡)。



五.真机测试

所有需要做的工作都已近完成。

 

接下来有两个视频(请看完再描述再点击)

1.      4S的视频,因为经过了改装所以可以进行真实的测试(识别人的虹膜),有活体识别功能(照片、视频、模型不能通过),但是速度特别慢(因为4S的CPU很慢)

2.      6s的视频,因为没有改装过摄像头(无法进行红外拍摄),所以我只能先把虹膜的活体识别功能去掉,用照片进行演示。这个视频主要的目的是给大家看看虹膜识别的速度,速度非常的快,0.03秒就可以完成一次识别,这要比很多手机的指纹速度快很多(比如R9广告语:“0.2秒,一瞬间解锁”,网上显示大多都比这个长(2017)),6s的单核速度基本已近逼近i3处理器(对我的算法来说)

3.      注意下面所列出的问题和回答:

为什么速度差那么多?=> 上面已近解释。

为什么照片也能识别?=> 上面已近解释。

6s识别超快是不是因为没有加活体识别?=>不是,活体识别消耗资源很少!……

手机上有多个人的虹膜信息速度会下降吗?=>不会,1个人和1000个人识别时间上基本不会有任何的区别,因为匹配、检索算法更快!)活体识别是怎么实现的?算法可以开源码?=>实在不好意思

0.03秒就可以完成一次识别指的是什么时间?=>从获取到一张有虹膜信息的图像数据流开始,到分析出结果(通过、失败)

 

视频的前半部分是6s的,后半部分是4s的

跳转到视频


  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值