GIMP Hue-Chroma vs Hue-Saturation Differences
In GIMP, the Hue-Saturation and Hue-Chroma tools both alter color purity and tone, but they rely on fundamentally different mathematical color spaces. Hue-Saturation operates using the standard HSL (Hue, Saturation, Lightness) model, which treats saturation as a relative value bound to the RGB color cube. Hue-Chroma operates in the CIE LCH (Lightness, Chroma, Hue) color space, which measures chroma as an absolute distance in a perceptually uniform space derived from CIE Lab. This architectural distinction dictates how pixel values are calculated, how luminance is preserved, and how colors clip at extreme settings.
Color Space Architectures
The Hue-Saturation tool maps an RGB triplet directly to the HSL cylinder:
- Hue (\(H\)): The angular direction on the color wheel (\(0^\circ\) to \(360^\circ\)).
- Lightness (\(L\)): Calculated as the midpoint between the maximum and minimum RGB values: \[L = \frac{\max(R, G, B) + \min(R, G, B)}{2}\]
- Saturation (\(S\)): The ratio of the color range to the available dynamic range for that lightness level: \[S = \begin{cases} 0 & \text{if } \max = \min \\ \frac{\max(R,G,B) - \min(R,G,B)}{2 - 2L} & \text{if } L > 0.5 \\ \frac{\max(R,G,B) - \min(R,G,B)}{2L} & \text{if } L \le 0.5 \end{cases}\]
The Hue-Chroma tool converts non-linear RGB (sRGB) to linear CIE XYZ, then to CIE \(L^*a^*b^*\), and finally to polar CIE \(L^*C^*h^\circ\):
- Lightness (\(L^*\)): Perceptual lightness based on the human visual system's non-linear response to luminance (\(Y\)): \[L^* = 116 \cdot f\left(\frac{Y}{Y_n}\right) - 16\]
- Chroma (\(C^*\)): The Euclidean distance from the neutral gray axis in the \(a^*b^*\) plane: \[C^* = \sqrt{(a^*)^2 + (b^*)^2}\]
- Hue (\(h^\circ\)): The arctangent of the chromatic coordinates: \[h^\circ = \operatorname{atan2}(b^*, a^*)\]
Relative Saturation vs. Absolute Chroma
The fundamental mathematical difference lies in normalization:
- Saturation is relative. In HSL, saturation is normalized to a fixed range between \(0\) and \(1\) (or \(0\%\) to \(100\%\)). A saturation value of \(1.0\) simply means the color is at the maximum purity possible for that specific lightness level inside the RGB gamut. As lightness approaches \(0\) (black) or \(1\) (white), the absolute chromatic difference between the RGB channels shrinks toward zero, yet the saturation value can remain \(1.0\).
- Chroma is absolute. In CIE LCH, chroma has an open-ended scale starting at \(0\) (neutral gray) with no inherent upper limit of \(100\). It directly quantifies color intensity independent of lightness. A chroma increase of \(+10\) adds the exact same metric amount of colorfulness regardless of whether the base color is dark, mid-tone, or bright.
Luminance Independence
In the HSL model used by Hue-Saturation, lightness and saturation are mathematically coupled:
- Boosting saturation scales the delta between \(\max(R,G,B)\) and \(\min(R,G,B)\) while attempting to keep \(L\) constant. However, because HSL lightness does not account for the Helmholtz-Kohlrausch effect or the differing spectral sensitivities of the human eye (where green appears far brighter than blue at identical signal levels), adjusting saturation shifts perceived brightness unevenly across different hues.
- In the LCH model used by Hue-Chroma, \(L^*\) represents true perceptual lightness. Modifying \(C^*\) scales the \(a^*\) and \(b^*\) coordinates along a radial vector: \[a^*_{\text{new}} = a^* \cdot \left(1 + \frac{\Delta C^*}{C^*}\right), \quad b^*_{\text{new}} = b^* \cdot \left(1 + \frac{\Delta C^*}{C^*}\right)\] Because \(L^*\) remains completely untouched during this operation, Hue-Chroma preserves the perceived tonal contrast and luminance of the original image far more accurately.
Gamut Boundaries and Clipping
- Hue-Saturation operations cannot produce out-of-gamut colors. Because the HSL double-cone is a direct geometric deformation of the sRGB cube, any mathematical operation within the allowed ranges (\(S \in [0, 1]\), \(L \in [0, 1]\)) maps back to valid RGB values between \(0\) and \(255\). However, this causes unnatural color shifts and banding when saturation is pushed to extremes, as values compress against the boundary surfaces of the RGB cube.
- Hue-Chroma can exceed the RGB gamut. CIE LCH encompasses all colors visible to the human eye, including colors outside the sRGB triangle. Increasing chroma extends coordinates outward in the \(a^*b^*\) plane. If the resulting coordinate lies outside the target RGB color space, GIMP must map the out-of-bounds color back to the display gamut via clipping or perceptual gamut mapping, which preserves smooth color transitions at the cost of potential channel clamping at extreme values.