Как правильно масштабировать ограничивающий объем цветовой гаммы XYZ после его вычисления из спектральных выборок?
После вычисления приведенной ниже ограничивающей сетки гаммы XYZ из спектральных выборок, как можно масштабировать громкость для совместимости с популярными цветовыми пространствами, такими как sRGB?
Казалось, что нужно подогнать весь объем так, чтобы работали диапазоны Y от [0, 1], но у него было несколько проблем:
- По сравнению с подобъемом, созданным путем преобразования цветового куба sRGB в пространство XYZ, результат выходит за пределы «полной гаммы».
- При преобразовании случайных значений XYZ из полного объема гаммы в sRGB и обратно окончательный XYZ не соответствует исходному.
Каковы правильные константы масштабирования? Имеет ли каждое цветовое пространство свои диапазоны значений x, y и z? Как я могу их определить?
2 ответа
Короткий ответ
Если я понимаю ваш вопрос, вы пытаетесь выполнить определение пределов гаммы sRGB (границы) относительно созданного вами пространства XYZ.
Более длинный ответ
Я предполагаю, что вы НЕ пытаетесь выполнить сопоставление гаммы. Это нетривиально, и существует несколько методов (перцепционный, абсолютный, относительный и т. д.). Я собираюсь отложить сопоставление гаммы в сторону и вместо этого сосредоточиться на определении того, как произвольное цветовое пространство вписывается в ваш объем XYZ.
Прежде всего, чтобы ответить на ваши подробные вопросы:
После вычисления приведенной ниже ограничивающей сетки гаммы XYZ из спектральных выборок, как можно масштабировать громкость для совместимости с популярными цветовыми пространствами, такими как sRGB?
Какие спектральные образцы? С помощью спектрофотометра, считывающего пробный отпечаток при заданном стандартном освещении? Или откуда они взялись? Эксперимент по подбору цвета?
Математика заключается в объединении спектральных данных для формирования пространства XYZ, что вы, по-видимому, и сделали. Какой источник света (точка белого)??
Казалось, что нужно подогнать весь объем так, чтобы работали диапазоны Y от [0, 1], но у него было несколько проблем:
Весь объем чего? Пространство sRGB? Как вы преобразовали данные sRGB в YXZ? ИЛИ это действительно вопрос, который вы задаете?
Каковы правильные константы масштабирования?
Они зависят от спектральных данных и адаптированной точки белого для спектральных данных. sRGB это D65. Большая часть печати выполняется с использованием D50.
Имеет ли каждое цветовое пространство свои диапазоны значений x, y и z? Как я могу их определить?
ДА.
Каждое цветовое пространство имеет различную матрицу преобразования в зависимости от координат основных цветов RG и B. Основные цвета могут быть воображаемыми, например, в ProPhoto.
Некоторые вещи
Математику, которую вы ищете, вы можете найти на brucelindbloom.com , а также вы можете проверить ColorScience Томаса Мансенкаля , библиотеку Python, которая является швейцарским армейским ножом цвета.
sRGB
XYZ представляет собой линейное световое пространство, в котором
Y = 0.2
к
Y = 0.4
это удвоение яркости.
sRGB не является линейным пространством, для данных sRGB существует гамма-кривая или кривая тонального отклика, так что
rgb(20,20,20)
к
rgb(40,40,40)
НЕ удваивает яркость.
Первое, что необходимо сделать, — это линеаризовать цветовые данные sRGB.
Затем возьмите линейный RGB и пропустите его через соответствующую матрицу. Если данные XYZ относятся к другой адаптирующейся белой точке, вам нужно сделать что-то вроде преобразования Брэдфорда, чтобы преобразовать его в подходящее для вашего пространства XYZ.
На сайте Брюса Линдблума есть несколько готовых матриц для нескольких распространенных ситуаций.
Проблема, которую вы описываете, может быть вызвана либо (или и тем, и другим) невозможностью линеаризации данных sRGB и/или отсутствием адаптации точки белого. И... возможно, другие факторы.
Если вы сможете ответить на мои вопросы относительно источника спектральных данных, я смогу лучше помочь.
Дальнейшие исследования и эксперименты подразумевали, что объем XYZ должен масштабироваться таким образом, чтобы {max(X), max(Y), max(Z)} равнялись источнику света из рабочего пространства. В случае sRGB этот источник света (также называемый белой точкой) называется D65.
Результаты выглядят убедительно, но экспертное подтверждение все же приветствуется.