我使用的是 iso 19794-2 指纹数据格式。所有数据均采用 iso 19794-2 格式。我有十万多个指纹。我希望进行有效的搜索以识别匹配项。是否可以构造一个类似二叉树的结构来执行高效(最快)的匹配搜索?或建议我找到匹配项的更好方法。并且还建议我为 java 做指纹匹配的开源 api。帮我。谢谢。
2 回答
你有指纹匹配的背景吗?这不是一个简单的问题,你需要一些理论来解决这样的问题。看看博洛尼亚大学生物实验室(该领域的领先研究实验室)对指纹匹配的介绍。
现在让我们回答您的问题,即如何使搜索更有效率。
根据指纹所表现出的宏观奇点类型,指纹可分为 5 大类。
宏观奇点分为三种类型:
- 螺纹(一种圆形)
- 循环(U 反转)
- delta(一种三路交叉口)
根据这些宏奇点的位置,您可以将指纹分类为这些类:
- 拱
- 帐篷拱门
- 右环
- 左环
- 螺纹
将搜索范围缩小到正确的类别后,您就可以进行匹配了。从你的问题看来你必须做一个识别任务,所以我担心你必须做所有的比较,或者添加一些预处理层(比如我写的分类)来进一步缩小搜索字段。
您可以在该领域的主要研究人员 Maltoni、Maio、Jain 和 Prabhakar所著的《指纹识别手册》一书中找到有关指纹匹配的大量信息。
为了读取 ISO 19794-2 格式,您可以使用 NIST 开发的一些实用程序,称为 BiomDI,支持标准生物特征数据交换格式的软件工具。您可以尝试将其与开源匹配算法(如此生物识别 SDK中的算法)对接。然而,它需要做很多工作,包括从一种格式到另一种格式的转换以及算法的微调。
我的观点(作为一名从事生物识别工作的博士生)是,在这个领域,您可以轻松编写代码,立即完成您需要的 60%,但剩下的 40% 将是:
- 难以书写(20%);和
- 没有金钱和时间真的很难写(20%)。
希望有帮助!
编辑:添加了有关 NIST BiomDI 的信息
编辑 2:由于人们有时会通过电子邮件向我索要标准的副本,很遗憾我没有可以分享。我所拥有的只是一个指向销售标准的 ISO 页面的链接。
iso 格式指定了用于匹配和决策参数的有用机制。确定您希望采用何种机制来识别匹配,以及相关的决策参数。当您确定了这些机制和决策参数后,请检查它们以查看哪些能够被放入订单中 - 具有相当高的单个值,因为您希望避免数据上的多次冲突。当您确定了具有此属性的少量数据项(最好是一个)时,请计算每个指纹的属性 - 最好在将它们添加到数据库时进行,尽管最初可以完成批量加载。然后对计算出的特征进行匹配搜索,可以通过二叉树、黑红树或各种其他搜索过程来完成。如果不知道数据库中值的差异形式和程度,我无法推荐特定的搜索策略。然而,这样的搜索策略应该能够提供(小)范围的可能匹配 - 然后可以在决定特定匹配之前根据您的匹配机制和参数单独测试这些匹配。