Я пытаюсь получить правильное представление видимого спектра для визуализации на экране. Мой текущий прогресс заключается в использовании стандартных функций соответствия цветов наблюдателя CIE 1931, аналитически аппроксимируемых уравнениями, приведенными в этой статье . Текущее изображение выглядит так:
Здесь фон не идеально черный, чтобы можно было внести отрицательный вклад от функций подбора цвета:
Но проблема в том, что изображение, кажется, имеет провал в интенсивности где-то около 490 нм. Я предполагаю, что это связано с суммой трех функций, имеющих минимум там. Посмотрите сумму, построенную в зависимости от длины волны:
Итак, мой вопрос сейчас: как я могу исправить интенсивность изображения? Существует ли какой-либо стандарт для учета спектральной чувствительности при преобразовании длины волны в представление RGB / XYZ?
Ответы:
На самом деле это неправильный способ суммирования этих функций: модель sRGB указывает, что для получения светимости необходимо взвешивать компоненты RGB с соответствующими весами. Тогда, что неудивительно, светимость станет равной Y-компоненте XYZ-представления.
Я действительно могу видеть провал не только около 490 нм, но и меньший около 570 нм.
Во всяком случае, я думаю, что нашел причину для этого. Прежде всего, давайте нанесем ненасыщенные цвета, используемые при рендеринге, на диаграмму цветности:
Пунктирный треугольник - это гамма sRGB, а острие, образованное двумя нижними линиями зеленой кривой, соответствует белой (серой) точке D65. Обратите внимание, что от белой точки есть три «шишки», соответствующие фиолетовому, голубовато-зеленому и красному. Или, что имеется большой провал в насыщении в направлении 490 нм и умеренное уменьшение в направлении около 570 нм. Давайте охарактеризуем это графически, изобразив норму отличия отрисованных точек от белой точки:
Это именно то , что я воспринимаю визуально на изображении с точки зрения насыщенности и, таким образом, смешивания с фоном.
Вы можете спросить, откуда взялась эта странная форма? И ответ - из спектрального локуса в полном пространстве XYZ. См. Следующий рисунок: синяя кривая - это спектральный локус, а оранжевая - его проекция на плоскость, перпендикулярную вектору
{1,1,1}
.Таким образом, форма, которую мы получили на диаграмме цветности, является чем-то вроде плоского разворачивания спектрального локуса.
Что касается реализма этого рендеринга, я вполне уверен, что если мы попытаемся спроецировать реальный спектр на серую нефлуоресцентную поверхность, мы также увидим эти два "странных" провала. И они станут менее заметными по мере увеличения яркости спектра относительно яркости поверхности.
источник