Поиск цвета, который соответствует одному из заданной палитры - PullRequest
0 голосов
/ 04 августа 2020

У меня есть палитра цветов: 32 или 256. Затем у меня есть поток входящих цветов (в RGB). Я хочу выяснить, какому цвету в палитре наиболее точно соответствует входящий цвет. Я считаю, что такой алгоритм используется во многих программах для редактирования изображений.

До сих пор я придумал следующее:

  1. Для каждого входящего цвета найдите цвет в палитре с наименьшим distance, путем определения расстояния от каждого цвета в палитре.
  2. Для определения расстояния используется один из следующих подходов:
    1. Сумма квадратов разностей R, Значения G и B ((R1-R2)² + (G1-G2)² + (B1-B2)²)
    2. Преобразуйте цвет в HSV, используйте средневзвешенное значение H, S и V в качестве индикатора расстояния. Что-то вроде 3 ✕ (H1-H2)² + 2 ✕ (S1-S2)² + (V1-V2)²
    3. Расстояние в YCbCr

Я ищу, в частности, две вещи.

  1. Есть ли лучший способ, чем проверить расстояние с каждым цветом в палитре? Я ищу какой-то алгоритм объединения, чтобы найти правильный цвет из палитры.
  2. Если придерживаться проверки расстояния до каждого элемента в палитре, есть ли стандартные формулы, которые считаются стандартными?

1 Ответ

0 голосов
/ 04 августа 2020

Как часто, ответ зависит от того, почему именно вы хотите это сделать.

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

Я бы воздержался от произвольной формулы такой взвешенной суммы различий в некотором колориметрическом c пространстве, которая не имеет точного обоснования и ее трудно интерпретировать.

Если вы хотите Чтобы изображение оставалось максимально похожим на оригинал для человеческого глаза, можно использовать «перцептуально однородный» показатель c, например CIELAB ΔE *. В любом случае, по моему личному мнению, такие метрики излишне сложны и приносят мало пользы. Вы увидите различия только для цветов, которые далеки от цветов в вашей палитре, если они вообще будут.

...