Edge table

SourceAFIS » Algorithm » Transparency » Edge table

Edge table, a part of algorithm transparency, is a list of the closest few neighbor minutiae for every reference minutia in fingerprint template. It is computed from shuffled minutiae during feature extraction or from saved template during json template deserialization.

For every pair of reference and neighbor minutia, edge table contains an edge that identifies neighbor minutia (reference minutia is implicit from table structure) and describes edge shape: edge length, relative reference and relative neighbor direction. Edge shape is a translation-invariant and rotation-invariant fingerprint feature suitable for matching. Edges are sorted by length for faster lookup during matching. Edge table is used to efficiently construct pairings.

KeyMIMEFilename in ZIP
edge-tableapplication/cbor043-edge-table.cbor

Visualization

Visualization of edge table was constructed from this stage's CBOR data and shuffled minutiae with original fingerprint image in the background. Visualization itself is not part of transparency data.

Edge table visualized as a set of lines connecting minutiae with line color indicating edge length and minutia angles
Every line represents an edge in the edge table. Line is thicker when the edge exists in both directions. Color hue is computed from angle between minutia and the edge. Every line has two colors, one for every minutia. Shorter edges are brighter. Overall edge color represents shape of the edge. Similar color means similar edge.

Format

Edge table is a CBOR-encoded data structure. It is an array containing one item for every minutia in the final template after shuffling or deserialization. Every item in the main array (corresponding to one minutia) is itself an array of edges starting at that minutia (the reference minutia). Several properties define the edge:

Example: 043-edge-table.cbor

[
  [
    {
      "length": 21,
      "referenceAngle": 0.6719631,
      "neighborAngle": 3.8559034,
      "neighbor": 1
    },
    {
      "length": 70,
      "referenceAngle": 1.4748352,
      "neighborAngle": 4.5725965,
      "neighbor": 17
    },
    "... skipped 5 items ...",
    {
      "length": 112,
      "referenceAngle": 1.3831979,
      "neighborAngle": 1.2000868,
      "neighbor": 4
    },
    {
      "length": 116,
      "referenceAngle": 2.0466647,
      "neighborAngle": 5.05273,
      "neighbor": 10
    }
  ],
  [
    {
      "length": 21,
      "referenceAngle": 3.8559034,
      "neighborAngle": 0.6719631,
      "neighbor": 0
    },
    {
      "length": 57,
      "referenceAngle": 1.7825569,
      "neighborAngle": 4.8379707,
      "neighbor": 17
    },
    "... skipped 5 items ...",
    {
      "length": 97,
      "referenceAngle": 2.024568,
      "neighborAngle": 4.988286,
      "neighbor": 25
    },
    {
      "length": 113,
      "referenceAngle": 2.2707381,
      "neighborAngle": 5.2344556,
      "neighbor": 10
    }
  ],
  "... skipped 42 items ...",
  [
    {
      "length": 10,
      "referenceAngle": 5.1150436,
      "neighborAngle": 3.788351,
      "neighbor": 9
    },
    {
      "length": 28,
      "referenceAngle": 5.419175,
      "neighborAngle": 3.2483287,
      "neighbor": 26
    },
    "... skipped 5 items ...",
    {
      "length": 70,
      "referenceAngle": 2.071178,
      "neighborAngle": 1.3714592,
      "neighbor": 43
    },
    {
      "length": 80,
      "referenceAngle": 2.4249713,
      "neighborAngle": 4.817624,
      "neighbor": 2
    }
  ],
  [
    {
      "length": 21,
      "referenceAngle": 2.1128392,
      "neighborAngle": 5.005873,
      "neighbor": 39
    },
    {
      "length": 22,
      "referenceAngle": 4.287262,
      "neighborAngle": 1.2433962,
      "neighbor": 19
    },
    "... skipped 5 items ...",
    {
      "length": 43,
      "referenceAngle": 5.9717894,
      "neighborAngle": 3.2709477,
      "neighbor": 37
    },
    {
      "length": 44,
      "referenceAngle": 3.4917045,
      "neighborAngle": 0.20048463,
      "neighbor": 21
    }
  ]
]