python指纹识别用什么算法_特征点

指纹识别算法是个相对来说比较成熟的方案,从光学的指纹打卡机,到新一代身份证指纹录入,都可以看到指纹识别的身影,指纹识别(Fingerprint Recognition)也有两个比较重要的标准,即:ISO-19794,ANSI-374,对这部分有一个详尽的标准。其中,引入一个重要的概念:Minutiae(指纹特征点) ,就是这部分主要介绍的,本部分主要针对5mm x 5mm ~ 10mm x10mm的采集器。

指纹的Minutiae有很多种,按照标准通常定义在level 2。

python指纹识别用什么算法_指纹识别_02

 

而通常使用的只有两种:端点(ending point)与叉点(bifurcation point)。如下图所示:

python指纹识别用什么算法_特征点_03

 

通常来说,对于特征的进一步处理主要分为两步:特征点描述和特征点建模。指纹的minutiae在数量在很小的范围内,所以相似度在很大成都上还是依赖于minutiae自身的结构。例如,可以这样去构建:

python指纹识别用什么算法_人工智能_04

 

当然可以构建更简化的结构,这并不影响最终结果的判别。因为我们即将使用一种贪心策略构建更大的结构,像这样:

python指纹识别用什么算法_特征点_05

 

从而将指纹相似变成两个结构的相似性,从而得到相似系数。虽然图像处理,贪心策略,或者相似公式不同,但是最终结果相差不会太大。

对于不同情况的图像,也要考虑不同的构建方式,例如,还可以这样构建:

python指纹识别用什么算法_特征点_06

 

利用minutiae周围的方向场与频率场构建更为精细的指纹描述, 方向场和频率长的计算可以查看相关文献。

上面主要介绍了一些指纹识别算法的方法,而本部分算法设计主要针对图像大小的图像库进行测试,可以对照一下在手指上占面积的大小。

python指纹识别用什么算法_Machine_07

 

192x192(9.6mm x 9.6mm)

python指纹识别用什么算法_Machine_08

 

160x160(8mm x 8mm)

python指纹识别用什么算法_人工智能_09

 

128x128(6.4mm x 6.4mm)

python指纹识别用什么算法_Machine_10

 

128x112(6.4mm x 5.6mm)

python指纹识别用什么算法_Machine_11

 

128x60(6.4mm x 3mm)

以下是算法在部分图像库测试成绩:

python指纹识别用什么算法_人工智能_12

 

由于小面积指纹识别录入均采取多次录入的方式,以上图像库录入图像模板分别为4,6,8,8,12。

测试图像的注册模板所占的空间大小,采用不同的特征描述占有空间大小有差别,但是总模板空间远小于1kb,可见仅占用308Bytes。

python指纹识别用什么算法_python指纹识别用什么算法_13

 

采用带方向场与频率场的描述,针对更小面积的指纹会更有效,但是模板空间会增大,但是远远小于5kb。

python指纹识别用什么算法_Machine_14

 

随着指纹图像面积的进一步缩小(一般来说低于128x128),指纹Minutiae信息也会进一步的减小,从而无法得到更为精确的描述,这部分算法的稳定性将会收到很大挑战,尤其是图像质量不能满足要求的时候,对于更小面积的方案下面一部分会有更详细的综述。

 

参考文献:

Patent:2495687A1

Minutia Cylinder-Code: a new representation and matching technique for fingerprint recognition. IEEE Transactions on Pattern Analysis Machine Intelligence 32, 2128–2141 (2010)

Latent Fingerprint Matching. IEEE Transactions on Pattern Analysis Machine Intelligence 33(1), 88-100 (2010)