我试图比较指纹。这是我到目前为止所做的。
从digitalPersona传感器获取原始图像。 image
二进制化。 image
歪曲它。我使用了Hall的算法,因为这是我唯一能够正常工作的算法。你仍然可以看到一些缺陷。 image
剥离凸包(倒置Jarvis算法)并将所有脊结束作为(i,j)坐标的数组(仅具有一个邻居的点)。我还有一个脚本来获得分叉(3个邻居)。 representation of ridge endings only
我需要什么:知道我可以得到这些所谓的细节(脊线末端和分叉,图像上没有表示)以及每个点的方向(例如方向)脊的结尾),我如何匹配两组细节并给出相似度?
使用的工具和语言: digitalParsona U.are.U 4500扫描仪,linux上的fprint库,C用于图像采集,带有PIL的Python3用于图像处理。
到目前为止我的想法:
您认为我如何与这些集合进行比较?
我试图告诉你我确实在这方面付出了一些努力,而不是试图让你为我做这项工作;)
如果您有任何问题,我很乐意回答。谢谢你的关注!
答案 0 :(得分:1)
要意识到的关键是你的第一步不是精确的。在寻找脊尾和分叉时会有错误。
但是,并非所有错误都同样可能。快速浏览一下,告诉我一个太靠近另一个山脊的山脊可能被错误分类为分叉,这是一个定性错误。第二个预期的错误是错误地沿着山脊结束脊。然而,与脊正交的误差可能很小。你可能也会错过一些。
因此,忽略方向和偏移问题,一张图像中的每个细节应该与另一幅图像中的细节配对,基于大致位置。为此,根据它们的距离,局部脊线方向,类型(结束/分叉)在一对细节上定义似然函数。迭代地在两个图像之间形成对,匹配最可能的点,直到它们变得太不可能。
前几对将为您提供典型距离的良好估计;这也可以用于细化图像偏移估计。局部脊线方向估计 near minutiae 可能不可靠估计方向。
当所有可能的对匹配时,它们的相关可能性可以组合以得出两组细节匹配的组合可能性。
另一方面,我认为细节的整个概念是旧手动指纹匹配技术的遗产。就个人而言,我要做的第一步是获取灰度图像的渐变,并在渐变场中查找脊和valleys 。而不是寻找细节,我会在图像中观察渐变方向(模数180度)快速变化的点。