Skip to content

Fingerprint recognition system using Euclidean distance and OpenCV for biometric matching with dynamic thresholding

License

Notifications You must be signed in to change notification settings

dana-akesh/Fingerprint_Authentication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fingerprint Authentication System

Contributers: Dana Akesh

Table of Contents:

Description:

This project focuses on fingerprint template matching, leveraging Euclidian Distance as the similarity measure with a dynamic threshold. The project explores different thresholding techniques such as mean and variance and provides key biometric performance metrics like FMR, FNMR, and EER. The ROC curve is also plotted for further analysis.

Dataset:

  • Source: Kaggle SOCOFing dataset .
  • Content: 6,000 fingerprint images from 600 African individuals.
  • Labels: Includes gender, hand, and finger designation.
  • Alterations: Three levels: obliteration, central rotation, and z-cut.
  • Usage in Project: Randomly selected altered fingerprints will be used, and the data is split into two types of users: hackers and real users.

Technologies:

  • Python -version 3.12.3
  • OpenCV -version 4.9.0.80
  • Numpy -version 1.26.4

Installation:

  • Clone the repository
git clone https://github.com/dana-akesh/Fingerprint_Authentication
cd Fingerprint_Authentication
  • Install the required libraries using the following command:
pip install -r requirements.txt
  • Run the following command to execute the matching algorithm code:
python system.py
  • Run the following command to execute the ROC curve code:
python roc.py

Algorithm:

  • Purpose: Identify similarities between biometric images.
  • Euclidean Algorithm:
    • Measures similarity between fingerprint features.
    • Computes geometric differences between minutiae.
    • Matches based on the smallest Euclidean distance for high accuracy.

Feature Extraction:

  • Method:
    • Read photo using OpenCV’s imread.
    • Convert to a NumPy array to represent pixel values.
    • Simplifies comparison between images.

Threshold:

  • Purpose: Dynamically calculated to determine if the user is accepted into the system.
    • Mean: If the input photo's score is below the mean of all scores, it is approved.
      • mean formula
    • Standard Deviation: If the input photo's score is below the standard deviation, it is approved.
      • standard deviation formula

Output:

The image shows a real fingerprint photo matched with its corresponding registered template in the database. The person6.bmp photo achieved a similarity score of zero with the stored template, which is below the adaptive threshold (calculated as the mean of all scores). output sample

ROC Curve:

At a threshold of 0.1, the system mistakenly rejects legitimate users (low FNMR) and accepts malicious ones (high FMR) due to the small distance values. Increasing the threshold results in more logical distances, improving accuracy by rejecting malicious users and accepting legitimate ones. image