2012-06-29 12 views
5

Ich habe ein Array von RGB-Hex-Farben. Ich möchte eine schnelle und schmutzige Möglichkeit finden, sie nach Farbähnlichkeit und Schwellenwert zu gruppieren.Suche nach ähnlichen HEX-Farben mit einem Schwellenwert

spec: enter image description here

+0

http://en.wikipedia.org/wiki/Color_quantization. Oder du könntest versuchen, mit http://www.php.net/manual/en/function.imagetruecolortopalette.php zu experimentieren. – biziclop

+0

Ich würde dir empfehlen, ein HSV-Modell zu verwenden, damit du Farbe, Sättigung und Wert zwischen verschiedenen Farben vergleichen kannst. – TheZ

Antwort

3

quick and dirty:

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

würden Sie dann $distance_squared zum Quadrat der Schwelle vergleichen. Die Faktoren können angepasst werden (insbesondere Blau könnte einen höheren Faktor erhalten), sowie ihre Summe (um den Schwellenwert zu erreichen)

Für eine "langsame und saubere" Lösung würde ich von here (und here für ein praktischer Ansatz).

1

eine color space auswählen und definieren "Ähnlichkeit", wie z.B. Euklidischer Abstand zwischen den Koordinaten der beiden Farben. HSL/HSV könnte zum Beispiel eine bessere Wahl als RGB sein.

+0

yep ich dachte das auch viel. nur auf der Suche nach einer Formel, wenn jemand ein Handy hat ;-) – Arturino

+0

@Artur: Eine Formel für was? Umrechnungsformeln zu z.B. HSV sind im Wikipedia-Artikel angegeben. Der euklidische Abstand ist einfach sqrt ((a1-a2)^2 + (b1-b2)^2 + (c1-c2)^2). –

+1

danke - das fand ich auch hilfreich: http://stackoverflow.com/questions/1633828/distance-between-colours-in-php/1634206#1634206 – Arturino

Verwandte Themen