Я пытаюсь выбрать цвет из изображения RGB и преобразовать его в соответствующие координаты XY. Изображение RGB было ранее получено, начиная с координат xyY, а затем преобразовано в RGB, а именно:
Если у меня есть координаты B = (0.011, 0.733) в пространстве xyY, используя функцию xyz2rgb
вMatlab будет производить выходные данные вида (-1.0906, 1.1497, 0.3837), в котором одно из значений tristimulus является отрицательным. Я использовал этот цвет в RGB для создания цветного изображения. После сопоставления полученной матрицы в диапазоне [0,1] и сохранения цветного изображения в виде файла jpg я снова открываю его и пытаюсь отобрать тот же цвет оттуда. Цветовая координата RGB не равна исходной, а скорее (0.348,0.633,0.298), что через rgb2xyz
не даст исходную точку B, как ожидалось.
Как преодолеть это неравенство? Есть ли способ, которым я могу вернуться к точке B, начиная с триплетов RGB с неотрицательными значениями?
РЕДАКТИРОВАТЬ: я понимаю, что точка B в xyY находится за пределами цветовой гаммы RGB, для чегоодно из значений получается отрицательным при конвертации. Тем не менее, он все еще может быть представлен в изображении правильно, но при восстановлении этого цвета из изображения все координаты RGB являются положительными, и, следовательно, точка B не может быть восстановлена. Видимо есть две "шкалы" RGB? Один допускает отрицательные значения и один в диапазоне [0,1]?