hammingDistancePercentageOfTwoArtifacts static method

double hammingDistancePercentageOfTwoArtifacts(
  1. Artifact inputGrid,
  2. Artifact templateGrid
)

Calculates the normalized Hamming distance between two matrices.

Returns a double value between 0 and 1, where:

  • 1.0 indicates perfect similarity (no differences)
  • 0.0 indicates maximum dissimilarity

Implementation

static double hammingDistancePercentageOfTwoArtifacts(
  final Artifact inputGrid,
  final Artifact templateGrid,
) {
  if (inputGrid.cols != templateGrid.cols) {
    return 0;
  }
  if (inputGrid.rows != templateGrid.rows) {
    return 0;
  }

  int matchingPixels = 0;
  int totalPixels = 0;

  for (int y = 0; y < inputGrid.rows; y++) {
    for (int x = 0; x < inputGrid.cols; x++) {
      if (inputGrid.cellGet(x, y) || templateGrid.cellGet(x, y)) {
        totalPixels++;
        if (inputGrid.cellGet(x, y) == templateGrid.cellGet(x, y)) {
          matchingPixels++;
        }
      }
    }
  }

  if (totalPixels == 0) {
    return 0.0;
  }

  return matchingPixels / totalPixels;
}