2012-06-29 15 views
5

का उपयोग कर समान हेक्स रंग ढूंढना मेरे पास आरजीबी हेक्स रंगों की एक सरणी है। मैं उन्हें रंग समानता और थ्रेसहोल्ड मान द्वारा समूहित करने के लिए एक त्वरित और गंदा तरीका ढूंढना चाहता हूं।थ्रेसहोल्ड

कल्पना: enter image description here

+0

http://en.wikipedia.org/wiki/Color_quantization। या आप http://www.php.net/manual/en/function.imagetruecolortopalette.php – biziclop

+0

के साथ झुकाव करने का प्रयास कर सकते हैं, मैं सुझाव दूंगा कि आप एक एचएसवी मॉडल का उपयोग करें ताकि आप कई रंगों के बीच ह्यू, संतृप्ति और मूल्य की तुलना कर सकें। – 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 सीमा के वर्ग की तुलना करेंगे। कारकों समायोजित किया जा सकता (विशेष रूप से नीले रंग की एक उच्च कारक हो सकती है), और साथ ही उनका योग एक "धीमी गति से और साफ" समाधान के लिए

(क्रम सीमा से मिलान करने में), मैं के लिए here (और here से शुरू होगा एक और व्यावहारिक दृष्टिकोण)।

1

चुनें कोई color space, और परिभाषित "समानता" के रूप में जैसे यूक्लिडियन दूरी दो रंगों के निर्देशांक के बीच दूरी। उदाहरण के लिए, एचएसएल/एचएसवी आरजीबी की तुलना में बेहतर विकल्प हो सकता है।

+0

हाँ मैंने यह भी पाया। किसी के पास एक सूत्र की तलाश है यदि किसी के पास एक आसान है ;-) – Arturino

+0

@Artur: किस के लिए एक सूत्र? रूपांतरण सूत्रों को उदा। विकिपीडिया लेख में एचएसवी दिया जाता है। यूक्लिडियन दूरी बस वर्ग ((ए 1-ए 2)^2 + (बी 1-बी 2)^2 + (सी 1-सी 2)^2) है। –

+1

धन्यवाद - मुझे यह सहायक भी मिला: http://stackoverflow.com/questions/1633828/distance-between-colours-in-php/1634206#1634206 – Arturino

संबंधित मुद्दे