我正在尝试检查大量指纹(100,000 个指纹)中的指纹是否存在/匹配。按顺序搜索匹配项将花费更多时间。有没有更好的方法来搜索匹配项?是否可以将指纹组织成二叉树结构,从而减少比较次数?如果是,我们该怎么做?如果答案是从 Java 的角度来看,那将会很有帮助。
编辑:
I have all the fingerprints as .gif images. how can i convert the finger print images into data?
谢谢。
最佳答案
1)需要使用小波压缩算法,按照小波压缩参数的顺序对指纹进行编码:
0、-1、2.4、5.6.7.7、32.-1.5 等
2)你需要定义匹配函数,它会发现一些相似之处,有两种选择:
-几何方法(将象限与象限进行比较,所有字段都通过某种空间算法分隔成连续的 block )
优点:
硬件加速 (SSE) 像素匹配算法,使用仿射变换将所有指纹归一化到标准基础,f.e.到 512x512 像素的正方形
缺点:
对指纹质量的高度敏感(如果搜索指纹的一部分完全被遗漏)
-拓扑方法(线、弧、断点的连通性、相互定位)
优点:
对指纹的角度、位置、质量敏感度低,可以使用原图比例和方向;
缺点:
分析速度低,高度依赖于分类函数的质量,
3) 你需要定义某种遗传算法来训练一组已知指纹的评估函数
你的知识系统将能够通过给定的样本找到指纹,系统不知道,但经过训练可以找到一些特定的差异/匹配,提高成功搜索的概率,降低搜索时错误匹配的概率.
关于java - 匹配指纹的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762778/