我处理了指纹。我如何比较这些结果?

时间:2016-08-24 09:59:53

标签: algorithm image-processing comparison fingerprint

我试图比较指纹。这是我到目前为止所做的。

  1. 从digitalPersona传感器获取原始图像。 image

  2. 二进制化。 image

  3. 歪曲它。我使用了Hall的算法,因为这是我唯一能够正常工作的算法。你仍然可以看到一些缺陷。 image

  4. 剥离凸包(倒置Jarvis算法)并将所有脊结束作为(i,j)坐标的数组(仅具有一个邻居的点)。我还有一个脚本来获得分叉(3个邻居)。 representation of ridge endings only

  5. 我需要什么:知道我可以得到这些所谓的细节(脊线末端和分叉,图像上没有表示)以及每个点的方向(例如方向)脊的结尾),我如何匹配两组细节并给出相似度?

    使用的工具和语言: digitalParsona U.are.U 4500扫描仪,linux上的fprint库,C用于图像采集,带有PIL的Python3用于图像处理。

    到目前为止我的想法:

    • 我现在可以忽略手指旋转,但我可能需要对这些设备进行标准化以补偿同一手指的两个图像之间的(x,y)偏移。
    • 也许我可以改变这些套装,以便他们拥有相同的重心,但我不知道它会有多好用。
    • 我可以为每一组创建一个强度矩阵(例如,一个点上的5个,点周围的4个等),以便获得可以表示为this but with more spikes (best image I could find right now)的东西,如果A减去B给我一个非常平坦的表面(数学上,这可能是结果矩阵中值的平方的低和)我会知道图像看起来很相似。

    您认为我如何与这些集合进行比较?

    我试图告诉你我确实在这方面付出了一些努力,而不是试图让你为我做这项工作;)

    如果您有任何问题,我很乐意回答。谢谢你的关注!

1 个答案:

答案 0 :(得分:1)

要意识到的关键是你的第一步不是精确的。在寻找脊尾和分叉时会有错误。

但是,并非所有错误都同样可能。快速浏览一下,告诉我一个太靠近另一个山脊的山脊可能被错误分类为分叉,这是一个定性错误。第二个预期的错误是错误地沿着山脊结束脊。然而,与脊正交的误差可能很小。你可能也会错过一些。

因此,忽略方向和偏移问题,一张图像中的每个细节应该与另一幅图像中的细节配对,基于大致位置。为此,根据它们的距离,局部脊线方向,类型(结束/分叉)在一对细节上定义似然函数。迭代地在两个图像之间形成对,匹配最可能的点,直到它们变得太不可能。

前几对将为您提供典型距离的良好估计;这也可以用于细化图像偏移估计。局部脊线方向估计 near minutiae 可能不可靠估计方向。

当所有可能的对匹配时,它们的相关可能性可以组合以得出两组细节匹配的组合可能性。

另一方面,我认为细节的整个概念是旧手动指纹匹配技术的遗产。就个人而言,我要做的第一步是获取灰度图像的渐变,并在渐变场中查找脊和valleys 。而不是寻找细节,我会在图像中观察渐变方向(模数180度)快速变化的点。