Skip to content

v2.1.0 — Print QC analysis: extrema colorimetry, shadow ink paths, tone response

Choose a tag to compare

@colourbill-ctrl colourbill-ctrl released this 20 Jul 08:55
· 11 commits to main since this release
v2.1.0
7acb792

Print QC analysis. Three additions to the Analysis tab, derived from a reference QC harness (doQCpfA.m) and checked numerically against its published report for GRACoL2013_CRPC6.

New: Extrema Colorimetry

The numbers a press operator reads first, in one place.

  • White point — the colour of zero colorant, i.e. bare substrate.
  • Black point — derived the way the reference does it: push PCS black through the selected B2A table to get the inking the profile chooses for black, then read that inking back through A2B1. It genuinely differs per rendering intent, so it follows the intent selector.
  • Both in relative and absolute colorimetry. Absolute shows the substrate's own colour; a blue-white paper reads as roughly L* 95, b* −4.
  • Inking at black point and TAC — the ink that black costs, and the total-area-coverage figure.
  • Full tone vs maximum chroma per ink corner (C M Y R G B K): where each lands in hue/chroma/lightness, and the most chromatic point on the way there. When maximum chroma arrives before full tone the row is flagged — past that point the extra ink has stopped adding chroma and is only darkening.

Output profiles only (it assumes zero colorant means bare substrate). The per-hue table additionally needs a CMYK or CMY device space: an n-colour profile names its channels in any order, so which one is "cyan" cannot be known, and it says so rather than guessing.

New: Ink Usage in Shadows

Four straight paths across the a*b* plane at one constant, deliberately dark lightness, run through the selected B2A table. Every sample on a path shares the same L*, so an abrupt step or reversal in a colorant comes from hue and chroma handling alone — the signature of a shadow gamut-mapping artefact, and the kind of thing that surfaces in print as banding in dark areas.

The lightness plane is picked automatically (halfway between the profile's Blue corner and the darkest of C M Y R G). For the perceptual and saturation tables the lightness is first stretched from the media black point to PCS black, as those tables expect; both the compensated and raw planes are reported.

New: tone response on Neutral Axis Inking

The neutral plot now draws the tone response — where the neutral axis actually lands in lightness after a round trip — over the ink separation. Two things to read from it: sag below the diagonal means greys render darker than asked, and the curve flattens at the darkest lightness the profile can reach. That plateau is the media black point, and it should agree with the Extrema Colorimetry section.

Changed

  • Every Analysis section now starts collapsed. Each one costs a full transform pass over the profile, so opening is an explicit choice rather than six analyses firing the moment the tab is shown. Results stay cached, so re-opening is instant.

Verified against the reference

Checked against the published QC report for GRACoL2013_CRPC6:

Published This release
White LabREL 100.0 0.000 0.000 100.000 0.000 0.000
White LabABS 95.02 0.980 −4.02 95.020 0.979 −4.013
Black LabREL 10.80 0.070 0.199 10.798 0.070 0.205
Black LabABS 9.65 0.293 −0.734 9.647 0.294 −0.727
Inking at black 0.845 0.751 0.603 1.000 identical
TAC 3.20 3.200
Cyan <h C L> 231.0 62.41 59.23 231.04 62.41 59.23

…and likewise for Magenta, Yellow, Red, Green and Blue. Residuals are ≤0.007 — rounding. The shadow plane is an independent check: the reference rule gives 38.335 from the published corner values, and the engine computed 38.33 from its own transforms. A separate cross-check: the tone curve's plateau and the black point are produced by two independent code paths and agree to the digit.

Documentation

The Analysis section of the user guide was rewritten. It had drifted: it still described Profile Statistics and Round-Trip as two sections after they were merged into one, and never documented the CLUT Image or Gamut Image sections at all. 34 new interface strings across all 12 languages.

Under the hood

New analysis APIs in the visualization engine (WhiteBlackPoints, HueExtrema, ShadowInkPaths), plus a general secondary-axis concept in the graph model for plots that mix two physical quantities. All WebAssembly modules were rebuilt from a clean upstream iccDEV master.

Known limitations

  • A neutrality (Δa*b*) trace for the neutral axis is computed but not yet shown — its definition is still under review.
  • Extrema Colorimetry and Ink Usage in Shadows are CMYK/CMY only for the parts that depend on knowing which channel is which ink.
  • Invert Transform remains hidden pending worker isolation.
  • ICC.2 (iccMAX) support is partial — no multi-part ICS workflows, no V5 sub-profile selection.
  • Float TIFF source decoding is still unsupported (float output works).