Этот вопрос с вычислительной стороны вещей. Может быть, некоторые из вас, кто занимается компьютерной фотографией, могут мне помочь.
Если у меня есть нормализованный вектор CIE XYZ tristimulus, как этот:
(x, y, z) = (0.2, 0.7, 0.1)
и я следую процессу деривации sRGB, как в википедии , спецификации w3 , или прямо здесь photo.SE , я получаю следующее значение для предварительная гамма-коррекция r
:
r = 3.2406 * x - 1.5372 * y - 0.4986 * z
= 3.2406 * 0.2 - 1.5372 * 0.7 - 0.4986 * 0.1
= -0.47778
Поскольку это значение меньше 0,0031308, масштабируйте его на 12,92, чтобы получить окончательное значение R с гамма-коррекцией:
R = 12.92 * r
= 12.92 * -0.47778
= -6.173
Теперь в википедии говорится об этом окончательном значении с гамма-коррекцией, а соответствующие значения G и B здесь не показаны
Эти значения с гамма-коррекцией находятся в диапазоне от 0 до 1. Если требуются значения в диапазоне от 0 до 255, например, для отображения видео или 8-битной графики обычным методом является умножение на 255 и округление до целого числа.
-6.173 определенно не в диапазоне от 0 до 1. Я что-то не так делаю? Если нет, что мне делать с таким значением?