Retour aux projets

Reconnaissance d'empreintes digitales

Projet en binôme

PythonNumPyPillowSQLiteTraitement d'images
description

Programme Python capable d'identifier une empreinte digitale parmi celles enregistrées dans une base. Le traitement enchaîne la binarisation de l'image, la squelettisation par l'algorithme de Zhang-Suen, l'extraction des minuties (terminaisons et bifurcations) par la méthode du Crossing Number, puis la comparaison de deux empreintes par recherche de translation ou de rotation. Les minuties sont stockées dans une base SQLite, ce qui permet d'enrôler plusieurs doigts et de retrouver le bon.

objectifs
  • Numériser une empreinte : binariser l'image puis réduire les crêtes à un trait d'un pixel de large
  • Extraire les minuties caractéristiques et écarter les fausses détections situées sur les bords
  • Reconnaître deux empreintes du même doigt malgré une translation ou une rotation
  • Stocker les minuties en base et identifier une empreinte parmi plusieurs enregistrées
travail en équipe

Projet mené en binôme avec un ami en classe préparatoire TSI, dans le cadre de son TIPE. Il a apporté l'étude du sujet et la description de l'algorithme ; j'ai pris en charge l'intégralité de la partie informatique, sa filière ne couvrant pas la programmation.

mon rôle

J'ai implémenté la chaîne de traitement complète en Python, de la lecture de l'image jusqu'à l'identification en base. J'ai corrigé plusieurs défauts de l'algorithme initial : un centre de rotation mal calculé, un commit SQLite manquant, et surtout un biais de la comparaison qui permettait à une empreinte riche en minuties de correspondre à presque n'importe quelle autre. J'ai ajouté un appariement un-à-un des minuties, un seuil calculé sur la plus grande des deux empreintes et une normalisation de la taille des images. J'ai enfin écrit un banc de test qui mesure les faux positifs et les faux négatifs sur des comparaisons croisées, avec des empreintes de la base publique FVC2002.

compétences mobilisées
  • C1 — Réaliser : implémenter des algorithmes de traitement d'images
  • C2 — Optimiser : fiabiliser un algorithme de comparaison et réduire les faux positifs
  • C4 — Gérer les données : stocker et interroger des minuties dans une base SQLite
  • C6 — Travailler en équipe : collaborer avec un binôme d'une autre filière
techniques & savoirs acquis
  • Binarisation par seuillage, sur images RGB et niveaux de gris
  • Squelettisation par l'algorithme itératif de Zhang-Suen
  • Détection des minuties par Crossing Number et filtrage elliptique des bords
  • Appariement de nuages de points sous translation et sous rotation
  • Persistance des minuties en SQLite et identification parmi plusieurs empreintes