Выборка цветов из RGB в пространство XYY - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь выбрать цвет из изображения 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]?

1 Ответ

0 голосов
/ 25 октября 2019

Я решил проблему, обрезав результаты преобразования xyz2rgb (т. Е. Приравнивая отрицательные значения к 0, а значения выше 1 равные 1), сняв проблему нормализации для получения кадров видео. С помощью этого решения я сравнил цвета непосредственно в RGB без необходимости снова преобразовывать их в пространство xyY.

...