Преобразование хроматической адаптации - PullRequest
0 голосов
/ 21 мая 2018

Это не совсем вопрос программирования, но он задается задачей программирования, поэтому я задам его здесь.
RGB Хроматическая адаптация выполняется следующим образом: масштабированное и гамма-преобразованное Вектор RGB умножается на матрицу 3x3, M , члены которой являются функцией координат цветности и координат белой точки рассматриваемого цветового пространства, X S Y S Z S , чтобы получить вектор XYZ .Матрица адаптации 3x3, частично основанная на новой XYZ белой точке, X D Y D Z D (предлагаются различные наборы коэффициентов, выходящие за рамки этого вопроса), затем умножается XYZ , чтобы получить хроматически адаптированный вектор, X'Y'Z '.Затем X'Y'Z ' умножается на обратную матрицу, M -1 , чтобы вернуть новый вектор, R'G'B '.Мой вопрос таков: M было рассчитано с использованием оригинальной X S Y S Z S белой точки.Является ли M -1 инверсией оригинала M или является новым M -1 , отражающимобновлено X D Y D Z D используется белая точка?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

пример того, что я имел в виду: http://www.waysidehealth.com/Projects/color/colorMatrixGenerator.html

0 голосов
/ 22 мая 2018

Вы смешиваете несколько вещей, которые затрудняют понимание, поскольку вы объединяете преобразование RGB в XYZ с хроматической адаптацией VonKries ,Хотя можно выполнить полное преобразование с помощью одной матрицы, то есть линейного преобразования, проще реализовать более детальные шаги.

Хроматическая адаптация VonKries требует, чтобы у вас были следующие данные:

  • Образец цвета, который вы хотите хроматически адаптировать, т. Е. Ваш RGB цвет.
  • Тестовый источник света, под которым просматривается ваш образец, т.е. XYZ_S тристимулусных значений.
  • эталонный цвет источника света, к которому вы хотите хроматически адаптировать ваш образец, т.е. XYZ_D тристимулусных значений.

Я бы предложил сначала выполнитьпреобразование вашего образца из RGB в XYZ .Матрица, преобразующая из RGB в XYZ , M_NPM , задается вашим цветовым пространством RGB и называется нормализованной первичной матрицей (ее вычислениевыходит за рамки вопроса).

Затем можно вычислить хроматическую адаптацию матрицу M от XYZ_S до XYZ_D согласно Брюсу Линдблуму .

Затем возьмите точечное произведение между хроматической адаптацией матрицей M и вашим образцом XYZ тристимульных значений.

Наконец, преобразуйте обратно в RGB , используя M_NPM-1 или любую соответствующую обратную матрицу, подходящую для вашего варианта использования.

...