Pairing

Pairing, a part of algorithm transparency, is a list of minutia pairs, one minutia from probe fingerprint and one from candidate fingerprint, constructed during matching several times, once for every root pair. First pair in the pairing is the root pair. Other pairs are found recursively by comparing edges from edge tables of both fingerprints. Minutiae thus form a tree, structured the same way in both fingerprints, that shows path from root pair to every minutia pair in the pairing. Besides minutia pairs and edges that link them to parent pair, pairing also includes list of supporting edges that would lead to the same pairing. Every pairing is scored and the best match is selected.

KeywordSuffixZip
pairing.json080-pairing.json
pairing.json082-pairing.json
... skipped 48 files ...
pairing.json180-pairing.json
pairing.json182-pairing.json

Visualization

Visualization of pairing tree was constructed from this stage's json data and shuffled minutiae (for probe and candidate) with original fingerprint images in the background (for probe and candidate). Since pairings appear several times in transparency data, the best one was chosen for visualization according to best match data. Visualization itself is not part of transparency data.

Pairing tree for probe fingerprint, including supporting edges Pairing tree for 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.

Json

Json data describes the fully constructed pairing consisting of three parts:

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

Example: 080-pairing.json

{
  "root": {
    "probe": 0,
    "candidate": 2
  },
  "tree": [
    {
      "probeFrom": 0,
      "probeTo": 1,
      "candidateFrom": 2,
      "candidateTo": 28
    },
    {
      "probeFrom": 1,
      "probeTo": 18,
      "candidateFrom": 28,
      "candidateTo": 30
    },
    {
      "probeFrom": 18,
      "probeTo": 31,
      "candidateFrom": 30,
      "candidateTo": 12
    },
    {
      "probeFrom": 31,
      "probeTo": 4,
      "candidateFrom": 12,
      "candidateTo": 20
    },

... skipped 928 lines ...

      "probeTo": 37,
      "candidateFrom": 20,
      "candidateTo": 13
    },
    {
      "probeFrom": 0,
      "probeTo": 18,
      "candidateFrom": 2,
      "candidateTo": 30
    },
    {
      "probeFrom": 4,
      "probeTo": 34,
      "candidateFrom": 20,
      "candidateTo": 4
    },
    {
      "probeFrom": 44,
      "probeTo": 28,
      "candidateFrom": 22,
      "candidateTo": 36
    },
    {
      "probeFrom": 2,
      "probeTo": 28,
      "candidateFrom": 19,
      "candidateTo": 36
    }
  ]
}