如何降低CIELAB颜色的色度?

How to reduce chroma of CIELAB color?

给定 CIELAB 颜色(L* A* B* 值),如何降低色度(饱和度)?

色度可以计算如下:

Cab=sqrt(a²+b*²)

假设输出为 72。如何转换变量 ab 以强制色度为 eg。 43?

简答: 将极坐标反转回笛卡尔坐标 space,您还需要使用 HUE 关联.否则你不知道向量的方向。

更完整的答案:

要将 ab 转换为色调:

    hueab = 180 * atan2( a , b ) / pi();

然后将色相和色度转换回L*a*b*,然后:

    a = Cab * cos((hueab * PI()) / 180);
    b = Cab * sin((hueab * PI()) / 180);

饱和度

你提到了饱和度。色度不是饱和度。

  • 饱和度 是相对于该颜色自身亮度的色彩度。
  • Chroma 是相对于单独的参考白色的色彩度。

CIELAB 不饱和,但其他颜色模型如 CIELUV 和 CIECAM02 会。

CIELUV 与 LAB 具有相同的 L*。但 LUV 是基于 1976 UCS 色度图,使用 uʹvʹ 坐标,是 1931 色度图的简单投影。 LUV 将 uʹvʹ 每个乘以 13L*,使它们成为 u*v*.

您创建色相和色度的方式与 LAB 相同,但使用 LUV 可以创建有用的饱和度关联,这在 LAB 中是不可能的。

从色度创建饱和度u*v*:

    Suv = Cuv / Lstar;

微不足道,并且要将饱和度恢复为色度,显然:

    Cuv = Suv * Lstar;

其他型号

CIELAB 和 CIELUV 都在 1976 年问世(与第一部星球大战同时出现)。今天我们有更精确的模型,如 CIECAM02、CAM16、Jzazbz、ZCAM等。我鼓励您看一看其中的一些内容。

此外,您可能对此 CIELUV implementation, HSLUV 感兴趣,它有一些好处,包括在选择颜色时指示色域限制。

https://www.hsluv.org

只需将 ab 乘以 43/72。
为什么这有效:对于乘数 m

C( m a, m b ) = sqrt( (ma)² + ((mb)² )
              = m sqrt( a² + b² )
              = m C( a, b )

也就是说,在L C h坐标中:
L“亮度”保持不变,
C 变为 m * C
hue = tan( b / a ) 保持不变。

(abCIELAB 是极坐标, C 和 CIELCh 中的 h 等效极坐标。)