NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 1 OF 14

Call for participation in 

development of 

NFIQ 2.0

NIST Fingerprint Image Quality

Elham Tabassi

Version 1.0 ‐ February 25, 2011
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 2 OF 14

THIS DOCUMENT IS BEING CIRCULATED BY THE NFIQ 2.0 DEVELOPMENT TEAM COMPRISED OF

NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY (NIST) ‐ U.S., and

BUNDESAMT FÜR SICHERHEIT IN DER INFORMATIONSTECHNIK (BSI) ‐ GERMANY.

At the NIST March 2010 workshop on “The Future of NFIQ”, workshop participants overwhelmingly 

recommended development of a new (open source) version of NFIQ in consultation and 

collaboration with users and industry.

NIST and BSI invite research organizations and industry members to support development of NFIQ 

2.0.  Specifically, NIST and BSI request

― Submission of comparison subsystems (i.e. matchers) whose comparison scores will be used 

for training of NFIQ 2.0 (by May 2, 2011),

― Suggestions and technical contributions towards composition and computation of NFIQ 2.0 

features (by August 29, 2011), and

― Fingerprint images demonstrating NFIQ 1.0 anomaly (by September 30, 2011).
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 3 OF 14

Initial Time Table

February 25, 2011 Call for participation  

National Institute of Standards and Technology (NIST) and Bundesamt für Sicherheit in der 

Informationstechnik (BSI) invite research organizations and industry members to participate in 

NFIQ 2.0 development, by

― Submission of biometric comparison subsystems (i.e. matchers) whose comparison scores 

will be used for NFIQ 2.0 training by May 2, 2011.

― Technical  contributions  towards  composition  and  computation  of  NFIQ  2.0  features  by 

August 29, 2011,

― Fingerprint images demonstrating NFIQ 1.0 anomaly (by September 30, 2011).

May 2, 2011 SDK submission period ends.

June 1, 2011 Training data set is finalized.

July 1, 2011 Initial selection of features

September 1, 2011 Feature set is finalized.

March 2012 Presentation of NFIQ 2.0 at IBPC 2012
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 4 OF 14

TABLE OF CONTENTS

1. OVERVIEW ......................................................................................................................................................................5

2. CALL FOR PARTICIPATION................................................................................................................................................5

3. WHY NIST ........................................................................................................................................................................6

4. OPTIONS FOR PARTICIPATION .........................................................................................................................................6

6. COMMUNICATION...........................................................................................................................................................6

7. HOW TO PARTICIPATE .....................................................................................................................................................7

7.1. SUBMISSION OF SOFTWARE TO NIST......................................................................................................................................... 8

8. BIBLIOGRAPHY ................................................................................................................................................................8

ANNEX A ...............................................................................................................................................................................10

PROPOSED SCIENTIFIC APPROACH FOR DEVELOPMENT OF NFIQ 2.0 .....................................................................................10

1. NFIQ 2.0 ............................................................................................................................................................................. 10

1.1. FEATURE EXTRACTION.......................................................................................................................................................... 10

1.2. TRAINING A MACHINE LEANING ALGORITHM.............................................................................................................................. 10

2. GENERALIZED VS CUSTOMIZED .................................................................................................................................................. 10

3. CALIBRATION ......................................................................................................................................................................... 10

ANNEX B ...............................................................................................................................................................................12

APPLICATION PROGRAMMING INTERFACE (API)....................................................................................................................12

1. PROPRIETARY TEMPLATE CREATION ............................................................................................................................................ 12

2. PROPRIETARY TEMPLATES COMPARISON ...................................................................................................................................... 13

3. IMPLEMENTATION IDENTIFIERS .................................................................................................................................................. 14
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 5 OF 14

1. Overview

Quality measurement plays a vital role in improving biometric system accuracy and efficiency during the capture process (as a 

control‐loop variable to initiate reacquisition), in database maintenance (sample update), in enterprise‐wide quality assurance 

surveying, and in invocation of quality‐directed processing of samples in multimodal systems. If quality can be improved, either 

by sensor design, by user interface design, or by standards compliance, better performance can be realized. For those aspects 

of quality that cannot be designed‐in, an ability to analyze the quality of a live sample is needed.

Biometric quality analysis is a technical challenge because it is most helpful when the quality measures reflect the performance 

sensitivities  of  one  or more  target  biometric  comparison  subsystems.   NIST  addressed  this  problem  in  August  2004  when  it 

issued NIST Fingerprint Image Quality  (NFIQ) algorithm.  NFIQ is a fingerprint quality measurement tool; it is implemented as 

open‐source software; and is used today in very large government both in U.S. and worldwide, and commercial deployments.  

NFIQ’s key innovation is to produce a quality value from a fingerprint image that is directly predictive of expected recognition

performance.    NFIQ  serves  as  a  publicly  available  reference  implementation. With  advances  in  fingerprint  technology  since 

2004, an update to NFIQ is needed.  Proposed scientific approach for development of NFIQ 2.0 is outlined in Annex A.

2. Call for participation

A workshop was held in March 2010 at NIST1 to address the technical status of fingerprint quality assessment technology.  The 

workshop aimed at engaging industry  to improve core  finger image quality assessment  technology based on lessons learned 

from  recent deployments of quality assessment algorithms  (including NFIQ) in large‐scale identity management applications.  

Options for the future of NFIQ were discussed and the community overwhelmingly recommended a new (open source) version 

of NFIQ to be developed in consultation and collaboration with users and industry.  To that end, National Institute of Standards 

and Technology (NIST) and Bundesamt für Sicherheit in der Informationstechnik (BSI) in Germany have teamed up to develop 

the new and improved open source NIST Finger Image Quality (NFIQ 2.0) and extend invitation to research organizations and 

industry members to provide specific support in development of NFIQ 2.0.

Specifically, NIST and BSI request participation in one or more of the following forms:

― Submission  of biometric  comparison  subsystems  (i.e. matchers) whose  comparison  scores will  be  used  for NFIQ  2.0 

training, 

― Technical contributions towards composition and computation of NFIQ 2.0 features,

― Fingerprint images demonstrating NFIQ 1.0 anomaly.

The algorithms and software need not be “operational,” nor a production system, nor commercially available.  However, the 

system  must,  at  a  minimum,  be  a stable  implementation  capable  of  being  “wrapped”  (formatted)  in  the  API  specification 

specified in Annex A.  The API is similar to that used in NIST fingerprint tests (e.g. PFT) and should therefore be familiar to many 

commercial  providers.    Comparison  scores  (generated  by  biometric  comparison  subsystems)  shall  measure  the  similarity 

between finger image data contained in the two templates being compared, so larger values indicate more likelihood that the 

two samples are from the same finger.  The terms comparison score and similarity score are being used interchangeably in this 

document.

Participants can submit compiled libraries to NIST or BSI or both.

NFIQ  2.0  feature  set  shall  consist  of  image  characteristics  that  model  failure  modes  and  sensitivities  of  current  fingerprint 

comparison algorithms.  Examples include: zonal quality, continuity of ridge flow, area of finger image impression, or number 

of minutiae.  Some of these features like zonal quality or minutiae quality are already standardized in [ISOFIN] and [ISOMIN]. 

Technical report ISO/IEC 29794 Biometric sample quality – Part 4: Finger image  [ISOFINQ] recommends procedures  for  finger 

image quality analysis.  Final NFIQ 2.0 features will be submitted to JTC 1 ISO/IEC WG3 for possible formal standardization as 

revision of ISO/IEC 29794 Biometric sample quality – Part 4: Finger image.

                                                       1 http://www.nist.gov/itl/iad/ig/ibpc2010.cfm
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 6 OF 14

3. Why NIST

NIST has the largest and most diverse set of operational fingerprint images. NIST will use carefully chosen subsets of its finger 

image  corpora  for  training  and  testing  of  NFIQ  2.0.    Avoiding  over‐fitting  problem  and  building  models  that  could  explain 

structures  of  unseen  data  is  an  important  and  difficult  problem  in  training machine‐learning  algorithms.  Use  of  a  large  and 

diverse set for training can mitigate this problem. 

Interoperability  of  quality  scores  can  be  achieved  by  calibrating  quality  scores  to  observed  false  non‐match  rates.  NIST  will 

provide calibration curves for Class GQ and DQ participants, which will improve interpretation of quality scores.

4. Options for participation

NIST and BSI invite interested parties to submit 

― Technical contribution on composition and computation of features via email to 

nfiq2[DOT]development[AT]nist[DOT]gov by August 29, 2011,

― SDKs  that  create  proprietary  templates for  comparison  and  computation  of real  valued  non‐quantized  and  non‐

thresholded similarity scores resulted from comparing two templates by May 2, 2011, or

― Fingerprint images demonstrating NFIQ 1.0 anomaly by September 30, 2011.

NIST  and/or  BSI  will  use  submitted  SDKs  for  development  of  generalized  NFIQ  2.0.    Participants  can  optionally  request 

development of a “customized” NFIQ 2.0 (Class C or CQ participation).  For each Class C or CQ participant, a dedicated training 

will be done based on its comparison scores only.  This produces an NFIQ 2.0 variant that specifically targets that one biometric 

comparison  subsystem. Class  C  or  CQ  participants will  receive NFIQ  2.0  training  information  for  their  submitted  comparison 

algorithm.

Furthermore, participants have the option of computing quality scores as part of template generation (Class GQ or CQ).   For 

Class  GQ  or  CQ  participants, NIST  will  provide  calibration  information e.g.  a  calibration  curve  that maps  vendor  proprietary 

quality values to observed false non‐match rates and/or NFIQ 2.0 values.

NIST PFT or PFT II participants that consider their PFT or PFT II submissions suitable for this activity can choose Class G or Class 

C  participation and  provide NIST  the  correct  PFT  or  PFT II  SDK  identifier  code  in  lieu  of  new  submission.    PFT  SDK  identifier 

codes are listed at http://www.nist.gov/itl/iad/ig/pft_2003_status.cfm.

Table 1. summarizes options for participation.  Note that all submissions will be used for development of generalized NFIQ 2.0. 

5. Treatment of SDKs

Participants can choose either NIST or BSI or both to execute their SDKs.  Comparison scores will be shared between NIST and 

BSI, and will be used only for the purposes laid out in this document.

NIST and BSI will treat submitted SDKs as black boxes.  Particularly, NIST and BSI will not try to emulate or reverse engineer 

submitted algorithms.

Upon completion of this project, the participants will be asked for permission to release the comparison scores and/or the 

normalized comparison scores along with the final NFIQ2 feature vectors. 

6. Communication 

News and information on progress of NFIQ 2.0 will be posted at http://www.nist.gov/itl/iad/ig/development_nfiq_2.cfm.

General questions, comments and technical contribution on composition and computation of NFIQ 2.0 features, the makeup of 

the training data, anomaly of NFIQ 1.0 can be sent to nfiq2[dot]development[AT]nist[DOT]gov.

SDK submissions to NIST, or question or comments for NIST only, should be sent to nfiq2[AT]nist[DOT]gov.

SDK submissions to BSI, or question or comments for BSI only, should be sent to nfiq2[AT]bsi[DOT]bund[DOT]de.

SDK submissions to both NIST and BSI should be sent to nfiq2[AT]nist[DOT]gov and nfiq2[AT]bsi[DOT]bund[DOT]de.
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 7 OF 14

Table 1. Options for participation.  All submitted SDKs are considered Class G.

Class G

“Generalized”

Class GQ

Class G with Quality 

Computation

Class C

“Customized”

Class CQ

Class C with Quality 

Computation

What to submit EITHER

Template generation 

(Input: finger image; 

Output: proprietary 

template for comparison) 

AND Biometric 

Comparator (Matcher)

(Input: 2 proprietary 

templates; output: 

comparison score)

OR 

Your PFT/PFT II SDK Code

Template generation 

(Input: finger image; 

Output: proprietary 

template for comparison

+ Quality score) AND 

Biometric Comparator 

(Matcher) (Input: 2 

proprietary templates; 

output: comparison 

score).

EITHER

Template generation 

(Input: finger image; 

Output: proprietary 

template for comparison) 

AND Biometric 

Comparator (Matcher)

(Input: 2 proprietary 

templates; output: 

comparison score)

OR 

Your PFT/PFT II SDK Code

Template generation 

(Input: finger image; 

Output: proprietary 

template for comparison

+ Quality score) AND 

Biometric Comparator 

(Matcher) (Input: 2 

proprietary templates; 

output: comparison 

score).

NIST use Comparison scores will be 

used to train generalized 

NFIQ 2.0

Comparison scores will be 

used to train generalized 

NFIQ 2.0.

Comparison scores are 

used to train generalized 

NFIQ 2.0 AND a

customized NFIQ 2.0.

Comparison scores are 

used to train generalized 

NFIQ 2.0 AND a

customized NFIQ 2.0.

NIST output to 

participant

Calibration information

for the submitted quality 

scores.

Training information for 

the customized NFIQ 2.0.

Trained information for 

the customized NFIQ 2.0.

Calibration information 

for the submitted quality 

scores.

Benefit to 

participant

You are part of NFIQ 2.0.

NFIQ 2.0 will reflect the 

sensitivities of the 

submitted biometric 

comparator.

You are part of NFIQ 2.0.

NIST will supply 

calibration information 

for your quality scores.

A variant of NFIQ 2.0 that 

specifically targets your 

biometric comparator.

A variant of NFIQ 2.0 that 

specifically targets your 

biometric comparator.

Calibration information 

for your quality scores.

Possible future 

standardization

NFIQ 2.0 features 

(revision of [ISOFINQ])

Quality calibration  (a new 

part to [ISOCAL])

7. How to participate

Those wishing to participate in development of NFIQ 2.0 are asked to 

 Indicate via email (nfiq2[AT]nist[DOT]gov and nfiq2[AT]bsi[DOT]bund[DOT]de) a non‐binding "Intention to Participate" 

 Send a signed and fully completed copy of this entire Call for Participation, including the form below. 

 If you want us to use comparison scores of your PFT or PFT II submission, send us your PFT or PFT II SDK identifier code as 

is listed at http://www.nist.gov/itl/iad/ig/pft_2003_status.cfm. 

 If you are providing a new SDK (Software Development Kit)

 Request an SDK ID from NIST 

 Follow the instructions for cryptographic protection of your SDK. 

http://nfiq2.nist.gov/NIST_biometrics_crypto.pdf (to be posted).

 Provide an SDK library, which complies with the API (Application Programming Interface) specified in this 

document (Annex B) by May 2, 2011.

The NFIQ 2.0 Application to Participate shall be sent to: 
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 8 OF 14

NFIQ 2.0 

National Institute of Standards and Technology 

Information Access Division (894) 

100 Bureau Drive 

A207/Tech225/Stop 8940 

Gaithersburg, MD 20899‐8940 

USA 

In  cases  where  a  courier  needs  a 

phone  number,  please  use  NIST 

shipping and handling on: 

301 ‐ 975 ‐ 6296. 

7.1. Submission of software to NIST 

Participants are  requested  to provide NIST or BSI with binary code only  (i.e. no source code). It is preferred  that  the SDK be 

submitted in the form of a single shared library file (i.e. “.DLL” for Windows or “.so” for Linux). NIST or BSI will link the provided 

library  file(s)  to  a  C  language  driver  application  developed  by  NIST.  Participants  are  requested  to  provide  their  library  in  a 

format that is linkable using GCC with the NIST driver, which is compiled with GCC. 

NIST requests that all software submitted by the participants be signed and encrypted.  Signing is done with the participant's 

private  key,  and  encrypting  is  done  with  the  NIST  public  key,  which  will  be  published  on  the  NFIQ  2.0 Web  site.    NIST  will 

validate all submitted materials using the participant's public key, and the authenticity of that key will be verified using the key 

fingerprint.  This fingerprint must be submitted to NIST by writing it on the signed participation agreement. 

By  encrypting  the  submissions,  we  ensure privacy;  by  signing  the  submission,  we  ensure  authenticity  (the  software  actually 

belongs to the submitter).  NIST will not accept any submission that is not signed and encrypted. NIST accepts no responsibility 

for anything that is transmitted to NIST that is not signed and encrypted. 

The detailed commands for signing and encrypting are given here: (to be posted).

8. Bibliography

Label Document

ISOCAL SO/IEC  29159  Biometric  fusion,  calibration  and  augmentation  (2010 

edition)

ISOFIN ISO/IEC 19794 Biometric data interchange formats – Part 4: Finger image 

(201X edition)

ISOFINQ ISO/IEC 29794 Biometric sample quality  – Part 4: Finger image

ISOMIN ISO/IEC  19794  Biometric  data  interchange  formats  –  Part  2:  Finger 

minutiae (201X edition)

ISOQ ISO/IEC  29794  Biometric  sample  quality  –  Part  1:  Framework  (2009

edition)
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 9 OF 14

1 This form shall be completed by all suppliers electing to participate in the NFIQ 2.0 development.

2 NIST assigned identifier for the supplied SDK. 

3 Responsible Party for supplier of finger image encoding and/or comparison technologies.

4 Company / Organization Name 

5 Title First Name MI Last Name Suffix

6 Street Address 

7 City State Zip Country

8 Phone Fax Email

9 Technical  point  of  contact  (if  different 

from Responsible Party)

Phone Email

10 Participant's public‐key fingerprint 

(Enter here) 

11 NIST’s public‐key fingerprint

12 BSI’s public‐key fingerprint

13 Option  for  participation  (All  submissions 

are considered Class G)

X          Class G ― Class C

― Class GQ ― Class CQ

― Use my PFT or PFT II submission (insert your PFT SDK Identifier 

Code below)

―

14 Submission to  (mark all that applies) ― NIST   

nfiq2[AT]nist[DOT]gov

― BSI

nfiq2[AT]bsi[DOT]bund[DOT]de

With  my  signature,  I  hereby  express  my  willingness  to  participate  in  development  of  NFIQ  2.0.    I  gave  my  permission  to 

organization(s) identified in  row  14 above  to  use  comparison  scores  computed  by my  submitted SDK in  the  development  of 

NFIQ 2.0.

With my signature, I also state that I have the authority to accept the terms stated in this document.

SIGNATURE OF SOFTWARE SUPPLIER RESPONSIBLE PARTY    DATE 
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 10 OF 14

Annex A

Proposed scientific approach for development of NFIQ 2.0

1. NFIQ 2.0

We propose development of a set of standardized  finger image quality components plus multivariate statistics  techniques  to 

relate  biometric  performance  metrics  such  as  false  non‐match  to  the  standardized  quality  components  (i.e.  features).    The 

outcome will be an open source quality assessment algorithm for finger image.  Same as NFIQ 1.0, the new NFIQ 2.0 will have 

two major computation steps:

― Feature extraction, and

― Training of a machine‐learning algorithm.

1.1. Feature Extraction

Feature extraction consists of measuring appropriate image characteristics that convey information for comparison algorithms.  

The feature set may be comprised of elements such as local noise, continuity of ridge flow, area of the finger image impression, 

and  number  of minutiae.  A  feature vector is  computed  from each image and its  components are  combined  using a  trained 

machine‐learning algorithm so  that  the image quality score is  reflective of positive or negative contribution of  the sample  to 

the  overall  performance  of  the  system.  Part  4  of  ISO/IEC  29794  [ISOFIN  Q]  defines  defect  factors  for  finger  images  and 

recommends features and characteristics of finger images at both local and global structures that are related to performance 

of  fingerprint  recognition  systems.    Additionally  parts  2  [ISOMIN]  and  4  [ISOFIN]  of  ISO/IEC  19794  Biometric  data  format 

standard define features such as zonal quality or minutiae quality.

In collaboration with industry, a set of quality components will be defined and perhaps  formally standardized.  These quality 

components shall model failure modes and sensitivities of current fingerprint recognition algorithms.  Examples include: zonal 

quality,  clarity  of  ridges,  size  of  fingerprint,  or  number  of  minutiae.  Technical  comments  and  contributions  towards  the

formation and computation of features are requested.

NIST and BSI will develop open‐source reference implementations for standardized quality components.

1.2. Training a machine leaning algorithm 

Training looks  for  structure in  the data and ultimately building a model  to  relate  the  response variable  (e,g. performance as 

false non‐match rate, or area‐under‐ROC‐curve) to the exploratory variables (i.e. features or quality components).  We explore 

different  multivariate  statistical  techniques  to  obtain  the  optimal  model.    Training  could  be  customized  to  a  comparison 

algorithm or generalized  to a class of comparison algorithms. NIST and BSI will  train a machine‐learning algorithm  to predict 

performance  of  a  particular  comparison  algorithm  (i.e.  customized  NFIQ  2.0)  or  a  general  class  of  comparison  algorithms 

(generalized NFIQ 2.0). 

NIST and  BSI will  perform  the  training. For  customized NFIQ  2.0, NIST will  return  the  training  parameters  on  the machine‐

learning algorithm to the provider of the biometric comparison subsystem (matcher) used for training. 

The outcome will be a  family of quality algorithms  that could be application‐independent or  tuned  to particular applications.  

Interoperability is achieved by uniform interpretation of quality  scores;  therefore, it expands a marketplace of interoperable 

products.

2. Generalized vs Customized 

NFIQ has been designed to be agnostic to biometric comparison algorithm.  For applications where the comparison algorithm is 

not  known  a  priori  or  subject  to  change,  a  generalized  (i.e.  biometric  comparison  independent)  image  quality  assessment 

algorithm  (IQAA) is needed.  However, when the comparison algorithm is known, use of an IQAA that is tuned to predict the 

performance of  the deployed comparison algorithm is more suitable.  Therefore  the next generation of  finger image quality, 

should  provide  both  options  of  “generalized”  (i.e.  comparison  algorithm‐independent)  or  “customized”  (i.e.  comparison 

algorithm dependent). 

3. Calibration

Interoperability  of  quality  scores  is  another  challenge  in  exchange  of  quality  scores.    Part  1  of  the  multipart  ISO/IEC  29794 

Biometric  sample  quality  standard  [ISOQ]  defines  a  binary  record  structure  for  the  storage  of  a  sample’s  quality  data.  It 
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 11 OF 14

establishes  requirements  on  the  syntax  and  semantic  content  of  the  structure.    Specifically,  it states  that  the  purpose  of 

assigning  a  quality  score  to  a  biometric  sample  shall  be  to  indicate  the  expected  utility  of  that  sample  in  an  automated 

comparison  environment.    That  is,  a  quality  algorithm  should  produce  quality  scores  that  target  application‐specific 

performance variables. For verification, the default metric would usually be false‐non‐match rates that are likely to be realized 

when the sample is verified.  This, by itself, is not sufficient for accurate interpretation of quality scores generated by different 

quality assessment algorithms and therefore some normalization or calibration is needed.
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 12 OF 14

Annex B

Application Programming Interface (API)

1. Proprietary template creation

This function converts a raw finger image into an opaque proprietary template. Two options are provided ‐ one to convert an 

image into a generic enrollment or verification proprietary  template and another  to allow  two  functions, one  for enrollment 

and another for verification.  This "output type" aspect will be respected in Table B.2. It supports comparison algorithms that 

are asymmetric.

Table B.1. NFIQ2 API proprietary template creation

Prototype uint32_t  convert_image _to_ proprietary_template( 

const uint8_t *image_data,

const uint16_t image_width, 

const uint16_t image_height, 

const uint8_t image_format, 

const uint8_t intensity_depth,

const uint8_t which_finger,

const uint32_t allocated_bytes,

uint8_t template_role, 

uint32_t *template_size, 

uint8_t *proprietary_template,

uint8_t *quality_score,

uint8_t *image_enhanced); 

Description This function takes a raw finger image, and outputs a proprietary template.

This function is first called for a generic template output. If it fails with return code 10, it will be called for 

enrollment and verification template creation.

The memory for the output proprietary template is allocated before the call i.e. the implementation shall 

not allocate memory for the result.  In all cases, even when unable to extract features, the output shall be a 

proprietary template that may be passed to the compare_proprietary_templates (see Table 2) function 

without error.  That is this routine must internally encode "proprietary template creation failed" and the 

comparison algorithm must transparently handle this.

image_data The image used for proprietary template creation.

image_width The number of pixels indicating the width of the image.

image_height The number of pixels indicating the height of the image.

Image_format

intensity_depth

NIST anticipates using only raw uncompressed 8 bit grayscale data, so the image 

format will be 0x02, and the intensity depth will be 8.

which_finger FINGER_UNDEF = 0 (0x00) 

RIGHT_THUMB = 1 (0x01) LEFT_THUMB = 6 (0x06)

RIGHT_INDEX = 2 (0x02)  LEFT _INDEX = 7 (0x07) 

RIGHT_MIDDLE = 3 (0x03)  LEFT _MIDDLE = 8 (0x08) 

RIGHT_RING= 4 (0x04)  LEFT _RING= 9 (0x09) 

RIGHT_LITTLE= 5 (0x05)  LEFT _LITTLE= 10 (0x0A) 

These are the values used in [ISOFIN ].

allocated_bytes Number of bytes NIST allocated for the output proprietary template.

NIST will pre‐allocate 65,536 bytes.  

Question to participants: Email us if 64K is not enough.

Input 

Parameters

template_role Generic or enrollment and verification.

PROP_TEMPLATE_GENERIC = 0 (0x00)

PROP_TEMPLATE_ENROL = 1 (0x01)

PROP_TEMPLATE_VERIF = 2 (0x02)
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 13 OF 14

template_size The size, in bytes, of the output proprietary template.

proprietary_template The output proprietary finger template.  The format is entirely unregulated. 

Maximum allocated memory is 65,536 bytes.

quality_score The output (integer) quality score computation results, if quality computation is 

done at the same time as proprietary template creation (image in, proprietary 

and quality out).  NIST allocates and initializes quality score to 255.  If quality 

computation is not done at the time of proprietary template creation, the 

quality vector shall be 255.

Output 

Parameters

image_enhanced 1: alteration and enhancement performed

0: no alteration/enhancement

Return Values 0 Success

2 Elective refusal to produce a proprietary template (e.g. insufficient finger area)

4 Elective refusal to process the input image

6 Involuntary failure to extract features (e.g. could not find finger in the input‐

image) 

8 Not enough memory – need more than allocated bytes

10 Output type not supported

12 Null pointer

14 Bad arguments

Other Vendor‐defined failure

2. Proprietary templates comparison

This function compares two proprietary templates and returns a real‐valued comparison score, which shall be a measure of the 

similarity  between  finger  image  data  contained  in  the  two  proprietary  templates.    Therefore,  higher  values  indicate  more 

likelihood  that  the  two  images  are  from  the  same  finger.    The  terms  comparison  score  and similarity  score  are  being  used 

interchangeably throughout this document.

Table B.2. NFIQ 2 Proprietary templates comparison

Prototype uint32_t  compare_ proprietary_templates( 

const uint8_t *verification_template, 

const uint32_t verification_template_size, 

const uint8_t *enrollment_template, 

const uint32_t enrollment_template_size, 

double *similarity);

Description This function compares two proprietary templates and outputs a non‐negative comparison score.  

The returned score is a non‐negative similarity measure.  NIST will allocate memory for this parameter before 

the call.  When either or both of the input proprietary templates are the result of a failed proprietary template 

generation (see Table B.1), the similarity score shall be ‐1 and the function return value shall be 2.

Verification_template A proprietary template from convert_image_to_proprietaryTemplate(). 

verification_template_size The size, in bytes, of the input verification proprietary template 0 ≤ N ≤ 216 ‐ 1

enrollment_template A proprietary template from convert_image _to_proprietaryTemplate(). 

Input 

Parameters

enrollment_template_size The size, in bytes, of the input enrollment proprietary template 0 ≤ N ≤ 216 ‐ 1

Output 

Parameters

similarity A similarity score resulting from comparison of the proprietary templates.  

0 Success

2 Either or both of the input proprietary templates were result of failed template 

generation. 

12 Null pointer

14 Bad arguments

Return 

Values

Other Vendor‐defined failure
NFIQ 2.0 ‐ CALL FOR PARTICIPATION – FEBRUARY 25, 2011

NFIQ2[DOT]DEVELOPMENT[AT]NIST[DOT]GOV ‐ PAGE 14 OF 14

3. Implementation identifiers 

The implementation shall support the self‐identification function of Table B.3.  This function is required to support internal NIST 

book keeping.  The version numbers should be distinct between any versions, which offer different algorithmic functionality.

Table B.3. NFIQ2 API get_pids function

Prototype uint32_t  get_pid(

uint32_t *nist_assigned_identifier, 

char *email_address); 

Description This function retrieves an identifier that the provider must request from NIST nfiq2[AT]nist[DOT]gov (if 

submitting to NIST or NIST and BSI) or nfiq2[AT]bsi[DOT]bund[DOT]de (if submitting to BSI only) , and 

hardwire into the source code.   NIST or BSI will assign the identifier that will uniquely identify the supplier 

and the SDK version number.

nist_assigned_identifier A PID, which identifies the SDK under test.  The memory for the identifier is 

allocated by NIST's calling application, and shall not be allocated by the SDK. 

Output 

Parameters

email_address Point of contact email address as null‐terminated ASCII string.  NIST will 

allocate at least 64 bytes for this.  SDK shall not allocate memory.

0 Success

14 Bad arguments

Return Values

Other Vendor‐defined failure