रंगों की समानता की जांच करने के लिए एल्गोरिदम


84

मैं एक एल्गोरिथ्म की तलाश कर रहा हूं जो दो आरजीबी रंगों की तुलना करता है और उनकी समानता का मूल्य उत्पन्न करता है (जहां समानता का अर्थ है "औसत मानव धारणा के संबंध में समान")।

कोई विचार?

संपादित करें :

चूँकि मैं अब और जवाब नहीं दे सकता, इसलिए मैंने अपने "समाधान" को सवाल के रूप में संपादित करने का फैसला किया।

मैंने अपने ऐप में ट्रू-कलर के छोटे (बहुत) छोटे सबसेट के साथ जाने का फैसला किया, ताकि मैं अपने आप से रंगों की तुलना को संभाल सकूं। मैं लगभग 30 रंगों के साथ काम करता हूं और उनके बीच कठिन-कोडित दूरी का उपयोग करता हूं।

चूंकि यह एक iPhone ऐप था, जिसका मैंने उद्देश्य-सी के साथ काम किया था और कार्यान्वयन कमोबेश एक मैट्रिक्स है जो नीचे दी गई तालिका का प्रतिनिधित्व करता है, जो रंगों के बीच की दूरी को दर्शाता है।

यहां छवि विवरण दर्ज करें


R, G और B मानों की तुलना करना पर्याप्त नहीं है?
ब्लैकबियर

@ कै: मैं उसी चीज को लागू करने की कोशिश कर रहा हूं। क्या आप YUV एप्रोच के साथ गए थे या आपने किसी अन्य प्रकार का रंग स्थान और अंतरिक्ष दूरी चुना था?
थरमा

3
@ तारिअम ने अपने ऐप में ट्रू-कलर के छोटे (बहुत) छोटे सबसेट के साथ जाने का फैसला किया, ताकि मैं अपने हिसाब से रंगों की तुलना संभाल सकूं। मैं लगभग 50 रंगों के साथ काम करता हूं और उनके बीच कड़ी-कोडित दूरी का उपयोग करता हूं। हालाँकि सभी से मैंने 2 ^ 24 रंगों का उपयोग करते समय पढ़ा और आज़माया और परीक्षण किया, YUV ने सबसे अच्छा काम किया।
काई हुप्पमन

@ कै: मुझे आपके निर्णय और इसके कारणों के बारे में बताने के लिए बहुत बहुत धन्यवाद। इसका मतलब है कि आप आरजीबी का उपयोग कर रहे हैं और 50 रंगों का उपयोग करके हिस्टोग्राम बना सकते हैं और पूर्वनिर्धारित दूरी का उपयोग करके अपने कोहरे को तेज कर सकते हैं, सही? आपने अपने एल्गोरिथ्म को लागू करने के लिए किस भाषा का उपयोग किया?
थरमा

@ थिरमा ने मूल प्रश्न में इसे संपादित के रूप में रखा।
काई हुप्पमन

जवाबों:


57

यूक्लिडियन अंतरिक्ष में आरजीबी की दूरी "मानव धारणा के समान" नहीं है

आप YUV रंग स्थान का उपयोग कर सकते हैं , यह इस कारक को ध्यान में रखता है:

|  Y' |      |  0.299    0.587    0.114   | | R |
|  U  |  =   | -0.14713 -0.28886  0.436   | | G |
|  V  |      |  0.615   -0.51499 -0.10001 | | B |

आप इस उद्देश्य के लिए CIE रंग स्थान का उपयोग भी कर सकते हैं ।

संपादित करें:

मैं उल्लेख करूंगा कि YUV रंग स्थान एक सस्ती सन्निकटन है जिसे सरल सूत्रों के माध्यम से गणना की जा सकती है। लेकिन यह अवधारणात्मक रूप से एक समान नहीं है। अवधारणात्मक रूप से समान का अर्थ है कि एक रंग मूल्य में समान राशि का परिवर्तन समान दृश्य महत्व के परिवर्तन का उत्पादन करना चाहिए। यदि आपको अधिक सटीक और कठोर मीट्रिक की आवश्यकता है, तो आपको निश्चित रूप से CIELAB रंग स्थान या किसी अन्य अवधारणात्मक समान स्थान पर विचार करना चाहिए (भले ही रूपांतरण के लिए कोई सरल सूत्र न हों)।


3
धन्यवाद! क्या मैं Y'UV मूल्यों के यूक्लिडियन अंतरिक्ष दूरी के साथ जा सकता हूं?
काई हुप्पमन

ज़रूर, लेकिन आप अन्य दूरी का भी उपयोग कर सकते हैं।
घासेन हमरौनी

2
सबसे शायद आप यूवी घटकों के बीच यूक्लिडियन दूरी की गणना केवल इसलिए करना चाहते हैं क्योंकि वाई 'ल्युमा घटक है।
रॉस

17
क्या कोई इस दावे के लिए स्रोत का हवाला दे सकता है कि यूयूवी में यूक्लिडियन दूरी, अंतर की मानवीय धारणा को प्रतिबिंबित करती है?
बिल

4
@ यह नहीं है "परिणाम" अनुभाग यहाँ देखें: compuphase.com/cmetric.htm
kritzikratzi

23

मैं CIE94 (DeltaE-1994) का उपयोग करने की सलाह दूंगा, इसे मानव रंग धारणा का एक सभ्य प्रतिनिधित्व कहा जाता है। मैंने अपने कंप्यूटर-विज़न संबंधित अनुप्रयोगों में इसका काफी उपयोग किया है, और मैं परिणाम से खुश हूं।

लेकिन ऐसा तुलनात्मक प्रदर्शन करना महंगा है, लेकिन यह तुलनात्मक महंगा है:

  1. RGB to XYZ दोनों रंगों के लिए
  2. XYZ to LAB दोनों रंगों के लिए
  3. Diff = DeltaE94(LABColor1,LABColor2)

सूत्र (छद्मकोश):


मैंने CIELAB रंग स्थान का उपयोग करने के कारण इस विधि को प्राथमिकता दी, धन्यवाद।
सेर्गेई वोरोनेज़स्की

XYZ "हंटर-लैब" के रूप में एलएबी?
जुक्स

1
कोई बात नहीं ... मैं देख सकता हूं डेल्टा E 1994 में CIE-L * ab मानों का उपयोग किया गया है
Zuks

14

मानव धारणा तीव्रता से अधिक क्रोमा में कमजोर है।

उदाहरण के लिए, वाणिज्यिक वीडियो में, YCbCr / YPbPr रंग रिक्त स्थान (जिसे Y'UV भी कहा जाता है) क्रोमा जानकारी के संकल्प को कम करता है, लेकिन लूमा (Y) को संरक्षित करता है। डिजिटल वीडियो संपीड़न में जैसे 4: 2: 0 और 4: 2: 2 अपेक्षाकृत कमजोर धारणा के कारण क्रोमा बिटरेट को कम करता है।

मेरा मानना ​​है कि आप लूमा (वाई) पर अधिक प्राथमिकता देने और क्रोमा पर कम प्राथमिकता देने वाले एक दूरी समारोह की गणना कर सकते हैं।

इसके अलावा, कम तीव्रता के तहत, मानव दृष्टि व्यावहारिक रूप से काला-सफेद है। इसलिए, प्राथमिकता समारोह गैर-रैखिक है कि कम लूमा (वाई) के लिए आप क्रोमा पर कम और कम वजन डालते हैं।

अधिक वैज्ञानिक सूत्र: http://en.wikipedia.org/wiki/Color_difference


14

यहाँ रंग दूरी के विषय पर एक उत्कृष्ट लेखन है: http://www.compuphase.com/cmetric.htm

इस मामले में कि संसाधन लेखक के निष्कर्ष को गायब कर देता है, दो आरजीबी रंगों के बीच की दूरी के लिए सबसे कम कम-लागत सन्निकटन इस सूत्र ( सी कोड में) का उपयोग करके प्राप्त किया जा सकता है ।

typedef struct {
   unsigned char r, g, b;
} RGB;

double ColourDistance(RGB e1, RGB e2)
{
  long rmean = ( (long)e1.r + (long)e2.r ) / 2;
  long r = (long)e1.r - (long)e2.r;
  long g = (long)e1.g - (long)e2.g;
  long b = (long)e1.b - (long)e2.b;
  return sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8));
}

3

रंग धारणा यूक्लिडियन नहीं है। किसी भी दूरी का सूत्र एक ही समय में काफी अच्छा और भयानक दोनों होगा। यूक्लिडियन दूरी (आरजीबी, एचएसवी, लव, लैब, ...) पर आधारित कोई भी उपाय समान रंगों के लिए पर्याप्त होगा, जिससे एक्वा को चैती होने के करीब दिखाया जाएगा। लेकिन गैर-करीबी मूल्यों के लिए यह मनमाना होता है। उदाहरण के लिए, लाल हरे या नीले रंग के करीब है?

चार्ल्स पोयनटन के से रंग पूछे जाने वाले प्रश्न :

XYZ और RGB सिस्टम अवधारणात्मक एकरूपता प्रदर्शित करने से बहुत दूर हैं। CY में एक दशक या उससे अधिक समय के लिए एक समान रूप से समान रूप से अंतरिक्ष में XYZ के परिवर्तन का पता लगाना और अंत में किसी एकल प्रणाली पर सहमति नहीं हो सकती है।


धन्यवाद। और यह एक शानदार, दिलचस्प कड़ी है। मेरे उद्देश्य से यह बताना महत्वपूर्ण नहीं है कि लाल हरे या नीले रंग के करीब है, लेकिन यह कि एक हल्के भूरे रंग के करीब है तो एक हल्के लाल और मुझे उम्मीद है (लेकिन अभी तक निश्चित नहीं है) कि YUV इसे बनाएगी।
काई हप्पमन

-5

आरजीबी क्यूब में रंग समानता यूक्लिडियन दूरी (पाइथागोरस सूत्र का उपयोग करें) द्वारा मापा जाता है।

EDIT: एक दूसरे विचार पर, यह अधिकांश अन्य रंग स्थानों के लिए भी सही होना चाहिए।


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

नहीं। यूक्लिडियन दूरी किसी भी कार्टेशियन अंतरिक्ष में दूरी को मापने का एक तरीका है। यह दूरी मापता है, समानता नहीं! अब आप या तो एक अलग वेक्टर स्थान (जैसे cie या yuv) चुन सकते हैं जहाँ यूक्लिडियन दूरी और समानता सॉफ़्ट संयोग है, या आप एक अलग माप का उपयोग करते हैं। लेकिन आरजीबी + यूक्लिडियन संतोषजनक परिणाम नहीं देते हैं।
क्रिटिकाचारित्जी

मैंने यह भी सोचा, लेकिन फिर रंगों की एक सीमित संख्या के साथ एक ड्राइंग प्रोग्राम खोलें (उदाहरण के लिए एडोब फ्लैश, 216 प्रीसेट डिफॉल्ट पैलेट के साथ), और उस फॉर्मूले को टेस्ट में डालें और आप बहुत जल्दी निराश हो जाते हैं, जब आप चिल्लाते हैं स्पष्ट रूप से भूरे रंग की जरूरत है, आदि
दिमित्री
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.