it-swarm.com.de

Fingerabdruckscanner mit Kamera

Als ich an einem Fingerabdruckscanner mit oder ohne Kamera arbeitete, stieß ich auf eines der Open-Source-SDKs mit dem Namen FingerJetFX , das die Machbarkeit mit _ bietet.Android auch.

Der FingerJetFX OSE-Feature-Extraktor für Fingerabdrücke ist plattformunabhängig und kann mit entsprechenden Änderungen an den Make-Dateien für Umgebungen mit oder ohne Betriebssysteme erstellt werden, einschließlich

  • Linux
  • Android
  • Windows
  • Windows CE
  • verschiedene RTOSs

aber ich bin nicht sicher, ob Fingerabdruckscanner möglich sind oder nicht, ich lade das SDK herunter und grabe aber kein Glück, habe sogar keine Schritte gefunden, um das SDK zu integrieren, so dass ich einige der unten aufgeführten Fragen habe:

Ich suche Anregungen und Hinweise:

  1. Fingerabdruckscanner kann in Android mit Kamera oder ohne Kamera möglich sein?
  2. Kann ich mit Hilfe von FingerJetFX mein Ziel erreichen?
  3. Wenn die zweite Antwort "Ja" lautet, kann mir dann jemand Schritte zur Integration von SDK in Android bereitstellen?

Ihre Anregungen sind spürbar.

42
RobinHood

Kamerabasierte Android-Lösungen:

Als jemand, der sich eingehend mit diesem Problem befasst hat, kann ich Ihnen sagen, dass es schwierig ist, mit einer Standardkamera, die auf einem aktuellen Android Gerät vorhanden ist, ein geeignetes Bild für die Vorlagenerstellung (Feature-Extraktion) zu erhalten. Das Hauptproblem besteht darin, einen deutlichen Kontrast zwischen den Graten und Tälern der Finger zu erzielen. Kommerzielle optische Fingerabdruckscanner (die Sie nachahmen möchten) erzielen normalerweise den erforderlichen Kontrast durch eine frustrierte interne Totalreflexion in einem Prisma.

FTIR in Biometrics

In diesem Fall wird Licht von den das Prisma berührenden Stegen zum CMOS - Sensor übertragen, Licht von den Tälern nicht. Sie werden mit einer Android Kamera einfach nicht zuverlässig die gleichen Ergebnisse erzielen, aber das bedeutet nicht, dass Sie unter idealen Bedingungen keine brauchbaren Ergebnisse erzielen können.

Ich habe das Bild links mit einem handelsüblichen optischen Fingerabdruckscanner (Futronics FS80) und rechts mit einer normalen Kamera (15MP Cannon DSLR) aufgenommen. Nach dem Zuschneiden, Invertieren (entsprechend der Konvention des anderen Scanners), Kontrastieren usw. des Kamerabilds wurden die folgenden Ergebnisse erzielt.

enter image description here

Der geringe Kontrast des Kamerabildes ist erkennbar.

enter image description here

Die Software ist jedoch in der Lage, den Firstfluss genau zu bestimmen.

enter image description here

Und am Ende finden wir eine anständige Anzahl passender Minutien (markiert mit roten Kreisen).

Hier sind die schlechten Nachrichten. Solche Nahaufnahmen mit der Fingerspitze sind schwierig. Ich habe eine DSLR mit Blitz verwendet, um diese Ergebnisse zu erzielen. Darüber hinaus sind die meisten Algorithmen zur Fingerabdruckerkennung nicht skalierungsinvariant. Wenn der Finger bei einem nachfolgenden "Scan" weiter von der Kamera entfernt ist, stimmt er möglicherweise nicht mit dem Original überein.

Das Softwarepaket, das ich für die Visualisierungen verwendet habe, ist das ausgezeichnete und BSD-lizenzierte SourceAFIS . Auch keine "Open-Source-Version"/"Vollversion" des Unternehmens, obwohl sie derzeit nur auf C # und Java (eingeschränkt) portiert ist.

Nicht kamerabasierte Lösungen:

Für die erschreckend kleine Anzahl von Geräten mit Hardware, die den "USB-Host-Modus" unterstützen, können Sie einen benutzerdefinierten Treiber schreiben einen Fingerabdruck-Scanner in Android integrieren. Ich bin ehrlich, für die beiden Models, die ich gemacht habe, war das ein großer Schmerz. Ich habe es erreicht, indem ich wireshark verwendet habe, um USB-Pakete zwischen dem Scanner und einer Linux-Box mit einem funktionierenden Treiber zu durchsuchen und dann einen Android -Treiber basierend auf den durchsuchten Befehlen zu schreiben.

Cross Compiling FingerJetFX

Sobald Sie eine Lösung für die Bilderfassung ausgearbeitet haben (beide potenziellen Lösungen haben ihre Nachteile), können Sie sich Sorgen darüber machen, dass FingerJetFX unter Android ausgeführt wird. Zuerst verwenden Sie das SDK, um ein eigenständiges C++ - Programm zu schreiben, das ein Bild aufnimmt und es in eine Vorlage verwandelt. Danach haben Sie wirklich zwei Möglichkeiten.

  1. Kompilieren Sie es in eine Bibliothek und verwenden Sie JNI als Schnittstelle.
  2. Kompilieren Sie es in eine ausführbare Datei und lassen Sie es von Ihrem Android - Programm als Unterprozess aufrufen.

Für beide benötigen Sie das NDK . Ich habe JNI noch nie benutzt, daher werde ich mich auf die Weisheit von anderen beschränken, wie es uns am besten gefällt. Ich neige immer dazu, Route 2 zu wählen. Für diese Anwendung halte ich es für angemessen, da Sie nur den nativen Code aufrufen, um eine Sache zu tun, nämlich Ihr Bild vorzulegen. Sobald Ihr natives Programm ausgeführt und kompiliert wurde, können Sie verwenden Sie die Antwort auf diese Frage , um es mit Ihrer Android - App zu packen und von Ihrem Android - Code aus aufzurufen.

84
sarwar

Es gibt ein paar unmittelbare Hürden:

  1. Es ist entscheidend, ein gutes Bild des Fingerabdrucks zu erhalten. Je nach Standort erwartet Fingerjet Standard-Fingerabdruckbilder - z. 8-Bit-Graustufenbilder (hoher Kontrast) mit reduziertem Fingerabdruck. Wenn Sie mit der Kamera Fingerabdrücke aufnehmen, benötigt der Benutzer eine flache transparente Oberfläche (Glas), auf die Sie die Fingerabdrücke abflachen können, um das Bild aufzunehmen. Ihre App findet dann den Fingerabdruck im Bild und wandelt ihn in ein für Fingerjet akzeptables Format um. Eine Bibliothek wie OpenCV würde dabei helfen.

  2. FingerJetFX OSE bietet anscheinend keine vordefinierte Unterstützung für Android) - Sie müssen die Bibliothek für Android) kompilieren und über JNI/NDK verwenden.

Von dort aus sollte Ihnen fingerjet eine kompakte Darstellung des Ausdrucks liefern, den Sie für den Abgleich verwenden können.

Es wäre machbar, aber die Verwendungsanforderung (der Benutzer muss eine flache transparente Oberfläche zur Verfügung haben) könnte ein Deal Breaker sein ...

3
gary schulte