Blocks in SourceAFIS transparency data

SourceAFIS » Algorithm » Transparency » Blocks

Blocks, a part of algorithm transparency, is a division of scaled image into blocks of approximately same size. It is computed during feature extraction. Two block grids are defined, called primary and secondary, that are shifted by half a block relative to each other.

Blocks are used extensively throughout the algorithm. They are used to compute local contrast and derived mask data, equalized image, block orientation and smoothed orientation, parallel smoothing and orthogonal smoothing, and binarized image and derived data. They are used in many places to optimize out calculations over areas outside of fingerprint mask.

KeyMIMEFilename in ZIP
blocksapplication/cbor004-blocks.cbor

Visualization

The following two visualizations were created from this stage's CBOR data overlaid on top of the original fingerprint image. Visualizations themselves are not part of transparency data.

Primary block grid is pictured blue. Secondary block grid is in the background as light gray lines.
Secondary block grid is pictured green. Primary block grid is in the background as light gray lines. Note that edge blocks are half the normal size. No block extends beyond image edges.

Format

Blocks are encoded as a CBOR data structure:

Both primary and secondary block grids have the same structure.

Positions are measured in pixels of the scaled image. Axis y starts at the top of the image and increases towards bottom. Axis x starts at the left edge of the image and increases to the right. This orientation of axes applies to both pixels and higher level blocks.

Example: 004-blocks.cbor

{
  "pixels": {
    "x": 388,
    "y": 374
  },
  "primary": {
    "blocks": {
      "x": 26,
      "y": 25
    },
    "corners": {
      "x": 27,
      "y": 26
    },
    "x": [
      0,
      14,
      "... skipped 23 items in range 29 to 358 ...",
      373,
      388
    ],
    "y": [
      0,
      14,
      "... skipped 22 items in range 29 to 344 ...",
      359,
      374
    ]
  },
  "secondary": {
    "blocks": {
      "x": 27,
      "y": 26
    },
    "corners": {
      "x": 28,
      "y": 27
    },
    "x": [
      0,
      7,
      "... skipped 24 items in range 21 to 365 ...",
      380,
      388
    ],
    "y": [
      0,
      7,
      "... skipped 23 items in range 21 to 351 ...",
      366,
      374
    ]
  }
}