2012-06-29 10 views
5

J'ai une matrice de couleurs hexagonales RVB. Je voudrais trouver un moyen rapide et sale de les regrouper par similarité de couleur et valeur de seuil.Recherche de couleurs HEX similaires à l'aide d'un seuil

spécifications: enter image description here

+0

http://fr.wikipedia.org/wiki/Color_quantization. Ou vous pouvez essayer de jouer avec http://www.php.net/manual/en/function.imagetruecolortopalette.php – biziclop

+0

Je vous suggère d'utiliser un modèle HSV afin que vous puissiez comparer la teinte, la saturation et la valeur parmi plusieurs couleurs. – TheZ

Répondre

3

rapide et sale:

$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; 

Vous pouvez ensuite comparer $distance_squared à la place du seuil. Les facteurs peuvent être ajustés (en particulier le bleu pourrait avoir un facteur supérieur), ainsi que leur somme (afin de correspondre au seuil)

Pour une solution "lente et propre", je commencerais par here (et here pour une approche plus pratique).

1

Choisissez un color space et définir la "similitude", comme par exemple Distance euclidienne entre les coordonnées des deux couleurs. HSL/HSV pourrait être un meilleur choix que RVB, par exemple.

+0

ouais j'ai pensé que beaucoup aussi. juste à la recherche d'une formule si quelqu'un en a un à portée de main ;-) – Arturino

+0

@Artur: Une formule pour quoi? Des formules de conversion par ex. HSV sont donnés dans l'article Wikipedia. La distance euclidienne est simplement sqrt ((a1-a2)^2 + (b1-b2)^2 + (c1-c2)^2). –

+1

merci - J'ai également trouvé ceci utile: http://stackoverflow.com/questions/1633828/distance-between-colours-in-php/1634206#1634206 – Arturino

Questions connexes