匹配指纹的最快方法?

时间:2011-01-21 19:08:46

标签: java binary-tree fingerprint biometrics

我正在尝试检查指纹是否存在/匹配大量指纹(100,000个指纹)。按顺序搜索匹配需要更多时间。有没有更好的方法来搜索匹配?是否可以在二叉树结构中组织指纹,以便减少比较次数?如果是的话我们怎么做呢?如果答案是Java透视的,那将会有所帮助。

编辑:

  

我的所有指纹都是.gif图像。如何将指纹图像转换为数据?

感谢。

6 个答案:

答案 0 :(得分:4)

1)您需要使用小波压缩算法按小波压缩参数的顺序对指纹进行编码:

0,-1,2.4,5.6.7.7,3.2-1.5,e.t.c。

2)你需要定义匹配函数,它会发现一些相似之处,有两个选项:

- 几何方法(将qudrants与qudrants进行比较,所有字段通过某些空间算法以连续块间隔)

优点:

硬件加速(SSE)像素匹配算法,使用仿射变换将所有指纹归一化为标准基础,f.e。平方512x512像素

缺点:

指纹质量的高灵敏度(如果搜索指纹的一部分完全省略)

- 拓扑方法(线,弧,断点的连通性,相互定位)

优点:

对指纹的角度,位置和质量的低敏感度,可以使用原始图像比例和方向;

缺点:

低分析速度,高度依赖于分类函数的质量,

3)您需要定义某种遗传算法来训练一组已知指纹上的评估函数

您的知识系统将能够通过给定样本找到指纹,系统不知道,但经过培训可以找到某些特定的差异/匹配,提高搜索成功的概率,从而更容易在搜索时出现错误匹配的概率

答案 1 :(得分:3)

这不是我的专业领域(我是一名网络开发人员),但我认为你应该研究一下神经网络。我下载了一些演示代码并做了一些字符识别实验。很高兴看到我设置的神经网络如何识别我在屏幕上绘制的字符。但在它做到这一点之前,它首先必须学习(反向传播学习)。

这是一个提供大纲的幻灯片: http://www.slideshare.net/alessandrobaffa/fingerprints-recognition-using-neural-networks

最后一张幻灯片包含更多参考资料。

祝你好运!

/ Thomas Kahn

答案 2 :(得分:1)

您不能只进行某种图像比较 - 有特定的方法来分析和存储已经建立的指纹信息,例如,考虑到提升/扫描指纹的质量和存储的指纹数据的质量

我用Google搜索fingerprint encoding standard并得出了一些有趣的结果,包括生物识别百科全书,其中提到了“各种指纹编码标准的质量”,以及article说话关于FBI图像编码标准(以及其他内容)

答案 3 :(得分:1)

我知道这个问题是在4年前提出的,但是很多人都在查看这个问题,对于观众而言,我认为我的回答可能会有所帮助。

提出了几个问题: - 1)有没有办法尽快为大规模数据库搜索指纹匹配?

答案:是的 - 在匹配指纹之前,您将缺少重要的一步。该过程是指纹分类,分为独占分类和连续分类。独占分类更容易实现,因为您可以识别指纹的模式,称为类,并将其与仅具有相同类的数据库中的指纹进行比较。这是加速指纹匹配的方法。

以下Peter kovesi创建的链接提供了方向字段和细节提取的代码以进行匹配: - http://www.csse.uwa.edu.au/~pk/research/matlabfns/#fingerprints 奇点检测和定向场有助于识别类。它可以在链接上找到。

2)如何将指纹图像转换为数据? Ans:好的,图像的格式无关紧要,我使用tiff。你需要知道指纹是由山脊和山谷组成的。脊由较暗的线表示。您需要应用称为脊分割的东西来丢弃背景并仅提取脊。它存储在掩码中。

3)“现有的图像和扫描的图像不完全相似。这就是我的问题”

Ans:受噪音,旋转,平移等影响。减少噪音,使用增强技术。要旋转,请使用参考点并对齐指纹。

我知道这是一个简短的概述,但我希望它能指出你的方向正确。祝你好运!

答案 4 :(得分:1)

我无法对完全DIY最佳方法发表评论,但我确实在该领域拥有大量的现场专业知识。所有大型(昂贵的)商业产品都有2个或更多算法在较大的数据集上进行指纹匹配。有一些使用指纹类(循环,螺纹等)来做一些预过滤,但一般来说指纹不能很好地索引,你必须以智能的方式强制它。这就是多种算法发挥作用的地方。

有几类算法可以进行非常快速的指纹比较(脊形)但很容易出错,因此它们本身不够准确,无法在合理大小的数据库上进行合理的识别。因此,这些算法通常部署为第一阶段。如果算法有任何疑问,它将进入下一阶段。这可能是一些“中产阶级”算法,例如光谱细节或“慢和精确”算法,例如,实际上比较所有细枝末节的东西。净效应是次要阶段通常纠正第一阶段的大多数错误接受。唯一不可恢复的损失是第一(和第二)阶段的错误拒绝。根据应用程序域,这可以忽略不计或相当高。这是准确性和性能之间的权衡。在我们自己的测试环境中,我们已经看到在单个(强壮的)桌面上以这种方式每秒超过100.000.000指纹的速度,在〜1ms内解决了原始问题。然而,它是一个复杂,昂贵且非常专业的软件。

答案 5 :(得分:0)

指纹匹配,如果你想要准确性最好使用几乎所有自动指纹匹配算法使用的经过验证的方法完成。

提取细节指向并将其位置和其他数据存储在模板中,然后使用两个模板中细节数据的相对位置的统计分析来计算两个模板匹配程度的得分。

使用这种技术通常需要考虑手指旋转和手指区域的差异,因为每次印象都会将手指放在指纹扫描仪上。

生物识别算法并不完美,其性能是通过其错误接受率(FAR)和误判率(FRR)来衡量的。这两个指标彼此成反比,这意味着当您提高安全性(降低FAR)时,您会增加FRR。