यदि आप RAW फ़ाइलों को संसाधित कर सकते हैं, तो आपके पास RGRGRG और GBGBGB पंक्तियों (या संभवतः RGBGRGBG पंक्तियों) से युक्त एक बायर पिक्सेल सरणी होगी। आप सभी R और B पिक्सेल को अनदेखा कर सकते हैं, G पिक्सेल को योग कर सकते हैं, वर्गमूल ले सकते हैं (रूट) चूंकि लाल या नीले रंग की तुलना में दोगुने हरे रंग के पिक्सेल होते हैं), और जी पिक्सेल की संख्या से आधा भाग करते हैं। यह आपको अपनी तस्वीर में "हरे" के लिए उचित भारित औसत देना चाहिए। आप फिर लाल और नीले रंग का औसत ले सकते हैं, और तीनों औसत से अपने हरे प्रतिशत की गणना कर सकते हैं।
अधिक सटीक होने के लिए, आप लाल, हरे और नीले सेंसर पिक्सल के लिए उचित भार में फैक्टर करना चाह सकते हैं, क्योंकि CMOS सेंसर में प्रकाश की प्रत्येक तरंग दैर्ध्य के लिए अलग-अलग संवेदनशीलता होती है। भार सेंसर पर निर्भर करेगा, आम तौर पर। यह सरल तरीका होगा।
दिन के समय के कारण रंग डाली के लिए खाते में, विभिन्न प्रकार के कृत्रिम प्रकाश व्यवस्था आदि, फिर पहले से सफेद संतुलन को सही करने के लिए लाइटरूम जैसे उपकरण में प्रत्येक फोटो को प्रीप्रोसेस करना अधिक उपयुक्त हो सकता है, फिर मानक आरजीबी पिक्सेल छवियों पर अपनी गणना करें। RAW सेंसर डेटा को संसाधित करने के विपरीत, आप कुल मिलाकर हरे रंग के घटक के बजाय पिक्सेल "हरी शुद्धता" के आधार पर अपनी गणना करना चाहेंगे। एक पिक्सेल जितना अधिक हरा होता है, उसका वजन बनाम पिक्सेल उतना अधिक होता है जो अधिक लाल या नीला होता है। प्रसंस्करण से पहले श्वेत संतुलन को सामान्य करना, ओम्पटीन कारकों जैसे क्लाउड कवर, दिन के समय, मौसम, इत्यादि के लिए डिज़ाइन किए गए स्पर्शरेखा के साथ एक अन्यथा सरल गणना को जटिल बनाने की किसी भी आवश्यकता को समाप्त करना चाहिए।
आप अभी भी गैर-घटना पिक्सेल के बड़े क्षेत्रों, जैसे कि आकाश के लिए जिम्मेदार हो सकते हैं। मैं वास्तव में उस क्षेत्र में आपकी अधिक सहायता नहीं कर सकता, बिना वास्तव में आप क्या हासिल करने की कोशिश कर रहे हैं। एक "फोटोग्राफ" का हरापन संभवतः हरे से लाल और नीले रंग के अनुपात की गणना करके सर्वोत्तम रूप से परोसा जाएगा, जिसमें "आकाश" पिक्सेल शामिल होंगे।
आपकी प्रक्रिया के लिए, यह कहे बिना जाना चाहिए कि यदि आप एक ही रोशनी (एक ही तीव्रता और रंग तापमान) के तहत एक ही कैमरा सेटिंग्स के साथ तस्वीरें लेते हैं, तो एक सामान्य आधार रेखा के खिलाफ, जैसे कि 18% ग्रे कार्ड, के साथ स्पष्ट रूप से जाना जाएगा अपने परिणामों को सामान्य करने की दिशा में एक लंबा रास्ता तय करना। डिजिटल के साथ, किसी भी विसंगतियों को रॉ प्रसंस्करण सॉफ्टवेयर और एक बुनियादी सफेद संतुलन बीनने वाले उपकरण के साथ ठीक किया जा सकता है, इसलिए रॉ में शूट करना सुनिश्चित करें।
अपनी तस्वीरों की "हरियाली" की गणना करने के लिए कुछ और जानकारी प्रदान करने के लिए। स्पष्ट रूप से सरल तरीके हैं, जैसे कि हरे बायर पिक्सल्स का वजन बनाम नीले और लाल रंग की गणना करना या आरजीबी पिक्सल की लाल / नीली शुद्धता के संबंध में हरी शुद्धता की गणना करना। यदि आपके पास अधिक उपयुक्त रंग स्थान, जैसे कि एचएसवी ( ह्यू / संतृप्ति / मूल्य , जिसे कभी-कभी एचएसबी कहा जाता है, तो चमक के साथ मूल्य की जगह ले सकता है), और यदि आप एचयूई अंतरिक्ष में वक्र का उपयोग करके अपनी हरी राशि की गणना करते हैं, तो आपके पास अधिक भाग्य हो सकता है । (नोट: एचएसएल एक अलग प्रकार का रंग स्थान है, और संभवतः एक फोटो में "ग्रीन" की गणना करने के लिए आदर्श नहीं होगा, इसलिए मैं एचएसवी का उपयोग करूंगा। आप इन रंग स्थानों के बारे में अधिक जान सकते हैं ।।) शुद्ध हरा (संतृप्ति या मूल्य की परवाह किए बिना) 120 डिग्री के एक कोण पर गिरता है, और वहां से गिर जाता है जब आप लाल (0 °) या नीले (240 ° पर) की ओर बढ़ते हैं। 240 ° और 360 ° के बीच, संतृप्ति या मूल्य की परवाह किए बिना, पिक्सेल में हरे रंग की शून्य राशि होगी।
चित्र 1. ह्यू प्लॉट - ह्यू डिग्रियों में हरी शुद्धता
आप अपनी विशिष्ट आवश्यकताओं को पूरा करने के लिए वास्तविक वज़निंग वक्र को समायोजित कर सकते हैं, हालांकि एक साधारण वक्र निम्नलिखित के समान हो सकता है:
range = 240
period = range * 2 = 240 * 2 = 480
scale = 360/period = 0.75
pureGreen = sin(scale * 120)
के लिए मान 1.0pureGreen
होना चाहिए । गणना के लिए एक सूत्र इस प्रकार किया जा सकता है:greenness
sin(scale * hue) } 0 > hue > 240
greenness =
0 } 240 <= hue <= 360 || hue == 0
hue
अपने एचएसवी रंग मूल्य से रंग की डिग्री है। radius
के आधे है period
, जिसमें हरी कुछ हद तक मौजूद है। scale
समायोजित हमारे अवधि के लिए पाप की अवस्था, ऐसी है कि sin(scale * hue)
चोटियों (रिटर्न 1.0) आप शुद्ध हरे (कि साग तीव्रता अनदेखी) के लिए होता है कहां। चूँकि greenness
हमारी अवधि के पहले भाग में केवल राशि ही मान्य है, इसलिए हरे रंग की गणना केवल तभी मान्य होती है जब ह्यू 0 ° से अधिक हो और 240 ° से कम हो, और किसी अन्य ह्यू के लिए इसका शून्य हो।
आप अवधि को समायोजित करके भार को समायोजित कर सकते हैं, जिस सीमा के भीतर आप परिभाषित करते हैं green
वह मौजूद हो सकता है (यानी 0 से 240 के बजाय, आप 40 > hue > 200
इसके बजाय एक बाधा निर्धारित कर सकते हैं ), और 0 की हरियाली के लिए उस सीमा के बाहर कुछ भी परिभाषित करें। यह ध्यान दिया जाना चाहिए कि यह गणितीय रूप से सटीक होगा, हालांकि यह पूरी तरह से अवधारणात्मक रूप से सटीक नहीं हो सकता है। आप निश्चित रूप से pure green
पीले की ओर अधिक को समायोजित करने के लिए सूत्र को मोड़ सकते हैं (जो अधिक अवधारणात्मक रूप से सटीक परिणाम उत्पन्न कर सकते हैं), वक्र के आयाम को पठार तक बढ़ा सकते हैं और शुद्ध हरे रंग के बैंड को एक के बजाय एक सीमा तक बढ़ा सकते हैं। ह्यू मान, आदि कुल मानव अवधारणात्मक सटीकता के लिए, CIE XYZ और CIE L a b में संसाधित एक अधिक जटिल एल्गोरिथ्म *स्थान की आवश्यकता हो सकती है। (नोट: XYZ और लैब स्पेस में काम करने की जटिलता नाटकीय रूप से बढ़ जाती है जो मैंने यहाँ वर्णित की है।)
एक तस्वीर की हरियाली की गणना करने के लिए, आप प्रत्येक पिक्सेल की हरियाली की गणना कर सकते हैं, फिर एक औसत उत्पादन कर सकते हैं। फिर आप एल्गोरिथ्म को वहां से ले जा सकते हैं, और इसे अपनी विशिष्ट आवश्यकताओं के लिए ट्विक कर सकते हैं।
आप EasyRGB पर रंग रूपांतरण के लिए एल्गोरिदम पा सकते हैं , जैसे RGB से HSV के लिए एक:
var_R = ( R / 255 ) // Red percentage
var_G = ( G / 255 ) // Green percentage
var_B = ( B / 255 ) // Blue percentage
var_Min = min( var_R, var_G, var_B ) //Min. value of RGB
var_Max = max( var_R, var_G, var_B ) //Max. value of RGB
del_Max = var_Max - var_Min //Delta RGB value
V = var_Max //Value (or Brightness)
if ( del_Max == 0 ) //This is a gray, no chroma...
{
H = 0 //Hue (0 - 1.0 means 0° - 360°)
S = 0 //Saturation
}
else //Chromatic data...
{
S = del_Max / var_Max
del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max
del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max
if ( var_R == var_Max ) H = del_B - del_G
else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B
else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R
if ( H < 0 ) H += 1
if ( H > 1 ) H -= 1
}