Look up a color value
The tersest way:
from tinycio import Color
# Convert color from linear sRGB to CIE xyY
result = Color(0.8, 0.4, 0.2).convert('SRGB_LIN', 'CIE_XYY')
# returns Color([0.4129, 0.3817, 0.4706])
Slightly more verbose:
from tinycio import Color
# Specify the color and make a 1x1 linear sRGB ColorImage
col_im = Color(0.8, 0.4, 0.2).image('SRGB_LIN')
# Convert sRGB linear image to CIE xyY
result = Color(col_im.to_color_space('CIE_XYY'))
# returns Color([0.4129, 0.3817, 0.4706])
This is functionally equivalent to:
import torch
from tinycio import ColorSpace
# Specify the color as a tensor
col_im = torch.tensor([0.8, 0.4, 0.2], dtype=torch.float32)
# Expand it to a [3, 1, 1] sized image tensor
col_im = col_im.unsqueeze(-1).unsqueeze(-1)
# Convert
cs_in = ColorSpace.Variant.SRGB_LIN
cs_out = ColorSpace.Variant.CIE_XYY
result = ColorSpace.convert(col_im, source=cs_in, destination=cs_out)
# returns tensor([0.4129, 0.3817, 0.4706]) (squeezed)
Note
Most color spaces are implemented as operations on image tensors, but a few (OKHSL, OKHSV) are only available as direct color value conversions.
See: Color.convert()
, ColorSpace