2009-11-24 14 views
5

मैं किसी छवि के अंदर सबसे अधिक इस्तेमाल किए गए रंग निकालना चाहता हूं, या कम से कम प्राथमिक स्वर क्या आप मुझे सलाह दे सकते हैं कि मैं इस कार्य से कैसे शुरुआत कर सकता हूं? या मुझे एक समान कोड पर इंगित करें? मैं इसकी तलाश कर रहा हूं लेकिन कोई सफलता नहीं।एक छवि से रंग निकालने

+1

आप किस भाषा या ढांचे के साथ काम कर रहे हैं? – jheddings

+0

उत्तर आपके पर्यावरण पर भारी निर्भर करेगा। –

+0

ठीक है, मैं केवल अवधारणा के सबूत के लिए प्रसंस्करण के बारे में सोच रहा था और फिर – biquillo

उत्तर

4

आप Octree Color Quantization algorithm का उपयोग करके बहुत अच्छे परिणाम प्राप्त कर सकते हैं। अन्य क्वांटिलाइजेशन एल्गोरिदम Wikipedia पर पाए जा सकते हैं।

+0

यह वही है जो मैं ढूंढ रहा था! आपका बहुत बहुत धन्यवाद! – biquillo

+0

क्या आप उद्देश्य सी – dineshprasanna

+0

@ दिनेशप्रसाद में नमूना कोड भेज सकते हैं, नहीं, मैं नहीं कर सकता। अगर Google आपकी मदद नहीं कर सकता है तो आपको लिंक पर प्रदान की गई जानकारी का उपयोग करके अपना खुद का लिखना पड़ सकता है। –

3

मैं टिप्पणियों से सहमत हूं - एक प्रोग्रामिंग समाधान निश्चित रूप से अधिक जानकारी की आवश्यकता होगी। लेकिन तब तक, यह मानते हुए कि आप अपनी छवि में प्रत्येक पिक्सेल के आरजीबी मूल्य प्राप्त करेंगे, आपको HSV colorspace पर विचार करना चाहिए जहां ह्यू को प्रत्येक पिक्सेल के "स्वर" का प्रतिनिधित्व करने के लिए कहा जा सकता है। फिर आप अपनी छवि में सबसे अधिक उपयोग किए जाने वाले टन की पहचान करने के लिए histogram का उपयोग कर सकते हैं।

+0

"एचएसवी रंगस्थान" द्वारा एनबी आपको सबसे अधिक संभावना है "एचएसवी-मोड आरजीबी मॉडल" - एचएसवी (और इसके भाई जुड़वां एचएसएल) एक आरजीबी के विकृति हैं रंग _model_; बहुत कुछ जो आरजीबी मॉडल (या, गलती से, एक "आरजीबी रंग स्थान") को संदर्भित करता है, सीआईई-एक्सवाईजेड 3 डी रंग _ स्पेस_ में मूल्यों के प्रतिनिधित्व से निपट रहा है। विशेष रूप से आपके उत्तर को नाइटपिक करने की कोशिश नहीं कर रहा है, लेकिन वहां आप जाओ। – fish2000

1

अच्छा, मुझे लगता है कि आप प्रत्येक पिक्सेल आरजीबी रंग तक पहुंच सकते हैं। आप इसे कैसे चाहते हैं इस पर निर्भर करते हुए दो तरीके हैं।

सबसे पहले आप बस कुछ पिक्सेल के आर, जी और बी को कुछ बना सकते हैं।

एक छद्म कोड।


int Red = 0; 
int Green = 0; 
int Blue = 0; 
foreach (Pixels as aPixel) { 
    Red += aPixel.getRed(); 
    Green += aPixel.getGreen(); 
    Blue += aPixel.getBlue(); 
}

फिर देखें कि कौन सा है।

यह आपको केवल लाल, हरा या नीला चित्र देता है।

एक और तरीका आपको प्रत्येक आरजीबी संयोजन के हिस्टोग्राम बनाकर संयुक्त रंग (जैसे नारंगी) की स्थैतिक भी देगा।

एक छद्म कोड।


Map ColorCounts = new(); 
foreach (Pixels as aPixel) { 
    const aRGB = aPixel.getRGB(); 
    var aCount = ColorCounts.get(aRGB); 
    aCount++; 
    ColorCounts.put(aRGB, aCount); 
}

फिर देखें कि कौन से एक और गिनती है। आप नियमित आरजीबी रंग के रूप में रंग-रिज़ॉल्यूशन को भी कम कर सकते हैं जो आपको 6.7 मिलियन रंग तक देगा।

यह आरजीबी रंग के रंगों को आसानी से किया जा सकता है। उदाहरण के लिए, मान लें, आरजीबी 8 कदम 256 नहीं है।

एक छद्म कोड।



function Reduce(Color) { 
    return (Color/32)*32; // 32 is 256/8 as for 8 ranges. 
} 
function ReduceRGB(RGB) { 
    return new RGB(Reduce(RGB.getRed()),Reduce(RGB.getGreen() Reduce(RGB.getBlue())); 
} 

Map ColorCounts = new(); 
foreach (Pixels as aPixel) { 
    const aRGB = ReduceRGB(aPixel.getRGB()); 
    var aCount = ColorCounts.get(aRGB); 
    aCount++; 
    ColorCounts.put(aRGB, aCount); 
}

तब आप देख सकते जो सबसे गिनती है सीमा।

मुझे आशा है कि ये तकनीक आपको समझ में आती है।

+0

अच्छा! बहुत बहुत धन्यवाद, वास्तव में उपयोगी! – biquillo

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