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.
Key | MIME | Filename in ZIP |
---|---|---|
edge-table | application/cbor | 043-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.
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:
neighbor
- Offset of the minutia where the edge ends (the neighbor minutia).length
- Edge length or distance between reference and neighbor minutiae measured in pixels on scaled image.referenceAngle
- Angle between reference minutia and the edge. This angle is zero when reference minutia points to neighbor minutia and increases clockwise.neighborAngle
- Angle between neighbor minutia and the edge. This angle is zero when neighbor minutia points to reference minutia and increases clockwise.
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 } ] ]