Revert to same quantization thresholds as in upstream
This commit is contained in:
@@ -52,11 +52,8 @@ int adjustPixel(int gray) {
|
||||
|
||||
return gray;
|
||||
}
|
||||
// Simple quantization without dithering — evenly-spaced midpoint thresholds for factory LUT
|
||||
// Simple quantization without dithering — thresholds tuned to X4 display brightness
|
||||
uint8_t quantizeSimple(int gray) {
|
||||
// Midpoint thresholds for 4 levels would be: 0-63=0, 64-127=1, 128-191=2, 192-255=3
|
||||
// Crosspoint thresholds for 4 levels: 0-44=0, 45-69=1, 70-139=2, 140-255=3
|
||||
// (slightly brighter to compensate for quantization)
|
||||
if (gray < 45) {
|
||||
return 0;
|
||||
} else if (gray < 70) {
|
||||
|
||||
@@ -127,21 +127,21 @@ class AtkinsonDitherer {
|
||||
if (adjusted < 0) adjusted = 0;
|
||||
if (adjusted > 255) adjusted = 255;
|
||||
|
||||
// Quantize to 4 levels — evenly-spaced midpoint thresholds for factory LUT
|
||||
// Quantize to 4 levels — thresholds tuned to X4 display brightness
|
||||
uint8_t quantized;
|
||||
int quantizedValue;
|
||||
if (adjusted < 43) {
|
||||
if (adjusted < 30) {
|
||||
quantized = 0;
|
||||
quantizedValue = 0;
|
||||
} else if (adjusted < 128) {
|
||||
quantizedValue = 15;
|
||||
} else if (adjusted < 50) {
|
||||
quantized = 1;
|
||||
quantizedValue = 85;
|
||||
} else if (adjusted < 213) {
|
||||
quantizedValue = 30;
|
||||
} else if (adjusted < 140) {
|
||||
quantized = 2;
|
||||
quantizedValue = 170;
|
||||
quantizedValue = 80;
|
||||
} else {
|
||||
quantized = 3;
|
||||
quantizedValue = 255;
|
||||
quantizedValue = 210;
|
||||
}
|
||||
|
||||
// Calculate error (only distribute 6/8 = 75%)
|
||||
@@ -215,21 +215,21 @@ class FloydSteinbergDitherer {
|
||||
if (adjusted < 0) adjusted = 0;
|
||||
if (adjusted > 255) adjusted = 255;
|
||||
|
||||
// Quantize to 4 levels — evenly-spaced midpoint thresholds for factory LUT
|
||||
// Quantize to 4 levels — thresholds tuned to X4 display brightness
|
||||
uint8_t quantized;
|
||||
int quantizedValue;
|
||||
if (adjusted < 43) {
|
||||
if (adjusted < 30) {
|
||||
quantized = 0;
|
||||
quantizedValue = 0;
|
||||
} else if (adjusted < 128) {
|
||||
quantizedValue = 15;
|
||||
} else if (adjusted < 50) {
|
||||
quantized = 1;
|
||||
quantizedValue = 85;
|
||||
} else if (adjusted < 213) {
|
||||
quantizedValue = 30;
|
||||
} else if (adjusted < 140) {
|
||||
quantized = 2;
|
||||
quantizedValue = 170;
|
||||
quantizedValue = 80;
|
||||
} else {
|
||||
quantized = 3;
|
||||
quantizedValue = 255;
|
||||
quantizedValue = 210;
|
||||
}
|
||||
|
||||
// Calculate error
|
||||
|
||||
Reference in New Issue
Block a user