Преобразование Yxy в RGB

Я пытаюсь реализовать метод преобразования из цветового пространства Yxy в RGB. Это делается путем первого преобразования в XYZ, а затем в RGB. Я узнал, что "официальная" матрица для Yxy -> XYZ

3,2410 -1,5374 -0,4986

-0,9692 1,8760 0,0416 

0,0556 -0,2040 1,0570 

Это также тот, который используется в книге Мэтта Фарра "Физически обоснованный рендеринг".

С другой стороны, многие люди в области 3D-графики используют

2,5651-1,1665 -0,3986

-1,0217 1,9777 0,0439

0.0753 -0.2543 1.1892

Теперь, насколько я понимаю, если х = 0,33333 и у = 0,33333, Yxy дает серый оттенок. Это действительно то, что я получаю со второй матрицей. Первый создает красное значение RGB.

Вторая матрица работает, но откуда она? Я нахожу много людей, использующих его в своих примерах кода, но никто не объясняет, имеет ли он физическое происхождение.

заранее спасибо

1 ответ

Преобразование из xyY в XYZ является нелинейным, то есть не может быть вычислено умножением матрицы. Из Википедии о цветовом пространстве CIE 1931:

X = Y / y * x
Z = Y / y * ( 1 - x - y )

Кажется, обе ваши матрицы предназначены для преобразования XYZ в RGB. Первая дана праймериз sRGB и белой точкой. Второй по праймериз очень близок к sRGB (зеленый имеет x = 0.29, y = 0.60) и x = 0.334, y = 0.334 белая точка.

Если вы хотите использовать другие основные цвета RGB и белые точки, список можно найти по адресу: http://brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html

Другие вопросы по тегам