Formats and Configuration
Formats
4Finger ID can output the following formats for capture actions:
VERIDFP - Veridium proprietary fingerprint format VeridiumFP.
NIST - ANSI/NIST ITL 1-2007, National Institute of Standards and Technology's Data Format for the Interchange of Fingerprint, Facial, & Other Biometric Information. Contactless output conforms to NIST SP500-339.
Interpol - International Criminal Police Organization INT-I : Interpol’s implementation for I-24/7 secure global police network. Contactless output conforms to NIST SP500-339.
JSON - All prints are contained within a single JSON file which contains Base64 encoded WSQ format images and can be made to contain RAW format images (set the option
ExportConfig.setPack_raw_scaled(true);
) as well as PNG format images (set the optionExportConfig.setPack_png_scaled(true);
. In addition, it can contain an Audit Image (a low resolution, print obscured, version of the captured image) for the purpose of human audit. JSON output also supports writing of multiple scales; 500dpi; 500dpi + 15%, 500dpi - 15%. To enable the multiple scales, applyExportConfig.setPackExtraScale(true);
. The JSON file contains a WSQ image for each fingertip. Each fingertip image is named using the NISTg specification:Finger 1: Right thumb
Finger 2: Right index finger
Finger 3: Right middle finger
Finger 4: Right ring finger
Finger 5: Right little finger
Finger 6: Left thumb
Finger 7: Left index finger
Finger 8: Left middle finger
Finger 9: Left ring finger
Finger 10: Left little finger
ISO2005 - ISO/IEC 19794-4 (2005). Note, this is an image container format.
ZIP - DEBUG ONLY.
To configure the use of a specific format use ExportConfig.setFormat()
, for example:
ExportConfig.setFormat(IBiometricFormats.TemplateFormat.FORMAT_JSON);
Configuring Settings: ExportConfig
The following can be configured by calling set()
methods of the ExportConfig
class. Import import com.veridiumid.sdk.fourfintegrationexport.ExportConfig;
.
Selecting prints to capture
Android
To configure the prints to capture call setFingersToCapture()
with an ExportMode
. The following modes are available:
FOUR_F_LEFT_ENFORCED
- all left hand fingersFOUR_F_RIGHT_ENFORCED
- all right hand fingersFOUR_F_LEFT_SWITCHABLE
- all left hand fingers with a user option to switchFOUR_F_RIGHT_SWITCHABLE
- all right hand fingers with a user option to switchEIGHT_F
- all left hand fingers followed by right hand fingersTEN_F
- all digits, including thumbsTWO_THUMB
- both thumbs
Alternatively, an overload of setFingersToCapture
takes a list of FingerID
s, for example to capture the right index and thumb:
ExportConfig.setFingersToCapture(Arrays.asList(ExportConfig.FingerID.INDEX_RIGHT, ExportConfig.FingerID.THUMB_RIGHT ));
iOS
To configure to capture 4 fingers use the convenience method setHand
:
exportConfig.setHand(chosenHand: VeridiumFourFHandChoice)
where VeridiumFourFHandChoice
can be:
VeridiumFourFHandChoiceForceLeftHandEnroll
VeridiumFourFHandChoiceForceRightHandEnroll
VeridiumFourFHandChoiceEitherHandEnroll (always left hand first)
VeridiumFourFHandChoiceBothHands (always left hand first)
VeridiumFourFHandChoiceAllFingers
To configure capture of arbitrary fingers/thumbs call setFingers()
. Pass a Set of values between 1 and 10, where:
VeridiumFourFFingerChoice.THUMB_RIGHT = 1
VeridiumFourFFingerChoice.INDEX_RIGHT = 2
VeridiumFourFFingerChoice.MIDDLE_RIGHT = 3
VeridiumFourFFingerChoice.RING_RIGHT = 4
VeridiumFourFFingerChoice.LITTLE_RIGHT = 5
VeridiumFourFFingerChoice.THUMB_LEFT = 6
VeridiumFourFFingerChoice.INDEX_LEFT = 7
VeridiumFourFFingerChoice.MIDDLE_LEFT = 8
VeridiumFourFFingerChoice.RING_LEFT = 9
VeridiumFourFFingerChoice.LITTLE_LEFT = 10
For example, to capture left and right thumbs,
let fingers = Set([NSNumber(value: VeridiumFourFFingerChoice.THUMB_RIGHT.rawValue),
NSNumber(value: VeridiumFourFFingerChoice.THUMB_LEFT.rawValue)])
exportConfig.setFingers(fingers)
Legacy Support Export < v5.10.x
4Finger ID in Veridium SDK 5.11.x introduced an improved pipeline for processing of fingerprint images for export. Where required, an Export Config switch is provided to revert to the pipeline used in 5.10.x and earlier. [Note, internal matching is unaffected. SDK 5.11.0 uses 4F v5.5.0 or later].
Android:
ExportConfig.setLegacyExport()
iOS:ExportConfig.legacyExport
True - Use the 5.10.x pipeline
False (Default) - Use the 5.11.x pipeline
Capture Settings
Timeout
Android:
ExportConfig.configureTimeout(enabled, time_seconds, allowed_retries, allow_skipping)
iOS:
configureTimeoutEnabled:(BOOL)new_timeout_enabled andTimoutSeconds:(int)new_timeout_time_seconds andAllowedRetries:(NumberOfRetries)new_allowed_retries andAllowSkipping:(BOOL)new_allow_skipping;
Configure capture timeout behaviour.
enabled TRUE implies a capture can time out, FALSE implies cannot.
can_restart
DEPRECATED
Always TRUE. Timeout is applied per capture.time_seconds number of seconds to be allowed for capture before a timeout is triggered
allowed_retries restrict the user to a fixed number of retries per capture.
allow_skipping BETA FEATUER. When TRUE, if a capture times out it will be skipped and the next capture started. If all captures time out a failure will be returned. Note, templates are output only for successful captures and hence some requested prints might be missing in the ouput. When FALSE any time out event will result in the whole capture process halting and a failure result.
Format - Android:
ExportConfig.setFormat()
iOS:ExportConfig.exportFormat
the required output format for capture actions available for 4Finger TouchlessID (See formats for details). This may be any one of:CODE- IBiometricFormats.FORMAT_VERIDFP - IBiometricFormats.FORMAT_NIST - IBiometricFormats.FORMAT_INTERPOL - IBiometricFormats.FORMAT_JSON (Default) - IBiometricFormats.FORMAT_ISO_4_2005 - IBiometricFormats.FORMAT_ZIP (for debug purposes only!)
(Format options only apply to capture events. Enrolment and authentication require the VeridiumID proprietary fingerprint format, VERIDFP.)
NIST Record Type 4 - Android:
ExportConfig.setUseNistType4()
iOS:ExportConfig.nist_type
Set the NIST output record type to Type-4 (500dpi greyscale images). Applies to the NIST file format only.True
False (Default)
NIST Impression Type Enrol - Android:
ExportConfig.setNISTImpressionTypeEnrol()
iOS:ExportConfig.nist_type
Use a Fingerprint Impression Type (IMP) value of 44 to indicate the contactless prints can be used for enrolment, not only search (See NIST SP500-339).True - IMP type 44, contactless enrol and search
False (Default) - IMP type 43, contactless search
NIST Software Information - Android:
ExportConfig.setSoftwareInfo()
iOS:ExportConfig.softwareInfo
A string to include in the ANSI/NIST Type 2 record 2.907 field for software information. 2.907 will be entered using colon separators as follows: “[software_info]:[device_OS_version]:[veridium_SDK_version]:[4Finger_ID_Version]”String, default empty
NIST Transaction Control ID - Android:
ExportConfig.setTransactionControlID()
iOS:ExportConfig.transactionControlID
An identifier for the biometric transaction entered into ANSI/NIST Type 1 record 1.009 field.String, default is the UTC timestamp (%Y-%m-%dT%H:%M:%S).
Optimise For Index Capture - Android:
ExportConfig.optimiseForIndex()
iOS:ExportConfig.targetIndexFinger
optimise capture for optimal image quality on the index finger at the expense of other fingers.True
False (Default)
Optimise For All Fingers (Two Shot Capture) - Android:
ExportConfig.optimiseForIndexLittle()
iOS: Set bothExportConfig.targetIndexFinger
andExportConfig.targetLittleFinger
. Optimise capture for quality on all fingers by taking two shots in a single capture session.True
False (Default)
Use liveness - Android:
ExportConfig.setUseLiveness()
iOS:ExportConfig.useLiveness
Switch liveness ON/OFF.True
False (Default)
Liveness Factor - Android:
ExportConfig.setLivenessFactor()
iOS:ExportConfig.liveness_factor
Adjust the difficulty factor for liveness tests. A higher factor has a higher false rejection rate, but a lower false acceptance rate. (Currently, 80 or below applies standard liveness; a value of 81 or higher enables addition liveness for impressed print overlays).[0,99] (80 Default)
Active Liveness (DEPRECATED 5.11.x)- Android:
ExportConfig.setActiveLiveness()
iOS:ExportConfig.active_liveness
No longer supported.WSQ Compression Ratio - Android:
ExportConfig.setWSQCompressionRatio()
iOS:ExportConfig.wsq_compression_ratio
compression ratio for WSQ file output (for finer control see WSQ Bitrate below). Can be any of the following:WSQCompressRatio.COMPRESS_15to1
WSQCompressRatio.COMPRESS_10to1
WSQCompressRatio.COMPRESS_5to1
WSQCompressRatio.COMPRESS_2to1 (Default)
WSQ Bitrate (DEPRECATED 5.11.x) - Android:
ExportConfig.setWSQCompressionBitrate()
iOS:ExportConfig.
bitrate for WSQ file output. Set as a floating point value. Set values are clamped to the range 0.2\<=bitrate\<=6.0. As a general guide, to compute a bitrate from a given compression ratio use the following formula:bitrate = 10/compression ratio
Pack WSQ - Android:
ExportConfig.setPack_wsq()
iOS:ExportConfig.pack_wsq
switch output of WSQ on/off (scaled to 500 PPI),True (Default)
False
Pack RAW - Android:
ExportConfig.()
iOS:ExportConfig.pack_raw
switch output of RAW on/off (scaled to 500 PPI) when using JSON. No codec is required for reading raw images. They are not compressed. Image pixels are stored row-by-row, 1 byte per pixel (8-bit grayscale). Use the image width and height, provided in the JSON output, to correctly reconstruct the image.True (Default)
False
Pack PNG - Android:
ExportConfig.setPack_png()
iOS:ExportConfig.pack_png
switch output of PNG on/off (scaled to 500 PPI),True
False (Default)
Pack BMP - Android:
ExportConfig.setPack_bmp()
iOS:ExportConfig.pack_bmp
switch output of BMP on/off (scaled to 500 PPI),True
False (Default)
Pack Extra scales - JSON - Android:
ExportConfig.setPackExtraScale()
iOS:ExportConfig.extra_scaled_image
switch output of additionally scaled images inside the JSON format on/off (scaled to 500 PPI, +15%, -15%).True (Default)
False
Pack an Audit Image - JSON - Android:
ExportConfig.setPackAuditImage()
iOS:ExportConfig.pack_audit_image
switch output of an audit image inside the JSON format on/off.True (Default)
False
Output NFIQ Scores - Android:
ExportConfig.setCalculate_NFIQ()
iOS:ExportConfig.calculate_nfiq
switch output of NFIQ scores on/off when using JSON formats.True
False (Default)
The NFIQ score is an industry standard that produces values between 1 and 5, where 1 = excellent quality, and 5 = very poor quality. Values of 1, 2, or 3 are generally accepted as viable for matching.
Pack Dev Output - Android:
ExportConfig.setPackDevOutput()
iOS:ExportConfig.packDevOutput
Switch output of additional information for development purposes. This data is made available in slot 3 of the output data array. Output of this data will slow down processing. See Handling An Operational Result.True
False (Default)
Fixed Print Width - Android:
ExportConfig.setFixedPrintSize(width, height)
iOS:ExportConfig.fixed_print_width``ExportConfig.fixed_print_height
If this value is set to values greater than 0, then the size of the print is fixed to this size in pixels. Otherwise, it is set to default values. If the fixed size is smaller than the natural size of the print image the edges are cropped away.0,0 (Default)
Any positive integers
For example, to configure output in JSON format on Android, with 15 to 1 compression, with NFIQ score output:
import com.veridiumid.sdk.fourfintegration.ExportConfig;
ExportConfig.setFormat(IBiometricFormats.FORMAT_JSON);
ExportConfig.setCalculate_NFIQ(true);
ExportConfig.setWSQCompressionRatio(ExportConfig.WSQCompressionRatio.COMPRESS_15_1)
Agent Capture Mode
4FingerID can be configured to alter the UI and orientation to improve capture of prints by a 2rd party, or agent (as opposed to self capture). Ensure you are invoking a UI fragment designed for agent capture. Agent mode expects users hands to be presented from the right side of the device when held in landscape mode. Thumbs are expected to be presented from the bottom of the device held in portrait mode.
To use agent capture, set the ExportConfig as follows:
Android:ExportConfig.setAgentMode(true);
Override fragmentToShow()
in your custom 4F activity:
public class CustomFourFActivity extends com.veridiumid.sdk.fourf.FourFBiometricsActivity {
@Override
protected <FourFFragmentInterfaceUnion extends Fragment & FourFUIInterface> FourFFragmentInterfaceUnion fragmentToShow() {
return (FourFFragmentInterfaceUnion) new FourFAgentUIFragment();
}
}
iOS:ExportConfig.agentMode = true;
. No other configuration is required.
Audit Image
4FingerID outputs a downscaled version of the image originally captured by the device, with the users prints obscured. This allows for later manual inspection if required such as if you suspect a user of attempting to spoof the system. This feature is currently available when outputting the JSON format, set Android:ExportConfig.setPackAuditImage(true)
iOS:ExportConfig.pack_audit_image = true
.