Pairing graph in SourceAFIS transparency data

SourceAFIS » Algorithm » Transparency » Pairing graph

Pairing, a part of algorithm transparency, matches edges and minutiae between probe and candidate fingerprints. It consists of root minutia pair, tree edges, and support edges. This structure reflects nature of the matching algorithm that recursively expands the pairing by crawling probe and candidate edge tables starting from root minutia pair. Edges that lead to newly added minutiae become part of pairing tree while other matched edges are added to the list of support edges.

Every pairing is scored and the best match is selected. Best pairing is also recorded in transparency data under separate best-pairing key.

KeyMIMEFilename in ZIP
pairingapplication/cbor046-pairing.cbor
pairingapplication/cbor048-pairing.cbor
... skipped 56 files ...
pairingapplication/cbor162-pairing.cbor
pairingapplication/cbor164-pairing.cbor
best-pairingapplication/cbor166-best-pairing.cbor

Visualization

Visualization of pairing graph was constructed from best pairing's CBOR data and shuffled minutiae (for probe and candidate) with original fingerprint images in the background. Visualization itself is not part of transparency data.

Pairing tree for probe and candidate fingerprint, including supporting edges
Probe fingerprint is left, candidate is right. Blue points are root minutiae. Other minutiae are red. Green lines represent pairing tree. Yellow lines are supporting edges.

Format

Pairing is a CBOR-encoded data structure representing the fully constructed pairing that contains:

Both tree and support are lists of edges with the following structure:

Example: 166-best-pairing.cbor

{
  "root": {
    "probe": 1,
    "candidate": 26
  },
  "tree": [
    {
      "probeFrom": 1,
      "probeTo": 0,
      "candidateFrom": 26,
      "candidateTo": 1
    },
    {
      "probeFrom": 1,
      "probeTo": 17,
      "candidateFrom": 26,
      "candidateTo": 28
    },
    "... skipped 25 items ...",
    {
      "probeFrom": 7,
      "probeTo": 38,
      "candidateFrom": 35,
      "candidateTo": 34
    },
    {
      "probeFrom": 38,
      "probeTo": 9,
      "candidateFrom": 34,
      "candidateTo": 15
    }
  ],
  "support": [
    {
      "probeFrom": 0,
      "probeTo": 1,
      "candidateFrom": 1,
      "candidateTo": 26
    },
    {
      "probeFrom": 17,
      "probeTo": 1,
      "candidateFrom": 28,
      "candidateTo": 26
    },
    "... skipped 138 items ...",
    {
      "probeFrom": 9,
      "probeTo": 13,
      "candidateFrom": 15,
      "candidateTo": 4
    },
    {
      "probeFrom": 2,
      "probeTo": 38,
      "candidateFrom": 17,
      "candidateTo": 34
    }
  ]
}