Skip to content

Fingerprint matching tools based on NIST's mindtct and bozorth3 algorithms.

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md
Notifications You must be signed in to change notification settings

OlivierBinette/fingermatchR

Repository files navigation

fingermatchR

Lifecycle: experimental R-CMD-check

fingermatchR provides fingerprint matching tools based on NIST’s MINDTCT and BOZORTH3 algorithms, as released in NIST’s Biometrics Image Software suite (NBIS). It also provides R bindings to the FingerJet minutiae extraction tool and to libfmr to parse ANSI/INCITS 378-2004 and ISO/IEC 19794-2 fingerprint minutiae records.

Installation

Make sure you have NBIS installed with binaries available in PATH. Check in particular that you have the mindtct and bozorth3 executables installed and available:

$ mindtct -version && bozorth3 -version
Standard Version: ANSI/NIST-ITL 1-2007
NBIS Non-Export Control Software Version: Release 5.0.0
...

You can install the development version of fingermatchR from GitHub with:

if (!require(devtools)) install.packages("devtools")
devtools::install_github("forensic-science/fingermatchR")

Examples

library(fingermatchR)
library(dplyr)

Optionally, define location of NBIS executables:

# This is required if NBIS executables are not available in PATH.
#options(NBIS_bin = "/home/olivier/Desktop/Research/forensic-science/NBIS/src/bin")
options(NBIS_bin = "/usr/local/NBIS/bin")

Minutiae detection

Detect minutiae using mindtct:

imgfiles = list.files("data-raw", pattern = "*.png", full.names = TRUE)

# Raw mindtct output
out = mindtct(imgfiles, outputdir="data-raw")
#> ℹ Running mindtct on 3 image files...
#> ✓ done running mindtct.

# Tidy minutiae descriptions
minutiae = tidyMinutiae(out)

Plot fingerprint image and its binarization with detected minutiae:

# Plain and rolled index fingerprints for the same individual
plotMinutiae(out[1:3, ])

Match scores

Compute pairwise fingerprint match scores:

matchscores(out, outputdir = "data-raw")
#> # A tibble: 3 x 3
#>   score probe_index gallery_index
#>   <chr>       <int>         <int>
#> 1 3               1             2
#> 2 31              1             3
#> 3 7               2             3

Compute all-to-all fingerprint match scores between two lists:

matchscores(out, out, outputdir = "data-raw")
#> # A tibble: 9 x 3
#>   score probe_index gallery_index
#>   <chr>       <int>         <int>
#> 1 194             1             1
#> 2 3               1             2
#> 3 31              1             3
#> 4 3               2             1
#> 5 512             2             2
#> 6 7               2             3
#> 7 31              3             1
#> 8 7               3             2
#> 9 622             3             3

Using the FingerJet minutiae extration tool

Detect minutiae using FingerJet:

imgfiles = list.files("data-raw", pattern = "*.png", full.names = TRUE)

# Raw mindtct output
fingerjet = fj_minutiae(imgfiles, outputdir="data-raw/fingerjet")
#> Running FingerJet minutiae extrator on 3 image files.

Plot fingerprint image and its binarization with detected minutiae:

# Plain and rolled index fingerprints for the same individual
plotMinutiae(fingerjet[1:3, ])

Compute pairwise fingerprint match scores:

matchscores(fingerjet, outputdir = "data-raw/fingerjet")
#> # A tibble: 3 x 3
#>   score probe_index gallery_index
#>   <chr>       <int>         <int>
#> 1 0               1             2
#> 2 22              1             3
#> 3 11              2             3

References

About

Fingerprint matching tools based on NIST's mindtct and bozorth3 algorithms.

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE
MIT
LICENSE.md

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published