"स्वीकृत" उत्तर गलत और अपूर्ण है
एकमात्र उत्तर जो सटीक हैं, वे हैं @ jive-dadson और @EddingtonsMonkey उत्तर और समर्थन @ nils-pipenbrinck में । अन्य उत्तर (स्वीकृत सहित) स्रोतों को जोड़ने या उद्धृत करने के लिए हैं जो या तो गलत हैं, अप्रासंगिक हैं, अप्रचलित हैं, या टूटे हुए हैं।
संक्षेप में:
- sRGB को LINEARIZED होना चाहिएगुणांक लागू करने से पहले ।
- ल्यूमिनेन्स (L या Y) प्रकाश के रूप में रैखिक है।
- पेरिसेन्ड लाइटनेस (L *) नॉनलाइनियर है जैसा कि इंसानी धारणा है।
- एचएसवी और एचएसएल धारणा के संदर्भ में दूर से भी सटीक नहीं हैं।
- SRGB के लिए IEC मानक, 0.04045 की सीमा को निर्दिष्ट करता है, यह 0.03928 नहीं है (जो अप्रचलित शुरुआती मसौदे से था)।
- उपयोगी हो (यानी धारणा के सापेक्ष) , यूक्लिडियन दूरियों को एक समान रूप से समान कार्टेशियन वेक्टर स्थान की आवश्यकता होती है जैसे कि CIELAB। sRGB एक नहीं है।
निम्नलिखित सही और पूर्ण उत्तर है:
क्योंकि यह धागा खोज इंजन में अत्यधिक दिखाई देता है, इसलिए मैं इस उत्तर को इस विषय पर विभिन्न भ्रांतियों को स्पष्ट करने के लिए जोड़ रहा हूँ।
चमक एक अवधारणात्मक विशेषता है, इसका सीधा माप नहीं है।
Perceived lightness को कुछ विज़न मॉडल जैसे CIELAB द्वारा मापा जाता है, यहाँ L * (Lstar) अवधारणात्मक लपट का एक उपाय है , और मानव दृष्टि को गैर-रेखीय प्रतिक्रिया वक्र से अनुमानित करने के लिए गैर-रैखिक है।
ल्यूमिनेन्स प्रकाश का एक रैखिक माप है, सामान्य दृष्टि के लिए स्पष्ट रूप से भारित होता है, लेकिन प्रकाश की गैर-रैखिक धारणा के लिए समायोजित नहीं किया जाता है।
Luma ( Y, Prime ) एक गामा एन्कोडेड, भारित संकेत है जिसका उपयोग कुछ वीडियो एन्कोडिंग में किया जाता है। यह रैखिक चमक के साथ भ्रमित नहीं होना है।
गामा या स्थानांतरण वक्र (TRC) एक वक्र है जो अक्सर अवधारणात्मक वक्र के समान होता है, और आमतौर पर कथित शोर को कम करने और / या डेटा उपयोग (और संबंधित कारणों) में सुधार के लिए भंडारण या प्रसारण के लिए छवि डेटा पर लागू होता है।
कथित हल्कापन निर्धारित करने के लिए , पहले परिवर्तित गामा रैखिक luminance (करने के लिए R'G'B' छवि मूल्यों इनकोडिंग L
या Y
) और फिर गैर रेखीय कथित हल्कापन करने के लिए ( L*
)
लुमिनेंस को खोजने के लिए:
... क्योंकि जाहिर है कि यह कहीं खो गया था ...
पहला कदम:
सभी sRGB 8 बिट पूर्णांक मानों को दशमलव 0.0-1.0 में बदलें
vR = sR / 255;
vG = sG / 255;
vB = sB / 255;
दूसरा चरण:
एक गामा इनकोडिंग RGB को रैखिक मान में बदलें। उदाहरण के लिए sRGB (कंप्यूटर मानक) को लगभग V ^ 2.2 की शक्ति वक्र की आवश्यकता होती है, हालांकि "सटीक" परिवर्तन है:
जहां V Where गामा-एनकोडेड R, G या B चैनल sRGB है।
स्यूडोकोड:
function sRGBtoLin(colorChannel) {
// Send this function a decimal sRGB gamma encoded color value
// between 0.0 and 1.0, and it returns a linearized value.
if ( colorChannel <= 0.04045 ) {
return colorChannel / 12.92;
} else {
return pow((( colorChannel + 0.055)/1.055),2.4));
}
}
तीसरा कदम:
Luminance (Y) को खोजने के लिए sRGB के लिए मानक गुणांक लागू करें:
उपरोक्त कार्यों का उपयोग करते हुए स्यूडोकोड:
Y = (0.2126 * sRGBtoLin(vR) + 0.7152 * sRGBtoLin(vG) + 0.0722 * sRGBtoLin(vB))
प्राप्त प्रकाश व्यवस्था के लिए:
चरण चार:
ऊपर से luminance Y लें, और L * में बदलें
स्यूडोकोड:
function YtoLstar(Y) {
// Send this function a luminance value between 0.0 and 1.0,
// and it returns L* which is "perceptual lightness"
if ( Y <= (216/24389) { // The CIE standard states 0.008856 but 216/24389 is the intent for 0.008856451679036
return Y * (24389/27); // The CIE standard states 903.3, but 24389/27 is the intent, making 903.296296296296296
} else {
return pow(Y,(1/3)) * 116 - 16;
}
}
L * 0 (काला) से 100 (सफ़ेद) का मान है जहाँ 50 अवधारणात्मक "मध्य ग्रे" है। L * = 50 Y = 18.4 के बराबर है, या दूसरे शब्दों में एक 18% ग्रे कार्ड, एक फोटोग्राफिक एक्सपोज़र (Ansel Adams Zone V) के मध्य का प्रतिनिधित्व करता है।
संदर्भ:
IEC 61966-2-1:1999 Standard
Wikipedia sRGB
Wikipedia CIELAB
Wikipedia CIEXYZ
चार्ल्स पोयटन के गामा FAQ