2012-06-29 4 views
5

У меня есть массив цветов RGB. Я хотел бы найти быстрый и грязный способ группировать их по подобию цвета и пороговому значению.Поиск похожих цветов HEX с использованием порога

спецификации: enter image description here

+0

http://en.wikipedia.org/wiki/Color_quantization. Или вы можете попробовать поиграть с http://www.php.net/manual/en/function.imagetruecolortopalette.php – biziclop

+0

Я бы предложил yoo использовать модель HSV, чтобы вы могли сравнить оттенки, насыщенность и значение между несколькими цветами. – TheZ

ответ

3

быстро и грязно:

$dr = $red1 - $red2; 
$dg = $green1 - $green2; 
$db = $blue1 - $blue2; 
$fr = 2; // may be adjusted 
$fg = 4; // " 
$fb = 1; // " 
$distance_squared = $fr * $dr * $dr + $fg * $dg * $dg + $fb * $db * $db; 

Вы бы затем сравнить $distance_squared квадрату порогового значения. Факторы могут быть скорректированы (особенно синий может получить более высокий коэффициент), а также их сумму (чтобы соответствовать порогу)

Для «медленного и чистого» решения я бы начал с herehere для более практичный подход).

1

Выберите color space, и определить "подобие", как, например, Евклидово расстояние между координатами двух цветов. Например, HSL/HSV может быть лучшим выбором, чем RGB.

+0

Да, я тоже так много думал. просто ищет формулу, если у кого-то есть удобный ;-) – Arturino

+0

@Artur: Формула для чего? Формулы конверсии, например. ВПГ приведены в статье Википедии. Евклидово расстояние - это просто sqrt ((a1-a2)^2 + (b1-b2)^2 + (c1-c2)^2). –

+1

thanks - Я также нашел это полезным: http://stackoverflow.com/questions/1633828/distance-between-colours-in-php/1634206#1634206 – Arturino

Смежные вопросы