Summary

  • Pixel functional layer: multichannel cv2.LUT for per-channel tone curves and histogram-derived LUTs on medium/large uint8 images, replacing Python per-channel loops.
  • Touches Equalize, AutoContrast, and RandomToneCurve via the shared apply_multichannel_lut helper when preconditions match.
  • Dithering: ordered uint8 path can take a vectorized fast route when image size/channel count pass internal guards.
  • Dependency: albucore 0.1.5 → 0.1.6 (declared in pyproject.toml / uv.lock; conda recipe aligned).
  • New regression tests for histogram/LUT and dithering paths (tests/functional/test_functional.py, tests/test_dithering.py).

Breaking changes

None.

New features

None.

Bug fixes

None.

Misc

  • conda.recipe/meta.yaml and uv.lock updated alongside the version and albucore pin.
  • Internal: apply_multichannel_lut in _functional_shared.py centralizes contiguous multichannel LUT application for (H,W,C), batch, and volume layouts.

Commits

CommitPRDescription
a1e3acc#252perf(pixel): optimize LUT-heavy transforms; albucore 0.1.6; tests for LUT and dithering paths
d3ec440chore(release): bump version to 2.2.6