Найти ближайший цвет в RGB? - PullRequest
0 голосов
/ 27 марта 2019

Я должен найти ближайший цвет. Например, у меня есть два цвета colorA1, colorA2, которые почти одного цвета. А также у меня есть другой цвет colorB1. И мне нужен такой метод: Цвет getNearestColor (цвет A1, цвет A2, цвет B1). Этот метод должен дать мне colorB2, который рассчитывается с использованием разницы colorA1 и colorA2, затем, используя их расстояние, он должен дать мне colorB2, который имеет то же расстояние, что и в colorA1 и colorA2. Можете ли вы дать некоторые идеи, как это реализовать?

1 Ответ

1 голос
/ 28 марта 2019

Чтобы найти ближайший цвет, вам нужно определение «рядом», поэтому метрика.

В Википедии вы найдете различные метрики различия цвета .

Лично я бы использовал 2 * R * R + 4 * G * G + 3 * B * B. (нет необходимости в квадратных корнях, вы просто сравните те же показатели). Легко вычислить, вы можете использовать только целые числа (если вы используете 32-битные целые числа, у вас не будет переполнения).

Затем найдите, какой цвет имеет наименьшие различия между вашим целевым цветом.

Другие методы более точны, но в этом случае «RGB» недостаточно. Вам необходимо знать, какое цветовое пространство используется (возможно, вы находитесь в sRGB).

...