Scan Format × Resolution — ICC Accuracy Study

8-bit scans only  ·  ColorRuler IT8.7/2 reflective target  ·  in-house ICC engine, high-precision read-out  ·  reference CR2026.01.13.txt  ·  generated 2026-09-16 11:07:21

1 · Executive summary

Baseline
0.2907
A_tiff_8bit_200dpi · ΔE2000 mean
Best cell
0.2552
A_tiff_8bit_800dpi
Worst cell
0.3039
A_jpg_8bit_200dpi
200→800 dpi
-12.2% … -9.1%
ΔE2000 change by format
JPEG vs TIFF
+5.3%
mean penalty across resolutions
Noise floor
0.0034
ΔE2000 |TIFF − PNG|, mean
Key findings
  • Resolution is the lever that actually moves accuracy. Across the sample set the ΔE2000 mean falls monotonically every time the sampling resolution doubles — about −5 % per step, TIFF: 200 dpi 0.2907 → 400 dpi 0.2756 → 800 dpi 0.2552  →  -12.2% overall
    PNG: 200 dpi 0.2908 → 400 dpi 0.2767 → 800 dpi 0.2642  →  -9.1% overall
    JPEG: 200 dpi 0.3039 → 400 dpi 0.2902 → 800 dpi 0.2705  →  -11.0% overall. Compare that with the format effect below and the priority is clear: if you can spend any budget at all, spend it on resolution.
  • TIFF and PNG are indistinguishable. Both containers are lossless, so this is the only pair in the study whose difference cannot come from the format. It averages 0.0034 in ΔE2000 — i.e. nothing. Choosing between them is purely a workflow decision.
  • JPEG costs a small but consistent amount of accuracy. Across the three resolutions JPEG sits +5.3% above TIFF on average — and it is above it at every resolution, which is what separates a real effect from scan noise. The magnitude cannot be fully isolated here, because this sample set contains no same-acquisition control pair (section 4), but the sign is trustworthy. A plausible mechanism is chroma subsampling: it introduces a bias rather than noise, so averaging the patch interior cannot remove it. Choosing JPEG is a reasonable trade — it is just not free.
  • The residual error is not a property of the file. The same patch IDs dominate every cell's worst-5 list (I16, K16, L20, C16), across all three containers and all three resolutions. That means the remaining error lives in the profile/engine, not in how the scan was stored — so no container choice will fix it.
  • 8-bit samples. Every sample in this study is an 8-bit scan; everything below describes what the engine does with the 8-bit files the web workflow receives in practice.

2 · Scope, method and limitations

Goal. Quantify how the scan container (format) and the scanning resolution affect the accuracy of profiles produced by this engine, using A_tiff_8bit_200dpi as the baseline cell (TIFF / 200 dpi / 8 bit).

Pipeline. Every cell goes through exactly the same code path as the web UI (service.pipeline.process_scan) with the same production recipe: grid=33 · base=adobe · wp=apex · bp=foot · axis_warp=0.6 · delta_tau=0.35 · delta_tau_far=0.22 · smoothing=1e-4. Nothing is retuned per cell; the input file is the only variable.

Metric. Only the high-precision read-out is reported: the generated A2B0 CLUT is read back at full precision and trilinearly interpolated (service.metrics.hi_precision). The usual LittleCMS judge is deliberately not used here — Pillow's 8-bit LAB quantises a/b to integers and injects a ≈0.69 ΔE76 noise floor, which is three times the size of the effects this study is trying to resolve.

Sample set. Nine scans of one chart — TIFF, PNG and JPEG at 200/400/800 dpi, all 8-bit — so three containers are available at every resolution and the format can be compared at a fixed resolution.

Fixed variables. One chart, one scanner, one paper; reference CR2026.01.13.txt (chart model colorruler) for every cell, so the comparison is internally consistent.

What this study can establish.

  • The relative accuracy of one container/resolution versus another for this chart, scanner, paper and engine recipe.
  • The size of the format effect compared with the re-scan (repeatability) floor, and with the resolution effect.

What it cannot establish, and why.

  • Absolute profile quality in general — one hardware/paper combination only. Absolute ΔE values also move with the reference batch; only the comparisons here are meaningful.
  • A fully isolated format effect. Section 4 shows that every file is an independent physical scan, so container and scan-to-scan variance are confounded. This sample set contains no same-acquisition pair, so the JPEG penalty can be shown to be consistent but not separated from acquisition variance by measurement.
  • Error bars. Single observation per cell; no repeats were supplied. Differences at or below the noise floor should not be read as real.

3 · Material inventory

CellGrpFormatPixelsMpxFile MBDeclaredActualDPI tagMD5 (12)
A_jpg_8bit_200dpiAJPEG1434×10491.500.18200 dpi / 8 bit8 bit200a6efb0ce1999
A_jpg_8bit_400dpiAJPEG2868×20986.020.75400 dpi / 8 bit8 bit4001eb7909fc1e5
A_jpg_8bit_800dpiAJPEG5736×419624.074.01800 dpi / 8 bit8 bit800994ea7818590
A_png_8bit_200dpiAPNG1434×10491.502.24200 dpi / 8 bit8 bit2004617ffb27d52
A_png_8bit_400dpiAPNG2868×20986.029.89400 dpi / 8 bit8 bit400fdee12fe3415
A_png_8bit_800dpiAPNG5736×419624.0743.64800 dpi / 8 bit8 bit8003dd26175886c
A_tiff_8bit_200dpiATIFF1434×10491.504.31200 dpi / 8 bit8 bit200a1212fe4ade3
A_tiff_8bit_400dpiATIFF2868×20996.0217.24400 dpi / 8 bit8 bit40042b799ccad1e
A_tiff_8bit_800dpiATIFF5736×419924.0968.94800 dpi / 8 bit8 bit8006a00bfc7906f

4 · Acquisition variance vs format effect

File AFile Bmean |Δ|p99maxΔE2000 mean A → B
A_png_8bit_200dpiA_tiff_8bit_200dpi2.05759.0027.00.2908 → 0.2907 (-0.0000)
A_jpg_8bit_200dpiA_tiff_8bit_200dpi2.400811.0047.00.3039 → 0.2907 (-0.0132)
A_jpg_8bit_200dpiA_png_8bit_200dpi2.462411.0053.00.3039 → 0.2908 (-0.0132)
A_png_8bit_400dpiA_tiff_8bit_400dpi2.688112.0045.00.2767 → 0.2756 (-0.0011)
A_jpg_8bit_400dpiA_png_8bit_400dpi3.001113.0049.00.2902 → 0.2767 (-0.0135)
A_jpg_8bit_400dpiA_tiff_8bit_400dpi3.081214.0047.00.2902 → 0.2756 (-0.0145)
A_jpg_8bit_800dpiA_png_8bit_800dpi4.850624.0073.00.2705 → 0.2642 (-0.0063)
A_png_8bit_800dpiA_tiff_8bit_800dpi5.414927.0097.00.2642 → 0.2552 (-0.0090)
A_jpg_8bit_800dpiA_tiff_8bit_800dpi5.664128.00112.00.2705 → 0.2552 (-0.0153)
Interpretation. Two lossless exports of one acquisition (TIFF and PNG) would be pixel-identical. They are not: at equal resolution the TIFF↔PNG pairs differ by roughly 3.39 grey levels on average, and the pairs that involve JPEG by about 3.58. That the two figures are nearly the same is the important part: adding a lossy container barely moves the pixel-level difference, because both numbers are dominated by scan-to-scan variance rather than by what the container does. Consistent with that, no pair in the set falls below one grey level — the level at which a single acquisition exported twice would land (≈0.8 measured on the wider 13-file run, against 2.1–5.7 for independent scans). Two consequences follow. First, the format comparison carries acquisition variance on top of the container effect, which is exactly why the lossless TIFF↔PNG spread is used as the noise floor in section 6.1. Second, with no same-acquisition control pair in the material, the JPEG penalty can be shown to be consistent but not fully separated from acquisition variance. Cross-resolution pairs are excluded from this table: two different resolutions are different rasters, so subtracting them pixel-wise measures framing, not quality.

Only same-resolution pairs are compared (9 of them, ordered by closeness); the full matrix including cross-resolution pairs is in plan.json.

5 · Results — every cell (high-precision read-out)

CellΔE76 meanΔE76 maxΔE2000 meanvs baselineΔE2000 max≤1≤2≤5ICC kBTime s
A_jpg_8bit_200dpi0.42194.420.3039+4.5%5.20275/288287/288287/288223.011.68
A_png_8bit_200dpi0.40683.930.2908+0.0%4.58273/288287/288288/288223.06.12
A_tiff_8bit_200dpi baseline0.40703.850.2907+0.0%4.43273/288287/288288/288223.06.20
A_jpg_8bit_400dpi0.41153.410.2902-0.2%3.94275/288287/288288/288223.08.25
A_png_8bit_400dpi0.39703.710.2767-4.8%3.51274/288287/288288/288223.07.27
A_tiff_8bit_400dpi0.39783.970.2756-5.2%3.44272/288287/288288/288223.07.08
A_jpg_8bit_800dpi0.38603.130.2705-6.9%3.72278/288287/288288/288223.011.79
A_png_8bit_800dpi0.38343.890.2642-9.1%2.95275/288287/288288/288223.011.40
A_tiff_8bit_800dpi0.35982.770.2552-12.2%3.01279/288287/288288/288223.010.49
ΔE2000 mean — lower is bettervalue
A_tiff_8bit_800dpi0.2552
A_png_8bit_800dpi0.2642
A_jpg_8bit_800dpi0.2705
A_tiff_8bit_400dpi0.2756
A_png_8bit_400dpi0.2767
A_jpg_8bit_400dpi0.2902
A_tiff_8bit_200dpi0.2907
A_png_8bit_200dpi0.2908
A_jpg_8bit_200dpi0.3039
All ICC profiles in this run are exactly the same size (223.0 kB): the CLUT grid is fixed at 33³ by the recipe, so file size carries no information about input quality.

6 · Per-dimension analysis

6.1 Format effect (ΔE2000 mean). The middle-right column is the calibration: TIFF and PNG are both lossless, so their difference is the scan-to-scan noise floor. Read the last column against it — a JPEG penalty that repeatably exceeds the floor, at every resolution, is a real format effect; one that scatters around the floor is not.

ResolutionTIFFPNGJPEGspreadlossless noise floor
(TIFF vs PNG)
JPEG − TIFF
200 dpi0.29070.29080.30390.01320.0000+0.0132 (+4.5%)
400 dpi0.27560.27670.29020.01450.0011+0.0145 (+5.3%)
800 dpi0.25520.26420.27050.01530.0090+0.0153 (+6.0%)

6.2 Resolution effect (ΔE2000 mean). All three containers are present at each resolution, so the trend can be read per container. Each step is a doubling of the linear resolution, i.e. four times the pixels averaged per patch.

Format200 dpi400 dpi800 dpi200→800step-to-step
TIFF0.29070.27560.2552-12.2%-5.2% → -7.4%
PNG0.29080.27670.2642-9.1%-4.8% → -4.5%
JPEG0.30390.29020.2705-11.0%-4.5% → -6.8%

7 · Cost of each setting

CellScan file MBΔE2000 meanMB per 0.001 ΔE2000Build time sΔE00 per MB
A_jpg_8bit_200dpi0.180.30390.011.681719.031
A_png_8bit_200dpi2.240.29080.06.12129.539
A_tiff_8bit_200dpi4.310.29070.06.2067.422
A_jpg_8bit_400dpi0.750.29020.08.25384.650
A_png_8bit_400dpi9.890.27670.07.2727.987
A_tiff_8bit_400dpi17.240.27560.17.0815.989
A_jpg_8bit_800dpi4.010.27050.011.7967.399
A_png_8bit_800dpi43.640.26420.211.406.054
A_tiff_8bit_800dpi68.940.25520.310.493.702
Best accuracy per megabyte: A_tiff_8bit_800dpi. Note the cross-over — a high-resolution JPEG can be smaller and more accurate than a low-resolution TIFF, so if storage is the binding constraint, raising resolution while switching to JPEG is strictly better than keeping TIFF at low resolution. The caveat is not accuracy but re-processability: JPEG is lossy, so the scan cannot be re-analysed later without generational loss. Also note that scan time on the device, not build time here, is what grows with resolution in practice — the engine's own time barely changes.

8 · Where the largest deviations sit

CellΔE2000 maxWorst patchTop 5 patches (ΔE2000)
A_jpg_8bit_200dpi5.198I16I16 5.198, K16 1.709, H01 1.543, L20 1.387, H16 1.360
A_png_8bit_200dpi4.577I16I16 4.577, L20 1.970, K16 1.715, L21 1.430, H16 1.428
A_tiff_8bit_200dpi4.433I16I16 4.433, L20 1.981, K16 1.822, H16 1.418, GS22 1.382
A_jpg_8bit_400dpi3.942I16I16 3.942, K16 1.453, B21 1.249, C16 1.243, F22 1.206
A_jpg_8bit_800dpi3.723I16I16 3.723, D01 1.322, K16 1.307, F22 1.260, E22 1.230
A_png_8bit_400dpi3.505I16I16 3.505, K16 1.900, L20 1.528, A21 1.303, B21 1.275
A_tiff_8bit_400dpi3.444I16I16 3.444, K16 1.906, L20 1.516, C16 1.278, L21 1.269
A_tiff_8bit_800dpi3.006I16I16 3.006, K16 1.960, L20 1.419, F22 1.277, C16 1.239
A_png_8bit_800dpi2.947I16I16 2.947, K16 1.854, L20 1.455, C16 1.271, F22 1.269
Aggregated over all cells' own top-5 lists, the most frequent patch IDs are I16 ×9, K16 ×9, L20 ×7, C16 ×4, F22 ×4, H16 ×3. The single worst patch is the same in 9 of 9 cells, and the top few IDs recur regardless of container and resolution. This is the strongest single piece of evidence in the study that the remaining error is systematic — a property of the chart patch, the engine or the reference data — and not something a different scan container can repair.

9 · Conclusions and recommendations

1. Spend the budget on resolution, not on format. Going from 200 dpi to 800 dpi reduces ΔE2000 mean by 12.2 % (TIFF), 9.1 % (PNG), 11.0 % (JPEG); each step doubles the linear resolution, i.e. quadruples the pixels averaged per patch. The format choice moves accuracy by at most +5.3%. If a scan setting has to be chosen under a cost constraint, resolution is where the accuracy is.

2. TIFF or PNG — pick on workflow grounds only. The two lossless containers differ by 0.0034 ΔE2000 on average: an order of magnitude below the resolution effect and several times below the JPEG penalty. There is no accuracy argument for one over the other — choose TIFF for maximum tool compatibility, or PNG when size matters and losslessness is still required.

3. JPEG costs a little, and it is a real cost, not noise. The gap to TIFF averages +5.3% and is above TIFF at all three resolutions. A single consistent sign across three independent scans is unlikely to be coincidence, so the direction is reliable; the magnitude is bounded below by the noise floor and cannot be pinned down more tightly without a same-acquisition control. Practically: if storage or transfer is the constraint, JPEG at a higher resolution beats TIFF at a lower one (section 7) — just accept that the scan is no longer re-processable without generational loss.

4. Do not expect a container change to fix the residual error. The worst patches are the same across every container and resolution, so the remaining error is systematic. That places the next improvement in the engine, not in the scan settings — the dark-end residuals identified in section 8 and the yellow highlight ridge noted in earlier work remain the open levers.

Recommended production settings.

  • Most accurate: A_tiff_8bit_800dpi (0.2552 ΔE2000 mean, 68.94 MB).
  • Best value: A_jpg_8bit_400dpi (0.2902 ΔE2000 mean, 0.75 MB) — the smallest scan file that still matches or beats the baseline's accuracy.

The two recommendations point in opposite directions on purpose. The most accurate cell is a large lossless file; the value winner gives the same accuracy as the requested baseline for a fraction of the file size. Which one is right depends on whether the scans must survive as a re-processable master (take lossless) or exist only to produce the profile (take the cheaper one). What is not a good trade is staying at low resolution with a large lossless format: that pays the size without buying the accuracy.

Baseline note. The baseline cell is A_tiff_8bit_200dpi as requested. Absolute ΔE values depend on the reference batch; every cell here shares CR2026.01.13.txt, so the comparisons are internally consistent, but the absolute numbers should not be quoted against a study that used a different reference.

ColorRuler Precision Color Engine · in-house ICC engine · generated by tools/autogrid_v4/fmt_report.py