Tengo una matriz de colores hexadecimales RGB. Me gustaría encontrar una manera rápida y sucia de agruparlos por similitud de color y valor de umbral.Encontrar colores HEX similares usando un umbral
spec:
Tengo una matriz de colores hexadecimales RGB. Me gustaría encontrar una manera rápida y sucia de agruparlos por similitud de color y valor de umbral.Encontrar colores HEX similares usando un umbral
spec:
rápida y sucia:
$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;
A continuación, le compare $distance_squared
a la plaza del umbral. Los factores pueden ajustarse (especialmente el azul podría obtener un factor mayor), así como su suma (para que coincida con el umbral)
Para una solución "lenta y limpia", comenzaría desde here (y here para un enfoque más práctico).
Elija una color space, y definen la "similitud", como por ejemplo, Distancia euclidiana entre las coordenadas de los dos colores. HSL/HSV podría ser una mejor opción que RGB, por ejemplo.
sí, pensé que eso también. buscando una fórmula si alguien tiene una a mano ;-) – Arturino
@Artur: ¿Una fórmula para qué? Fórmulas de conversión a, p. HSV se dan en el artículo de Wikipedia. La distancia euclídea es simplemente sqrt ((a1-a2)^2 + (b1-b2)^2 + (c1-c2)^2). –
gracias - También encontré esto útil: http://stackoverflow.com/questions/1633828/distance-between-colours-in-php/1634206#1634206 – Arturino
http://en.wikipedia.org/wiki/Color_quantization. O podría tratar de jugar con http://www.php.net/manual/en/function.imagetruecolortopalette.php – biziclop
Le sugiero que use un modelo HSV para que pueda comparar Hue, Saturation y Value entre varios colores. – TheZ