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, from deserialized minutiae during json template deserialization, or from ISO template minutiae during ISO 19794-2 template conversion.

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.

KeywordSuffixZip
edge-table.json077-edge-table.json

Visualization

Visualization of edge table was constructed from this stage's json 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.

Json

Json data contains an array with one entry for every minutia in the final template after shuffling. When the template is deserialized, there is one entry for every deserialized minutia.

Every minutia entry in the main array is itself an array of edges starting at that minutia (the reference minutia). Several properties define the edge:

Example: 077-edge-table.json

[
  [
    {
      "neighbor": 1,
      "length": 21,
      "referenceAngle": 0.6719631715902321,
      "neighborAngle": 3.855903374200601
    },
    {
      "neighbor": 18,
      "length": 70,
      "referenceAngle": 1.474835284433555,
      "neighborAngle": 4.5725963802977105
    },
    {
      "neighbor": 13,
      "length": 81,
      "referenceAngle": 1.078409199707422,
      "neighborAngle": 1.0345776419817838
    },
    {
      "neighbor": 30,
      "length": 83,
      "referenceAngle": 2.599634692994522,
      "neighborAngle": 2.7595478161527414
    },
    {
      "neighbor": 31,
      "length": 94,
      "referenceAngle": 1.535238198183439,

... skipped 2,574 lines ...

      "length": 40,
      "referenceAngle": 3.9909603567990795,
      "neighborAngle": 0.8985889983276218
    },
    {
      "neighbor": 25,
      "length": 41,
      "referenceAngle": 0.53036116387767,
      "neighborAngle": 3.863741959454168
    },
    {
      "neighbor": 9,
      "length": 43,
      "referenceAngle": 2.1238036751406213,
      "neighborAngle": 1.7791563595225952
    },
    {
      "neighbor": 39,
      "length": 43,
      "referenceAngle": 5.971789412280884,
      "neighborAngle": 3.2709476064705125
    },
    {
      "neighbor": 22,
      "length": 44,
      "referenceAngle": 3.491704395692307,
      "neighborAngle": 0.20048469388940915
    }
  ]
]