Background
CIEDE2000 is the current standard for perceptually uniform color difference (deltaE) in CIELAB space.
The pure Python / vectorized numpy path via scikit-image's deltaE_ciede2000 works fine at moderate scale, but becomes a bottleneck against large color gamuts (e.g. 2^24 entries).
This package wraps a C implementation to close that gap.
Motivation
The immediate use case was a larger project needing fast nearest-color lookup in a full screen gamut.
Beyond that, it was an exercise in wrapping C in Python: passing array pointers across the boundary, writing the glue layer, and compiling C through setup.py at pip install time.
The benchmarking notebook documents the comparison against the scikit-image baseline.
Implementation
- C core taken from gfiumara/CIEDE2000 with minor modifications and added wrapper functions
- Two entry points:
deltaE_minreturns the single nearest-color distance,deltaE_matrixreturns the full distance array against a gamut - Both inputs expected in CIELAB colorspace; no colorspace conversion included
- Non-exhaustive benchmarks showed lower memory consumption and faster execution than the vectorized numpy equivalent for large gamuts