سؤال

عند التحويل من RGB إلى التدرج الرمادي، يُقال أنه يجب تطبيق أوزان محددة على القنوات R وG وB.وهذه الأوزان هي:0.2989، 0.5870، 0.1140.

ويقال أن السبب في ذلك هو اختلاف إدراك الإنسان وإحساسه تجاه هذه الألوان الثلاثة.يُقال أحيانًا أن هذه هي القيم المستخدمة لحساب إشارة NTSC.

ومع ذلك، لم أجد مرجعا جيدا لهذا على شبكة الإنترنت.ما هو مصدر هذه القيم؟

أنظر أيضاً هذه الأسئلة السابقة: هنا و هنا.

هل كانت مفيدة؟

المحلول

الأرقام المحددة في السؤال مأخوذة من CCIR 601 (انظر رابط ويكيبيديا أدناه).

إذا قمت بتحويل RGB -> رمادي بأرقام مختلفة / طرق مختلفة قليلاً ، فلن ترى فرقًا كبيرًا على الإطلاق على شاشة الكمبيوتر العادية في ظل ظروف الإضاءة العادية -جربها.

فيما يلي بعض الروابط الإضافية حول الألوان بشكل عام:

ويكيبيديا لوما

بروس ليندبلوم موقع الويب المتميز

الفصل 4 عن اللون في كتاب كولن وير، "تصور المعلومات"، ISbn 1-55860-819-2؛هذا الرابط الطويل لـ Ware in books.google.comقد تعمل أو لا تعمل

com.cambridgeincolor :دروس ممتازة ومكتوبة جيدًا حول كيفية الحصول على الصور الرقمية وتفسيرها ومعالجتها باستخدام نهج موجه بصريًا يؤكد المفهوم على الإجراء "

إذا واجهت RGB "خطية" مقابل "غير خطي" ، فإليك جزء من ملاحظة قديمة لنفسي حول هذا.كرر، في الممارسة العملية، لن ترى فرقا كبيرا.


RGB -> ^ جاما -> Y -> L*

في علم الألوان ، تسمى قيم RGB المشتركة ، كما في HTML RGB (10 ٪ ، 20 ٪ ، 30 ٪) ، "غير خطية" أوتصحيح غاما.يتم تعريف القيم "الخطية" على أنها

Rlin = R^gamma,  Glin = G^gamma,  Blin = B^gamma

حيث تبلغ قيمة جاما 2.2 للعديد من أجهزة الكمبيوتر.تتم كتابة RGB المعتادة أحيانًا على أنها r 'g' b '(r' = rlin ^ (1/gamma)) (purists tongue-click) ولكن هنا سأسقط '.

السطوع على شاشة CRT يتناسب مع rgblin = rgb ^ gamma ، لذلك 50 ٪ رمادية على CRT مظلمة جدا:.5 ^ 2.2 = 22% من الحد الأقصى للسطوع.(تعد شاشات LCD أكثر تعقيدًا؛علاوة على ذلك، فإن بعض بطاقات الرسومات تعوض عن جاما.)

للحصول على مقياس الخفة يسمى L* من RGB ، قسمة RGB الأولى على 255 ، وحساب

Y = .2126 * R^gamma + .7152 * G^gamma + .0722 * B^gamma

هذا هو Y في مساحة اللون XYZ؛إنه مقياس للون "الإنارة".(الصيغ الحقيقية ليست بالضبط x^gamma، ولكنها قريبة؛التزم بـ x^gamma للتمرير الأول.)

أخيراً،

L* = 116 * Y ^ 1/3 - 16

"...يطمح إلى التوحيد الإدراكي [و] يتطابق بشكل وثيق مع الإدراك البشري للخفة." -- ويكيبيديا مساحة لون المختبر

نصائح أخرى

ولقد وجدت أن هذا المنشور المشار إليها في إجابة على سؤال مماثل السابق. ومن المفيد جدا:

http://cadik.posvete.cz/color_to_gray_evaluation/

وهذا يظهر "طن" من الطرق المختلفة لتوليد الصور الرمادية مع نتائج مختلفة!

وهيريس بعض التعليمات البرمجية في ج لتحويل RGB إلى تدرج الرمادي. ترجيح الحقيقي المستخدمة ل RGB لتحويل الرمادي هو 0.3R + 0.6G + 0.11B. هذه الأوزان تخلخل في غاية الأهمية حتى تتمكن من اللعب معهم. لقد جعلت منهم 0.25R + 0.5G + 0.25B. وتنتج صورة أغمق قليلا.

ملحوظة: التعليمة البرمجية التالية يفترض xRGB 32BIT وتنسيق بكسل

unsigned int *pntrBWImage=(unsigned int*)..data pointer..;  //assumes 4*width*height bytes with 32 bits i.e. 4 bytes per pixel
unsigned int fourBytes;
        unsigned char r,g,b;
        for (int index=0;index<width*height;index++)
        {
            fourBytes=pntrBWImage[index];//caches 4 bytes at a time
            r=(fourBytes>>16);
            g=(fourBytes>>8);
            b=fourBytes;

            I_Out[index] = (r >>2)+ (g>>1) + (b>>2); //This runs in 0.00065s on my pc and produces slightly darker results
            //I_Out[index]=((unsigned int)(r+g+b))/3;     //This runs in 0.0011s on my pc and produces a pure average
        }

وتحقق من اللون التعليمات للحصول على المعلومات في هذا الشأن. هذه القيم تأتي من توحيد القيم RGB التي نستخدمها في عرض لدينا. في الواقع، وفقا للالتعليمات اللون، والقيم التي تستخدم التي عفا عليها الزمن، لأنها هي القيم المستخدمة لمعيار NTSC الأصلي وليس للمراقبين الحديثة.

وهنا ورقة عن كيفية اشتقاق هذه الأرقام (أو مماثلة):

<وأ href = "https://web.archive.org/web/20160303201512/http://www.cis.rit.edu/mcsl/research/broadbent/CIE1931_RGB.pdf" يختلط = "نوفولو noreferrer" > https://web.archive.org/web/20160303201512/http://www.cis.rit.edu/mcsl/research/broadbent/CIE1931_RGB.pdf

ما هو مصدر هذه القيم؟

"مصدر" المعاملات المنشورة هو مواصفات NTSC التي يمكن رؤيتها في التوصية601 و خصائص التلفزيون.

"المصدر النهائي" هو تجارب CIE التي أجريت حوالي عام 1931 حول إدراك اللون البشري.الاستجابة الطيفية للرؤية البشرية ليست موحدة.أدت التجارب إلى ترجيح قيم التحفيز الثلاثي بناءً على الإدراك.المخاريط L وM وS لدينا1 حساسة للأطوال الموجية للضوء التي نحددها بـ "الأحمر" و"الأخضر" و"الأزرق" (على التوالي)، حيث يتم اشتقاق الألوان الأساسية للتحفيز الثلاثي.2

الضوء الخطي3 الأوزان الطيفية لـ sRGB (و Rec709) هي:

رلين * 0.2126 + جلين * 0.7152 + بلين * 0.0722 = ص

وهي خاصة بمساحات الألوان sRGB وRec709، والتي تهدف إلى تمثيل شاشات الكمبيوتر (sRGB) أو شاشات HDTV (Rec709)، وهي مفصلة في وثائق الاتحاد الدولي للاتصالات لـ التوصية 709 و أيضا BT.2380-2 (2018/10)

الحواشي (1) المخاريط هي خلايا كشف اللون في شبكية العين.
(2) ومع ذلك، فإن أطوال موجات التحفيز الثلاثي المختارة ليست عند "الذروة" لكل نوع مخروطي - وبدلاً من ذلك يتم اختيار قيم التحفيز الثلاثي بحيث يتم تحفيزها على نوع مخروطي معين أكثر بكثير من نوع آخر، أي.فصل التحفيز.
(3) تحتاج إلى جعل قيم sRGB خطية قبل تطبيق المعاملات.أناقش هذا في إجابة أخرى هنا.

وهذه القيم تختلف من شخص لآخر، خاصة بالنسبة للأشخاص الذين هم colorblind.

وهو كل هذا ضروري حقا، الإدراك البشري وCRT مقابل سوف LCD تختلف، ولكن B كثافة R G لا، لماذا لا L = (R + G + B)/3 وتعيين RGB جديد لL، L، L؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top