سؤال

كيف يمكنني تحويل قيم RGB للبكسل إلى قيمة أحادية اللون واحدة؟

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

المحلول

لقد وجدت حلاً واحدًا ممكنًا في الأسئلة الشائعة حول اللون.ال عنصر النصوع ي (من نظام CIE XYZ) يلتقط أكثر ما يعتبره البشر لونًا في قناة واحدة.لذلك، استخدم تلك المعاملات:

mono = (0.2125 * color.r) + (0.7154 * color.g) + (0.0721 * color.b);

نصائح أخرى

هذه المقالة MSDN الاستخدامات (0.299 * color.R + 0.587 * color.G + 0.114 * color.B);

هذه مقالة ويكيبيديا الاستخدامات (0.3* color.R + 0.59 * color.G + 0.11 * color.B);

هذا مقالة علمية حديثة يقارن أحدث ما توصلت إليه التكنولوجيا في تحويل الصور الفوتوغرافية الملونة إلى تدرج الرمادي، بما في ذلك صيغة النصوع البسيطة والتقنيات الأكثر تعقيدًا.

هذا يعتمد على ما هي دوافعك.إذا كنت تريد فقط تحويل صورة عشوائية إلى تدرج رمادي وجعلها تبدو جيدة جدًا، فإن التحويلات في الإجابات الأخرى لهذا السؤال ستفي بالغرض.

إذا كنت تقوم بتحويل صور فوتوغرافية ملونة إلى أبيض وأسود، فقد تكون العملية معقدة للغاية وغير موضوعية، وتتطلب تعديلًا محددًا لكل صورة.للحصول على فكرة عما قد يكون متورطا، نلقي نظرة على هذا درس تعليمي من أدوبي للفوتوشوب.

سيكون تكرار هذا في التعليمات البرمجية أمرًا متضمنًا إلى حد ما، وسيظل يتطلب تدخل المستخدم للحصول على الصورة الناتجة "المثالية" من الناحية الجمالية (مهما كان ذلك يعني!).

كما ذكرنا أيضًا، فإن الترجمة ذات التدرج الرمادي (لاحظ أن الصور أحادية اللون لا يلزم أن تكون بتدرج الرمادي) من ثلاثية RGB تخضع للذوق.

على سبيل المثال، يمكنك الغش، واستخراج المكون الأزرق فقط، ببساطة عن طريق التخلص من المكونات الحمراء والخضراء، ونسخ القيمة الزرقاء بدلاً منها.هناك حل آخر بسيط ومقبول بشكل عام وهو أخذ متوسط ​​RGB الثلاثي للبكسل واستخدام هذه القيمة في جميع المكونات الثلاثة.

حقيقة أن هناك سوقًا كبيرًا للمكونات الإضافية للمحولات ذات التدرج الرمادي/أحادية اللون الاحترافية وغير الرخيصة جدًا على الإطلاق لبرنامج Photoshop وحده، تشير إلى أن التحويل بسيط أو معقد تمامًا كما يحلو لك.

المنطق الكامن وراء تحويل أي صورة تعتمد على RGB إلى صورة أحادية اللون ليس تحويلًا خطيًا تافهًا.في رأيي، يتم معالجة هذه المشكلة بشكل أفضل من خلال تقنيات "تقسيم الألوان".يمكنك تحقيق "تجزئة الألوان" عن طريق التجميع بالوسائل k.

انظر المثال المرجعي من موقع MathWorks.

https://www.mathworks.com/examples/image/mw/images-ex71219044-color-based-segmentation-using-k-means-clustering

الصورة الأصلية بالألوان.

Picture with colours

بعد التحويل إلى أحادية اللون باستخدام المجموعات k Picture after converting to monochrome using k-means clustering

كيف يعمل هذا؟

جمع كل قيم البكسل من الصورة بأكملها.من الصورة التي يبلغ عرضها W بكسل وارتفاعها H بكسل، ستحصل على قيم ألوان W * H.الآن، باستخدام خوارزمية k-means، قم بإنشاء مجموعتين (أو صناديق) ورمي الألوان في "الصناديق" المناسبة.تمثل المجموعتان ظلالك السوداء والبيضاء.

فيديو يوتيوب يوضح تجزئة الصورة باستخدام وسائل k؟ https://www.youtube.com/watch?v=yR7k19YBqiw

التحديات مع هذا الأسلوب

خوارزمية التجميع للوسائل k عرضة للقيم المتطرفة.يمكن لعدد قليل من وحدات البكسل العشوائية ذات اللون الذي تكون مسافة RGB فيه بعيدة عن بقية الحشد أن تؤدي بسهولة إلى تحريف النقط الوسطى لإنتاج نتائج غير متوقعة.

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