算法(一)已经介绍了一种小面积指纹识别算法可选的方案,是一种经典的方案,对于面积足够大且level2特征高于最小限制时,为一种低内存占用,快速的实现方法。但在某些应用场中中(比如终端中,要求占用面积较小,且面积小意味着更低的成本),如果采集器面积进一步缩小,比如采集图像500dpi下像素在100x60(5mmx4mm),80x80(4mmx4mm),60x60(3mmx3mm)等等,算法(一)的方案稳定性会受到很大挑战。算法(二)主要基于一些传统算法来探讨目前市场上商业算法的解决方案。
以手机指纹应用场景,传感器图像大小128x60为例,录入应该是:
每次只能采集到很小的部分,因此用于识别和注册的图像覆盖面积会很小,下图红色为可能的可能的认证指纹相对于模板所在的位置:
因此,这就构成了两个问题:
1 算法(一)中特征不足以支持完整相似性判定。
2 待认证与模板图像之间覆盖面积有限,可能与几次按压重叠。
终端上的应用方案大多采取多模板的方式,像常用的iPhone5s以后的手机,以及华米OV指纹识别功能的手,多是采用5-20次的按压作为手指的模板。
还是以上面提出的两个问题为例,我们可以针对性地提出解决方案:
1. 对第一个问题是解决图与图之间小面积覆盖的配准问题。
2. 对第二个问题是解决当前图像与多模板图像之间的关系问题。
市场上现有的商用算法大多采取传统特征的老思路(无论取了个什么名字,2017年底),无非就是三点:特征,模型与得分。采用一定算法或间隔采样的方式在取出一些阶跃点或特殊位置作为特征点,再对特征点周围灰度分布手工设计特征,例如某一家的算法描述是这样的:
采用这种方案可以很大程度上增加对图像信息描述的精度,通过对图像梯度等的利用,进而套用传统手工特征框架进行图像的匹配运算。而对于说图像特别小,怎么判别唯一性,这个就是在多模板匹配的一种机制。
通常性能比较是在FMR<1/50k下,以下是四种算法大概性能():
---------------------------------------------------------------------------------------------
1/1/2018 更新:
方案(二)主要还是传统的机器视觉算法,参考相关的CV库都会有不同版本的实现,一般来讲不同的实现方案会对图像预处理,特征的密度,模型等会有不同的要求。
例如,我们采取一种ORB(orient rigde binary)的配准方案,首先对于选取特征点而言要进行必要的图像处理,算法(一)的图像处理是为了得到完整的指纹脊线,因此会选择带通的Gabor去做图像的滤波,而我们现在是为了更好地得到图像的细节便于计算梯度等,而在不同状态下图像也具有图像的噪声分布。
对于算法(二),一般来说图像预处理的效果,对特征和模型都具有很大的影响,直接决定了算法能否稳定地落地。对图像处理一般采取贝叶斯方法滤波和反卷积的方式,通过图像归一化,得到较为稳定的图像。
不同噪声下特征选取(略去图像处理)
对于大多数终端而言,可利用的空间是有限的,为了得到更紧凑的特征,也为了减小模板所占用的时间和提高算法执行效率,采取一种二值(binary)特征。对每一个patch进行局部描述,具体描述算法可以简单归纳为:
定义当前梯度到各个提取之间的差。
二值特征生成: , d表示而至特征的维度
其中设计的损失函数为:
其中
一般取64或128维的二值特征,即8bytes或16bytes
多模板匹配部分参考算法(三)。
算法性能测试:
单手指指纹验证时间,FRR约37ms,FAR约51ms,其中多模板占用空间最大250kb,平均多模板占用空间208kb
在image约为 80*60条件下测试
*其他主要涉及参考算法(三)
参考文献:
Patent:CN 106663204 A