Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
Finger SDK 4.1.0
Light Logo Dark Logo
Finger SDK 4.1.0
  • Features
  • What’s New?
  • Requirements
  • Biometric Performance
  • Getting Started
  • Licensing
  • Distribution
  • Troubleshooting

Usage

  • Overview
  • License Handling
  • Error Handling
  • AI Models
  • Finger Image
  • Finger Capture
  • Finger Detection
  • Feature Extraction
  • One-to-One Comparison
  • On-Card Comparison
  • One-To-Many (1:N) Search
  • Contactless fingerprints

Reference

  • Devices API
    • BarcodeReader
      • addDeviceFilter
      • applyParameters
      • captureCallback
      • checkCommand
      • checkParameter
      • clearDeviceFilter
      • closeDevice
      • deviceAddedCallback
      • deviceClosedCallback
      • deviceEventCallback
      • deviceFilterList
      • deviceId
      • deviceInfo
      • deviceOpenedCallback
      • deviceRemovedCallback
      • deviceState
      • deviceStatusChangedCallback
      • getCurrentData
      • getParameter
      • getParameterDescriptor
      • getParameterList
      • getParameterNameList
      • getParameterValueInt
      • isCapturing
      • isPreviouslyDisconnectedDevice
      • openDevice
      • parameterCategoryList
      • sendCommand
      • sendCommandBoolean
      • sendModelCommand
      • setParameter
      • setParameterValueInt
      • startCapture
      • stopCapture
      • waitForCapture
    • Camera
      • addDeviceFilter
      • applyParameters
      • captureCallback
      • checkCommand
      • checkParameter
      • clearDeviceFilter
      • closeDevice
      • deviceAddedCallback
      • deviceClosedCallback
      • deviceEventCallback
      • deviceFilterList
      • deviceId
      • deviceInfo
      • deviceOpenedCallback
      • deviceRemovedCallback
      • deviceState
      • deviceStatusChangedCallback
      • getCurrentFrame
      • getLastSnapshot
      • getMeasurementData
      • getParameter
      • getParameterDescriptor
      • getParameterList
      • getParameterNameList
      • getParameterValueInt
      • getSpecificFrame
      • isCapturing
      • isPreviouslyDisconnectedDevice
      • openDevice
      • parameterCategoryList
      • sendCommand
      • sendCommandBoolean
      • sendModelCommand
      • setParameter
      • setParameterValueInt
      • startCapture
      • stopCapture
      • takeSnapshot
      • takeSnapshotCallback
      • videoFormat
      • videoFormatList
      • waitForCapture
    • CaptureCallback
    • CaptureData
      • clone
      • data
      • frameCount
      • str
      • timestamp
    • CaptureImage
      • clone
      • compare
      • correctGamma
      • crop
      • data
      • downscale
      • downscaleTo
      • extractRoi
      • extractRoiWithColor
      • flip
      • flipTo
      • frameCount
      • fromBuffer
      • fromFile
      • fromNumpy
      • fromRawBuffer
      • fromYuvPlanes
      • getPixels
      • height
      • pad
      • pixelDepth
      • pixelFormat
      • reallocate
      • resize
      • resizeTo
      • rotate
      • rotateTo
      • set
      • stride
      • timestamp
      • toBuffer
      • toBufferObject
      • toFile
      • toNumpy
      • toRawBuffer
      • transpose
      • width
    • DataStatBandwidth
      • addData
      • decKeepAlive
      • getBandwidth
      • getBps
      • setDataStatSize
    • DataStatMovingAverage
      • addData
      • getAverage
      • setDataStatSize
    • DeviceCaptureStatus
    • DeviceCaptureStatusChangedCallback
    • DeviceChannel
      • addDeviceFilter
      • applyParameters
      • checkCommand
      • checkParameter
      • clearDeviceFilter
      • closeDevice
      • deviceAddedCallback
      • deviceClosedCallback
      • deviceEventCallback
      • deviceFilterList
      • deviceId
      • deviceInfo
      • deviceOpenedCallback
      • deviceRemovedCallback
      • deviceState
      • getParameter
      • getParameterDescriptor
      • getParameterList
      • getParameterNameList
      • getParameterValueInt
      • isPreviouslyDisconnectedDevice
      • openDevice
      • parameterCategoryList
      • sendCommand
      • sendCommandBoolean
      • sendModelCommand
      • setParameter
      • setParameterValueInt
    • DeviceChannelList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • DeviceCommandCallback
    • DeviceEventCallback
    • DeviceInfo
      • commandCallback
      • deviceId
      • deviceState
      • deviceType
      • getCommandCallbackContext
      • lastErrorCode
      • link
      • model
      • mustBeDiscarded
      • name
    • DeviceInfoList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • DeviceManager
      • addPluginPath
      • checkDeviceModel
      • configure
      • deviceAddedCallback
      • deviceChannelList
      • deviceCount
      • deviceModelCount
      • deviceModelList
      • deviceRemovedCallback
      • deviceTypeList
      • doEvent
      • freePlugin
      • getDeviceInfo
      • getDeviceInfoList
      • getDeviceInfoListByType
      • getDeviceLink
      • getDeviceModelName
      • getDeviceName
      • getDeviceType
      • loadPlugin
      • onDeviceEvent
      • onDeviceListChanged
      • plugAndPlugEnabled
      • pluginList
      • registerDeviceModel
      • sendDeviceCommand
      • sendDeviceModelCommand
      • setPluginDescription
      • setPluginVersion
      • start
      • stop
      • unregisterDeviceModel
    • DeviceModel
      • addUsbVendorId
      • commandCallback
      • description
      • deviceType
      • name
    • DeviceModelCommandCallback
    • DeviceModelList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • DeviceParameter
      • automatic
      • clear
      • getParameterNameString
      • parameterName
      • parameterType
      • valueAsInt
      • valueAsString
    • DeviceParameterDescriptor
      • automatic
      • category
      • clear
      • defaultValue
      • flagCapability
      • getParameterNameString
      • multiplicator
      • parameterName
      • parameterType
      • range
      • stringList
      • valueAsInt
      • valueAsString
    • DeviceParameterList
      • add
      • clear
      • count
      • findValueInt
      • get
      • getCount
      • removeAt
      • resize
      • set
    • DeviceParameterRange
      • max
      • min
      • step
    • DeviceSelectedCallback
    • DeviceState
    • DeviceType
    • DeviceTypeList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • DevicesError
    • DevicesException
    • DevicesJson
      • add
      • clear
      • containsKey
      • count
      • dumpToString
      • get
      • getCount
      • keys
      • parse
      • remove
      • set
    • DevicesLibrary
      • getVersion
      • getVersionXyz
    • DevicesLicense
      • activate
      • activateActivationKey
      • activateActivationKeyBuffer
      • activateBuffer
      • activateSerialKey
      • activateSerialKeyBuffer
      • checkLicense
      • checkLicenseBuffer
      • checkLicenseBufferWithCard
      • checkLicenseWithCard
      • checkModule
      • encrypt
      • finalizeCheckLicenseWithCard
      • getApplicationHardwareCode
      • getExpiryDate
      • getExternalDriveHardwareCode
      • getHostHardwareCode
      • getLicenseComment
      • getLicenseFileHardwareCode
      • getLicenseFileSerial
      • getLicenseName
      • getLicenseOwner
      • getLicensePath
      • getLicenseType
      • getModuleCount
      • getModuleName
      • getModuleValue
      • getProductReference
      • getRemainingDays
      • reactivate
      • reactivateBuffer
    • ExtendedCamera
      • addDeviceFilter
      • applyParameters
      • captureCallback
      • checkCommand
      • checkParameter
      • clearDeviceFilter
      • closeDevice
      • deviceAddedCallback
      • deviceClosedCallback
      • deviceEventCallback
      • deviceFilterList
      • deviceId
      • deviceInfo
      • deviceOpenedCallback
      • deviceRemovedCallback
      • deviceState
      • deviceStatusChangedCallback
      • enableStream
      • getCurrentFrame
      • getCurrentFrameset
      • getLastSnapshot
      • getMeasurementData
      • getParameter
      • getParameterDescriptor
      • getParameterList
      • getParameterNameList
      • getParameterValueInt
      • getSpecificFrame
      • getStreamStatus
      • getSupportedStreams
      • isCapturing
      • isPreviouslyDisconnectedDevice
      • openDevice
      • parameterCategoryList
      • sendCommand
      • sendCommandBoolean
      • sendModelCommand
      • setParameter
      • setParameterValueInt
      • startCapture
      • stopCapture
      • takeSnapshot
      • takeSnapshotCallback
      • videoFormat
      • videoFormatList
      • waitForCapture
    • Frameset
      • callback
      • clearOptions
      • deviceId
      • executeCommand
      • getFrame
      • options
      • picture
      • process
    • FramesetCallback
    • ImageBuffer
      • clone
      • getData
      • getPixels
    • ImageError
    • ImageFormat
    • LibVersion
      • build
      • major
      • minor
    • LicenseError
    • LicenseHardwareCodeType
    • LicenseType
    • MeasurementData
      • getDataFloat
      • getDataInt
      • setDataFloat
      • setDataInt
    • MessageLoopMode
    • ParameterFlagCapability
    • ParameterType
    • PixelFormat
    • PlayMode
    • PlugAndPlayCallback
    • PluginInfo
      • description
      • name
      • path
      • version
    • PluginList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • Point
      • x
      • y
    • PointList
      • add
      • clear
      • clone
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • Rectangle
      • bottomLeft
      • bottomRight
      • clipInsideImage
      • clone
      • extend
      • fromPoints
      • fromXywh
      • fromXyxy
      • getEnglobingRectangle
      • getHeight
      • getWidth
      • getX
      • getY
      • isAligned
      • resize
      • topLeft
      • topRight
    • SignaturePad
      • addDeviceFilter
      • applyParameters
      • captureCallback
      • checkCommand
      • checkParameter
      • clearDeviceFilter
      • closeDevice
      • deviceAddedCallback
      • deviceClosedCallback
      • deviceEventCallback
      • deviceFilterList
      • deviceId
      • deviceInfo
      • deviceOpenedCallback
      • deviceRemovedCallback
      • deviceState
      • deviceStatusChangedCallback
      • getCurrentFrame
      • getLastSnapshot
      • getParameter
      • getParameterDescriptor
      • getParameterList
      • getParameterNameList
      • getParameterValueInt
      • isCapturing
      • isPreviouslyDisconnectedDevice
      • openDevice
      • parameterCategoryList
      • sendCommand
      • sendCommandBoolean
      • sendModelCommand
      • setParameter
      • setParameterValueInt
      • showDisclaimer
      • startCapture
      • stopCapture
      • takeSnapshotCallback
      • waitForCapture
    • StringBuffer
      • clear
      • getValueString
      • value
    • StringList
      • add
      • addFirst
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • ThreadCmd
      • commandCallback
      • getCmdSemaphore
      • getLoopFlag
      • getStopEvent
      • processCallback
      • processFifoCmd
      • sendCmd
      • sendCmdBuffer
      • sendCmdParam
      • sendCmdWithEvent
      • setCommandFifoSize
      • setThreadPriority
      • setThreadWorkerWait
      • startThread
      • stopThread
      • waitForCmdEnded
      • workerCallback
    • ThreadCommandCallback
    • ThreadCommandData
      • buffer
      • command
      • param
    • ThreadProcessCallback
    • ThreadProcessState
    • ThreadWorkerCallback
    • VideoFile
      • addDeviceFilter
      • applyParameters
      • checkCommand
      • checkParameter
      • clearDeviceFilter
      • closeDevice
      • deviceAddedCallback
      • deviceClosedCallback
      • deviceEventCallback
      • deviceFilterList
      • deviceId
      • deviceInfo
      • deviceOpenedCallback
      • deviceRemovedCallback
      • deviceState
      • deviceStatusChangedCallback
      • getCurrentFrame
      • getLastSnapshot
      • getMeasurementData
      • getParameter
      • getParameterDescriptor
      • getParameterList
      • getParameterNameList
      • getParameterValueInt
      • isPlaying
      • isPreviewing
      • isPreviouslyDisconnectedDevice
      • loadFile
      • loadStream
      • openDevice
      • parameterCategoryList
      • pause
      • play
      • playMode
      • position
      • previewCallback
      • sendCommand
      • sendCommandBoolean
      • sendModelCommand
      • setParameter
      • setParameterValueInt
      • startPreview
      • stop
      • stopPreview
      • takeSnapshot
      • takeSnapshotCallback
      • unload
      • waitForPreview
    • VideoFormat
      • codec
      • framerate
      • height
      • name
      • value
      • width
    • VideoFormatList
      • add
      • clear
      • count
      • findNearestVideoFormat
      • get
      • getCount
      • removeAt
      • resize
      • set
  • FingerCapture API
    • CaptureModeList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • FingerCaptureDeviceVendor
    • FingerCaptureError
    • FingerCaptureException
    • FingerCaptureLibrary
      • getVersion
      • getVersionXyz
    • FingerCaptureMode
    • FingerCaptureStatus
    • FingerCaptureStatusCallback
    • FingerPositionFlags
    • FingerPositionList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • FingerScanner
      • addDeviceFilter
      • applyParameters
      • autoCapture
      • autoDetect
      • autoProcess
      • capabilities
      • captureMode
      • captureModes
      • checkCaptureCapability
      • checkCommand
      • checkParameter
      • clearDeviceFilter
      • closeDevice
      • deviceAddedCallback
      • deviceClosedCallback
      • deviceEventCallback
      • deviceFilterList
      • deviceId
      • deviceInfo
      • deviceOpenedCallback
      • deviceRemovedCallback
      • deviceState
      • deviceStatusChangedCallback
      • fingerDetector
      • fingerExtractor
      • getCapability
      • getCapturedImage
      • getCurrentFrame
      • getLastSnapshot
      • getParameter
      • getParameterDescriptor
      • getParameterList
      • getParameterNameList
      • getParameterValueInt
      • getPreviewImage
      • imageCapturedCallback
      • imagePreviewCallback
      • isCapturing
      • isPreviouslyDisconnectedDevice
      • openDevice
      • parameterCategoryList
      • previewImageFormat
      • sendCommand
      • sendCommandBoolean
      • sendModelCommand
      • setParameter
      • setParameterValueInt
      • startCapture
      • stopCapture
      • takeSnapshot
      • waitForCapture
  • Finger API
    • DetectedFinger
      • bounds
      • clone
      • detectionScore
      • fromBuffer
      • id
      • position
      • toBuffer
    • DetectedFingerList
      • add
      • clear
      • clone
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • FingerCandidate
      • clone
      • id
      • score
    • FingerCandidateList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
      • setTemplateRecord
    • FingerCaptureDeviceCertification
    • FingerCaptureDeviceCertificationList
      • add
      • clear
      • clone
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • FingerCaptureDeviceTechnology
    • FingerDataFormat
    • FingerDataFormats
      • fingerEmbeddingDataFormat
      • minutiaeDataFormat
      • minutiaeEmbeddingsDataFormat
    • FingerDetector
      • confidenceThreshold
      • detectContactless
      • detectSlap
      • extractFingers
      • threadCount
    • FingerError
    • FingerException
    • FingerExtractor
      • createTemplate
      • createTemplateRecord
      • minutiaDetectorModel
      • minutiaEncoderModel
      • threadCount
    • FingerImage
      • acquisitionLevel
      • captureDeviceCertificationList
      • captureDeviceTechnology
      • captureDeviceType
      • captureDeviceVendorId
      • cbeffProductId
      • clone
      • compare
      • compressionAlgorithm
      • correctGamma
      • crop
      • data
      • detectedFingerList
      • downscale
      • downscaleTo
      • extractFinger
      • extractRoi
      • extractRoiWithColor
      • fingerCount
      • flip
      • flipTo
      • fromBuffer
      • fromFile
      • fromNumpy
      • fromRawBuffer
      • fromYuvPlanes
      • getPixels
      • height
      • horizontalResolution
      • horizontalScanResolution
      • impressionType
      • pad
      • pixelDepth
      • pixelFormat
      • position
      • quality
      • qualityAlgorithmId
      • qualityAlgorithmVendorId
      • reallocate
      • rescale
      • resize
      • resizeTo
      • rotate
      • rotateTo
      • set
      • setResolution
      • stride
      • templateRecord
      • toBuffer
      • toBufferObject
      • toFile
      • toNumpy
      • toRawBuffer
      • transpose
      • verticalResolution
      • verticalScanResolution
      • viewNumber
      • width
    • FingerImageCompressionAlgorithm
    • FingerImageRecord
      • add
      • clear
      • clone
      • count
      • fromBuffer
      • fromFile
      • get
      • getCount
      • removeAt
      • resize
      • set
      • toBuffer
      • toFile
    • FingerImageRecordFormat
    • FingerImageScaleUnit
    • FingerImpressionType
    • FingerIndexer
      • add
      • addFromEmbedding
      • create
      • format
      • fromBuffer
      • fromFile
      • getIds
      • maximumUserCount
      • remove
      • resize
      • search
      • searchFromEmbedding
      • threadCount
      • toBuffer
      • toFile
      • userCount
    • FingerLibrary
      • getVersion
      • getVersionEx
      • loadModel
      • loadModelBuffer
      • unloadModel
    • FingerLicense
      • activate
      • activateActivationKey
      • activateActivationKeyBuffer
      • activateBuffer
      • activateSerialKey
      • activateSerialKeyBuffer
      • checkLicense
      • checkLicenseBuffer
      • checkLicenseBufferWithCard
      • checkLicenseWithCard
      • checkModule
      • finalizeCheckLicenseWithCard
      • getExpiryDate
      • getExternalDriveHardwareCode
      • getHostHardwareCode
      • getLicenseFileHardwareCode
      • getLicenseFileSerial
      • getLicenseName
      • getLicenseOwner
      • getLicensePath
      • getLicenseType
      • getModuleCount
      • getModuleName
      • getModuleValue
      • getProductReference
      • getRemainingDays
      • reactivate
      • reactivateBuffer
    • FingerMatchDetails
      • indexInProbe
      • indexInReference
      • minutiaPairList
      • score
    • FingerMatchDetailsList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • FingerMatcher
      • compareTemplateRecords
      • compareTemplateRecordsInDetails
      • compareTemplates
      • compareTemplatesInDetails
      • maximumRotation
      • minexOnly
      • minutiaPatchOnly
      • multiscaleMatch
      • normalizedScores
      • search
    • FingerMatcherThreshold
    • FingerMinutia
      • angle
      • clone
      • quality
      • ridgeType
      • x
      • y
    • FingerMinutiaList
      • add
      • clear
      • clone
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • FingerMinutiaPair
      • probeIndex
      • referenceIndex
      • score
    • FingerMinutiaPairList
      • add
      • clear
      • clone
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • FingerMinutiaRidgeType
    • FingerModel
    • FingerNfiq
      • computeNfiq1
    • FingerPad
      • computeLivenessScore
      • model
      • threadCount
    • FingerPosition
    • FingerTemplate
      • captureDeviceCertificationList
      • captureDeviceTechnology
      • captureDeviceType
      • captureDeviceVendorId
      • cbeffProductId
      • clone
      • dataFormats
      • extendedData
      • fromBuffer
      • fromFile
      • horizontalResolution
      • imageHeight
      • imageWidth
      • impressionType
      • minutiaList
      • position
      • prune
      • quality
      • qualityAlgorithmId
      • qualityAlgorithmVendorId
      • ridgeEndingType
      • toBdt
      • toBit
      • toBuffer
      • toFile
      • verticalResolution
      • viewNumber
    • FingerTemplateDict
      • add
      • clear
      • containsKey
      • count
      • get
      • getCount
      • keys
      • remove
      • set
    • FingerTemplateFormat
    • FingerTemplateRecord
      • add
      • clear
      • clone
      • count
      • fromBuffer
      • fromFile
      • get
      • getCount
      • removeAt
      • resize
      • set
      • toBuffer
      • toFile
    • FingerWsq
      • decodeFromBuffer
      • decodeFromFile
      • encodeToBuffer
      • encodeToFile
    • ImageBuffer
      • clone
      • getData
      • getPixels
    • ImageError
    • ImageFormat
    • IntList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • LibVersion
      • build
      • major
      • minor
    • LicenseError
    • LicenseHardwareCodeType
    • LicenseType
    • MocThreshold
    • PixelFormat
    • Point
      • x
      • y
    • PointList
      • add
      • clear
      • clone
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set
    • PoolingMethod
    • ProcessingUnit
    • PruningMethod
    • Rectangle
      • bottomLeft
      • bottomRight
      • clipInsideImage
      • clone
      • extend
      • fromPoints
      • fromXywh
      • fromXyxy
      • getEnglobingRectangle
      • getHeight
      • getWidth
      • getX
      • getY
      • isAligned
      • resize
      • topLeft
      • topRight
    • StringList
      • add
      • clear
      • count
      • get
      • getCount
      • removeAt
      • resize
      • set

ABOUT

  • License Agreement
  • Third-Party Libraries
  • Terms and Definitions
Back to top

One-To-Many (1:N) Search¶

One-to-many (or 1-to-N) search is the process in which a probe template is searched against a large database of reference templates. It should return a candidate list of the closest matches in the database.

Note

  • For small databases (up to 100 templates), The FingerMatcher module provides a search method that performs exhaustive matches against the reference list.

For large databases (over 100 templates), the FingerIndexer module offers a more efficient way of performing a one-to-many search.

The 1:N search using FingerIndexer is separated in 2 steps :

  • A coarse search using the FingerIndexer, which returns a list of potential candidates, but with no interpretable scores.

  • A fine search on this list using the normal FingerMatcher, to reorder and compute usable match scores.

Storage¶

The user must handle the storage of 2 different objects :

  • The binary file of the FingerIndexer, which must be loaded in the SDK Runtime.

  • A database of the ISO templates of each user. For scalability reasons, these are not loaded entirely in RAM: it is up to the user to retrieve only the necessary ones after the first coarse search step.

Constructing a finger index¶

../_images/FingerIndexer_create.png

The example below demonstrates how to construct a Finger Indexer:

# Load models
id3.FingerLibrary.load_model(MODELS_PATH, id3.FingerModel.FINGER_ALIGNER_1A, id3.ProcessingUnit.CPU)
id3.FingerLibrary.load_model(MODELS_PATH, id3.FingerModel.FINGER_ENCODER_1A, id3.ProcessingUnit.CPU)
id3.FingerLibrary.load_model(MODELS_PATH, id3.FingerModel.FINGER_MINUTIA_DETECTOR_3B, id3.ProcessingUnit.CPU)

# --------------- Indexer creation ----------------

# Create FingerIndexer
finger_indexer = id3.FingerIndexer.create(1000, id3.FingerDataFormat.FINGER_EMBEDDING_V1_A)

# Loop on users
for user in tqdm(range(100)):
    file_path = f"finger_image_records/{user}_1.fir"
    image_record = id3.FingerImageRecord.from_file(id3.FingerImageRecordFormat.ISO19794_4_2005, file_path)
    finger_indexer.add(image_record, user)

print("Successfully enrolled {} users".format(finger_indexer.user_count))

# Save FingerIndexer
finger_indexer.to_file("id3_finger_indexer.bin")

Searching in the index¶

../_images/FingerIndexer_search.png

The example below demonstrates how to search for a fingerprint using the index:

# Load FingerIndexer
finger_indexer = id3.FingerIndexer.from_file("id3_finger_indexer.bin")

extractor = id3.FingerExtractor()
matcher = id3.FingerMatcher()

# Parameters
K_CANDIDATES = 10
TRUST_POSITIONS = False

# Coarse search : genuine user 35
probe_path = f"finger_image_records/35_1.fir"
probe_image_record = id3.FingerImageRecord.from_file(id3.FingerImageRecordFormat.ISO19794_4_2005, probe_path)
candidate_list = finger_indexer.search(probe_image_record, K_CANDIDATES, TRUST_POSITIONS)

# Loop on candidates
for index, candidate in enumerate(candidate_list):
    # Retrieve candidate image record
    candidate_path = f"finger_image_records/{candidate.id}_1.fir"
    candidate_image_record = id3.FingerImageRecord.from_file(id3.FingerImageRecordFormat.ISO19794_4_2005, candidate_path)

    # Extract (or retrieve in database) the ISO template record
    candidate_template_record = extractor.create_template_record(candidate_image_record)

    # Fill it in the candidate list
    candidate_list.set_template_record(index, candidate_template_record)

# Extract (or retrieve in database) the ISO template record of the probe
probe_template_record = extractor.create_template_record(probe_image_record)

# Fine grain search to reorder candidate list and compute interpretable scores
final_candidates = matcher.search(probe_template_record, candidate_list, TRUST_POSITIONS)

# Use the result
for candidate in final_candidates:
    status = "[Match]    " if candidate.score > id3.FingerMatcherThreshold.FMR10000 \
        else "[Non-match]"
    
    print("{} : Found user {} with score {}".format(status, candidate.id, candidate.score))

See also¶

  • FingerExtractor Class

  • FingerIndexer Class

  • FingerMatcher Class

Next
Contactless fingerprints
Previous
On-Card Comparison
Copyright © 2025, id3 Technologies
Made with Furo
On this page
  • One-To-Many (1:N) Search
    • Storage
    • Constructing a finger index
    • Searching in the index
    • See also