Scanner d'empreintes digitales à L'aide D'une caméra [fermé]

travailler sur un scanner d'empreintes digitales avec ou sans caméra, ses possibilités et son taux de succès?, Je suis tombé sur l'un des SDK open source nommé FingerJetFX son fournir feasibilty avec android aussi.

l'extracteur D'empreintes digitales FingerJetFX OSE est indépendant de la plate-forme et peut être construit pour, avec les modifications appropriées aux fichiers make, et exécuter dans des environnements avec ou sans systèmes d'exploitation, y compris

  • Linux
  • Android
  • Windows
  • Windows CE
  • divers systèmes d'exploitation temps réel

mais je ne suis pas sûr si le scanner D'empreintes digitales possible ou Non, Je télécharge le SDK et creuser, mais pas de chance, même n'a pas trouvé des étapes pour intégrer le SDK, donc ayant peu de question qui énumérés ci-dessous:

je cherche des suggestions et des conseils:

  1. Scanner D'empreintes digitales peut être possible sur android en utilisant une caméra ou sans caméra?
  2. Avec l'aide de FingerJetFX puis-je atteindre mon objectif?
  3. si la 2e réponse est oui, alors quelqu'un peut-il me fournir n'importe quelle sorte d'étapes pour intégrer SDK dans android?

votre suggestion est appréciable.

41
demandé sur MKJParekh 2013-01-07 11:54:16

2 réponses

Android Appareil Photo De Solutions Basées Sur:

en tant que quelqu'un qui a fait des recherches significatives sur ce problème exact, je peux vous dire qu'il est difficile d'obtenir une image appropriée pour le templating (extraction de fonctionnalité) en utilisant une caméra stock trouvée sur n'importe quel appareil Android courant. Le principal problème débilitant est d'obtenir un contraste significatif entre les crêtes et les vallées du doigt. Scanners optiques commerciaux d'empreintes digitales (que vous tentez d'imiter) typiquement obtenir le contraste nécessaire par une réflexion interne totale frustrée dans un prisme.

FTIR in Biometrics

dans ce cas, la lumière provenant des crêtes en contact avec le prisme est transmise au capteur CMOS alors que la lumière provenant des vallées ne l'est pas. Vous n'allez tout simplement pas obtenir de manière fiable le même type de résultats d'une caméra Android, mais cela ne signifie pas que vous ne pouvez pas obtenir quelque chose utilisable dans des conditions idéales.

j'ai pris l'image à gauche avec un scanner optique d'empreintes digitales (Futronics FS80) et à droite avec une caméra normale (15MP Cannon DSLR). Après avoir recadré, inversé (pour correspondre à la convention de l'autre scanner), contrasté, etc l'image de la caméra, nous avons obtenu les résultats suivants.

enter image description here

Le faible contraste de l'image de la caméra est évident.

enter image description here

mais le logiciel est capable de déterminer avec précision le débit de crête.

enter image description here

et nous finissons par trouver un nombre décent de minutie correspondant (marqué avec des cercles rouges.)

Voici la mauvaise nouvelle. Il est difficile de prendre ce genre de photos rapprochées du bout d'un doigt. J'ai utilisé un DSLR avec un flash pour atteindre ces résultats. De plus, la plupart des algorithmes d'appariement des empreintes digitales ne sont pas invariants. Si si le doigt est plus éloigné de la caméra lors d'un "scan" subséquent, il se peut qu'il ne corresponde pas à l'original.

le logiciel que j'ai utilisé pour les visualisations est l'excellent et BSD licence SourceAFIS . Pas de "version open source"/ "version payante" corporate shenanigans non plus bien qu'il ne soit actuellement porté que sur C# et Java (limited).

Non Caméra De Solutions Basées Sur:

pour le petit nombre effrayant de dispositifs qui ont du matériel qui prennent en charge "le Mode hôte USB" vous pouvez écrire un pilote personnalisé pour intégrer un scanner d'empreintes digitales avec Android. Je vais être honnête, pour les deux modèles que j'ai fait cela parce que c'était une énorme douleur. Je l'ai accompli en utilisant wireshark pour renifler des paquets USB entre le scanner et une machine linux qui avait un pilote actif, puis en écrivant un pilote Android basé sur les commandes reniflées.

Cross Compiler FingerJetFX

une fois que vous avez élaboré une solution pour l'acquisition d'image (les deux solutions potentielles ont leurs inconvénients), vous pouvez commencer à vous inquiéter de faire fonctionner FingerJetFX sur Android. Tout d'abord, vous utiliserez leur SDK pour écrire un programme C++ autonome qui prend une image et la transforme en un modèle. Après ça, tu as vraiment deux options.

  1. compilez - le à une bibliothèque et utilisez JNI à l'interface avec elle.
  2. Compiler un exécutable et laissez votre Android programme de l'appeler comme un sous-processus.

pour l'un ou l'autre vous aurez besoin du NDK . Je n'ai jamais utilisé JNI donc je m'en remettrai à la sagesse de d'autres sur comment mieux nous il. J'ai toujours tendance à choisir la route n ° 2. Pour cette application je pense que c'est approprié puisque vous appelez seulement vraiment le code pour faire une chose, le modèle de votre image. Une fois que vous avez votre programme natif en cours d'exécution et compilé, vous pouvez utiliser la réponse à cette question pour l'empaqueter avec votre application android et l'appeler à partir de votre code Android.

81
répondu sarwar 2017-05-23 12:02:14

il y a quelques obstacles immédiats:

  1. obtenir une bonne image de l'empreinte digitale sera critique. Selon leur site, fingerjet s'attend à des images d'empreintes digitales standard - par exemple, des images d'empreintes digitales à échelle de gris 8 bits (contraste élevé) et aplaties. Si vous preniez des photos d'empreintes digitales avec l'appareil, l'utilisateur aurait besoin d'une surface transparente (verre) plate sur laquelle vous pourriez aplatir les empreintes digitales afin de prendre la photo. Votre app localiserait alors l'empreinte digitale dans l'image, la transformerait dans un format acceptable pour fingerjet. Une bibliothèque comme OpenCV pourrait y contribuer.

  2. FingerJetFX OSE ne semble pas offrir le support android en conserve - vous devrez compiler la bibliothèque pour android et l'utiliser via JNI/NDK.

de là, fingerjet devrait vous fournir une représentation compacte de l'impression que vous pouvez utiliser pour correspondre.

cela serait faisable, mais l'exigence d'utilisation (la nécessité pour l'utilisateur d'avoir une surface transparente plate disponible) pourrait être un briseur de transaction...

3
répondu gary schulte 2013-01-07 11:02:05