سؤال

أقوم ببعض معالجة الصور وأحتاج إلى خوارزمية موازنة اللون الأبيض التلقائية التي لا تتطلب جهدًا كبيرًا من حيث وقت حساب وحدة المعالجة المركزية.أي توصيات؟

يحرر:وإذا كان الأمر يتعلق بالكفاءة، فسوف أقوم بتنفيذه في جافا مع الصور الملونة كمجموعة من الأعداد الصحيحة.

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

المحلول

هناك خوارزمية بسيطة نسبيًا تتمثل في حساب متوسط ​​درجات الألوان (في HSV أو HSL) لألمع وأغمق وحدات البكسل على الشاشة.إذا لزم الأمر، استخدم البكسل الأكثر سطوعًا فقط.إذا كانت الألوان بين الأكثر سطوعًا والأغمق مختلفة جدًا، فاستخدم البكسل الساطع.إذا كان الظلام قريبًا من اللون الأسود، فاستخدم البكسل الساطع.

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

سيكون هذا منطقيًا بالنسبة لك إذا كنت من مستخدمي Photoshop بكثرة.الإبرازات في الصورة غير مرتبطة (أو مرتبطة بشكل ضعيف) باللون الأساسي للكائن.إنها أفضل تمثيل لك لمجموعة الألوان من الضوء، إلا إذا كانت الصورة شديدة التعرض لدرجة أن كل شيء قد طغى على أجهزة CCD.

ثم قم بضبط ألوان جميع وحدات البكسل.

ستحتاج إلى وظائف RGB إلى HSV وHSV إلى RGB السريعة.(ولكن ربما يمكنك العمل في RGB لتصحيحات البكسل باستخدام جدول البحث (LUT) أو الاستيفاء الخطي.)

لا تريد استخدام لون البكسل المتوسط ​​أو اللون الأكثر شيوعًا.بهذه الطريقة يكمن الجنون.

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

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


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

نصائح أخرى

على ما يبدو يستخدم GIMP خوارزمية بسيطة للغاية للتوازن الأبيض التلقائي.http://docs.gimp.org/en/gimp-layer-white-balance.html.

يقوم الأمر بالتوازن الأبيض تلقائيا بضبط ألوان الطبقة النشطة عن طريق تمديد القنوات الحمراء والأخضر والأزرق بشكل منفصل. للقيام بذلك، يتجاهل ألوان البكسل في كل نهاية الرسم البياني الأحمر والأخضر والأزرق الذي يتم استخدامه بنسبة 0.05٪ فقط من بكسل في الصورة ويمتد النطاق المتبقي قدر الإمكان. والنتيجة هي أن ألوان البكسل التي تحدث بشكل غير منتظم للغاية عند الحواف الخارجية للتم الرسم البياني (ربما أجزاء من الغبار، وما إلى ذلك) لا تؤثر سلبا على القيم الدنيا والحد الأقصى المستخدمة في تمديد الرسم البياني، بالمقارنة مع التباين التمدد. ومع ذلك، مثل "التباين التمدد"، ومع ذلك، قد يكون هناك تحول هوى في الصورة الناتجة.

هناك تعديل أكثر قليلا مما هو موضح هنا لأن محاولتي الأولى لتنفيذ هذه الأعمال يبدو أنها تعمل لمعظم الصور ولكن يبدو أن الصور الأخرى تحتوي على القطع الأثرية أو تحتوي على الكثير من الأخضر الأحمر أو الأزرق: /

تشارلز ما اقترح استخدام Gimp خوارزمية توازن اللون الأبيض. في python و numpy هذا قد يبدو مثل هذا:

# white balance for every channel independently
def wb(channel, perc = 0.05):
    mi, ma = (np.percentile(channel, perc), np.percentile(channel,100.0-perc))
    channel = np.uint8(np.clip((channel-mi)*255.0/(ma-mi), 0, 255))
    return channel

image = cv2.imread("foo.jpg", 1) # load color
imWB  = np.dstack([wb(channel, 0.05) for channel in cv2.split(img)] )

انها سريعة وبسيطة وتوفر نتائج لائقة جدا

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

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

واحد خوارزمية منشورة مؤخرا هي خوارزمية توزيع الألوان ويمكن العثور عليها هنا: http://www.comp.nus.edu.sg/~Brown/pdf/colorconstannyjosav10.pdf. في الورقة، هناك أيضا إشارة إلى شفرة مصدر ماتلاب (http://www.comp.nus.edu.sg/~whitebal/files/files/illuminantestimator.m.). إنها خوارزمية بسيطة يمكن أن تكون مبرمجة بسهولة والنتائج تظهر أنها سريعة جدا.

إذا كنت بحاجة إلى صيام إضافي وفي نفس الوقت الدقيق خوارزميات موازنة بيضاء دقيقة (ثبات اللون)، يجب عليك التحقق من هذا الموقع: http://www.fer.unizg.hr/ipg/resources/color_constanny/

هناك العديد من الخوارزميات مع مصدر كل منها مشفرة قد تكون مجرد تلك التي تبحث عنها.

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