IEngine_GetTemplateQuality method does quality score normalization that is relative to the image size. The reason behind this is that our customers work with a wide range of scanners. Some of them produce small images, others produce large surface images. The normalization is done in order to have comparable scores when using miscellaneous fingerprint sensors. Without this normalization, quality of images from small scale scanner (e.g. Authentec) would typically be between 5-10, what is too small range and it wouldn't be possible to obtain a recommended quality value of 30-40.

IEngine_GetTemplateQuality first calculates the total area A of the fingerprint that is classified as "usable" (fingerprint surface where ridges are visible and can be extracted, all other parts are classified as background information). This score A does not depend on the canvas size.

The normalization (transformation from A to Q = template quality) is done as follows:

if (width>350) width=350;
if (height>450) height=450;
if (width<260) width=260;
if (height<300) height=300;
quality=A / width / height;
if (quality>100) quality=100;

Width and height is the size of the image (canvas size).

If your customer needs to measure A (total usable surface) instead of measuring Q (total surface / image surface) they can do the following operation:

if(width>350) width=350;
if(height>450) height=450;
if(width<260) width=260;
if(height<300) height=300;