基本上你需要做的是“匹配”两张指尖图片:一张是已授权用户指尖的原始图像,另一张是相机刚刚捕捉到的指尖图像。
如果这两个图像“匹配”,那么相机捕捉到了授权用户的指尖,你应该让她进入,否则访问将被拒绝。
以下是我评估两个指尖图像“匹配”的步骤:
裁剪关键部分:您可以在图像中心裁剪一个区域,或者在CameraPreview上覆盖一个正方形区域,并要求用户在完全覆盖指尖的情况下捕捉相机图像。然后裁剪出该正方形内的内容。
均衡裁剪后的图像:均衡化可以增加对比度并改善图像。
检测边缘:通过检测边缘,您将获得类似于您发布的黑白图像,只显示指纹线条的图像。
应用SIFT:使用SIFT提取“特征”,这些是点的不变(也包括旋转、倾斜、光照等)表示。使用这些特征,您可以比较两个图像:如果在两个图像中都可以找到这些特征,则它们匹配。
步骤1:原始图像
这是原始用户指尖图像
第二步:裁剪
我们将其裁剪为仅包括指尖。
步骤三:均衡化
我们对裁剪后的图像进行均衡化处理。
步骤4:边缘
我们找到边缘。
现在我们可以保存这张图片,以备将来进行身份验证参考。步骤 6:处理新图像
我们会像处理原始图像一样处理它。
第七步:匹配
最后,我们使用SIFT算法将原始图像与新图像进行匹配。
即使有些点不匹配(10%),但大多数(90%,中央大组)仍然正确匹配。在这个例子中,SIFT找到了20个匹配点,您也可以设置特征质量的阈值来提高匹配度。要在Android上完成所有这些事情,您可以使用OpenCV Android库,该库具有几乎所有内容的实用程序,包括SIFT
希望这可以帮助到您。