2014-11-25 66 views

回答

2

使用Camera AS FINGER LOCK

为refernece检查这个 Fingerprint Scanner using Camera

正如有人谁在做显著研究这个确切的问题,我可以告诉你们,这是很难得到合适的图像模板(特征提取)使用任何当前Android设备上的股票相机。主要的衰弱问题是在手指的山脊和山谷之间实现显着的对比。商业光学指纹扫描仪(您试图模仿)通常通过棱镜中受挫的全内反射实现必要的对比。

FTIR生物特征识别

在这种情况下,同时从谷光不从脊的棱镜接触光被发送到CMOS传感器。你根本无法可靠地从Android相机获得同样的结果,但这并不意味着在理想条件下你无法获得可用的东西。

我用商业光学指纹扫描仪(Futronics FS80)在左侧拍摄图像,右侧用普通相机(15MP Cannon DSLR)拍摄。剪切后,翻转(与其他扫描仪的惯例相匹配),对比照相机图像等,我们得到以下结果。

相机图像的低对比度是明显的。

但该软件能够准确地确定山脊流量。

进入这里

形象的描述和我们最终找到匹配的细节体面的数量(标有红色圆圈。)

这里的坏消息。采取这些类型的手指尖的近距离拍摄是困难的。我用闪光灯的DSLR来实现这些结果。另外大多数指纹匹配算法不是尺度不变的。因此,如果在随后的“扫描”中手​​指距离相机较远,则可能与原稿不匹配。

我用于可视化的软件包是出色的和BSD许可的SourceAFIS。虽然目前只移植到C#和Java(有限),但没有公司的“开源版本”/“付费版本”shenanigans。

非相机基础的解决方案:

对于可怕的数量很少有支持的硬件设备“USB主机模式”,你可以写一个自定义的驱动程序集成与Android的指纹扫描仪。我会诚实地说,对于这两个模型我是这样做的,这是一个巨大的痛苦。我通过使用wireshark来嗅探扫描器和具有工作驱动程序的Linux盒之间的USB数据包,然后根据嗅探命令编写Android驱动程序,从而完成了它。

交叉编译FingerJetFX

一旦你已经制定了图像采集(包括潜在的解决方案有其缺点)的解决方案,你可以开始担心越来越FingerJetFX运行在Android上。首先,您将使用他们的SDK编写一个自包含的C++程序,该程序将图像转换为模板。之后,你真的有两个选择。

将其编译为库并使用JNI与其进行交互。 将其编译为可执行文件并让Android程序将其称为子进程。 无论你需要NDK。我从来没有使用JNI,所以我会顺从别人的智慧,看看我们是如何最好的。我总是倾向于选择路线#2。对于这个应用程序,我认为这是适当的,因为你只是真的调用本地代码来做一件事,模板化你的图像。一旦你的本地程序运行并交叉编译,你可以使用这个问题的答案将它与你的android应用程序打包在一起,并从你的Android代码中调用它。

0

1] Android平台上没有指纹检测的API或硬件支持。

2]现有的指纹锁定系统不适用于指纹图案匹配。

3]他们正在压力比较,手指印象等的区域

参考:Link