XYB
The XYB color space is not registered in Color
by default
Properties
Name: xyb
White Point: D65 / 2˚
Coordinates:
Name | Range* |
---|---|
x | [-0.05, 0.05] |
y | [0.0, 0.845] |
b | [-0.45, 0.45] |
* Space is not bound to the range and is only used as a reference to define percentage inputs/outputs.
Figure 1. The sRGB gamut represented within the XYB color space.
XYB is a color space that was designed for use with the JPEG XL Image Coding System. It is an LMS-based color model inspired by the human visual system, facilitating perceptually uniform quantization. It uses a gamma of 3 for computationally efficient decoding.
Chroma/Luma Adjustments
Per the creator, the default subtracts the Y component from the B component which makes Y function as lightness and X and B will function similar to Lab 'a' and 'b' components. When X=Y=0, the color is achromatic.
You may find other implementations may not do this and store the colors without this operation. It may be that in real world use it is not stored in this way. If desired, you can add Y to B to get the color exactly as specified in the white paper.
While in this configuration the color operates in a Lab-like way, but the scaling of X and B is quite different not making it practical to convert this to a LCh-like space for reasonable hue values. To do so, you would need to scale X to a similar order of magnitude compared to B (maybe a factor of 10).
Channel Aliases
Channels | Aliases |
---|---|
x | |
y | |
b |
Inputs
The XYB space is not currently supported in the CSS spec, the parsed input and string output formats use the color()
function format using the custom name --xyb
:
color(--xyb x y b / a) // Color function
The string representation of the color object and the default string output use the color(--xyb x y b / a)
form.
>>> Color("xyb", [0.0281, 0.48819, -0.01653])
color(--xyb 0.0281 0.48819 -0.01653 / 1)
>>> Color("xyb", [0.01132, 0.64596, -0.1149]).to_string()
'color(--xyb 0.01132 0.64596 -0.1149)'
Registering
from coloraide import Color as Base
from coloraide.spaces.xyb import XYB
class Color(Base): ...
Color.register(XYB())