42 votes

Scanner d'empreintes digitales à l'aide de l'appareil photo

Travail sur le scanner d'empreintes digitales à l'aide de la caméra ou sans, sa possibilité et son taux de réussite?, Je suis tombé sur l'un de l'open source SDK nommé FingerJetFX son fournir faisabilité avec android trop.

Le FingerJetFX OSE empreintes digitales extracteur est indépendant de la plateforme et peut être construit pour, avec les modifications appropriées à apporter des fichiers, et de les exécuter dans des environnements avec ou sans les systèmes d'exploitation, y compris les

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

mais je ne suis pas sûr de savoir si scanner d'Empreintes digitales possible ou pas, j'ai télécharger le SDK et à creuser mais pas de chance, n'a même pas trouvé toutes les étapes pour intégrer le SDK, donc ayant peu de la question, qui énumérés ci-dessous:

Je suis à la recherche de suggestions et de conseils:

  1. Scanner d'empreintes digitales peut être possible dans android à l'aide de la caméra ou sans caméra?
  2. Avec l'aide de l' FingerJetFX puis-je atteindre mon objectif?
  3. Si la 2e réponse est oui, alors quelqu'un peut-il me fournir toute sorte de mesures pour intégrer le SDK android?

Votre suggestion sont appréciables.

85voto

sarwar Points 1443

Android Appareil Photo De Solutions Basées Sur:

Comme quelqu'un qui a fait d'importantes recherches sur ce problème précis, je peux vous dire que c'est difficile de se faire une image pour la création de modèles (extraction) à l'aide d'un stock de caméra, sur tout appareil Android. Le principal débilitante problème est de parvenir à un contraste important entre le doigt de crêtes et de vallées. Commercial optiques scanners d'empreintes digitales (que vous essayez d'imiter) généralement obtenir le contraste frustré par réflexion totale interne dans un prisme.

FTIR in Biometrics

Dans ce cas, la lumière de l'crêtes de contacter le prisme sont transmises au capteur CMOS tandis que la lumière de la vallées ne le sont pas. Vous êtes tout simplement pas fiable pour obtenir les mêmes résultats à partir d'un appareil photo Android, mais cela ne signifie pas que vous ne pouvez pas obtenir quelque chose d'utilisable dans des conditions idéales.

J'ai pris l'image sur la gauche avec un commercial de optique scanner d'empreintes digitales (Futronics FS80) et la droite, avec une caméra normale (15MP Canon DSLR). Après le recadrage, l'inversion (pour correspondre à l'autre scanner de la convention), contraste, 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 en mesure de déterminer avec précision l'écoulement d'arête.

enter image description here

Et on finit par trouver un nombre décent de l'appariement de minutie (marquées par des cercles rouges.)

Voici la mauvaise nouvelle. La prise de ces types de prises de vues rapprochées de la pointe d'un doigt est difficile. J'ai utilisé un REFLEX numérique avec un flash pour atteindre ces résultats. En outre, la plupart des algorithmes de comparaison d'empreintes ne sont pas invariant d'échelle. Donc, si le doigt est plus éloigné de l'appareil photo sur une "analyse", il peut ne pas correspondre à l'original.

Le logiciel que j'ai utilisé pour les visualisations est l'excellent et sous licence BSD SourceAFIS. Aucune entreprise", la version open source"/ "version payante" manigances soit bien qu'il n'est porté à C# et Java (limité).

Non Caméra De Solutions Basées Sur:

Pour l'effrayante petit nombre d'appareils qui ont un matériel de soutien "USB Host "Mode", 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. J'ai accompli en utilisant wireshark sniffer des paquets USB entre le scanner et une linux box qui ont eu un travail de pilote, puis d'écrire un Android pilote basé sur le renifla commandes.

La Compilation Croisée FingerJetFX

Une fois que vous avez travaillé sur une solution pour l'acquisition de l'image (les deux solutions possibles ont leurs inconvénients), vous pouvez commencer à vous inquiéter d'être FingerJetFX fonctionnant sur Android. D'abord vous allez utiliser leur kit de développement pour écrire un autonome un programme C++ qui prend une image et il se transforme en un modèle. Après que vous avez deux options.

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

Soit, vous aurez besoin du NDK. Je n'ai jamais utilisé JNI donc je m'en remets à la sagesse des autres sur la meilleure façon de nous il. J'ai toujours tendance à choisir la route #2. Pour cette application, je pense que c'est approprié, car vous n'êtes vraiment appeler le code natif pour faire une chose, le modèle de votre image. Une fois que vous avez votre propre programme en cours d'exécution et cross-compilé, vous pouvez utiliser la réponse à cette question pour le paquet avec votre application android et l'appeler à partir de votre code Android.

3voto

user1842757 Points 76

Tthere sont un couple immédiat obstacles:

  1. L'obtention d'une bonne image de l'empreinte digitale sera critique. Selon leur site, fingerjet attend standard des images d'empreintes digitales - par exemple, 8 bits en niveaux de gris (contraste élevé), aplaties des images d'empreintes digitales. Si vous avez pris des empreintes digitales des photos avec l'appareil photo, l'utilisateur aurait besoin d'avoir un plat surface transparente (verre), vous pouvez aplatir les empreintes digitales sur pour prendre la photo. Votre application ensuite de localiser l'empreinte dans l'image, le transformer dans un format acceptable pour fingerjet. Une bibliothèque comme OpenCV serait aider à faire cela.

  2. FingerJetFX OSE ne semblent pas offrir de conserves de soutien android - vous devrez compiler la bibliothèque pour android et l'utiliser via JNI/NDK.

À partir de là, fingerjet devrait vous fournir une représentation compacte de l'impression vous pouvez utiliser pour la correspondance.

Il serait faisable, mais les besoins d'utilisation (nécessité pour l'utilisateur d'avoir un plat transparent de la surface disponible) peut être un briseur d'affaire...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X