computeLuminosityAndContrast static method
Computes average normalized luminosity and RMS contrast score.
Implementation
static Map<String, double> computeLuminosityAndContrast(
Uint8List gray,
int width,
int height,
) {
if (gray.isEmpty) {
return {'luminosity': 0.5, 'contrast': 0.0};
}
int sum = 0;
int step = (gray.length ~/ 1000).clamp(1, 100);
int count = 0;
for (int i = 0; i < gray.length; i += step) {
sum += gray[i];
count++;
}
final avgLuma = count > 0 ? (sum / count) / 255.0 : 0.5;
// Calculate RMS contrast (standard deviation)
double varSum = 0.0;
final meanVal = avgLuma * 255.0;
for (int i = 0; i < gray.length; i += step) {
final diff = gray[i] - meanVal;
varSum += diff * diff;
}
final contrast = count > 0 ? math.sqrt(varSum / count) / 128.0 : 0.0;
return {'luminosity': avgLuma, 'contrast': contrast};
}