gammaCorrection static method

Uint8List gammaCorrection(
  1. Uint8List gray,
  2. int width,
  3. int height, {
  4. double gamma = 0.6,
})

Applies gamma correction for low-light brightness enhancement.

gamma — Gamma value. < 1.0 brightens (e.g., 0.5), > 1.0 darkens. Typical values: 0.4–0.7 for low-light enhancement.

Inspired by Apple Vision's auto-exposure compensation.

Implementation

static Uint8List gammaCorrection(
  Uint8List gray,
  int width,
  int height, {
  double gamma = 0.6,
}) {
  if (gray.isEmpty) return gray;

  // Build gamma LUT
  final lut = Uint8List(256);
  final invGamma = 1.0 / gamma;
  for (int i = 0; i < 256; i++) {
    lut[i] = (255.0 * math.pow(i / 255.0, invGamma)).round().clamp(0, 255);
  }

  final result = Uint8List(gray.length);
  for (int i = 0; i < gray.length; i++) {
    result[i] = lut[gray[i]];
  }
  return result;
}