Mon avis: tu vas sûrement avoir a ajouter des coefficients "flous" pour tes comparaisons, notamment sur les minutiae: c'est très peu probable que tu trouves (même doigt mais 2 acquisitions différentes) exactement les mêmes minuties avec les mêmes caractèristiques (taille, position).
Ensuite, un peu de flou sur la fin (seuils à 100%, 90%, 70% etc.) peut aussi beaucoup t'aider. Tu définis simplement ta fonction "seuil" non pas par une droite mais par une courbe (cloche, log. etc.). Ainsi, si tu veux faire varier tes seuils de décision, tu n'as qu'un seul paramètre à bidouiller.
Sinon pour le reste bah... faut voir ce que tu vas mettre dans tes boîtes "Définir une echelle", "Determiner le point central", "Définir une metrique", "Recherche des minutiae"
Enfin, j'ai peur que ton algo devienne rapidement une usine à gaz si tu as beaucoup d'empreintes différentes en apprentissage; toutes les reparcourir à chaque fois... Tu peux imaginer une extraction des caractèristiques sous forme de vecteur, comme ça tu ne stockes que ça. Tu peux même (rêvons un peu), envisager la possibilité de mesurer une distance entre ces vecteurs de de caractèristiques. Tu mets tout ça dans un bon SGBD à qui tu confies la tache de recherche les plus proches voisins (calcul de la distance dans ton SELECT).
Bref, il y a vraiment de quoi s'amuser...