कहो एन = 100; मैं 100 चाक्षुष रूप से भिन्न रंग कैसे बनाऊँ? इस गणितीय संभव है?
कैसे किसी भी प्राकृतिक संख्या n के लिए n अलग अलग रंग उत्पन्न करने के लिए?
आप एचएसएल कन्वर्ट करने के लिए और फिर रंग (एच) के मूल्यों के माध्यम से पुनरावृति अन्य 2 मूल्यों को स्थिर बनाये रखता है, जबकि चाहते हैं।
प्रत्येक मान के लिए आप एचएसएल वापस आरजीबी करने से परिवर्तित ।
अपने जवाब देखें यहां और यहां ।
आप उस बिंदु पर एक ही रंग का सब कुछ खत्म हो फिर से पुनरावृति और अन्य घटकों को बदलने संतृप्ति या चमक भिन्न करने सकता है आपके एन बहुत बड़ी है और इसलिए रंग चाक्षुष रूप से भिन्न नहीं हैं। तो बुनियादी तौर पर आप का उपयोग करने के रंग मूल्यों की एक अधिकतम संख्या हो सकता था, और एक बार है कि मारा जाता है आप एक अलग संतृप्ति या चमक के साथ प्रारंभ कर सकते हैं।
100 रंग का एक बहुत है, लेकिन आप उन्हें के रूप में कम HSB या एचएसएल अंतरिक्ष में संभव के रूप में बांट कर यह करने के लिए सक्षम हो सकता है; आरजीबी में यह कर शायद मुश्किल है।
उदाहरण के लिए, आप 10 विभिन्न रंग, 4 अलग संतृप्ति स्तर, और 3 अलग चमक सेटिंग्स का उपयोग करने के लिए तय कर सकते हैं, कि आप 120 रंगों को छोड़ देना होगा। आप संतृप्ति और चमक मूल्यों ध्यान से लेने के लिए की आवश्यकता होगी; मानव आंखों के जटिल और भ्रामक सेंसर कर रहे हैं। आप एक शंकु के रूप में रंग स्थान का इलाज, तो आप शायद प्रत्येक हल्कापन / संतृप्ति स्तर पर रंग की एक अलग संख्या चाहते हैं।
यहाँ विकिपीडिया के लिए एक लिंक है HSB पर प्रवेश ।
संपादित करें:
मैं इस क्षेत्र में किसी भी विशेषज्ञता नहीं है और मेरी गणित कौशल बहुत औसत है। लेकिन मैं राय है कि इस समस्या का समाधान, कई जवाब से यहाँ का सुझाव और अधिक जटिल और दिलचस्प बात यह है के बाद से मैं हाल ही में कुछ इसी तरह करने की कोशिश की है और एक समाधान नहीं मिला है।
रंग में अंतर
रंग की धारणा पाठ्यक्रम व्यक्तिपरक की है, लेकिन मनुष्यों के बीच महत्वपूर्ण समझौता है। उदाहरण के लिए, हम सभी इस बात से सहमत कर सकते हैं कि लाल, हरे और नीले रंग बहुत अलग रंग हैं, और यहां तक कि colorblind लोगों का मानना है कि काले और सफेद बहुत अलग हैं।
आरजीबी
कंप्यूटर सिस्टम में रंग का सबसे आम प्रतिनिधित्व वेक्टर है (आर, जी, बी) की तरह एक साधारण दूरी समारोह पता चलता है जो

के लिए सीमा को सेट करने देता आर , जी और बी के लिए [0, 1] और देखते हैं कि यह काम करता है:
- लाल (1, 0, 0) और लाल (1, 0, 0) की दूरी है 0 है, जो स्पष्ट होना चाहिए
- लाल (1, 0, 0) और पीले रंग (1, 1, 0) की दूरी है 1 , जिनमें से दूरी से छोटी है
- लाल (1, 0, 0) और नीले (0, 0, 1) जो है sqrt (2) है, जो प्रशंसनीय है
अब तक सब ठीक है. समस्या फिर भी है नीले और लाल एक ही दूरी है 1 काला से (0, 0, 0) , लेकिन जब चित्र को देख यह सच धारण करने के लिए प्रतीत नहीं होता:

इसके अलावा पीला (1, 1, 0) और मैजंटा (1, 0, 1) दोनों एक ही दूरी है है 1 सफेद से (1, 1, 1) , जो समझ बनाने के लिए नहीं लगता है या तो:

एचएसएल और एचएसवी
मुझे लगता है कि यह ग्रहण करने के लिए के लिए है कि एनालॉग मैट्रिक्स सुरक्षित है एचएसएल और एचएसवी रंग योजनाओं में एक ही समस्या है। ये रंग योजनाओं रंग की तुलना के लिए नहीं बनाया गया है।
CIEDE2000
सौभाग्य से, वहाँ वैज्ञानिकों को पहले से ही रंग की तुलना करने के लिए एक अच्छा तरीका खोजने की कोशिश कर रहे हैं। वे कुछ विस्तृत तरीकों के साथ आया था, नवीनतम एक अस्तित्व CIEDE2000

(पूर्ण सूत्र आलेख में वर्णित है विशाल )
यह मीट्रिक तथ्य यह है कि हम नीले रंग के विचार करने के लिए बहुत अच्छी तरह से असमर्थ होने लगते हैं की तरह ध्यान में मानव धारणा लेता है,। तो मैं कहता हूँ कि हम हमारे रंग अंतर समारोह के रूप में इस का उपयोग करें।
रंग चुनने एल्गोरिथ्म
अनुभवहीन समाधान
कुछ जवाब निम्नलिखित कलन विधि का सुझाव दिया
colors = []
for n in range(n):
success=False
while not success:
new_color = random_color()
for color in colors:
if distance(color, new_color)>far_enough:
colors.append(new_color)
success = True
break
इस एल्गोरिथ्म कुछ समस्या है:
रंगों की रिक्ति इष्टतम नहीं है। हम रंग की कल्पना तो एक लाइन पर नंबर की तरह हो सकता है, तीन नंबर बेहतर इस तरह से स्थान दिया गया किया जाएगा:
| एक ----- ख ----- ग |
चलती ए, बी, और सी के बिना वहाँ में एक अतिरिक्त एक नंबर पैकिंग सभी रंगों अर्बन से स्पष्ट रूप से भी बदतर है।
एल्गोरिथ्म समाप्त करने के लिए इसकी गारंटी नहीं है । क्या होगा अगर ऐसा कोई रंग काफी दूर तक सूची में मौजूदा रंग के रूप में है कि क्या है? पाश हमेशा के लिए जारी रहेगा
उचित समाधान
खैर .. मैं एक भी नहीं है।
आपके सवाल का एक जवाब नहीं है, लेकिन, अगर n एक अधिकतम मूल्य है और आपके आवेदन यह अनुमति देता है, तो आप इस तरह रंग की एक पूर्वनिर्धारित सूची इस्तेमाल कर सकते हैं:
http://en.wikipedia.org/wiki/List_of_colors
एक लाभ यह है कि आप रंग अंधापन के साथ लोगों के लिए एक टूलटिप में एक आदमियत पठनीय रंग नाम दिखा सकता है।
शुरुआत के लिए, आरजीबी अंतरिक्ष का उपयोग नहीं करते; यह इस समस्या के लिए एक बुरा रंग स्थान खोजने के लिए मुश्किल है। (आप प्रदर्शन के लिए या प्रिंट के लिए आप या तो काला या सफेद के पास के पास पृथक रंग की बड़ी संख्या है रंगों का उपयोग कर रहे हैं पर निर्भर करता है।)
आप लैब स्थान का उपयोग करते हैं, तो (क्रमशः प्रिंट और प्रदर्शन के लिए) रंग का दृश्य निकटता को मापने के लिए अवधारणात्मक रंग मॉडल (CIE 1996? और CIE 2000) कर रहे हैं।
आप कहते हैं कि नहीं आप एक बार रंग गणना करने के लिए जा रहे हैं और परिणाम की दुकान, या अगर वे मक्खी पर पुनः गणना की जाने की जरूरत है (और उस मामले में अगर यह नियतात्मक या नहीं हो गया है)। जाहिर है कि कैसे सबसे अच्छा सेट उत्पन्न करने के लिए में से किसी चर्चा है कि पर निर्भर करेगा।
हालांकि मुझे लगता है कि सुझाव है कि समान रूप से रंग अंतरिक्ष के कुल्हाड़ियों विभाजित (8 में कहते हैं) और प्रारंभिक बिंदु के रूप में उन का उपयोग कर किसी भी यादृच्छिक प्रक्रिया तुलना में अधिक कुशल हो जाएगा। निश्चित रूप से आप केवल अपने पड़ोसियों के लिए किसी भी बिंदु तुलना करने की आवश्यकता है (और वे पहले से ही सेट में हैं केवल यदि) है, जो आप की तुलना की एक बड़ी संख्या बचत होगी।
हाँ। अलग परिभाषित करना तो एक रंग अंतरिक्ष के लिए टाल जब हम कहते हैं कि अधिकतम अलग रंग हम क्या कहना मतलब रंग है जो जहाँ तक संभव हो सभी अन्य रंगों से हो रहा है का एक उत्पाद है। लेकिन चूंकि रंग स्थान जवाब नहीं बदलता है बदलने के लिए नहीं जा रहा है। और कुछ है कि मानव आँखें और कैसे मानव आंखों के साथ बेहतर फिट देख CIE-प्रयोगशाला de2000 रंग दूरी की तरह रंग सभी गणना कठिन redoing बनाता है को लागू करने के लिए, लेकिन एक स्थिर सूची आसान बनाता है। यहाँ 128 प्रविष्टियों है।
private static final String[] indexcolors = new String[]{
"#000000", "#FFFF00", "#1CE6FF", "#FF34FF", "#FF4A46", "#008941", "#006FA6", "#A30059",
"#FFDBE5", "#7A4900", "#0000A6", "#63FFAC", "#B79762", "#004D43", "#8FB0FF", "#997D87",
"#5A0007", "#809693", "#FEFFE6", "#1B4400", "#4FC601", "#3B5DFF", "#4A3B53", "#FF2F80",
"#61615A", "#BA0900", "#6B7900", "#00C2A0", "#FFAA92", "#FF90C9", "#B903AA", "#D16100",
"#DDEFFF", "#000035", "#7B4F4B", "#A1C299", "#300018", "#0AA6D8", "#013349", "#00846F",
"#372101", "#FFB500", "#C2FFED", "#A079BF", "#CC0744", "#C0B9B2", "#C2FF99", "#001E09",
"#00489C", "#6F0062", "#0CBD66", "#EEC3FF", "#456D75", "#B77B68", "#7A87A1", "#788D66",
"#885578", "#FAD09F", "#FF8A9A", "#D157A0", "#BEC459", "#456648", "#0086ED", "#886F4C",
"#34362D", "#B4A8BD", "#00A6AA", "#452C2C", "#636375", "#A3C8C9", "#FF913F", "#938A81",
"#575329", "#00FECF", "#B05B6F", "#8CD0FF", "#3B9700", "#04F757", "#C8A1A1", "#1E6E00",
"#7900D7", "#A77500", "#6367A9", "#A05837", "#6B002C", "#772600", "#D790FF", "#9B9700",
"#549E79", "#FFF69F", "#201625", "#72418F", "#BC23FF", "#99ADC0", "#3A2465", "#922329",
"#5B4534", "#FDE8DC", "#404E55", "#0089A3", "#CB7E98", "#A4E804", "#324E72", "#6A3A4C",
"#83AB58", "#001C1E", "#D1F7CE", "#004B28", "#C8D0F6", "#A3A489", "#806C66", "#222800",
"#BF5650", "#E83000", "#66796D", "#DA007C", "#FF1A59", "#8ADBB4", "#1E0200", "#5B4E51",
"#C895C5", "#320033", "#FF6832", "#66E1D3", "#CFCDAC", "#D0AC94", "#7ED379", "#012C58"
};
यहाँ पहले 256 एक छवि के रूप में है।

(बाएं से दाएं) (ऊपर से नीचे)। यदि आप सुनिश्चित करें कि प्रत्येक रंग colorspace के भीतर संभव के रूप में समान दूरी पर था कुछ और अलग रंग प्राप्त करने में सक्षम हो सकता है। यही कारण है कि लुकअप तालिका के रूप में अधिकतम बल्कि शुरू में एन नामित करना और फिर colorspace मानचित्रण से सभी पिछले रंग से अलग प्रत्येक अतिरिक्त रंग चुनता है। तो, हाँ, जानवर बल और एक उच्च स्तरीय रंग dsitance एल्गोरिथ्म और आप तैयार हैं अपने आप को रंग की इस एक ही सेट बनाने के लिए। एक दिन का समय के दौरान।













