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. Can contain Type 9 minutiae data, as well as either Type 4 or Type 14 image data.
-
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 images. Supports images encoded in WSQ, PNG, or RAW. 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).Each fingertip image is named using the NIST 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) - An image container format.
-
ISO2002 - ISO/IEC 19794-6 (2005) - A minutiae container format with Finger Minutiae Records in ISO formatting.
-
ANSI-387 (2004) - A minutiae container format with Finger Minutiae Records in ANSI-378 format.
-
EBTS (Version 11) - Electronic Biometric Transmission Specification using Type 4 and Type 9 records.
-
ZIP - For data collection and debugging 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 fingers -
FOUR_F_RIGHT_ENFORCED- all right hand fingers -
FOUR_F_LEFT_SWITCHABLE- all left hand fingers with a user option to switch -
FOUR_F_RIGHT_SWITCHABLE- all right hand fingers with a user option to switch -
EIGHT_F- all left hand fingers followed by right hand fingers -
TEN_F- all digits, including thumbs -
TWO_THUMB- both thumbs
Alternatively, an overload of setFingersToCapture takes a list of FingerIDs, 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
DEPRECATEDAlways 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.exportFormatSet the output format for all capture actions available (See formats for details). This may be any one of:- IBiometricFormats.FORMAT_VERIDFP - IBiometricFormats.FORMAT_NIST - IBiometricFormats.FORMAT_INTERPOL - IBiometricFormats.FORMAT_ZIP (for debug and data collection purposes only) - IBiometricFormats.FORMAT_JSON (Default) - IBiometricFormats.FORMAT_ISO_4_2005 - IBiometricFormats.FORMAT_ISO_5_2005 - IBiometricFormats.FORMAT_ANSI378_2004 - IBiometricFormats.FORMAT_EBTS_11
(Format options only apply to capture events. Enrolment and authentication require the VeridiumID proprietary fingerprint format, VERIDFP.)
-
NIST Record Type - Android:
ExportConfig.setNistType()iOS:ExportConfig.nist_typeSet the NIST output record types. Type-4 and Type-14 contain 500dpi greyscale images. Type-9 contains minutiae data.
Android:-
T14 (Default)
-
T4
-
T9
-
T14_9 (Write image and minutiae data)
-
T4_9 (Write image and minutiae data)
iOS:
-
Nist_type_T14 (Default)
-
Nist_type_T4
-
Nist_type_T9
-
Nist_type_T14_9 (Write image and minutiae data)
-
Nist_type_T4_9 (Write image and minutiae data)
-
-
NIST Software Information - Android:
ExportConfig.setSoftwareInfo()iOS:ExportConfig.softwareInfoA 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.transactionControlIDAn 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).
-
-
EBTS Originating Agency Identifier - Android:
ExportConfig.set_originating_agency_identifier()iOS:ExportConfig.originating_agency_identifierAn identifier for the source of an EBTS transaction. Must be 9 characters in length. -
EBTS Destination Agency Identifier - Android:
ExportConfig.set_destination_agency_identifier()iOS:ExportConfig.destination_agency_identifierAn identifier for the intended destination of an EBTS transaction. Must be 9 characters in length. -
EBTS Attention indicator - Android:
ExportConfig.set_attention_indicator()iOS:ExportConfig.attention_indicatorThe intended recipient. -
EBTS Contributor Case Identifier - Android:
ExportConfig.set_contributor_case_identifier()iOS:ExportConfig.contributor_case_identifierAn identifier for the transaction. -
EBTS Contributor Case Prefix- Android:
ExportConfig.set_contributor_case_prefix()iOS:ExportConfig.contributor_case_prefixPrefix for the (Max 24 chars) case ID. -
EBTS Contributor Case Identifier extension - Android:
ExportConfig.set_contributor_case_identifier_extension()iOS:ExportConfig.contributor_case_identifier_extensionSupplement to the case ID to allow association with multiple other cases. -
Optimise For Index Capture - Android:
ExportConfig.optimiseForIndex()iOS:ExportConfig.targetIndexFingeroptimise 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.targetIndexFingerandExportConfig.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.useLivenessSwitch liveness ON/OFF.-
True
-
False (Default)
-
-
Liveness Factor - Android:
ExportConfig.setLivenessFactor()iOS:ExportConfig.liveness_factorAdjust 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)
-
-
WSQ Compression Ratio - Android:
ExportConfig.setWSQCompressionRatio()iOS:ExportConfig.wsq_compression_ratiocompression 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)
-
-
Pack WSQ - Android:
ExportConfig.setPack_wsq()iOS:ExportConfig.pack_wsqswitch output of WSQ on/off (scaled to 500 PPI),-
True (Default)
-
False
-
-
Pack RAW - Android:
ExportConfig.()iOS:ExportConfig.pack_rawswitch 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_pngswitch output of PNG on/off (scaled to 500 PPI),-
True
-
False (Default)
-
-
Pack BMP - Android:
ExportConfig.setPack_bmp()iOS:ExportConfig.pack_bmpswitch output of BMP on/off (scaled to 500 PPI),-
True
-
False (Default)
-
-
Pack Extra scales - JSON - Android:
ExportConfig.setPackExtraScale()iOS:ExportConfig.extra_scaled_imageswitch output of additionally scaled images inside the JSON format on/off (scaled to 500 PPI, +15%, -15%).-
True (Default)
-
False
-
-
Pack ISO Finger Minutiae Records - JSON - Android:
ExportConfig.setPack_FMR_ISO()iOS:ExportConfig.pack_fmr_isoBase64 encoded FMR (minutiae) in ISO format for each finger, and additionally for all fingers in a single FMR at the top level of the JSON. -
Pack ANSI378 Finger Minutiae Records - JSON - Android:
ExportConfig.setPack_FMR_ansi()iOS:ExportConfig.pack_fmr_ansiBase64 encoded FMR (minutiae) in ANSI378 format for each finger, and additionally for all fingers in a single FMR at the top level of the JSON. -
Pack an Audit Image - JSON - Android:
ExportConfig.setPackAuditImage()iOS:ExportConfig.pack_audit_imageswitch output of an audit image inside the JSON format on/off.-
True (Default)
-
False
-
-
Neural Net Export - Android:
ExportConfig.setNNExport()iOS:ExportConfig.nnExportenable neural network friction ridge image generation.-
True
-
False (Default)
-
-
Output NFIQ Scores - Android:
ExportConfig.setCalculate_NFIQ()iOS:ExportConfig.calculate_nfiqswitch 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.packDevOutputSwitch 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_heightIf 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.