Comment convertir des empreintes digitales à l'id unique de l'utiliser pour effectuer des recherches dans la base de données?
J'ai du lecteur d'empreintes digitales secugen et j'ai pu obtenir mon application pour contrôler le lecteur d'empreintes digitales par la numérisation des empreintes digitales et j'ai été en mesure de les enregistrer dans la base mysql!
Après l'enregistrement des empreintes digitales à la db, je veux maintenant pour rechercher l'utilisateur à l'aide de l'empreinte digitale, et je ne peux pas rechercher à l'aide de nouvelles empreintes digitales parce que les empreintes digitales enregistrées en tant que blob/img.
j'ai donc besoin de convertir des empreintes digitales à l'id unique de l'utiliser pour effectuer des recherches dans la base de données?
J'ai de base de données mysql avec 9 000 000 de l'utilisateur. Maintenant, je peux obtenir toutes les informations de l'utilisateur par l'utilisation de l'utilisateur (nom d'utilisateur)
SELECT USERS FROM members WHERE username=username_var
Mais maintenant je ne peux pas utiliser WHERE
dans ma requête car j'ai d'empreintes digitales modèle qui est à la place de (username)
et les empreintes digitales sera changé à chaque fois, donc je ne peux pas utiliser l'empreinte dans ma requête comme (username)
lorsque j'utilise WHERE
dans ma requête.
Tous fingerprint SDK avoir les fonctions peuvent m'aider avec cela, mais ils ne sont pas si vite et de prendre 7 minutes de la recherche et qui est un temps très long.
Je ne sais pas quoi faire et comment. J'espère que vous comprenez mon problème
- Nous ne savons pas ce modèle d'empreintes digitales est, ce que l'empreinte digitale vous parlez et ce que le diable l'appareil que vous utilisez est en train de faire. Vous avez une question incomplète, s'il vous plait de le rendre plus clair et d'expliquer ce que c'est que vous êtes en train de faire. Vous souhaitez trouver une personne après <quelque chose de l'empreinte digitale>. Qu'est-ce que cela?
- fait 🙂 merci à vous
- Ainsi toutes les données que vous avez est en fait une image? Je voudrais créer une autre colonne et je voudrais enregistrer le hachage de l'image (
SHA1
suffirait). Votre table aurait colonnes(id, unique_id, fingerprint_image)
. Pour se connecter avecmembers
, utiliser une table de jonctionmembers2fingerprints (member_id, fingerprint_id)
. Puis, lors de la numérisation des empreintes digitales, de hachage le résultat de requête et de votre base de données. Cela devrait vous aider à aller, si vous avez plus de questions - shoot. - merci beaucoup, j'ai un problème avec le fait que les empreintes digitales images ne sont jamais exactement les mêmes,donc les SÉLECTIONNER, de ne marchera jamais ici.
- Eh bien, c'est pourquoi vous avez besoin à la recherche de cette fingerprint SDK plus. Je n'ai aucune idée de ce qu'il fait, ni comment elle correspond à des empreintes digitales. Il doit faire quelque chose de plus que juste cracher une image, parce que si elle ne vous donne qu'une image - c'est un mauvais appareil, les smartphones peuvent vous donner des images d'empreintes digitales à l'aide de leur appareil photo. Je suis désolé, mais je ne peux pas vous aider davantage, il y a des données manquantes à partir de ce scanner de la vôtre que je suis pas au courant de.
- merci, si vous pouvez le vérifier peut-être que vous pourrez m'aider dreamincode.net/forums/topic/...
- Il y a seulement quelques scanners d'empreintes digitales qui seront réellement en mesure d'effectuer de correspondance sur l'appareil. La plupart des scanners d'empreintes digitales juste de capturer des images et c'est à l'ordinateur hôte et un algorithme permettant de faire la correspondance. S'il est vrai qu'un téléphone portable appareil photo peut prendre une image d'une empreinte digitale, étant réellement en mesure d'utiliser cette photo pour la comparaison est très difficile. La plupart des capteurs d'empreintes digitales ont sophistiqué optique de répondre clairement et avec précision la capture seulement les crêtes et les vallées de l'empreinte digitale.
- Je crois que vous, je n'ai pas utilisé des scanners, j'ai donc été tout simplement de formuler des hypothèses. Il est vrai que certaines choses doivent être laissée aux experts et non des gens qui n'ont aucune idée de quoi ils parlent, comme moi, dans ce cas 🙂 merci pour le commentaire, garder à l'esprit.
- Avez-vous trouvez une solution pour cela ? pouvez-vous m'aider à cela, j'ai le même problème pour correspondre à un doigt d'impression à partir de la base de données. Merci
Vous devez vous connecter pour publier un commentaire.
Résumé
Soit votre SDK fournit un moyen de transformer une empreinte digitale de son capteur en une chaîne de caractères approprié pour détente/approximative de la correspondance de motif à l'aide d'expressions régulières, ou dans un vecteur de bits binaires de taille fixe adapté pour les binaires correspondant; ou vous avez besoin de trouver une bibliothèque pour faire cette conversion vous-même. Tous les autres cas, si possible en théorie, ne sont tout simplement pas pratique.
Vous ne pouvez pas faire n'importe quoi avec juste les images.
Et dans ce cas, le Secugen SDK permet uniquement l'accès à l'image (à des fins de diagnostic, j'imagine) et il a besoin pour exécuter la vérification elle-même (et vous souhaitez le 1:N kit pour ça; le 1:1 kit va pas le faire). Si vous avez encore envie de poursuivre ce, je vais inclure une suggestion au fond. Pas vraiment suggéré, vous l'esprit.
Détails ennuyeux
Empreintes digitales semblent trop proches l'un de l'autre pour être ramenés à la norme de la recherche d'images. Pire encore, de la même empreinte de la même personne ne sera jamais le même aspect dans les deux lectures. Différentes de la pression, la vitesse, la direction, la température de l'environnement, de la sonde et la peau du niveau d'humidité, conduira à des images différentes. Fondamentalement, vous pouvez le faire rien jusqu'à ce que et à moins que vous convertissez vos empreintes digitales pour une fonction de "vecteur".
Il y a, au lieu de fonctions (et de votre SDK devrait avoir) pour convertir une image des empreintes digitales à une liste de particularité points (intersections, des verticilles et ainsi de suite, appelé minutie), ainsi que leur positionnement relatif et d'autres paramètres. Le niveau de ce qui se passe dépend du SDK et de bibliothèque à utiliser: il n'y a plus d'une méthode. Ciblé pour un très particulier de capteur permet de, mais les méthodes diffèrent en ce qu'ils offrent (par exemple, la robustesse, l'invariance de légères empreintes digitales des rotations, et ainsi de suite). Voir ce document pour un exemple ainsi que des références à d'autres méthodes.
Certains kits ne le permet pas (ne pas fournir la fonctionnalité de vecteur pour l'utilisateur) et seulement de fournir les moyens de comparaison de deux images d'empreintes digitales, généralement en les alignant à l'aide de l'APC et puis en l'exécutant directement minutie de correspondance. Cela fonctionne très bien pour quelques images, mais moment de l'exécution pour la recherche d'une image dans une base de données peut être ruineux, tellement que le matériel existe pour la tâche (google Automatique d'Identification des Empreintes digitales des Systèmes).
Une fois que vous avez la fonction de vecteur, vous devez le convertir en un SQL stockables objet, qui peut être une chaîne ou une série de colonnes dans un tuple. Comment faire cela dépend de la façon dont le vecteur est construit. La nature de cet objet va dicter le type de recherche, vous serez en mesure d'exécuter. Cette traduction peut être faite dans un certain nombre de façons et il n'est certainement pas quelque chose que vous devriez essayer sur votre propre.
Ce aussi parce que, même après la vectorisation, les empreintes digitales, vous aurez tout de même pas exacte match. Pas même entre deux empreintes de la même personne dans la même minute. Vous aurez à la place d'un certain nombre d'allumettes et un certain nombre de négatifs matches, et vous aurez besoin d'établir un seuil de confiance pour les deux ("c'est lui", "c'est pas lui", "ne peut pas dire"). En tant que bien que de décider si et dans quelle mesure tolérer les faux positifs ("Oui, c'est lui!" - mais il n'est pas) et de faux négatifs ("Non, ce n'est pas lui" - et il l'était). Sur une serrure de porte que vous voulez pas de faux positifs, mais peut tolérer un faux négatif (il vous suffit de glisser votre doigt à nouveau). Dans une enquête criminelle, vous ne pouvez pas permettre à un faux négatif pour laisser le coupable slip, vous pouvez accepter une douzaine de faux positifs (vous pourrez vérifier leurs alibis plus tard...) mais pas d'un cent (vous ne pouvez pas vérifier une centaine de personnes, et certains d'entre eux n'ont pas un alibi aucun moyen de les arrêter tous).
Et pour les grandes bases de données, vous toujours avoir à courir d'un premier passage par lequel vous restreindre la recherche à ceux d'empreintes digitales qui ont un raisonnable invariant fonction match (par exemple, "le nombre absolu de verticilles entre 75% et 125% de l'échantillon). Cela est nécessaire pour réduire le nombre de tuples vous serez alors soumis à d'autres non-invariantes analyse, qui est beaucoup plus cher et certainement ne peut pas être fait avec MySQL standard fonctions.
Une autre approche consiste à transformer une empreinte digitale dans un chaîne codée en représentation, tels que la recherche peut être faite à l'aide d'un raisonnable lexicographiques d'approche dans un courant de base de données (par exemple, l'expression régulière plus de Levenshtein). Le kit de développement logiciel prend en charge cette conversion de chaîne de caractères, ou il n'en est rien; il s'agit de l'une, voire plusieurs transforme en fonctionnalité et le domaine spectral. La fiabilité de la méthode dépend de la façon dont de nombreuses fonctions peuvent être entassés dans la chaîne (le plus de signatures que vous avez, le plus précis, le match doit être, le plus de fonctionnalités dont vous avez besoin, le plus long de la chaîne).
Vous pouvez être en mesure d'utiliser une bibliothèque externe qui ne l'encodage et vérification à l'aide d' un algorithme convenable.
Même une chose simple comme "retour de la correspondance la plus proche ou de définir s'il y est un match à tous?" dépend fortement de la façon dont l'empreinte est manipulé avant de le ranger. C'est pourquoi généralement les Sdk fournit une interface de haut niveau pour correspondre à une empreinte digitale, et ils vont faire le gros du travail eux-mêmes. Parfois lourds de levage n'est pas traduisible dans une base de données à tous (ou pas sans d'énormes difficultés); par exemple, si le "inscription" est en fait la formation d'un réseau de neurones, et de ne pas l'insertion d'un élément de vecteur dans une base de données.
Sale hack
Vous avez neuf millions d'utilisateurs (qui êtes-vous, le FBI?) et l'autorisation d'obtenir de neuf millions d'empreintes digitales. Et vous avez un kit de développement SDK. Et la correspondance de neuf millions d'images est hors de question. Mais pour les raisons indiquées ci-dessus, vous ne pouvez demander le SDK de la question, "est-ce l'image dans votre base de données?" et de recevoir une liste de, disons, trois noms avec "Oui à 99% oui 92%, oui à 90%".
Vous pouvez peut-être ce faire: exécuter un très haut niveau, très rugueux binning sur l'image, basé sur quelque chose de vraiment macroscopique. Je ne sais pas, peut-être le nombre de crête de minutie. Vous devrez le faire par examinining l'image; peut-être OpenCV pourrait vous aider. Vous obtiendrez un numéro allant de 1 à N, et ce nombre va être peu fiables, avec une erreur de 2%.
La clé ici est que vous devez être sûr que le SDK ne le dira jamais qu'une empreinte digitale qui devrait aller dans le bloc-X ne sera jamais correspondre à celui que vous avez mis en cellule dans le bloc-Y.
Alors vous pouvez construire une cinquantaine de bases de données avec un cinquantième de la chaque utilisateur, en supposant (plutôt: en espérant que votre paramètre de distribution est raisonnablement plat, et pas raide Gaussien. Lors de l'analyse des empreintes digitales, vous pouvez copier dans le SDK base de données du répertoire de l'un des cinquante bases de données, l'une correspondant à la valeur de X à partir de l'empreinte que vous avez, et dans lequel vous avez stocké seuls les utilisateurs avec la même valeur de X. En raison de l'incertitude, certains utilisateurs seront dans deux bases de données, mais de cette façon, vous réduisez le problème par un facteur de cinquante (ou peut-être quarante-cinq).
Vous avez toujours besoin d'appeler le SDK correspondant de fonction, puisque vous n'avez pas d'autre façon de classer les entrants d'empreintes digitales; mais vous pouvez peut-être réduire le temps d'exécution à des proportions raisonnables.
m_FPM.MatchTemplate()
uniquement sur ces images. Sans la documentation du kit de développement, j'ai peur il y a peu de plus que nous pouvons vous dire.Il ya une erreur commune de croire qu'il existe un moyen de convertir une image des empreintes digitales dans un ID unique qui peut être comparé à l'encontre de la même façon qu'un mot de passe ou d'un hachage d'un mot de passe peut être comparé. En réalité, toutes les empreintes digitales des algorithmes que je sais de fonctionner sur certains principes de base.
Extraction
La première étape dans le traitement d'une image des empreintes digitales est l'extraction. Cela implique généralement un certain nombre d'algorithmes de traitement d'image pour créer un nettoyage, binarized version de l'image. C'est ensuite traitée pour points de minutie et d'autres points de données qui sont utiles lors de la comparaison d'images. Ces points sont stockées dans les données d'un struct appelle un modèle. Parce que les impressions d'un doigt sera jamais exactement la même, même ces modèles ne peuvent pas être hachée et par rapport à l'égalité. La seule façon de comparer les empreintes digitales est avec un algorithme de mise en correspondance.
Correspondant
Correspondance a deux modèles et les compare. La plupart du temps il s'agit de prendre l'emplacement relatif de semblables points de minutie dans chaque image. Parfois, les modèles doivent être orientés de manière à tenir compte des variations dans les utilisateurs de placement de leurs doigts. L'algorithme prend alors le résultat de toutes ces comparaisons, et génère un score qui représente le degré de confiance que l'algorithme est que les deux modèles correspondent.
Une fois un score est généré, l'application peut vérifier pour voir si elle est suffisamment élevée pour considérer comme un match.
Pas biométrique algorithme est parfait. Les algorithmes ont leur précision mesurée par deux indicateurs, le Taux de Fausses acceptations (FAR) et le Taux de Faux rejets (FRR). Que vous travaillez à la baisse de l'EXTRÊME, vous fera nécessairement augmenter le FRR le seuil correspondant augmentera.
Pour correspondre à un utilisateur à l'encontre de 9 000 000 de vous avoir à utiliser un AFIS serveur :
https://en.wikipedia.org/wiki/Integrated_Automated_Fingerprint_Identification_System
Ici certains fournisseurs de AFIS solution:
Je ne sais pas si cela sera d'une grande aide pour vous mais, en fondant ma réponse sur ce que j'ai fait sur d'autres Kits de développement lors de la conversion des extraits modèles ANSI ou ISO format pour l'enregistrement de modèles d'empreintes digitales à la base de données, dans votre cas vous pouvez par exemple utiliser l'une des options suivantes en fonction de si vous voulez ANSI ou ISO modèle de formats.
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ANSI378); à définir votre modèle de ANSI378 puis les enregistrer dans la base de données
ou
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ISO19794); à définir votre modèle de ISO19794-2 puis les enregistrer dans la base de données
puis, quand vous êtes correspondant à votre capturé empreinte de modèle à ceux enregistrés dans la base de données que vous capturer une image des empreintes digitales puis de le convertir en soit ANSI ou ISO modèle, selon le modèle type de format que vous avez choisi d'enregistrer vos modèles puis de faire de la correspondance avec soit MatchAnsiTemplate ou MatchIsoTemplate fonctions dans votre kit de développement selon le modèle de format que vous avez choisi pour votre archivé modèles d'empreintes digitales dans votre base de données.
J'ai également noté que Secugen dispose de son propre propriétaire format de Modèle SG400 lesquelles vous pouvez également choisir d'utiliser ainsi. La principale préoccupation ici est que si vous avez enregistré vos empreintes digitales des modèles au format ANSI puis pour votre capturé fingerpint image convertir ANSI modèle de la boucle à travers vos modèles d'empreintes digitales dans la base de données et l'utilisation MatchAnsiTemplate fonction pour trouver la bonne correspondance. Si vous avez enregistré vos modèles d'empreintes digitales dans ISO format pour votre capturé fingerpint image convertir ISO modèle de la boucle à travers vos modèles d'empreintes digitales dans la base de données et l'utilisation MatchIsoTemplate fonction pour trouver la bonne correspondance.