xyY цветовой локус не выглядит правильным
Я только что закончил задачу преобразования цвета xyY в RGB. Я использую цветовое пространство sRGB.
Когда я перебираю координаты x и y, получаю вывод:
Белая точка (D65) отмечена черным пикселем.
Тем не менее, это то, что я должен получить:
Я изо всех сил старался обрезать гамму (я создал ограничивающие линии, а затем использовал Photoshop для удаления за пределами этих границ), но очевидно, что белая область слишком велика, красная область слишком мала и многое другое.
Я протестировал несколько разных цветов XYZ и преобразовал их в RGB с моей программой и этим веб-сайтом, и они совпали с точностью до ошибки (<0.1
).
Любые идеи о том, что может вызвать эти проблемы?
РЕДАКТИРОВАТЬ
Похоже, мой вывод точно такой же, как и Как определить, находится ли цвет xyY в гамме CIE 1931?,
(Если я не обрежу это)
Это заставляет меня поверить, что, возможно, я не сделал ничего плохого, но до сих пор не объяснено, почему гамма Википедии отличается.
1 ответ
Вы должны показать код, но, вероятно, я могу догадаться.
Цвета трехмерные. С помощью CIE xy можно нанести несколько цветов на фигуры. Часто они не просто проекции, а более странные поверхности.
Часто вы видите два вида, в зависимости от того, как добавить основные цвета: аддитивное и вычитающее. И иногда есть ваше дело, которое не так.
На цвете subractive вы просто умножаете числа (цвета нормированы от 0 до 1). Аддитив (как вы хотели бы сделать): вы добавляете компоненты, но затем нормализуете значение до Y=1 (возможно, только если Y>1), а затем продолжаете масштабирование. Таким образом, вы сохраните оттенок, но цвет не будет обрезан (Примечание: при масштабировании следует учитывать различный вес R,G,B в Y).
Ваш случай кажется неправильным: вы добавляете цвет и просто кликаете R или G или B, чтобы не превышать максимум (1, 100 или 255). Но это: измени цвет, сделай цвет тусклым. (может быть, вы только что сделали вычитающий цвет, так что умножение, но там что-то не так, визуально).