INNER CODE UNIT · Python
color_space_transform
NVlabs/instant-ngp · scripts/flip/__init__.py:39
def color_space_transform(input_color, fromSpace2toSpace):
dim = input_color.shape
if fromSpace2toSpace == "srgb2linrgb":
limit = 0.04045
transformed_color = np.where(input_color > limit, np.power((input_color + 0.055) / 1.055, 2.4), input_color / 12.92)
elif fromSpace2toSpace == "linrgb2srgb":
limit = 0.0031308
transformed_color = np.where(input_color > limit, 1.055 * (input_color ** (1.0 / 2.4)) - 0.055, 12.92 * input_color)
elif fromSpace2toSpace == "linrgb2xyz" or fromSpace2toSpace == "xyz2linrgb":
# Source: https://www.image-engineering.de/library/technotes/958-how-to-convert-between-srgb-and-ciexyz
# Assumes D65 standard illuminant
a11 = 10135552 / 24577794
a12 = 8788810 / 24577794
a13 = 4435075 / 24577794
a21 = 2613072 / 12288897