Skip to content

usnistgov/NFIQ2

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

NFIQ 2 NIST identifier

Download Latest Version Build Libraries and CLI + Run CTS Frequently Asked Questions

About

National Institute of Standards and Technology (NIST) Fingerprint Image Quality (NFIQ) is software that links image quality of optical and ink 500 pixel per inch fingerprints to operational recognition performance. This allows quality values to be tightly defined and then numerically calibrated, which in turn allows for the standardization needed to support a worldwide deployment of fingerprint sensors with universally interpretable image qualities. NFIQ 2 quality features are formally standardized as part of ISO/IEC 29794-4. This repository serves as a formally recognized reference implementation of the international standard.

Overview

In 2004, NIST developed the first open source and publicly available fingerprint quality assessment tool, NFIQ. NFIQ 2 is a revision of that tool. Advances in fingerprint technology since 2004 necessitated an update to NFIQ. As such, development of NFIQ 2 was initiated in 2011 as collaboration between NIST and Germany's Federal Office for Information Security (BSI) and Federal Criminal Police Office (BKA), as well as research and development entities MITRE, Fraunhofer IGD, Hochschule Darmstadt (h_da), and Secunet.

NFIQ 2 provides a higher resolution quality score in the range of [0-100], adhering to the international biometric sample quality standard ISO/IEC 29794-1:2016 (as opposed to the original NFIQ's 1-5), lower computation complexity, and support for quality assessment on mobile platforms.

The major innovation of NFIQ was linking image quality to operational recognition performance. This allowed quality values to be tightly defined and then numerically calibrated. This, in turn, allowed for the standardization needed to support a worldwide deployment of fingerprint sensors with universally interpretable image qualities.

NFIQ 2 is formally recognized as a reference implementation of the normative metrics presented in ISO/IEC 29794-4. The international standard is undergoing revision in 2022 to bring it up to date with changes made in this repository.

Operationally, NFIQ has increased the reliability, accuracy, and interoperability of fingerprint recognition systems by identifying the samples that are likely to cause recognition failure.

If you would like more information, please read the NFIQ 2 Report and ISO/IEC 29794-4.

Download

Pre-built versions of the NFIQ 2 library and standalone executable for many platforms are available to download on the Releases page. Unless you are actively developing code for NFIQ 2, we suggest you download from Releases instead of attempting to compile.


Dependencies

Building the NFIQ 2 library requires the following dependencies, included in this repository as git submodules:

If building the standalone command-line executable, additional dependencies are required, included in this repository as git submodules:

Quick Build: Library

You must recursively clone the repository to retrieve git submodules (i.e., do not use the GitHub ZIP file download).

git clone --recursive https://github.com/usnistgov/NFIQ2.git
cd NFIQ2
mkdir build
cd build
cmake .. -DBUILD_NFIQ2_CLI=OFF
cmake --build .

Quick Build: Library + Command-line Interface

You must recursively clone the repository to retrieve git submodules (i.e., do not use the GitHub ZIP file download).

git clone --recursive https://github.com/usnistgov/NFIQ2.git
cd NFIQ2
mkdir build
cd build
cmake ..
cmake --build .

Build Notes:

  • Standard CMake arguments are interpreted.

    • On Windows, change architectures with -A x64 or -A Win32
    • Change generators with -G
    • Change build types with -DCMAKE_CONFIGURATION_TYPES or -DCMAKE_BUILD_TYPE
  • Dependencies for libbiomeval must be satisfied.

    • On Windows with Visual Studio, this is done with vcpkg, which will require passing the vcpkg CMAKE_TOOLCHAIN_FILE and VCPKG_TARGET_TRIPLET options to CMake.

For example, a 64-bit Release-only build with the default Visual Studio generator might look like:

cmake .. -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DCMAKE_CONFIGURATION_TYPES=Release -A x64
cmake --build . --config Release

Builds for other OS can typically find dependencies on the system without intervention.

OpenCV Version

Originally, all major versions of OpenCV were supported by NFIQ 2. Due to the limited testing resources as well as slight differences in results between versions, NIST has chosen to rely on the latest release of OpenCV 4 as of this writing. Using a different version of OpenCV may result in unstable NFIQ 2 scores and is not supported. Future updates to OpenCV versions should run the conformance test and larger sequestered tests without differences.

Known Limitations

  • macOS:
    • Xcode 10 and later does not support 32-bit applications. In order to build NFIQ 2 for 32-bit macOS, use Xcode 9.4.x.

Build Options

The CMake builds supports the following options:

  • BUILD_NFIQ2_CLI (default: ON)
    • Whether or not to build the standalone command-line executable.
  • EMBED_RANDOM_FOREST_PARAMETERS (default: OFF)
    • Whether or not to embed random forest parameters into the library.
  • EMBEDDED_RANDOM_FOREST_PARAMETER_FCT (default: 0)
    • Friction ridge capture technology code for embedded random forest parameters. Only valid if EMBED_RANDOM_FOREST_PARAMETERS is ON.

Communication

If you found a bug and can provide steps to reliably reproduce it, or if you have a feature request, please open an issue. Other questions may be addressed to the NIST project maintainers.

License

NFIQ is released in the public domain. See the LICENSE for details.