Wie konvertiert Fingerabdruck, eindeutige id zu verwenden es für die Suche in der Datenbank?
Habe ich secugen fingerprint-reader und ich in der Lage gewesen, um meine Anwendung zu Steuern die Fingerabdruck-Gerät durch Scannen der Fingerabdrücke und ich in der Lage gewesen, um Sie zu speichern in mysql Datenbank!
Nach dem speichern der Fingerabdrücke auf der db will ich nun die Suche für den Benutzer mit Fingerabdruck, und ich kann nicht suchen, mit neuen Fingerabdruck, da der Fingerabdruck gespeichert als blob/img.
also muss ich konvertieren Fingerabdruck, eindeutige id zu verwenden es für die Suche in der Datenbank?
Ich habe mysql-Datenbank mit 9,000,000 Benutzer. Jetzt bekomme ich Informationen von dem Benutzer mittels des Benutzers (username)
SELECT USERS FROM members WHERE username=username_var
Aber jetzt kann ich nicht verwenden WHERE
in meiner Abfrage, weil ich die Fingerabdruck-Vorlage, die stattdessen von (username)
und der Fingerabdruck wird geändert, jedes mal, so dass ich nicht verwenden können, den Fingerabdruck in meiner Abfrage wie (username)
wenn ich WHERE
in meiner Abfrage.
Alle fingerprint SDK Funktionen können mir helfen, mit dieser, aber Sie sind nicht so schnell und dauert 7 Minuten, um zu suchen, und das ist eine sehr lange Zeit.
Ich weiß nicht, was zu tun ist und wie. Ich hoffe, dass Sie Sie verstehen mein problem
- Wir wissen nicht, was die Fingerabdruck-Vorlage ist, welchen Fingerabdruck es sich handelt, und was zum Teufel ist das Gerät, das Sie verwenden, zu tun. Sie haben eine unvollständige Frage gibt, bitte deutlicher machen und erklären, was es ist du tust. Sie wollen die person finden, nach <irgendwas mit fingerprint>. Was ist das?
- fertig 🙂 danke
- Also alle Daten, die Sie haben, ist eigentlich ein Bild? Ich würde erstellen Sie eine weitere Spalte und ich speichern den hash des Bildes (
SHA1
würde genügen). Deine Tabelle hätte die Spalten(id, unique_id, fingerprint_image)
. Verbinden Sie sich mitmembers
, die Verwendung einer junction-Tabellemembers2fingerprints (member_id, fingerprint_id)
. Dann, wenn Sie Scannen einen Fingerabdruck, hash-Ergebnis und Abfrage der Datenbank. Dies sollte erhalten Sie gehen, wenn Sie weitere Fragen haben - Schießen. - vielen Dank, ich habe ein problem mit, dass die Fingerabdrücke, die Bilder sind nie exakt gleich sein,so dass die WÄHLEN Sie, WO Sie nie arbeiten hier.
- Nun, das ist, warum Sie benötigen, um die Forschung dieser fingerprint SDK mehr. Ich habe keine Ahnung, was es bedeutet, noch wie es passt Fingerabdrücke. Es muss etwas mehr machen als nur ausspucken ein Bild, wenn es Sie denn gibt nur ein Bild - es ist ein schlechtes Gerät, smartphones kann Ihnen Fingerabdruck-Bilder mit Ihrer Kamera. Tut mir Leid, aber ich kann nicht helfen Sie weiter, es gibt Informationen fehlen dieser scanner von dir, der ich bewusst bin.
- vielen Dank, wenn Sie können dies überprüfen, vielleicht können Sie mir helfen dreamincode.net/forums/topic/...
- Es gibt nur wenige Fingerabdruck-Scanner, der tatsächlich durchführen matching auf das Gerät. Die meisten Fingerabdruck-Scanner nur Bilder und es ist bis zu dem host-computer und einem Algorithmus zu tun, der passenden. Während es wahr ist, dass eine Handy-Kamera kann ein Foto von einem Fingerabdruck, tatsächlich in der Lage sind zu bedienen, das Bild für die Abstimmung ist sehr schwierig. Die meisten Fingerabdruck-sensoren haben eine anspruchsvolle Optik, um klar und genau zu erfassen, nur die Grate und Täler eines Fingerabdrucks.
- Ich glauben Sie, ich habe nicht wirklich verwendet diese Scanner so war ich einfach Annahmen zu machen. Es ist in der Tat wahr, dass einige Dinge sollte Fachleuten überlassen werden und nicht von Menschen, die keine Ahnung haben, wovon Sie reden, wie Sie mich in diesem Fall 🙂 danke für den Kommentar, werde es im Kopf behalten.
- Hast du irgendeine Lösung dafür ? können Sie mir helfen diese ich habe das gleiche Problem-match-finger-print aus der Datenbank. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zusammenfassung
Entweder das SDK bietet eine Möglichkeit der Umwandlung einen Fingerabdruck aus dem sensor in eine string-geeignet für entspannte/approximate pattern matching mit regulären Ausdrücken, oder in einer binären bit-Vektor, der die Feste Größe geeignet für binary matching; oder, die Sie benötigen, eine Bibliothek zu finden, diese Konvertierung selbst. Alle anderen Fälle, während machbar in der Theorie, einfach nicht praktisch.
Sie können nicht alles tun, nur mit den Bildern.
Und in diesem Fall, die Secugen SDK erlaubt nur den Zugriff auf Bild (für Diagnose-Zwecke, kann ich mir vorstellen) und es braucht, um führen Sie den check selbst (und Sie wollen die 1:N-kit für die, die 1:1-kit nicht tun). Wenn Sie immer noch wollen, um dem nachzugehen, werde ich einen Vorschlag an der Unterseite. Nicht wirklich vorgeschlagen, wohlgemerkt.
Langweiligen details
Fingerabdrücke sehen einfach zu ähnlich zueinander zu sein, offen für standard-image-Suche. Schlimmer noch, die gleichen Fingerabdruck von der gleichen person wird nie gleich Aussehen in zwei Lesungen. Andere Art von Druck, Geschwindigkeit, Richtung, Umgebung, Temperatur, sensor und der Haut Feuchtigkeit, führen zu unterschiedlichen Bildern. Im Grunde, Sie tun können, nichts, bis und es sei denn, Sie konvertieren Sie Ihre Fingerabdruck zu einem "feature-Vektor".
Gibt es anstelle von Funktionen (und das SDK sollten Sie haben) zu konvertieren, ein Fingerabdruck-Bild, um eine Liste der speziellen Eigenschaft Punkte (Kreuzungen, Windungen und so weiter, genannt Kleinigkeiten), zusammen mit Ihrer relativen Positionierung und andere Parameter. Die Ebene, bis zu der dies geschieht, hängt von der SDK und Bibliotheken: es gibt mehr als eine Methode. Visier für einen sehr speziellen sensor hilft, aber dann sind die Methoden unterscheiden sich in dem, was Sie bieten (z.B. Robustheit, Invarianz auf leichte Fingerabdrücke, Drehungen, und so weiter). Sehen dieses Papier für ein Beispiel, wie auch Verweise zu anderen Methoden.
Einige kits nicht zulassen, dass dieses (nicht-Versorgung der feature-Vektor für den Benutzer) und stellen nur die Möglichkeit zum vergleichen von zwei Fingerabdruck-Bilder, in der Regel ausrichten mit PCA und dann läuft eine direkte minutia matching. Dies funktioniert sehr gut für einige Bilder, aber Laufzeit für Suche nach einem Bild in einer Datenbank können ruinös, so viel, dass spezielle hardware existiert für die Aufgabe (google " Automatic Fingerprint Identification Systems).
Sobald der feature-Vektor, müssen Sie es zu konvertieren, um eine SQL-storable-Objekt, das kann ein string sein oder eine Serie von Spalten in einem Tupel. Wie Sie dies tun, hängt davon ab, wie der Vektor konstruiert ist. Die Natur dieses Objekts wird diktieren, welche Art von Suche, die Sie werde in der Lage sein zu laufen. Diese übersetzung kann getan werden, in einer Reihe von Möglichkeiten und es ist definitiv nicht etwas, sollten Sie versuchen, auf Ihrem eigenen.
Diese auch, weil auch nach dem Vektorisieren die Fingerabdrücke, Sie haben noch keine genaue übereinstimmen. Nicht einmal zwischen zwei Fingerabdrücke von derselben person innerhalb der gleichen minute. Sie haben stattdessen eine Anzahl von positive Treffer und eine Reihe von negativen Treffern, und Notwendigkeit, das Vertrauen der Schwellenwert für beide ("it' s him", "it' s not him", "kann nicht sagen"). Ebenso wie die Entscheidung, ob und in welchem Ausmaß tolerieren false positive ("ja, das ist er!" ist es aber nicht) und falsch negative ("Nein, es ist nicht in ihm" - und er war). Auf eine Tür sperren, Sie wollen keine false positives, aber tolerieren kann, eine falsch-negative (Sie nur schieben Sie Ihren finger wieder). In einer strafrechtlichen Ermittlung können Sie nicht zulassen, dass eine falsch-negative zu lassen, die Schuldigen zu schlüpfen, und Sie können akzeptieren, ein Dutzend Fehlalarme (Sie überprüfen Ihre alibis später...), aber nicht zu hundert (man kann nicht check-out ein hundert Personen, und einige von Ihnen nicht mehr eine alibi - keine Möglichkeit, Sie können verhaften Sie alle).
Sowie für große Datenbanken Sie immer haben, um einen ersten pass, wobei Sie die Suche einschränken, um diejenigen, die Fingerabdrücke, die einen angemessenen invariante Funktion übereinstimmen (zum Beispiel, "die absolute Zahl der Umgänge zwischen 75% und 125% der Stichprobe). Dies ist notwendig, um zu reduzieren die Anzahl der Tupel, die Sie dann zum Gegenstand einer weiteren nicht-Invarianten-Analyse, die viel teurer und auf jeden Fall nicht getan werden mit standard-MySQL-Funktionen.
Ist ein anderer Ansatz zu transformieren, ein Fingerabdruck in einem kodiert string-Darstellung, so dass die Suche kann durchgeführt werden, indem eine angemessene lexikographische Konzept in einem mainstream-Datenbank (z.B. regulärer Ausdruck plus Levenshtein-Distanz). Ihre SDK-entweder unterstützt diese Zeichenfolge-Konvertierung, oder es funktioniert nicht; es geht um einen, möglicherweise mehrere Transformationen in der Funktion und der Spektral-domain. Die Vertrauenswürdigkeit der Methode hängt davon ab, wie viele Funktionen können gepackt werden in die Zeichenfolge (je mehr Unterschriften man hat, desto mehr präzise die übereinstimmung sein muss, je mehr Funktionen Sie benötigen, desto länger die Zeichenfolge).
Können Sie verwenden eine externe Bibliothek, die die Kodierung und prüfen für Sie mit ein geeigneter Algorithmus.
Selbst eine einfache Sache wie die "Rückkehr der naheliegendste übereinstimmung aus, oder definieren Sie, ob es ist ein match überhaupt?" stark davon abhängt, wie der Fingerabdruck bearbeitet wird, bevor die Speicherung. Das ist, warum SDKs in der Regel wird die Versorgung einer high-level-Schnittstelle, um einen Fingerabdruck, und Sie alles tun, die schweres heben, sich. Manchmal schweres heben ist nicht übersetzbar in eine Datenbank (oder nicht ohne enorme Schwierigkeiten), zum Beispiel wenn die "Einschreibung" ist eigentlich das training eines neuronalen Netzes, und nicht das einsetzen eines feature-Vektors in eine Datenbank.
Dirty hack
Haben Sie neun Millionen Nutzer (wer sind Sie, das FBI?) und die Erlaubnis zu bekommen, neun Millionen Fingerabdrücke. Und Sie haben diese SDK. Und matching neun Millionen Bilder ist aus der Frage. Aber aus den oben genannten Gründen, können Sie nur bitten, die SDK die Frage, "ist das Bild in deiner Datenbank?" und Sie erhalten eine Liste von, sagen wir, drei Namen, die mit "ja" zu 99%, ja bei 92%, ja 90%".
Können Sie vielleicht, dies zu tun: führen Sie ein sehr hohes Niveau, sehr grobe binning auf dem Bild, basierend auf etwas, was wirklich makroskopischen. Ich weiß nicht, vielleicht die Anzahl der ridge Kleinigkeiten. Sie müssen dies tun, indem Sie examinining das Bild; möglicherweise OpenCV die Ihnen helfen könnten. Sie erhalten eine Zahl im Bereich von 1 bis N, und diese Zahl wird unzuverlässig sein, mit einem Fehler von sagen wir 2%.
Der Schlüssel hier ist, müssen Sie sicher sein, dass die SDK wird nie sagen, dass ein Fingerabdruck, der sollte in block X jemals mit einem, der Sie klassifiziert in block Y.
Dann können Sie bauen fünfzig Datenbanken mit einem fünfzigstel der Benutzer jeweils angenommen, dass (eher: hoffe), dass die parameter-Verteilung ist einigermaßen flach und nicht steil Gauß. Bei der Analyse eines Fingerabdrucks Sie können kopieren Sie in das SDK-Verzeichnis, einem der fünfzig-Datenbanken, die eine entsprechend dem X-Wert aus dem Fingerabdruck, den Sie haben, und in dem Sie gespeichert haben, werden nur die Benutzer mit dem gleichen X-Wert. Aufgrund der Unsicherheit, die einige Benutzer werden in zwei Datenbanken, aber auf diese Weise reduzieren Sie das problem durch einen Faktor von fünfzig (oder vielleicht vierzig-fünf).
Müssen Sie noch rufen Sie die SDK-matching-Funktion, da hast du keine andere Möglichkeit der Klassifizierung der eingehenden Fingerabdruck; aber Sie kann vielleicht reduzieren Sie die Laufzeit auf ein überschaubares Maß.
m_FPM.MatchTemplate()
nur auf die Bilder. Ohne die SDK-Dokumentation, die ich fürchte, es gibt wenig mehr, das können wir Euch sagen.Es ist ein verbreiteter Irrtum, dass es einen Weg gibt, zu konvertieren, ein Fingerabdruck-Bild in eine eindeutige ID, die sich im Vergleich gegen die gleiche Art und Weise ein Passwort oder einen hash des Kennworts verglichen werden können. In der Realität, alle Fingerabdruck-algorithmen, die ich kenne, arbeiten auf einige grundlegende Prinzipien.
Extraktion
Der erste Schritt bei der Verarbeitung ein Fingerabdruck-Bild ist die Extraktion. In der Regel betrifft dies eine Reihe von Bildverarbeitungs-algorithmen, um eine saubere erstellen, binarized version des Bildes. Dieser wird dann bearbeitet, für Minutien und sonstige Daten-Punkte, die sind nützlich beim vergleichen von Bildern. Diese Punkte gespeichert sind, und eine Daten-Struktur namens eine Vorlage. Weil keine zwei Eindrücke der eine finger wird immer genau gleich sein, auch diese Vorlagen können nicht zerlegt werden und im Vergleich für Gleichheit. Die einzige Möglichkeit zum Vergleich von Fingerabdrücken ist mit einem matching-Algorithmus.
Passenden
Das Matching dauert zwei Vorlagen und vergleicht Sie. Die meisten der Zeit, dies bedeutet, dass man die relativen Positionen der ähnlichen Minutien in jedem Bild. Manchmal sind die Vorlagen müssen gedreht werden, um Platz für Variationen in der Benutzer Platzierung Ihrer finger. Der Algorithmus nimmt dann die Ergebnisse dieser Vergleiche und erzeugt eine Partitur, die darstellt, wie sicher der Algorithmus ist, dass die beiden Vorlagen entsprechen.
Einmal eine Punktzahl generiert, die Anwendung kann überprüfen, um zu sehen, wenn Sie hoch genug ist, um zu prüfen, wie ein match.
Keine biometrischen Algorithmus ist perfekt. Algorithmen haben Ihre Genauigkeit, gemessen mit zwei Metriken, die False-Accept-Rate (FAR) und die False Reject Rate (FRR). Wie Sie arbeiten, um den unteren der WEIT, Sie unweigerlich Erhöhung der FRR, da die Schwelle für das matching zu erhöhen.
Passend ein Benutzer gegen 9,000,000 Sie eine AFIS-server :
https://en.wikipedia.org/wiki/Integrated_Automated_Fingerprint_Identification_System
Hier einige Anbieter von AFIS-Lösung:
Ich weiß nicht, ob dies wird sehr hilfreich sein für Sie, sondern stützt sich meine Antwort auf das, was ich getan haben, auf andere SDKs während der Konvertierung extrahiert Vorlagen entweder im ANSI-oder ISO-format für die Speicherung von Fingerabdruck-Vorlagen-Datenbank, in deinem Fall könnte man z.B. verwenden Sie eines der folgenden basiert wird, wenn Sie wollen, ANSI-oder ISO-template-Formate.
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ANSI378);, um Ihre Vorlage zu ANSI378 dann speichern Sie es auf der Datenbank
oder
m_FPM.SetTemplateFormat(SGFPMTemplateFormat.ISO19794);, um Ihre Vorlage zu ISO19794-2 speichern Sie Sie dann auf Datenbank
dann, wenn Sie passend zu Ihrer erfassten Fingerabdruck-Vorlage, um diese in der Datenbank gespeichert, die Sie anschließend erfassen eines Fingerabdruck-Bildes, dann konvertieren Sie es entweder ANSI oder ISO Vorlage je nach Vorlage format-Typ Sie gewählt haben, speichern Sie Ihre Vorlagen dann tun die passende mit entweder MatchAnsiTemplate oder MatchIsoTemplate Funktionen im SDK nach Vorlage format, das Sie wählten für Ihre archivierten Fingerabdruck-Vorlagen in der Datenbank.
Ich habe auch bemerkt, dass Secugen hat eine eigene Inhaber-Template-format SG400 können Sie auch wählen, verwenden Sie als gut. Das Hauptproblem hier ist, dass, wenn Sie speichern Ihren Fingerabdruck-Vorlagen, die in ANSI-format, dann für die erfasste fingerpint Bild konvertieren zu ANSI-Vorlage wird dann in einer Schleife durch Ihren Fingerabdruck-templates in der Datenbank und verwenden MatchAnsiTemplate Funktion zu finden, die richtig passen. Wenn Sie speichern Ihren Fingerabdruck-Vorlagen in ISO format dann für die erfasste fingerpint Bild, konvertieren es zu ISO Vorlage wird dann in einer Schleife durch Ihren Fingerabdruck-templates in der Datenbank und verwenden MatchIsoTemplate Funktion zu finden, die richtig passen.