Skip to main content

Overview

Ported from the IDKit SDK v9.2.3 documentation (chapter "Overview").

Usage overview

The IDKit library can be used in all types of applications requiring fingerprint recognition.

User support. The use of the SDK is made simple through the notion of a user. A user is a collection of fingerprint images from different fingers. This is very universal: you can associate many fingerprint images with a particular user. For example, you can create a user with 2 fingerprints per each finger, which makes 2×10 = 20 fingerprint images in total. Through verification functions you can directly compare two users without needing to explicitly combine similarity scores from different fingers — the SDK does this automatically.

Database support. Database management functions enable storing and retrieving user information in/from a database. In the database, you may optionally store both biometric templates and fingerprint images. Biometric templates contain the biometric features necessary for verification or identification. Fingerprint images are not required for fingerprint recognition, but storing them lets the application display them when the user is verified or identified. You can also store custom application-specific data per user (username, address, e-mail, …). For enhanced security, you may optionally switch on database encryption — all biometric templates, fingerprint images, and custom data are then automatically encrypted with the AES cipher when stored.

Verification (1:1). The IDKit library compares biometric samples and calculates their similarity scores. Supported verification strategies:

  • comparison of two biometric samples (verification of a probe fingerprint against a reference fingerprint)
  • comparison of multiple impressions (views) of the same fingerprint against one or multiple other impressions
  • comparison of fingerprints coming from multiple fingers against another set of fingerprints

Identification (1:N). Identification functions search for an unknown biometric sample, or set of samples, in the whole database:

  • identification of one particular fingerprint
  • identification of multiple impressions (views) of the same fingerprint
  • identification of fingerprints coming from multiple fingers

Identification is optimized for speed. Thanks to automatic memory mapping of the database content, no additional database access time occurs when an identification search is performed. The IDKit library contains a proprietary high-speed fingerprint identification algorithm suitable for the most demanding applications.

Supported image formats. For fingerprint images: BMP, PNG, JPG, JPEG2K, GIF, TIFF, and WSQ (a format designed specifically for efficient fingerprint image compression).

Modalities. IDKit is a fingerprint recognition SDK.

.NET and Java connectors. Both connectors ship with the SDK, including documentation and samples.

Product differences

This documentation covers the following products. Product compatibility notices appear throughout the original documentation wherever there are differences between IDKit SDK versions.

ProductDescription
IDKit PC SDKThe base product. Integrated database support — the database is automatically loaded and mapped in memory, enabling extremely fast fingerprint matching. Suitable for fingerprint identification applications from a few up to thousands of users. Supports a wide range of input image formats (RAW, PNG, BMP, JPEG, JPEG 2000, GIF, WSQ, TIF) and is compatible with fingerprint images from various scanner types (optical, capacitive, thermal).
IDKit Android SDKPort of IDKit PC SDK for Android. Since version 3.0.9 supports WSQ, PNG, and JPEG2K in addition to RAW and BMP. Valid identification speed range 0–4.
IDKit Embedded SDKPort of IDKit PC SDK for embedded Linux platforms. Built upon customer request using a customer-provided toolchain (cross-compiler). Since version 3.0.9 usually supports WSQ, PNG, and JPEG2K (if supported by the particular system) in addition to RAW and BMP. Valid identification speed range 0–4.
  • ANSI/ISO SDK — extracts and matches templates conforming to ANSI/INCITS 378 or ISO/IEC 19794-2. IDKit SDK can export ANSI and ISO templates to be used in ANSI/ISO SDK. It is not possible to convert an ANSI or ISO template back into an IDKit SDK template.
  • Segmentation SDK — segments a slap fingerprint image into individual fingerprints, which can then be used in IDKit SDK for template extraction, verification, and identification. Also provides image-quality acquisition functionality.

Supported platforms

IDKit SDK is officially supported on:

  • Windows 32-bit and 64-bit (Windows 7 and higher) — IDKit PC SDK
  • Linux 32-bit and 64-bit (Red Hat, CentOS — version 7 and higher) — IDKit PC SDK
  • Android — IDKit Android SDK:
ArchitectureNDKAPIAndroid OS
armv7a, x86r2321 and higher5 and higher
arm64-v8a, x86_64r2321 and higher5 and higher

If you are interested in a port of IDKit SDK to another platform, contact your sales representative or sales@innovatrics.com.

Similarity scores

Due to different positioning, deformations, random noise, finger humidity, and sensor conditions, two images of the same finger acquired in different sessions never coincide exactly. Matching is therefore performed by an algorithm that calculates a global similarity score, which is compared against the similarity threshold: when the score is greater than the threshold, the system claims the two samples coincide.

The main system errors are measured in terms of:

  • FAR (False Acceptance Rate) — the frequency of fraudulent accesses due to impostors claiming a false identity.
  • FRR (False Rejection Rate) — the frequency of rejections of people who should be correctly verified.

FAR and FRR depend on the similarity threshold and are strictly related to each other: FRR is an increasing function of the threshold, FAR a decreasing one. Raising the threshold to make it harder for impostors (lower FAR) makes it harder for authorized people too (higher FRR).

The range of returned similarity scores is 0 (no similarity) to 1000 (highest similarity). Correspondence between fingerprint templates is generally reflected by scores greater than the default similarity threshold (40), which roughly corresponds to FAR = 10⁻⁴. Depending on the scanner type, fingerprint image size, database size, and the desired security level, you may need a different threshold — set it via IEngine_SetParameter with CFG_SIMILARITY_THRESHOLD. See FAR and Threshold for recommended values.

Identification speed

Identification speed is measured in the number of fingerprint comparisons per second (compared fingerprint pairs per second) — not user comparisons per second, because each user pair may contain multiple corresponding fingerprint pairs.

Performance depends on parameters set through IEngine_SetParameter:

  • maximum permitted rotation between fingerprints,
  • selected identification speed level,
  • selected best identification candidates count.

The time complexity of identification is T = a·n + b, where T is total identification time, n is the number of compared fingerprints (database size), and a, b are constants. Coefficient b is the initialization overhead (typically below 50 ms); as n grows, the a·n term dominates. When measuring identification speed, use bigger databases to avoid the b coefficient skewing the result. Performance may vary with population and hardware.

Database connectivity

IDKit SDK can access fingerprints from two data sources:

  • an integrated SQLite database stored in one file,
  • a memory area filled with the fingerprint data the application needs to search.

Since IDKit SDK version 8, ODBC and JDBC databases and the IDispatcher service connection are not available and unsupported.

The database connection is made with IEngine_Connect, which takes a connection string describing the data source. Once connected, all IDKit SDK functions work identically with all data sources.

SQLite database:

IEngine_InitModule();
IEngine_Connect( "idkit.db" );

No database (memory): if the application stores biometric data in its own database, IDKit can use data loaded by the application into memory:

IEngine_InitModule();
IEngine_Connect( "Type=Memory" );

This initializes an empty memory database; fill it with IEngine_RegisterUserAs from your application database. Modifications to user records in a memory database are lost when the application terminates — save modified records back to the application database.

A third option is to avoid IEngine_Connect entirely and use the identification and verification functions that work with templates from an external database.

Image processing

Supported image formats are enumerated in IENGINE_IMAGE_FORMAT (C++) and ImageFormat (.NET). RAW images are supported through IEngine_ConvertRawToImage / IEngine_ConvertImageToRaw (C++) or IDKit.ConvertRawToImage / IDKit.ConvertImageToRaw (.NET).

Fingerprint RAW image. Raw 8-bit grayscale, canonically encoded: 0 = black, 255 = white, intermediate gray levels 1–254. Pixels stored left-to-right, top-to-bottom, one byte per pixel, no header — image height and width are supplied to the SDK as supplemental information. The SDK contains functions for converting standard uncompressed BMP to this raw format.

BMP support. Supported BMP variants: 8-bit (palette mapped to BGR) and 24-bit (standard uncompressed BGR). During BMP image extraction, only the green channel of the image is processed.

Image conversions. Images can be supplied to and requested from the SDK in any supported format; the SDK converts whenever necessary. Conversion is sometimes enforced: fingerprint images are always stored in the database in PNG format (if a different format is supplied, it is converted to PNG on write; on platforms without PNG support — for example IDKit Embedded SDK — BMP is the default storage format).