这是2018年4月15日在中科院自动化所第四期「CSIG 图像图形学科前沿讲习班」所做的报告。原载于雷锋网(清华大学冯建江:指纹识别现状与研究进展 | 雷峰网)。
我的报告题目是《指纹识别现状与进展》。今天报告分两个部分,首先介绍的是指纹识别的基本概念和方法,然后主要介绍我们实验室在指纹识别方面最新的一些工作进展。
图 1. 手指皮肤和身体皮肤
人类手指上的皮肤和身体的皮肤有很大不同。其一,手指皮肤有凸纹,没有毛发,不会有油脂,但却有很多汗孔;其二,指纹具有唯一性和稳定性,随着年龄的增长指纹上虽然会起皱,但是图案基本不变;其三,人手接触各种物体表面通常会留下痕迹。这些特性就使得指纹特别适合做身份识别,也即我们所说的「指纹识别」。
那么什么是指纹识别呢?技术性的定义就是:利用传感器、图象处理、模式识别的技术来自动或者半自动的识别两个指纹是否一致。
图 2. 指纹识别技术流程
从上图中也可以看出,指纹识别主要有三个模块,分别为图像采集、特征提取和匹配。首先是传感器得到图像,然后从图像上面提取一些显著的特征,这些特征比较适合做识别任务,最后对指纹进行匹配工作。
在最后的匹配过程中,根据不同的应用大致有三种匹配方式。第一是1对N匹配,例如将在犯罪现场发现的指纹与指纹数据库中的指纹进行匹配。第二种应用是先进行1对N匹配,再进行1对1匹配,例如现在出入境一般就有这两个环节,一个是给外国人发签证的时候为了防止多重身份,要做一个1对N的排查,当过关的时候则需要1对1地确定入境的是当事人。第三种应用就是1对1的身份验证,这在现在的手机上面用的比较多。
下面我们针对指纹识别的三个模块分别做简要介绍。
指纹图像的采集可以分两种。比较早的就是离线采集(off-line method),例如警方一直采用的油墨采集,以及犯罪现场的指纹采集。
图 3. 在手指蘸上油墨,在卡片上面把指纹按上去。上面两排为滚动采集,可以采集尽可能多的信息;下面一排为左右手的平面采集,图像质量稍好。
图 4. 犯罪现场的指纹采集。这种采集取决于手指按在什么物体上面,以及当时指纹遗留物的分析(油比较多还是汗比较多),有多种提取方式。首先是通过药粉或者打特殊光的方式将指纹显现,然后放一把尺子在旁边拍照,这可以帮助我们把图像调到标准的分辨率。最后用胶带等方式把提取物证,然后拿到法庭用。
现在普遍使用的则是在线采集(on-line method)。在线采集的原理比较多。有基于光学全反射原理的,也有通过电容传感器或者超声波等方式的,也有用相机直接拍照的。
图 5. 基于光学全反射原理的指纹在线采集技术。其原理就是当平行光通过三棱镜照在指纹上时,如果是凸起就不会发生反射,而如果是空气就会全反射。
但是不管什么样采集方式,最后得到的图像大概就是下面这三种。
图 6. 从左到右分别为油墨指纹、来自现场的潜指纹和基于光学全反射原理的指纹。
最左边是用油墨方式得到的,其实这个方式和现在光学采集的图像很类似,质量比较好,黑白分明。中间的图像质量比较糟糕,是犯罪现场遗留指纹,对于没有经过特殊训练的人,很难从中找出特征。
指纹的质量决定了识别的准确率(当然其他生物特征的图像质量也是如此)。有很多原因会造成图像质量差。从传感器的角度来说,不同种类的传感器在分辨率、信噪比、面积大小等方面差异往往是很大的,这对采集到的信息的多少有很大影响。此外不同人的手指的皮肤状况也不一样,有的人皮肤太干燥或太潮湿,或者因为长期体力工作划痕比较多/乳突纹被磨平,这都会造成采集质量较差。另外,当按手指时,按的方式和手的姿态也会对图像质量有影响。这些低质量指纹对于指纹识别算法都是很大的挑战。
图 7. 最左侧图像,手指较为干燥,采集到的图像乳突纹断裂,表现为很多不连续的黑点;中间图像,手指较为潮湿,很多地方一团黑,线与线之间难以分开;最右侧图像,手上裂纹较多。
指纹的特征有比较清晰的定义,早些年没有自动指纹识别算法时指纹鉴定专家就利用这样的特征来做识别。这些特征依据分辨率大致可以分为三个层次。
图 8. 依据分辨率,指纹特征可以分为三层。
第一层:脊线方向和频率。即指纹的方向场和脊线的密集程度。脊线方向场中的奇异点也属于第一层特征,比如这个指纹的中央有两个奇异点。
第二层:脊线。当分辨率提高时,我们可以观察到脊线以及上面的一些特殊点(端点和分叉点),这也叫做细节点。
第三层:脊线的内外轮廓。当分辨率再高一些可以观察到脊线并不是线,我们可以看到它有自己的外轮廓,中间还有一些白色空洞(即汗孔);不同手指上这些汗孔的位置和形态也存在差异。
图 9. 指纹特征提取一般只提取前两层特征
现在的指纹识别系统主要利用的是前两层特征,因为第三层特征对于采集仪和手指皮肤的状况要求比较高,太过敏感。所以下面只介绍第一层和第二层特征的提取。通常的做法是先提取第一层特征,然后在第一层特征的指引下提取第二层特征。
第一层特征提取
在提取指纹的方向场和频率的时候,一般会做这样的假设,即指纹的局部图像可以用一个近似二维的正弦波来表示。
图 10. 将局部指纹图像显示为曲面
如图 10 中右图所示,把图像的亮度直接作为曲面的高度,显示出来就类似一个正弦波,该正弦波的参数就表示了指纹局部的方向和频率。我们通过傅里叶变换的方式可以很容易地求解出这些参数。
图 11. 方向场平滑
通过这种局域分析方式分析每个小模块有一个问题,即在有噪声的地方会出错。解决的方法就是做方向场的平滑。具体就如上图所示,先将向量场分解成向量的正弦和余弦,然后分别对这两个图像做平滑,最后再将平滑过的两个图像还原成平滑的方向场。
第二层特征提取
有了方向场和频率之后,接下来就是做脊线的提取。但是由于脊线上有相对比较明亮的汗孔,或者由于干裂等导致的脊线断裂,或者由于手指潮湿使得相邻脊线粘连等原因,脊线一般不能够进行直接提取,而需要先做增强。
图 12. 在 8 个定向和 3 个频率下的 Gabor 滤波器滤波结果。
针对一般图像的增强方法对于指纹来说效果通常不是很好;在指纹增强中比较有效的方法是「上下文滤波」,一个典型的方法就是Gabor滤波器。Gabor滤波器本身是一个复滤波器,指纹增强只用到它的实部。从上图可以看出,经过Gabor滤波之后,指纹图像上的脊线不再有汗孔,粘连的脊线也会分开,断裂的地方也会连起来。由于指纹各处脊线的方向和频率不同,每个位置到底该用哪种参数的Gabor滤波器,是需要按照该位置的方向以及频率来挑选的。
图 13. 二值图像
然后就可以对这些增强图用传统的阈值化方法得到二值图像,再对它做形态学处理,可以得到细化图;通过分析细化图可以检测出来上面的端点以及分叉点,还可以进一步推断出来这些细节点的方向。
图 14. 去除伪细节点
最后,指纹图像的质量通常不是理想的,所以即便经过前面的增强,做了细化和细节点提取,但总还会出现一些假的细节点,所以还需要做一步细节点的验证,这一步会识别出很多典型的伪细节点,比如图像边缘的伪细节点、成对出现的方向相反的伪细节点等。通过这些规律可以尽量把伪细节点去掉。
大部分指纹匹配算法是基于细节点的匹配,所以这个步骤就是一个点匹配的问题。
图 15. 细节点匹配
跟一般的点匹配不同的是,指纹细节点是带方向的;细节点的类型(端点或者分叉点)用的比较少,因为点的类型不是特别稳定。
做细节点匹配的时候,很重要的一个步骤就是指纹的对齐。指纹识别与人脸识别或虹膜识别不太一样,它的姿态不好确定,所以拿到两个图像之后只能找到一个相对的旋转和平移关系,只是相对对齐,而人脸和虹膜可以做绝对的对齐。指纹对齐之后就可以找到对应点,然后通常某种方法算出匹配分数。
虽然现在指纹识别已经取得了很多应用,但仍然存在一系列有待解决的难题。
首先,对于低质量指纹的识别率还比较低。虽然现在大部分手机都带有指纹识别功能,但用的时候体验并不总是很好;此外,公安领域的低质量指纹很多,对它们的识别率仍然有待进一步提高;
其次,大数据库下识别率和效率需要提高。假如某个算法的1对1错误匹配率为万分之一的话,那么放到大型的数据库中做1对N识别出错的概率就非常高。数据库越大,对于识别率的要求就越苛刻。
此外,理论极限不清楚。例如在刑侦中,根据DNA的统计模型可以非常准确地计算出两个DNA样本的随机匹配率;但是对于指纹识别,目前很难估计出准确的随机匹配概率,所以在法庭上指纹匹配的证据还缺少非常完善的统计理论支持,出错的案例也曾发生过。
另外,伪指纹难以检测。各种生物特征现在都有伪造,如何检测出、且以低成本检测出伪造的指纹,还是比较难的问题。
最后,指纹模板的安全问题。现在生物特征(比如指纹)在很多场合下都扮演着密码的功能;但是现代计算机安全系统对密码都进行了非可逆变换,这样即使系统被破解了,也无法轻易得到原来的密码。而目前的生物特征识别系统没有对生物特征做非可逆加密,所以仍存在着极大的安全问题。
我们研究组主要是做低质量指纹的识别,以及大数据库下的指纹检索。下面分四个方向介绍,分别为手指的姿态估计、方向场估计、扭曲场估计、指纹稠密配准。
为什么要做手指的姿态估计?
可能有人会问,为什么要做手指的姿态估计呢?在人脸识别/虹膜识别中,大家是不会去想这个问题的,因为当你检测完人脸/虹膜,姿态基本上就确定了。但是指纹不是这样。例如手机指纹解锁功能,希望做到各个姿态按手指都可以完成解锁;犯罪现场的指纹也是各种角度的都有。因此过去的指纹识别算法都没有做姿态的约束,而是直接去设计容忍各种旋转、偏移的匹配。我们的猜想是,如果我们能够估计出比较准确的手指的姿态,或许就可以提高指纹的识别率和识别速度。
图 16. 带有姿态约束的细节点匹配可以大大减少候选细节点。
以上图为例,当我们在做两个指纹的细节点匹配时,如果是在完全不知道两个指纹姿态的情况下,只看局部的描述子的相似度来找对应点,那么就会有许多候选点需要考虑;但如果我们通过某种方式把指纹的姿态估计出来,就可以把候选点减少很多,这对于后面匹配速度和精度都有极大的帮助。
过去缺少关于手指姿态的研究,主要是因为手指的姿态很难定义。但是我们的假设是,即使姿态定义的不是特别精确,应该也会有用。基于这样的想法,我们是这样定义姿态的:一个真实的手指,它的中心大约是几何上的中心,方向就是从中心指向指尖。
图 17. 手指姿态定义
而实际上,我们看不到完整的手指,我们能看到的只是一幅不完整的指纹图像,也就是说,指纹图像往往只是手指的局部,所以我们只能尽量去预测手指的中心和方向。
滑动窗口方法
图 18. 正样本和负样本的定义
当有了这个姿态定义后,后面的估计方法其实就有点像人脸检测或物体检测了。我们最先尝试过用传统的滑动窗口的方法,标准的姿态就是正样本,非标准的姿态是负样本,我们可以用每个位置的方向分布作为特征向量,来训练这样的检测器。
图 19. 滑动窗口方法
其实流程比较常规,类似行人检测的基本流程,最后得到一些响应图,每个响应图对应的是某一个方向指纹出现的概率;我们找到响应最强的,就把指纹的位置和方向检测出来了。
深度学习方法
前面用的是比较传统的分类器,后来我们尝试了深度学习的方法。我们尝试 对Faster R-CNN 模型做了修改,把不同角度的指纹当成不同的类去检测。
图 20. 深度学习方法
这里面我们需要解决两个问题。一个是类内的合并,也就是把同一个角度的多重响应合并起来;另一个是类间的合并,根据各个角度检测的结果差值出一个角度分辨率比较高的角度。
那么如何评价指纹姿态估计算法的好坏呢?我们有三种类型的评测。首先,算法估计的结果跟专家凭经验标注的姿态是否一致?我们的结果显示大约有 95% 以上的指纹位置偏差小于 2.6 毫米,角度偏差小于 5 度;另外我们发现深度网络方法要比传统分类器的性能好一些。第二,对于同一个手指按出的两个指纹图像,算法估计出的姿态是否一致?我们的实验结果显示,95% 的指纹位置偏差小于 2.4毫米,方向偏差小于 7 度。第三,在检索中,该算法是否能够提高速度和精度?通过与前人方法的实验对比,我们发现通过估计姿态的方法确实可以大大地降低搜索时间和错误率。
图 21. 在大库检索中利用估计的指纹姿态, 无论在速率还是错误率上的表现都得到大大地提升。
低质量指纹姿态的估计
前面的案例处理的都是比较完整的指纹,但犯罪现场的指纹往往没有那么理想。
图 22. 犯罪现场指纹
对于这个问题,我们的姿态预测方法可以和人脸姿态预测作类比。当只有一幅残缺的人脸图像时,我们依然能够大致估计出人脸的中心和方向;当有效图像面积较大时,我们可以把预测累加,得到一个更可靠的人脸中心预测。同样的道理,我们也可以将很多基于局部指纹图像的姿态预测结果加以累加,获得一个更可靠的指纹姿态估计。
图 23. 离线学习指纹局部块的概率分布
在这个算法中,我们首先需要一个离线的学习阶段。我们首先有了指纹上很多局部块分布的概率,对于这些块,对它们做聚类;对于每个类中的样本,我们都知道它们在指纹中的位置,从而可以估计出每个类在指纹图像中的分布概率。从上面图可以看到,不同类型的方向块在指纹上出现的概率是不一样的。
图 24. 在线预测指纹的手指中心
现在给定一幅新的指纹图像,便可以用刚才学习到的概率图做预测了,我们将根据各个局部指纹块预测得到的概率图叠加起来,最后检测到最亮的点,就是预测出的手指中心。
图 25. 在线预测手指方向
通过对方向场做各种旋转,我们可以对各个角度的指纹做预测,最后选择响应最强的作为指纹的方向,上图中我们用箭头长度来表示强度。
图 26. 犯罪现场低质量指纹的姿态预测结果
上图是对一些低质量现场指纹估计出来的指纹中心和角度。我们把结果拿给指纹专家确认过,基本上是合理的。对非常残缺的现场指纹来说,做到这样的估计已经不错了,因为很难给出像素级精度的预测。
在指纹特征提取里面方向场的提取应该是最关键的一步,因为后面提取脊线和细节点,对方向场提取性能的依赖都特别强。
如前面介绍到,过去方向场的估计一般是两步。第一是局部的方法,通过分析梯度、傅里叶变换等求出方向场;但是局部方法在有噪声的区域会出错,所以后面会接一步,用低通滤波或拟合全局参数化模型等把方向场规范化。这些方法对于质量较好的指纹还行,但是对于质量较差的(例如犯罪现场指纹)就比较糟糕了。所以过去犯罪现场指纹的特征一般都是专家手工标注。
图27. 左,梯度分析加全局参数化模型拟合出的方向场;右,专家手工标注的方向场。可以看出拟合结果和专家标注的偏差还是很大的。
专家标注的方向场为什么就比较好呢?原因就在于专家有许多关于指纹的先验知识;通过这样的先验知识,专家可以把不正确的方向场排除出去。于是我们就想,我们能否在方向场的估计中使用先验知识呢?
方向场字典
我们面临的问题就是,如何表示、学习和使用指纹方向场的先验知识。
图 28. 指纹的方向场与英文单词类似,也可以建立一个字典作为先验知识。
这里我们受到了拼写检查技术的启发。在英文单词拼写中,如果把字母随机组合,那么合成出的单词通常是错的;真正合理的单词在所有可能的排列中只占很少的比例;拼写检测器通过将字母组合与字典(先验知识)进行比对,从而来纠正拼写的错误。
图 29. 类似拼写纠错,指纹方向场也可以依据字典来纠错。
事实上,指纹的方向场也是如此。如果每个方向元素随机组合,那么大部分组合将与真实的指纹有很大偏差;真实指纹的方向场可能只占所有可能的组合结果中的极小一部分。如果我们构建一个指纹方向场的字典把先验知识记录下来,那么就可以依据字典对拟合出的方向场进行纠错了。
这里还有一个模糊性问题。在自然语言中,我们知道一个词拼错了,但是跟它距离接近的词太多了,我们可能不知道该如何进行替换;一个方法就是根据上下文来把这种歧义性消除掉。同样,方向场的这个问题也可以通过整体的连续性来解决。
方向场字典的定义:对于指纹图像,我们将之切分成很多大小相同的区块(patch),每个区块包含 N×N 个方向元素,其中方向元素代表了 m × m 像素区域中的方向,我们称区块为字典中的一个词。
图 30. 字典中的一个词所覆盖的区域,词的大小选为 8×8个方向元素,每个方向元素代表了 16×16 个像素点的方向。
字典的学习和使用
我们设计的算法流程如下图所示。
图 31. 字典的学习和使用流程图
首先是离线的学习阶段,从很多高质量的指纹方向场里面学习得到字典。当输入一个质量特别糟糕的现场指纹时,先用传统的方法求出一个带噪声的方向场,然后通过查字典的方式在每个位置上查到一个(或一些)侯选元素,然后依据连续性原则选出比较一致的元素(可以去除模糊性),最后得到质量较好的方向场。
在学习字典的时候,我们用质量比较高的指纹,因为这样的指纹可以用传统算法把方向场求的比较准确,这样就不需要人做太多的标注工作。然后在上面扫描窗口,最后做聚类就可以得到这个字典。
图 32. 输入指纹,得到带噪声的方向场。
当对输入的指纹求初始方向场时,我们先做短时傅里叶变换(即在小窗口做局部傅里叶变换),然后通过检测亮点来估计方向。这样得到的结果里面噪声非常强。但是没有关系,我们可以在后面通过查字典的方式来解决。
图 33. 方向块的相似度
查字典时,我们需要定义一个相似度,即 ns/nf = 方向元素差异小于某个值的元素个数 / 初始方向块中元素的个数,如图所示。这种定义,即使有些元素的噪声特别强烈,仍然会有较高的鲁棒性。这里需要提到的一点是,字典中字的尺寸会对相似度及其鲁棒性有很大的影响。
图 34. 能量函数
在考虑上下文约束的时候,我们定义一个能量函数。能量函数有两项,第一项反映的是侯选方向场和初始方向场的相似程度,另外一项反映的是相邻两个侯选之间重叠区的相似程度。
图 35. 兼容度
比如这两个例子,左边这个是重叠区比较一致,它的兼容度比较高。右边这个重叠区不太一致,兼容度低一些。
图 36. 兼容度矩阵
这样我们对于相邻的两个区域可以定义出一个兼容性矩阵,最后用经典的方法做优化即可。下图对比了三种方向场估计方法结合Gabor滤波的结果。字典法去除噪声的能力明显优于其他两种方法。
图 37. 局部字典——更强的先验知识
通过分析我们发现这个算法仍然有它的缺点。上面的方法我们叫做全局字典,经过它处理之后每个局部都是比较真实的,但是在有些地方仍然会出现一些不可能出现的方向场。
图 38. 指纹方向场的局部特性
我们观察发现发现指纹还有一个更强的先验知识,即指纹方向场跟指尖、指关节的分布也有关系,指关节位置大部分脊线是水平的,指尖位置的脊线基本上是一个弧线。所以如果我们知道手指姿态的话,就可以利用更强的局部先验知识了。所以我们构造局部化的字典,也即指纹的每个位置都有自己的方向字典;而不像前面整个指纹共用一个字典。
图 39. 基于局部字典的方向场估计流程
指纹识别系统的流程图如上所示。与前面的方法相比,多了一步手指姿态的估计,此外在查找字典时是查找各自对应位置的字典进行校正。这样从而就避免了在某些位置上出现奇怪的方向场。实验结果如下图所示:
图 40. 全局字典法和局部字典法的对比
为什么要做扭曲场估计?
由于手指是凸且柔软的,所以每次按压力度、角度的不同,都会使指纹发生不同的变形。因此指纹的变形是永远存在的,给指纹识别带来困难的不是指纹变形本身,而是变形的不一致。
在指纹采集中有一个标准的按压方法:手指放平,垂直按压,适度用力,按压后不要搓动或旋转。这样可以尽量保持指纹变形一致。我们将按照这种方法得到的指纹称为正常指纹,否则就称为扭曲指纹。
图 41. 同一手指的不同扭曲指纹的匹配差异很大。
扭曲指纹变形如果较大的话,对于识别是非常困难的,例如上图一个手指的三个图像,我们做匹配发现,左边两个的匹配分数达329分,但右边两个的匹配分数只有12。而根据这个匹配算法,小于60分的即认为是不同的指纹。
之前对于这个问题的处理有三种方法。一种是修改匹配算法以容忍扭曲。这种做法的缺点就是会造成不同指纹也变得比较像,此外因为容忍的变形扭曲大,所以匹配速度也会变慢。第二种是使用压力传感器、视频跟踪检测扭曲。目前这种方法还只是出现在文章中,实际应用中还没有发现。它的缺点是采集复杂,采集仪成本比较高,无法检测现有指纹数据库中的扭曲指纹,也不能校正扭曲指纹。第三种是将脊线距离归一化,这种方法是 IBM 沃森实验室在 2001 年提出的方案,他们觉得指纹变形之后线的距离就会发生变化,如果归一化就可以把变形去掉。但这个方法的缺点是,这个假设本身就不对,指纹的脊线并不是均匀分布,所以这样强行归一化会造成新的扭曲。
图 42. 类似于识别夸张表情的人脸,先判断指纹是否扭曲,再对于扭曲指纹做校正。
我们的方案是:先通过分类,判断一个指纹是正常指纹还是扭曲指纹;如果有扭曲的话,就进行扭曲校正。做个类比,在人脸识别中,如果表情是中性,那么就直接做识别;否则就先进行表情中性化,然后再做识别。我们这种方案的优点有很多,首先现有的指纹采集仪不需要做任何改动,现有数据库中的扭曲指纹也可以做校正,对于犯罪现场的指纹同样可以处理。
扭曲场分类
图 43. 扭曲指纹分类:正常或扭曲二分法。
上图是扭曲检测的流程。我们将扭曲检测看成是一个二分问题(扭曲或正常),因为虽然扭曲是一个连续过程,但二分方法更好设计,性能也相对较好。分类器就是标准的SVM分类器,训练数据采用正常和扭曲指纹,选取分析的特征是方向场和周期图。做这一步之前,需要先估计一下指纹的姿态,否则特征向量是没有意义的。
扭曲场校正
接下来做扭曲的校正,这等价于估计扭曲场。扭曲指纹可以视为将一个未知的扭曲场 d 作用于一个正常指纹(也是未知的)而得到。如果可以估计某个扭曲指纹的扭曲场 d,就可 以利用 d 的逆函数对扭曲指纹进行校正。但是由于扭曲场的维度非常高,所以这是一个很难的回归问题。
图 44. 扭曲场的校正
我们的方案是,构造一个参考数据库,这个数据库里面记录了各种类型的扭曲场,以及对应的方向场和周期图;新来的图像,我们提取出它的方向场和周期图后,与数据库中的数据进行比较,如果有匹配的参考扭曲指纹,那么我们认为这个新的图像也有类似的变形,然后根据对应的变形场对它做校正。
这里很关键的一步就是,参考的扭曲指纹库是怎么构造。我们的方法是,采集一批各种扭曲的指纹视频,对每一段视频,我们通过细节点追踪的方法估计出首尾帧之间的扭曲场。我们采集了十种类型的扭曲指纹,例如向上、向下、向左、向右、各种旋转等。
图 45. 收集的 10 种扭曲场类型
然后利用 PCA 获得扭曲场的统计模型。将这些模型的主成分进行合成(例如上下与左右的合成)来系统地合成大量扭曲场,用这些合成的扭曲场对正常指纹做变形,从而得到扭曲指纹,提取出这些合成扭曲指纹的方向场、周期图,从而构造出这样一个数据库,这个数据库中包含扭曲的方向场和周期图,以及相应的合成扭曲场。
对于新输入的扭曲指纹,提取出其方向场和周期图后,查找数据库中最近邻的方向场和周期图;再根据对应的扭曲场对输入指纹进行扭曲较正。下面这是一个较正较为成功的例子:
图 46. 左边是数据库中的指纹,右边是对应的犯罪现场指纹,面积很小且有扭曲。当直接做识别时,在一个两万多人的库中排名两千多名;而经过校正,排名提升到第一名。
对于指纹识别,过去大家只是做细节点这个层次的对应关系,而没有考虑稠密配准。
图 47. 基于细节点的配准效果比较差。
对于只根据细节点来对准两个指纹(重叠的线用绿色显示),不管是刚体变换还是薄板样条(TPS)变换,重叠效果大多并不好。我们希望能够把指纹上所有区域的所有脊线都对得比较好。上图右侧是我们希望稠密配准能够达到的效果。
常规的稠密配准方法是首先建立细节点之间的对应关系,然后将细节点所在的脊线建立对应关系。这种方法的缺点是,由于这是采样点级别的对应,所以运算量非常大,且精度也不是很高。我们想到了一个新的方法,即借鉴通信领域的相位调制解调方法,即通信中用电磁波发送信息时,将信号调制在载波上;到达接收端再进行解调,恢复信号。
图 48. 通信领域中的相位调制解调机制
指纹图像在局域上正是一个二维的正弦波图像。借鉴相位调制解调机制,我们可以先生成一个标准的二维正弦波,对这样的一个条纹图像,对它做扭曲实际上就可以等价为对它的相位做偏移;这个偏移不是对图像做变形,而是对每个点的相位加上一个值,所以是通过加法,而不是通过几何变形,来得到扭曲图像。于是我们可以通过相位的方式来得到图像的变形,反过来也可以通过求解相位的方式来求解图像的变形。
图 49. 由相位差求解扭曲场
如上图所示,当给出原始图像和扭曲图像,分别求解得到其相位场后,对应位置相减便可以得到一个相位差的图像,为了去除相位0到2pi的跳变对相位差图像做一个去包裹变换后,就可以直接推算出扭曲场。于是我们可以通过图像加减的方法把图像的扭曲场求出。
这里需要解释一下,我们把原始指纹图像(灰度图像)转成相位的方式,实际上就是把指纹写成 f (x, y) 的表达式:
表达式中包括有一个偏移量(可以看成是亮度),加一个余弦波,波有它的幅度,还有相位,最后加一个噪声项。
相位的提取一般是用复 Gabor 滤波器。这个滤波器实际上就是一个高斯函数乘以一个复指数,复指数里面有频率和方向。当我们知道相差之后,就可以按照公式(相差除以频率,频率为指纹局部频率)直接把变形场求解出来,这里只涉及加、减、除的运算。
相位的解包裹则依照下述公式:
下面这是整个算法的完整流程:
图 50. 依据相位解调原理进行指纹稠密配准的完整流程
给出两个图像,首先我们求解特征(细节点、方向场、周期图、相位图等)。然后,按照细节点匹配的方式先做一个初始的配准,这个结果往往还存在很大的偏差,接下来就靠相位解调的方式来降低偏差。首先是得到两个图像的相位差异,中间可能会出现跳变,所以要做一次相位解包裹使它变成连续的相差。将这个连续的相差除以周期图,就可以得到每个位置的扭曲场。随后再做一次平滑,去除某些局部噪声。最后就可以把两个指纹的脊线非常准确的配准了。下图展示一个配准结果:
图 51. 四种配准方法对于三对例子的配准结果。绿色表示配准成功的脊线。
可以看出用相位解调的方法有非常大的改进。图中的数字,例如(191,0.01),分别指细节点匹配分数和图像相关系数,这两个数字越高越好,能够客观地反映出配准的性能。
最后总结一下。传统的指纹特征提取和匹配方法很难处理低质量指纹,尤其是犯罪现场的指纹。我们分析发现传统方法的共性缺点是,没有充分利用指纹的统计特性,很多方法完全不是基于统计学习的方法。我们的研究思路,就是要研究指纹的特征和皮肤形变的统计学特性,然后在算法设计中加以利用,实验发现在低质量指纹上这对于性能有非常明显的提升。
[1] A. K. Jain, A. Ross, K. Nandakumar, Introduction to Biometrics, Springer, 2011.
[2] D. Maltoni, D. Maio, A. K. Jain, S. Prabhakar, Handbook of Fingerprint Recognition, Springer Verlag, 2009.
[3] X. Yang, J. Feng, J. Zhou, "Localized Dictionaries Based Orientation Field Estimation for Latent Fingerprints", PAMI 2014.
[4] Y. Su, J. Feng, J. Zhou, “Fingerprint Indexing with Pose Constraint”, Pattern Recognition 2016.
[5] J. Ouyang, J. Feng, J. Lu, Z. Guo, J. Zhou, “Fingerprint Pose Estimation Based on Faster R-CNN”, IJCB 2017.
[6] J. Feng, J. Zhou, A. K. Jain, "Orientation field estimation for latent fingerprint enhancement", PAMI 2013.
[7] X. Si, J. Feng, J. Zhou, Y. Luo, “Detection and Rectification of Distorted Fingerprints”, PAMI 2015.
[8] Z. Cui, J. Feng, S. Li, J. Lu, J. Zhou, “2D Phase Demodulation for Deformable Fingerprint Registration”, TIFS 2018.