DEV Community

Martins Chibueze
Martins Chibueze

Posted on

"Fingerprint, iris, or voice: which biometric fails first, and why fusion saves you"

Biometric systems feel unbeatable - until you realize every single one of them can actually fail at one point just on its own.

Fingerprint Recognition

When a finger is placed on the sensor, the image is captured and converted to grayscale, and if there is noise (that's dust or dirt), the use of Gaussian or Median filtering (both are filtering techniques) is done which preserves ridge edges. The Contrast is then enhanced using Global Histogram Equalization and refined using CLAHE (Contrast Limited Adaptive Histogram Equalization), so the ridges become more distinct from valleys, especially in areas that were originally low-contrast, while the overall appearance remains natural.

Figure 1.1–2×2 deliverable grid: (a) Original fingerprint, (b) Noisy version with simulated salt-and-pepper noise, © Median-filtered result, (d) Final CLAHE-enhanced image.
Figure 1.1–2×2 deliverable grid: (a) Original fingerprint, (b) Noisy version with simulated salt-and-pepper noise, © Median-filtered result, (d) Final CLAHE-enhanced image.

Fingerprint Minutiae Extraction

These are the actual biometric features being extracted used for matching minutiae points - specifically ridge endings and bifurcations (points where a ridge splits into two). These discrete points, not the whole image, are what gets compared during fingerprint matching. Morphological thinning (cv2.ximgproc. thinning-Otsu's method) is then applied which reduces ridges to a 1 pixel-wide skeleton (finds the best threshold that separates the dark ridges from the light background.) and after that the Crossing Number (CN) algorithm is applied to every ridge pixel, where every part on the fingerprint image (Minutiae) the ridge end is identified in the CN as 1 (ridge ending) and anywhere the ridge divides into two, it is identified in the CN as 3 (bifurcation).

Figure 2.2 - Corrected minutiae map, after casting neighbour pixels to signed integers. Red markers indicate ridge endings; blue markers indicate bifurcations.
Figure 2.2 - Corrected minutiae map, after casting neighbour pixels to signed integers. Red markers indicate ridge endings; blue markers indicate bifurcations.

The system can have failures. Some of its failure modes are:

  • · Dry/worn fingers: When the skin is very dry, cracked, or heavily worn (manual workers, elderly people), the ridges become faint or broken, the system misses real minutiae, or invents false ones from the cracks and noise.

  • · Spoofing: Someone makes a fake fingerprint (silicone, gelatin, 3-D printed, etc.) and places it on the sensor. If the system only looks at the ridge pattern and does not check for signs of real skin (liveness detection), it can be fooled.

  • · genuine/imposter inversion: Normally we are supposed to have just

I downloaded 5 genuine and 5 imposter fingerprint images sourced from FVC2004 DB2_B, a publicly available academic fingerprint verification dataset containing 10 distinct fingers with 8 separate impressions (scans) of each finger.

This structure makes it possible to build genuine pairs (two different real scans of the same physical finger) and imposter pairs (scans from two different fingers). A batch script was written to automatically process every image in the dataset folder through a pipeline (binarize → thin → Crossing Number minutiae detection), summarize each fingerprint's minutiae into a fixed-length feature vector, and compute distances for 5 genuine pairs and 5 imposter pairs automatically.

It seems the images weren't the best quality, which caused problems - their boundaries got mixed up. In short: the system starts trusting strangers more than the real owner.

fingerprint images sourced from FVC2004 DB2_B
fingerprint images sourced from FVC2004 DB2_B

Figure A.5 - Strip plot of all 10 real distance scores. Green = genuine pairs, red = imposter pairs. The shaded orange band marks the region of direct overlap between the two classes.
Figure A.5 - Strip plot of all 10 real distance scores. Green = genuine pairs, red = imposter pairs. The shaded orange band marks the region of direct overlap between the two classes.

In biometrics we talk about two kinds of comparisons:

  • · Genuine = same person (should get a high match score)
  • · Imposter = different person (should get a low match score) Inversion means the system has the scores the wrong way round:  an imposter ends up with a higher score than a genuine pair. This is a catastrophic failure mode. It means the matcher is not just inaccurate - it is systematically ranking the wrong people as more similar. It can be caused by:
  • · very bad quality images,
  • · incorrect normalisation of scores,
  • · bugs in the matching algorithm,
  • · or (as in your lab finding) something going wrong in the extraction or comparison pipeline that flips the expected behaviour.

Iris recognition

Unlike fingerprints, the iris is a circular "doughnut" shape located between the dark pupil and the white sclera. So, we localize the iris (find the pupil and iris boundaries) and normalize it - transforming the ring-shaped region into a fixed-size rectangle using Daugman's Rubber Sheet Model, so that two captures of the same eye compare consistently regardless of pupil dilation or eye rotation. (Meaning the distance from the outer boundaries of the pupil to the outer boundaries of the iris so as a doughnut circle all iris is gotten through their, its then being cut at a side and stretch to a rectangle).

Figure 3.5 — Correct localization on eye3.jpg: red circle tightly bounds the pupil, green circle correctly follows the iris/sclera boundary, both properly concentric.
Figure 3.5 - Correct localization on eye3.jpg: red circle tightly bounds the pupil, green circle correctly follows the iris/sclera boundary, both properly concentric.

Figure 3.6 - Correct normalized iris strip for eye3.jpg. The radial, fibrous iris texture is visible consistently across the width of the strip - the expected output of Daugman's Rubber Sheet Model.
Figure 3.6 - Correct normalized iris strip for eye3.jpg. The radial, fibrous iris texture is visible consistently across the width of the strip - the expected output of Daugman's Rubber Sheet Model.

Iris recognition has extreme uniqueness: statistically, the probability of two independently formed irises matching is virtually zero - even identical twins have completely different iris patterns. Unlike fingerprints, which wear down, or faces, which age noticeably, internal iris patterns form during the pre-fetal period and remain stable from about one year of age onward. They're also resistant to spoofing because modern systems use liveness detection (analyzing pupillary light reflexes or multi-spectral illumination) to prevent attacks using high-resolution printed photos or artificial contact lenses.

It does still have weaknesses: eyelashes or eyelids can block part of the iris, and bright ambient lighting, stray reflections, or glare from eyeglasses can wash out critical detail or blind the sensor.

Voice biometrics

Voice biometrics (speaker recognition) is a behavioral and physiological biometric. Unlike a fingerprint or iris image, voice is a 1D signal that changes over time - the shape of a person's vocal tract filters air from the lungs into unique resonant frequencies. And the use of Mel-Frequency Cepstral Coefficients (MFCCs), the standard feature set representing the unique "timbre" of a human voice.

Figure 4.2 - Raw audio waveform of a spoken phrase, showing amplitude over roughly 9 seconds.
Figure 4.2 - Raw audio waveform of a spoken phrase, showing amplitude over roughly 9 seconds.

I recorded audio from my phone and converted it to a waveform using an audio converter, since it needs to be in WAV format to work. The waveform shows five distinct amplitude bursts separated by near-silent stretches, consistent with five separate spoken words in the test phrase, each showing the expected spike-and-decay pattern of natural speech.

Generated spectrogram by STFT(Short-Time Fourier Transform)
Generated spectrogram by STFT(Short-Time Fourier Transform)

The spectrogram (visual representation of how the frequency content of the sound changes over time.) is then generated by the STFT, the image shows frequency energy concentrated in the lower bands with harmonic structure aligned to the voiced segments, typically in the 0–4000 Hz range for human speech. After the spectrogram, the pipeline continues to MFCCs (Mel-Frequency Cepstral Coefficients) where the spectrogram is passed through a Mel filterbank (which tries to mimic how the human ear perceives frequency), which results in a compact set of numbers (13 coefficients for every audio frame). These 13 numbers per audio frame form a matrix that acts as a voice biometric template. Each row of the resulting matrix represents one MFCC coefficient, with color indicating its value across time.

MFCC (Voice Biometric Template)
MFCC (Voice Biometric Template)

Even though voice recognition is very good, it still has weaknesses: accuracy decreases with background noise, replay attacks, and changes in voice caused by illness or fatigue.

Fusion

Recall the fingerprint inversion - imposter scores landing where genuine scores should be, and vice versa. Bringing in a second modality corrects it, and because the fused score averages fingerprint and voice together, this strong, cleanly-separated voice signal pulled every fused genuine score down and every fused imposter score up - correcting the fingerprint modality's backwards ordering entirely. In other words, real captured data demonstrated, without needing to be engineered or assumed, that a strong modality can compensate for and correct a weak one when combined through score-level fusion.

Strip plot comparing Fingerprint alone, Voice alone, and the Fused result. The bottom row (Fingerprint) shows visible overlap between green (genuine) and red (imposter) dots. The top row (Fused) shows the two-color groups pulled apart into distinct clusters
Strip plot comparing Fingerprint alone, Voice alone, and the Fused result. The bottom row (Fingerprint) shows visible overlap between green (genuine) and red (imposter) dots. The top row (Fused) shows the two-color groups pulled apart into distinct clusters

Conclusion: no single trait is foolproof; fusion isn't about "more security", it's about one modality catching what another misses.

Top comments (0)