超声波指纹识别技术_超声指纹识别原理-程序员宅基地

技术标签: 综合  超声波-指纹识别  指纹识别  小米手机  

前言: 2015年,整个超声技术界最引人注目的事情莫过于高通推出了超声波指纹识别技术Sense ID,而小米手机也成功搭载了这一项黑科技。自上世纪五十年代全国超声热之后,超声技术终于有机会成为大众话题之一

超声检测技术基础之基础

绝大多数超声波的检测技术原理都基于pulse-echo——你在山谷里喊一声就是pulse, 被岩壁或者树反射回来的回声就是echo。
对于超声检测而言,特制的晶片(称为换能器)在电脉冲的激励下,产生机械振动(类似于人摸一下电门浑身一抖),振动产生超声波脉冲(pulse),超声波脉冲在传播过程中,会被传播介质(如人体)一部分一部分地被反射或者散射回来(echo),尤其是介质中物理性质不连续的地方,(比如手机上方的一根手指),反射波尤为强烈。反射或散射回换能器的回波,又使换能器产生振动,这种振动被换能器转换为电信号,对于电信号进行不同的处理,可以得到不同的信息,比如传播介质的结构,有没有运动的物体在介质中,介质的弹性等等。
如果把超声波的声束想像成一条线,那么一次超声PULSE-ECHO得到的通常只有一条线的信息,指纹至少是一个面,用超声扫描的方式在不同的位置进行PULSE-ECHO就能够得到一系列线的信息,从而获取整个指纹信息。医院里用的超声成像设备也大多就是这样的工作原理。
指纹识别超声

从高通的宣传视频(h可以确认:SenseID技术中,超声波是垂直于手指表面发射的。不管内部的具体实现,其基于的基本原理就是下图所示,

    ![](https://img-blog.csdn.net/20160927230124785)

相信你只要一看,大致就能看明白,马上可以回家告诉你家孩子。
你:“声波传播速度是340m/s,如果小换能器到乳突线距离是d0, 声波传播的时间就是d0/340,而到小犁沟距离是d1, 声波传播的时间就是d1/340,d1>d0,所以对着小犁沟时声波回来慢一点,这样我们根据时间先后就可以知道究竟是线还是沟……”
你开始等待着孩子带着崇拜眼神说“粑粑你好厉害哦”。
你家孩子:“粑粑,你好象说得不对……”

你怒:“什么不对?老湿上课讲过的,时间=距离除以速度,你又全忘了是不是,老子收拾你!”

你家孩子:“可是声波过去还要回来,传播的距离不应该是2d0,2d1吗?”

你:“……”

好吧,我承认上面那个糗是我犯下的,不过不影响原理说明。重点就是,这种情况,声波被发射然后返回的时间有先后。相邻位置,时间短的是线,时间长的是沟。

现在问题来了,如果超声波束只是一条垂直于手指表面的线,只能得到手指上某一点到换能器的距离,要得到完整的指纹信息,假定指纹识别精度要求到0.2mm,超声波束的间距至少应该小于0.1mm,假定识别的指纹面积为8mm*8mm,则需要得到80*80个点的信息才是完整的指纹信息,相应地,也就需要80*80条超声波束,所以技术的核心解决问题在于:短时间内,如何得到这近4千条超声波束的信息?(各位可以脑补一下:一个小机器人扛着超声换能器,一个位置接一个位置跑,每跑一个位置发射接收一次超声波,估计跑不了100个位置小机器人就加入叛军参加对地球人的进攻了)。

那么,究竟如何得到这80*80个点甚至更多点的信息?

*注:乳突线和小犁沟分别得到的回波差异可能不仅仅是时间先后,有可能回波强度也有较大差别,都可以用于形成指纹图像。为了说明得比较直观,这里选用了最简单的时间先后。
手机上采用的指纹识别技术

上图是从一家叫sonavation的公司网站上 (http://www.sonavation.com/ ultrasound-biometric - sensor/)扒下来的,显示的不是蜂窝,竖起的一根根小柱子是超声波换能器。其中道理很简单——让一个小机器人扛着超声波换能器跑,不如干脆搞几千个并排的超声换能器放那里别动(业界称为矩阵阵列,MATRIX ARRAY),各自独自工作(也可以像控阵雷达一样,合并起来用,独自干活还是合并使用完全取决于集成的ASIC芯片运算能力)。每个换能器可以得到与其正对位置回波的传播时间,从而判断究竟是线还是沟。

上图是Sonavation网站提供他的们现有产品的原型图片,左边的长方形是换能器矩阵,中间的小黑块是ASIC。以下是这家公司识别出的指纹(图中提到乳突线上还有些小洞叫pores,也可以帮助指纹识别),基本上可以确定高通使用的也是类似方案。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liyongqi_/article/details/52685582

智能推荐

计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe-程序员宅基地

文章浏览阅读1k次。Sequence Numberlzyws7393074532892018-04-25Number Sequenceqq_391789932452017-09-21理解TCP序列号(Sequence Number)和确认号(Acknowledgment Number)hebbely9822017-01-14Number Sequence(规律)l25336363712902017-07-18Numb..._ack num

计算机系统启动项设置密码,电脑开机第一道密码怎么设置 - 卡饭网-程序员宅基地

文章浏览阅读5.9k次。笔记本电脑怎么进CMOS密码巧设置笔记本电脑怎么进CMOS密码巧设置 笔记本电脑为了保护用户的数据安全,往往采用加密的方式,最常见的还是CMOS密码加密技术。为了让你的重要数据更加安全,你可能需要设置不同的密码,这也就要求你记住许多密码。对于笔记本电脑用户来说,真的需要设置一道道密码关卡吗?非也非也! 一、认识与设置笔记本电脑的CMOS密码 笔记本电脑的CMOS密码大致分为超级密码(Supervi..._电脑第一道密码修改

VulnHub靶机-Jangow: 1.0.1_jangow01-程序员宅基地

文章浏览阅读2.5k次,点赞2次,收藏5次。迟到的文章,就当库存发出来吧~_jangow01

spark实战之RDD的cache或persist操作不会触发transformation计算_spark cache和persist不生效-程序员宅基地

文章浏览阅读1.7w次,点赞2次,收藏5次。默认情况下RDD的transformation是lazy形式,实际计算只有在ation时才会进行,而且rdd的计算结果默认都是临时的,用过即丢弃,每个action都会触发整个DAG的从头开始计算,因此在迭代计算时都会想到用cache或persist进结果进行缓存。敝人看到很多资料或书籍有的说是persist或cache会触发transformation真正执行计算,有的说是不会!敝人亲自实验了一把..._spark cache和persist不生效

html文字滚动_html滚动-程序员宅基地

文章浏览阅读2.4k次。HTML之marquee(文字滚动)详解语法:以下是一个最简单的例子:代码如下:Hello, World下面这两个事件经常用到:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动代码如下:onMouseOut=“this.start()” :用来设置鼠标移出该区域时继续滚动 onMouseOver=“this.stop()”:用来设置鼠标移入该区域时停止滚动这是一个完_html滚动

leecode++理解_auto row : rows-程序员宅基地

leecode++理解:本文介绍了一些LeetCode题目的解析和思路,包括两数相加、寻找有序数组的中位数、最长字串、整数反转等。还讨论了一些下标规律和正则表达式匹配问题。

随便推点

信号发生器设计VHDL代码Quartus仿真_vhdl正弦波信号发生器-程序员宅基地

文章浏览阅读1k次,点赞20次,收藏22次。代码功能:信号发生器设计信号发生器由波形选择开关控制波形的输出,分别能输出正弦波、方汉和三角波三种波形,波形的周期为2秒(由40M有源晶振分频控制)。考虑程序的容量,每种波形在一个周期内均取16个取样点,每个样点数据是8位(数值范围:00000000~1111111)要求将D/A变换前的8位二进数据(以十进制方式)输出到数码管动态演示出来。_vhdl正弦波信号发生器

笔记-Java线程概述_java 线程概述-程序员宅基地

文章浏览阅读629次。Java Concurrency in Practice中对线程安全的定义:当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的调度和交替运行,并且不需要额外的同步及在调用方代码不必做其他的协调,这个类的行为仍然是正确的,那么这个类就是线程安全的。显然只有资源竞争时才会导致线程不安全,因此无状态对象永远是线程安全的 。过多的同步会产生死锁的问题,死锁属于程序运行的时_java 线程概述

MATLAB从文件读取数据_matlab读取数据-程序员宅基地

文章浏览阅读1.2w次,点赞10次,收藏61次。读取表单Sheet2中部分信息。_matlab读取数据

【实践】基于spark的CF实现及优化_spark cf-程序员宅基地

文章浏览阅读1.4w次。最近项目中用到ItemBased Collaborative Filtering,实践过spark mllib中的ALS,但是因为其中涉及到降维操作,大数据量的计算实在不能恭维。所以自己实践实现基于spark的分布式cf,已经做了部分优化。目测运行效率还不错。以下代码package modelimport org.apache.spark.broadcast.Broadcastimp_spark cf

ijkplayer直播播放器使用经验之谈——卡顿优化和秒开实现_libijkplayer 播放直播流卡顿-程序员宅基地

文章浏览阅读1.8w次。 在我的博客移动平台播放器ijkplayer开源框架分析(以IOS源码为例),大致介绍了一下ijkplayer的基本函数调用顺序和主要线程作用,本博客想介绍一下在直播应用中,针对卡顿和秒开做的一些优化,本优化经验主要是用在Android系统上,ios上也可以借鉴,按本博客修改代码,网络带宽足够的情况下,音视频播放基本流畅不卡顿,首屏时间在500ms以内。 首先来看直播应用中的卡顿。直..._libijkplayer 播放直播流卡顿

数据挖掘实践(金融风控-贷款违约预测)(三):特征工程_金融风控(大数据)特征工程-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏28次。数据挖掘实践(金融风控-贷款违约预测)(三):特征工程目录数据挖掘实践(金融风控-贷款违约预测)(三):特征工程1.引言2.特征预处理2.1缺失值填充2.2时间格式处理2.3类别特征处理3.异常值处理3.1 检测异常的方法一:正态分布法3.2 检测异常的方法二:箱型图3.3异常值的处理方法4.数据分桶5.特征交互6.特征编码6.1 labelEncode 直接放入树模型中6.2 逻辑回归等模型要单独增加的特征工程7.特征选择7.1 Filter7.2 Wrapper (Recursive feature _金融风控(大数据)特征工程

推荐文章

热门文章

相关标签