2012-08-22 18 views
5

यह देखते हुए कि आरजीबी में हम 256^3 संयोजन = 16,777,216 रंगों का प्रतिनिधित्व कर सकते हैं, और चूंकि मानव आंख केवल 10,000,000 को अलग कर सकती है, जाहिर है कि 6,777,216 आरजीबी संयोजनों का अधिशेष है जो क्रोमैटिक रूप से समकक्ष रंगों से अलग नहीं हैं ।आरजीबी इसी तरह के रंग अनुमान एल्गोरिदम

संपीड़न एल्गोरिदम इस आधार पर काम करते हैं जब रंग में स्पेसियल अंतर का अनुमान लगाया जाता है, जो मुझे विश्वास है। इस बात को ध्यान में रखते हुए, एक भरोसेमंद गणना कैसे कर सकता है कि दिया गया रंग 'समानता' की सीमा के भीतर है या नहीं?

बेशक, 'समानता' किसी प्रकार का मनमाना/ट्यूनेबल पैरामीटर होगा जिसे tweaked किया जा सकता है, लेकिन यह वैसे भी एक अनुमान है। तो किसी भी पॉइंटर्स, स्यूडोकोड, अंतर्ज्ञानी कोड नमूने, ऐसे संसाधनों को मॉडल करने में मेरी मदद करने के लिए संसाधन?

आपकी मदद

+0

आप कहते हैं "6,777,216 का अधिशेष" जैसे कि लगभग आधा जानकारी बर्बाद हो गई थी। यह मामला नहीं है। ये 6,777,216 रंग '1-लॉग 2 (1000000)/24' यानी के लिए खाते हैं। जानकारी का 3.11%। संपीड़न के लिए उस पर भरोसा मत करो! –

+0

सालों बाद, यह प्रश्न अभी भी प्रासंगिक लगता है। अगर यह किसी की मदद करता है, तो मुझे हाल ही में [यहां] (https://medium.com/@dariushodaei/colour-coding-part-1-aa0d9910592) – ComethTheNerd

उत्तर

5

अवधारणात्मक रंग अंतर की गणना CIEDE2000 Color-Difference Formula का उपयोग करके की जा सकती है। CIEDE2000 formula एलसीएच कलर स्पेस (चमकदारता, क्रोमा, और ह्यू) पर आधारित है। एलसीएच कलर स्पेस को सिलेंडर के रूप में दर्शाया जाता है (छवि here देखें)।

एक कम सटीक (लेकिन अधिक प्रबंधनीय) मॉडल, CIE76 रंग-अंतर फ़ॉर्मूला है, जो Lab color space (L*a*b*) पर आधारित है। आरजीबी या सीएमवाईके मानों और एल * ए * बी * के बीच रूपांतरण के लिए कोई आसान सूत्र नहीं हैं, क्योंकि आरजीबी और सीएमवाईके रंग मॉडल डिवाइस पर निर्भर हैं। आरजीबी या सीएमवाईके मानों को सबसे पहले एक विशिष्ट पूर्ण रंग स्थान, जैसे एसआरबीबी या एडोब आरजीबी में परिवर्तित करने की आवश्यकता है। यह समायोजन डिवाइस निर्भर होगा, लेकिन ट्रांसफॉर्म से परिणामी डेटा डिवाइस स्वतंत्र होगा, जिससे डेटा को सीआईई 1 9 31 रंग स्थान में परिवर्तित किया जा सकेगा और फिर एल * ए * बी * में परिवर्तित किया जाएगा। This आलेख प्रक्रिया और सूत्रों को बताता है।

+0

उत्कृष्ट संसाधन! रंगीन धारणा पर मैंने एक अंडरग्रेड ग्राफिक्स मॉड्यूल की यादें वापस लाईं। पॉइंटर्स – ComethTheNerd

1

आरजीबी रंग प्रणाली के लिए बहुत-बहुत धन्यवाद ऐसी है कि अगर 2 रंग मानों एक दूसरे के करीब हैं तो रंग भी perceptually करीब हैं बनाया गया है।

उदाहरण:

रंग आरजीबी = (100, 100, 100) द्वारा परिभाषित perceptually लगभग रंग आरजीबी = (101, 101, 100), आरजीबी = (98, 100, 99) आदि के रूप में ही है ...

+0

के बारे में लिखा गया एचएसएल का उपयोग करके एक अलग समाधान मिला, तो शायद एक भिन्न डिग्री एन <5 किसी भी कॉलम में तब एक कल्पनीय रंगीन अंतर नहीं पैदा करना चाहिए? परीक्षण के लिए शुरू करने के लिए यह एक अच्छी जगह है, धन्यवाद – ComethTheNerd

+0

हां। परीक्षण के लिए इस ऑनलाइन उपकरण को आज़माएं: [रंग योजना] (http://www.colorschemer.com/online.html) –

+0

नोट आपको मूल्यों के निकटता * घटक-वार * की जांच करना है, आप अभी नहीं जा सकते (रंग 1 - रंग 2) डेटा प्रतिनिधित्व के कारण <दहलीज। यह स्पष्ट है लेकिन एक झगड़ा हो सकता है। – Thomas

9

रंगों के बीच दूरी की गणना करने के कई तरीके हैं, किसी भी रंग स्थान में रंग घटकों पर परिभाषित सबसे सरल। ये आम "दूरी" या आरजीबी रंगों के बीच मीट्रिक हैं (आर 1, G1, बी 1) और (r2, G2, बी 2):

  • एल : पेट (आर 1-r2) + पेट (G1-G2) + पेट (बी 1-बी 2)
  • एल : sqrt ((आर 1-r2) ² + (G1-G2) ² + (बी 1-बी 2) ²)
  • एल : अधिकतम (पेट (आर 1-आर 2), abs (g1-g2), abs (b1-b2))

हालांकि ये इस तथ्य को ध्यान में रखते हैं कि मानव दृष्टि लेस है चमक से रंग के प्रति संवेदनशील है। इष्टतम परिणामों के लिए आपको आरजीबी से रंगीन जगह में परिवर्तित करना चाहिए जो चमक और रंग को अलग-अलग एन्कोड करता है। फिर नए रंग की जगह में उपर्युक्त मेट्रिक्स में से एक का उपयोग करें, संभवतः चमक घटक को अधिक वजन देना और रंग घटकों के लिए कम देना।

रंग के क्षेत्र जो एक दूसरे के अलग-अलग रूप हैं, को MacAdam ellipses कहा जाता है।अंडाकार CIELUV और CIELAB रंग रिक्त स्थान में लगभग परिपत्र बन जाते हैं, जो कि गणना के लिए बहुत अच्छा है, लेकिन दुर्भाग्य से आरजीबी से इन रंगों की जगहों में जाकर इतना आसान नहीं है।

जेपीईजी रंगों को YCbCr में परिवर्तित करता है, जहां वाई चमक और दो सी के एन्कोड रंग होते हैं, और फिर सी घटकों के संकल्प को रोकते हैं। आप एक ही कर सकता है और उसके बाद उदाहरण के लिए ऊपर से किसी एक मीट्रिक की एक तौला संस्करण का उपयोग,:

diff = sqrt(1.4*sqr(y1-y2) + .8*sqr(cb1-cb2) + .8*sqr(cr1-cr2)) 

विकिपीडिया में color difference पर लेख अलग रंग रिक्त स्थान के लिए और अधिक उदाहरण है।

+0

के लिए धन्यवाद यह वास्तव में बहुत अच्छा है, और सुझावों के लिए धन्यवाद। मुश्किल व्यापार रंग अनुमानित! – ComethTheNerd

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