sexta-feira, 11 de dezembro de 2015

Evaluating NIST Biometric Image Software (NBIS) using FVC2004 Databases - Part 1

This series of articles aim at evaluating NBIS biometric software by using it against fingerprint image databases from FVC2004 verification competition.

1. Contextualization matters

1.1. First of all, what is NBIS?

NBIS, which is an acronym for NIST Biometric Image Software [1], is a biometric software distribution developed by the National Institute of Standards and Technology (NIST) for the Federal Bureau of Investigation (FBI) and the Department of Homeland Security (DHS).

The NBIS software bundle provides a collection of application programs, utilities, and source code libraries. It is organized in two categories: i) non-export controlled and ii) export controlled.

The non-export controlled NBIS software is comprised of five major packages:

  • PCASYS: a neural network based fingerprint pattern classification system;
  • MINDTCT: a fingerprint minutiae detector;
  • NFIQ: a neural network based fingerprint image quality algorithm;
  • AN2K7: a reference implementation of the ANSI/NISTITL 1-2000 "Data Format for the Interchange of Fingerprint, Facial, Scar Mark & Tattoo (SMT) Information" standard; and
  • IMGTOOLS: a collection of image utilities, including encoders and decoders for Baseline and Lossless JPEG and the FBI's WSQ specification.

The export controlled NBIS software is organized into two major packages:

  • NFSEG: a fingerprint segmentation system useful for segmenting four-finger plain impressions; and
  • BOZORTH3: a minutiae based fingerprint matching system.

NIST software is publicly available for download [2] and it is apparently continuously developed to present days. Its last version, 5.0.0, was released in April of 2015.

1.2. Second, what is FVC2004?

The Fingerprint Verification Competition (FVC) is an international competition focused on fingerprint verification software assessment [3]. A subset of fingerprint impressions acquired with various sensors was provided to registered participants, to allow them to adjust the parameters of their algorithms. Participants were requested to provide enroll and match executable files of their algorithms; the evaluation was conducted at the organizers' facilities using the submitted executable files on a sequestered database, acquired with the same sensors as the training set.

These events received great attention both from academic and industrial biometric communities. They established a common benchmark, allowing developers to unambiguously compare their algorithms, and provided an overview of the state-of-the-art in fingerprint recognition. Based on the response of the biometrics community, last editions of FVC were undoubtedly successful initiatives.

FVC2004 [4], the Third International Fingerprint Verification Competition, was held in 2004. The contest involved four different databases (three real and one synthetic) [5] collected by using the following sensors and technologies:

  • DB1: optical sensor "V300" by CrossMatch [6];
  • DB2: optical sensor "U.are.U 4000" by Digital Persona [7];
  • DB3: thermal sweeping sensor "FingerChip FCD4B14CB" by Atmel [8]; and
  • DB4: synthetic fingerprint generation by SFinGe v3.0 [9].

At the end of the data collection, for each database a total of 120 fingers and 12 impressions per finger (1440 impressions) were gathered. As in previous editions, the size of each database to be used in the test was established as 110 fingers wide and 8 impressions per finger deep (880 fingerprints in all); collecting some additional data gave a margin in case of collection/labeling errors.

Fingers from 101 to 110 (set B) have been made available to the participants to allow parameter tuning before the submission of the algorithms; the benchmark is then constituted by fingers numbered from 1 to 100 (set A).

Sensor Type Image Size Set A (wxd) Set B (wxd) Resolution
DB1 Optical Sensor 640x480 (307 Kpixels) 100x8 10x8 500 dpi
DB2 Optical Sensor 328x364 (119 Kpixels) 100x8 10x8 500 dpi
DB3 Thermal sweeping Sensor 300x480 (144 Kpixels) 100x8 10x8 512 dpi
DB4 SFinGe v3.0 288x384 (108 Kpixels) 100x8 10x8 about 500 dpi

The following figure shows a sample image from each database:

2. Gentlemen, start your engines!

2.1. Compiling and setting up NBIS

Well, now that we know what NBIS and FVC are, it is time to put the things to work! We'll be considering Linux operating system from now on. :D

First of all, we need to download NBIS source codes, which are available on NIST's site [2]. At the time this post was being written, the last version was "Release 5.0.0".

Once the ZIP file is downloaded, we need to extract its files and rename the main directory by issuing these commands:


mv Rel_5.0.0/ nbis-5.0.0/

cd nbis-5.0.0/

Then, as a good practice in Linux, let's assume a proper directory to install NBIS files: "/opt/nbis-5.0.0/".

mkdir /opt/nbis-5.0.0/

./ /opt/nbis-5.0.0/

You might face some dependency issues after running "". This means you'll need to previously install some packages on your system. Do it before following the next step! For instance, on CentOS 6.x these packages were needed: cmake, libpng-devel, and libX11-devel.

Once "" has been executed successfully, you'll run a series of "make" instructions:

make config
make it
make install
make catalog

Very good! At this time you already have 1) prepared the NBIS source codes, 2) compiled them, 3) installed it on /opt, and 4) created the catalog for libraries and programs.

As a suggestion, create a simple Shell Script in order to export system variables, named "", and with the following content:



export PATH=$PATH:$NBIS_HOME/bin/
export MANPATH=$NBIS_HOME/man/

How does it work? Simple! Try executing these commands:

cwsq -version

man cwsq

Nothing happened, but errors, right? Now try typing this:


From now on, NBIS programs and manuals are on the path.

Let's check the version of CWSQ program:

cwsq -version
Standard Version: ANSI/NIST-ITL 1-2007
NBIS Non-Export Control Software Version: Release 5.0.0

And now take a look of its manual:

man cwsq

Well done! This simple Shell Script snippet serves to check whether NBIS programs are available in the path:

if ! which bozorth3; then echo "NBIS programs not in shell path"; fi

2.2. Let's fetch the database files

In order to facilitate retrieving and extracting the files from the FVC2004 site [10], I suggest you to write a simple Shell Script, named "", with the following content:


# create directory for the ZIP files
if [ ! -d zips ]
  mkdir zips

# download the files
for i in `seq 1 4`
  if [ ! -f zips/$arq ]
    wget "${arq}"
    mv $arq zips/

# remove directories
rm -rf images/

# extract files
for i in `seq 1 4`
  mkdir -p images/db$i
  unzip zips/DB${i} -d images/db$i/

exit 0

Thus, simply give execution permission to the script and run it:

chmod +x


You'll note the "images/" directory will be filled with several TIFF images from the four FVC2004 set B databases. Take a look at it:

find images/ | head

That's it! We finally ended the first article.

In the next article we'll start using NBIS binaries on FVC2004 fingerprint images: Evaluating NIST Biometric Image Software (NBIS) using FVC2004 Databases - Part 2.