android – 使用相机的指纹扫描仪
作者:互联网
使用相机或不使用相机的指纹扫描仪,它的可能性和成功率?,我遇到了一个名为FingerJetFX的开源SDK,它也提供了android的可行性.
FingerJetFX OSE指纹特征提取器与平台无关,可以构建
for,对make文件进行适当的更改,并在有或没有的环境中运行
操作系统,包括
> Linux
> Android
> Windows
> Windows CE
>各种RTOS
但我不确定指纹扫描仪是否可能,我下载SDK并挖掘但没有运气,甚至没有找到任何集成SDK的步骤,因此几个问题列出如下:
我正在寻找建议和指导:
- Fingerprint scanner can be possible in android using camera or without camera?
- With the help of
FingerJetFX
can I achieve my goal?- If 2nd answer is yes, then can someone provide me any sort of steps to integrate SDK in android?
你的建议很明显.
解决方法:
Android相机解决方案:
作为对这个确切问题做过重大研究的人,我可以告诉你,使用任何当前Android设备上的库存相机很难获得适合模板化(特征提取)的图像.主要的衰弱问题是在手指的脊和山谷之间实现显着的对比.商业光学指纹扫描仪(您试图模仿)通常通过棱镜中受抑制的全内反射来实现必要的对比度.
在这种情况下,来自与棱镜接触的脊的光被传输到CMOS传感器,而来自谷的光则没有.您根本无法从Android相机中可靠地获得相同类型的结果,但这并不意味着您无法在理想条件下获得可用的内容.
我用左边的图像用商用光学指纹扫描仪(Futronics FS80)拍摄,右边用普通相机拍摄(15MP Cannon DSLR).在裁剪,反转(以匹配其他扫描仪的惯例),对比度等相机图像后,我们得到以下结果.
相机图像的低对比度是显而易见的.
但该软件能够准确地确定脊流量.
我们最终找到了相当数量的匹配细节(标有红色圆圈).
这是坏消息.采取这些类型的手指尖的近距离拍摄是困难的.我使用带闪光灯的数码单反相机来实现这些效果.另外,大多数指纹匹配算法不是尺度不变的.因此,如果手指在随后的“扫描”中离相机更远,则可能与原始手指不匹配.
我用于可视化的软件包是优秀的BSD许可SourceAFIS.没有企业“开源版本”/“付费版本”恶作剧,尽管它目前只移植到C#和Java(有限).
非相机解决方案:
对于具有支持“USB主机模式”的硬件的可怕少数设备,您可以将指纹扫描仪与Android集成在一起.我会说实话,对于我这样做的两个模型,这是一个巨大的痛苦.我通过使用wireshark在扫描仪和具有工作驱动程序的Linux机箱之间嗅探USB数据包,然后根据嗅探命令编写Android驱动程序来完成它.
交叉编译FingerJetFX
一旦你找到了一个图像采集解决方案(两个潜在的解决方案都有它们的缺点),你就可以开始担心在Android上运行FingerJetFX了.首先,您将使用他们的SDK编写一个自包含的C程序,该程序将获取图像并将其转换为模板.之后你真的有两个选择.
>将其编译为库并使用JNI与其进行交互.
>将其编译为可执行文件,让您的Android程序将其作为子进程调用.
对于你要么你需要的是NDK.我从来没有使用过JNI所以我会按照others的the wisdom关于我们最好的方式.我总是倾向于选择路线#2.对于这个应用程序,我认为这是合适的,因为你只是真正调用本机代码做一件事,模拟你的图像.一旦你的本机程序运行并交叉编译,你可以use the answer to this question将它与你的Android应用程序打包并从你的Android代码中调用它.
标签:android,android-ndk,camera,sdk,fingerprint 来源: https://codeday.me/bug/20191003/1849836.html