Every enrolled fingerprint is stored as a set of minutiae β ridge endings and bifurcations, each a triple (x, y, ΞΈ) of position and local ridge direction. A live scan extracts the same kind of set, but never lands in the same coordinates: the finger is rotated and shifted a little each time, and pressure/moisture add per-point jitter, missing points, and spurious extras.
The matcher doesn't know that offset in advance, so for every (template point, scan point) pair it computes the rigid rotation+translation that would align them, and casts a vote into a coarse histogram β a generalized Hough transform, the same alignment trick real AFIS matchers use. The bin with the most votes is taken as the best-guess alignment.
- After aligning, each template minutia is matched to the nearest scan minutia within a fixed position/angle tolerance.
- Score = matched minutiae Γ· enrolled minutiae Γ 100. The sensor accepts only if
Score β₯ threshold.
- FRR(T) = fraction of genuine attempts scoring below T (locked-out legitimate users). FAR(T) = fraction of impostor attempts scoring at/above T by coincidental overlap. Raising T always trades one against the other.
- The Equal Error Rate is the threshold where FAR(T) = FRR(T) β the standard single-number way vendors compare biometric sensors.
- Fewer enrolled minutiae means less entropy to distinguish people, so impostors overlap more easily β the FAR/EER get worse even at the same threshold. Five failed attempts in a row trips a lockout, mirroring the rate-limiting every real biometric API enforces.