如何查找 ISO 19794-2 指纹格式的匹配项?
我使用的是 iso 19794-2 指纹数据格式。所有数据均采用 iso 19794-2 格式。我有超过十万个指纹。我希望进行有效的搜索来识别匹配项。是否可以构建类似二叉树的结构来执行有效(最快)的匹配搜索?或者建议我更好的方法来找到匹配项。还建议我一个java的开源api来进行指纹匹配。帮我。谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您有指纹匹配背景吗?这不是一个简单的问题,您需要一些理论来解决这样的问题。请查看此介绍博洛尼亚大学生物实验室(该领域领先的研究实验室)进行指纹匹配。
现在让我们回答您的问题,即如何使搜索更加高效。
根据指纹表现出的宏观奇点类型,指纹可以分为 5 个主要类别。
宏观奇点分为三种类型:
点的位置,您可以将指纹分为以下几类:
将搜索范围缩小到正确的类别后,您就可以进行匹配了。从你的问题来看,你似乎必须做一个识别任务,所以我担心你必须做所有的比较,或者添加一些预处理层(如我写的分类)以进一步缩小范围搜索字段。
您可以在 Maltoni、Maio、Jain 所著的指纹识别手册一书中找到有关指纹匹配的大量信息和普拉巴卡尔 - 该领域的领先研究人员。
为了读取 ISO 19794-2 格式,您可以使用 NIST 开发的一些实用程序,称为 BiomDI,软件工具支持标准生物识别数据交换格式。您可以尝试将其与开源匹配算法连接,例如此生物识别 SDK 中的算法。然而,这需要大量的工作,包括从一种格式到另一种格式的转换以及算法的微调。
我的观点(作为一名生物识别领域的博士生)是,在这个领域,您可以轻松编写代码,立即完成您所需的 60%,但剩下的 40% 将是:
希望有帮助!
编辑:添加了有关 NIST BiomDI 的信息
编辑 2:因为人们有时会向我发送电子邮件索取标准副本,不幸的是我没有可以分享的。我所拥有的只是销售该标准的 ISO 页面的链接 。
Do you have a background in fingerprint matching? It is not a simple problem and you'll need a bit of theory to tackle such a problem. Have a look at this introduction to fingerprint matching by Bologna University's BioLab (a leading research lab in this field).
Let's now answer to your question, that is how to make the search more efficient.
Fingerprints can be classified into 5 main classes, according to the type of macro-singularity that they exhibit.
There are three types of macro-singularities:
According to the position of those macro-singularities, you can classify the fingerprint in those classes:
Once you have narrowed the search to the correct class, you can perform your matches. From your question it looks like you have to do an identification task, so I'm afraid that you'll have to do all the comparisons, or else add some layers of pre-processing (like the classification I wrote about) to further narrow the search field.
You can find lots of information about fingerprint matching in the book Handbook of Fingerprint Recognition, by Maltoni, Maio, Jain and Prabhakar - leading researchers in this field.
In order to read ISO 19794-2 format, you could use some utilities developed by NIST called BiomDI, Software Tools supporting Standard Biometric Data Interchange Formats. You could try to interface it with open source matching algorithms like the one found in this biometrics SDK. It would however need a lot of work, including the conversion from one format to another and the fine-tuning of algorithms.
My opinion (as a Ph.D. student working in biometrics) is that in this field you can easily write code that does the 60% of what you need in no time, but the remaining 40% will be:
Hope that helps!
Edit: added info about NIST BiomDI
Edit 2: since people sometimes email me asking for a copy of the standard, I unfortunately don't have one to share. All I have is a link to the ISO page that sells the standard.
iso 格式指定了匹配和决策参数的有用机制。决定您希望采用什么机制来识别匹配以及相关的决策参数。当您确定了这些机制和决策参数后,请检查它们以查看哪些能够放入订单中 - 具有相当高程度的单独值,因为您希望避免数据上的多次冲突。当您识别出具有此属性的少量数据项(最好是一个)时,计算每个指纹的属性 - 最好是在将它们添加到数据库时,尽管最初可以完成批量加载。然后,对计算出的特征进行匹配搜索,并且可以通过二叉树、黑红树或各种其他搜索过程来完成。如果不知道数据库中值的差异形式和程度,我无法推荐特定的搜索策略。然而,这样的搜索策略应该能够提供(小)范围的可能匹配 - 然后可以在决定特定匹配之前根据您的匹配机制和参数单独测试这些匹配。
The iso format specifies useful mechanisms for matching and decision parameters. Decide on what mechanism you wish to employ to identify the match, and the relevant decision parameters. When you have determined these mechanisms and decision parameters, examine them to see which are capable of being put into an order - with a fairly high degree of individual values, as you want to avoid multiple collisions on the data. When you have identified a small number of data items (preferably one) that have this property, calculate the property for each fingerprint - preferably as they are added to the database, though a bulk load can be done initially. Then the search for a match is done on the calculated characteristic, and can be done by a binary tree, a black-red tree, or a variety of other search processes. I cannot recommend a particular search strategy without knowing what form and degree of differentiation of values you have in your database. Such a search strategy should, however, be capable of delivering a (small) range of possible matches - which can then be tested individually against your match mechanism and parameters, before deciding on a specific match.
SourceAFIS
我还没有测试过这个,但我会尝试了解这个软件的功能:https://github.com/robertvazan/sourceafis-java
该软件是一个图像到图像匹配器,自我描述于 https://sourceafis.machinezoo.com/ 为:
但想必它首先会转换为细节,您可以从中提取 ISO 19794-2 的算法。
我还想知道 repo 作者是否已经有一些方便的东西,因为他已经编写了 ISO 19794-2 的摘要和实现:
SourceAFIS
I have not tested this, but I would try to look into what this software does: https://github.com/robertvazan/sourceafis-java
The software is an image-to-image matcher self described at https://sourceafis.machinezoo.com/ as:
but presumably it first converts down to minutiae, from which you might be able to extract an algorithm for ISO 19794-2.
I also wonder if the repo author doesn't have something handy already, as he has written summaries and implementations of ISO 19794-2: