2012-06-29 20 views
5

RGB altı renk dizim var. Onları renk benzerliği ve eşik değeriyle gruplandırmak için hızlı ve kirli bir yol bulmak istiyorum.Eşiği kullanarak benzer HEX renklerini bulma

spektrumu: enter image description here

+0

http://en.wikipedia.org/wiki/Color_quantization. Ya da http://www.php.net/manual/en/function.imagetruecolortopalette.php – biziclop

+0

ile uğraşmayı deneyebilirsiniz. Ben bir HSV modelini kullanmanızı tavsiye ederim. Böylece renk tonları arasında Ton, Doygunluk ve Değer seçeneklerini karşılaştırabilirsiniz. – TheZ

cevap

3

hızlı ve kirli:

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

Daha sonra eşik karesiyle $distance_squared karşılaştırmak istiyorum. Faktörler (özellikle mavi daha yüksek bir faktör alabilir) ve toplamları (eşiği eşleştirmek için)

"Yavaş ve temiz" bir çözüm için here (ve here) daha pratik bir yaklaşım).

1

bir color space seçin ve tanımlamak "benzerlik" olarak, örneğin İki rengin koordinatları arasındaki öklid mesafesi. HSL/HSV, örneğin RGB'den daha iyi bir seçim olabilir.

+0

evet bunu çok düşündüm. Sadece birinin kullanışlı bir formülü var ;-) – Arturino

+0

@Artur: Ne için bir formül? Dönüşüm formülleri, ör. HSV Wikipedia makalesinde verilmiştir. Öklid mesafesi sadece kare ((a1-a2)^2 + (b1-b2)^2 + (cı-c2)^2) 'dir. –

+1

Teşekkürler - Ayrıca şunu da faydalı buldum: http://stackoverflow.com/questions/1633828/distance-between-colours-in-php/1634206#1634206 – Arturino