У меня есть несколько цветов в RGB в [0,1], и я хочу найти способ оценить их сходство с точки зрения человека.
Я имею в виду две идеи, но я уверен, что есть и другие варианты, но я не уверен, что лучше, или, возможно, нет лучшего, а только компромиссы.
Моя первая идея - рассматривать цвета RGB как точки XYZ и вычислять их расстояние.
Другая идея, которую я имею, состоит в том, чтобы рассматривать значения RGB как гистограмму и использовать точечное произведение, чтобы получить значение сходства между ними, где большее значение лучше.
Однако я знаю, что не все цветовые каналы имеют одинаковую воспринимаемую яркость, поэтому, возможно, мне следует по-разному взвешивать цветовые каналы в обоих случаях?
Я также думаю, что, возможно, мне нужно будет выполнить коррекцию sRGB для значений цвета (например, sqrt для каждого цветового канала).
Я также знаю, что существуют другие цветовые пространства, так что, возможно, в одном из них было бы лучше дать значение сходства.
Другая проблема может заключаться в том, что разные дисплеи будут отображать одинаковые значения цвета по-разному. Не уверен, что это актуально в этом случае.
Кто-нибудь может предоставить некоторую помощь / направление?