Contributers: Dana Akesh
- Description
- Dataset
- Technologies
- Installation
- Algorithm
- Feature Extraction
- Threshold
- Output
- ROC Curve
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.
- 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.
- Python -version 3.12.3
- OpenCV -version 4.9.0.80
- Numpy -version 1.26.4
- 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
- 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.
- Method:
- Read photo using OpenCV’s imread.
- Convert to a NumPy array to represent pixel values.
- Simplifies comparison between images.
- Purpose: Dynamically calculated to determine if the user is accepted into the system.
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).
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.