Skip to content

v1.9.0 — Gamut volume accuracy + degenerate warning

Choose a tag to compare

@colourbill-ctrl colourbill-ctrl released this 16 Jul 05:02
· 40 commits to main since this release

Profile Statistics: more accurate gamut volume, reliability warning, and a leaner Analysis tab

Gamut volume — accuracy rework

  • The device-cube boundary is now sampled over all facets, so CMYK and higher-ink (N≥4) gamuts are no longer under-captured (the old 2-skeleton missed the interior of the 3-D faces).
  • Dilation and erosion are now a matched morphological closing (cube dilate + 26-neighbour erode), removing the previous ~9% convex-corner over-estimate.

Note — reported gamut volumes change. Because the corner over-count is gone, volumes drop at the default resolution — e.g. sRGB (A2B1, voxelSize 2.0) goes 805,728 → ~735,816 ΔE*ab³. This is the accuracy fix, not a regression; the numbers are now dilate-stable and converge as resolution increases.

New: degenerate-gamut warning

When a gamut boundary collapses or comes back mostly undefined, the Analysis panel now shows a ⚠ warning and flags that intent's volume as unreliable instead of printing a misleading tiny number.

Removed: L* tone-reversal analysis

The L* tone-reversal chart has been retired from the Analysis tab.

Under the hood

  • Untrusted-input hardening of the gamut-volume and B2A round-trip paths (bounded allocations/loops, overflow-safe indexing).
  • Neutral-axis inking reuses IccProfLib's CIELAB↔XYZ conversion.
  • All WASM modules rebuilt against clean iccDEV master.