compute method

  1. @override
double compute(
  1. Image image
)
override

Implementation

@override
double compute(img.Image image) {
  double sum = 0;
  final width = image.width;
  final height = image.height;

  for (int y = 1; y < height - 1; y++) {
    for (int x = 1; x < width - 1; x++) {
      final pixel1 = pixelToGray(image, x - 1, y);
      final pixel2 = pixelToGray(image, x + 1, y);
      final pixel3 = pixelToGray(image, x, y - 1);
      final pixel4 = pixelToGray(image, x, y + 1);

      final dx = pixel2 - pixel1;
      final dy = pixel4 - pixel3;
      final difference = sqrt(dx * dx + dy * dy);

      sum += difference * difference;
    }
  }

  // Normalize the result
  return sum / ((width - 2) * (height - 2));
}