طريقة تكميم الصورة. خوارزميات التكمية للصور ذات التدرج الرمادي والملون

22.04.2019

تحديد عمق اللون

تعرض معظم أجهزة الكمبيوتر 8 أو 16 أو 24 بت لكل بكسل. يحدد هذا عمق الألوان للصورة المعروضة.

بغض النظر عن عدد الألوان التي يعرضها النظام، يستطيع MATLAB تخزين ومعالجة الصور بأعداد مختلفة من البتات لكل بكسل: 224 لونًا لصور RGB بتنسيق uint8، و248 لونًا لصور RGB بتنسيق uint16، و2159 لونًا لصور RGB بتنسيق uint16. دقة التنسيق المزدوج يتم عرض هذه الصور بشكل أفضل على نظام ألوان 24 بت، على الرغم من أن مصادر التصوير قد لا توفر دائمًا عمق الألوان هذا. في معظم الحالات أنها توفر تمثيل الألوان 16 بت.

  • وصف تحديد عمق لون النظام
  • وصف اختيار عمق اللون

وصف عمق اللون

يتم استخدام التعليمة البرمجية التالية لتحديد عمق الألوان الذي يمكن للنظام عرضه.

الحصول على (0، "ScreenDepth") الجواب = 32

يقوم MATLAB بإرجاع عدد البتات لكل بكسل:

معنى وصف
8 يتم عرض تمثيل 8 بت في 256 لونًا. تعد الصور ذات الألوان النصفية ذات 8 بت جزءًا من تمثيل رسومات 24 بت.
16 عادةً ما يستخدم تمثيل 16 بت 5 بتات لكل مكون لون، وهو ما يعادل 32 تدرجًا (أي 2 5) للمكونات الحمراء والخضراء والزرقاء. ونتيجة لذلك، يدعم هذا التمثيل 32,768 (أي 2 15) لونًا مختلفًا. تستخدم بعض الأنظمة وحدة بت إضافية لزيادة عدد تدرجات الألوان المعروضة. في حالتنا، عدد الألوان المختلفة بتمثيل 16 بت هو 64,536 (أي 2 16).
24 يستخدم عرض 24 بت 8 بت لكل من مكونات الألوان الثلاثة، أي. 256 (2 8) تدرجات للمكونات الحمراء والخضراء والزرقاء. والنتيجة هي 16,777,216 (أي 2 24) لوناً مختلفاً.
32 يستخدم عرض 32 بت 24 بت لتخزين معلومات الألوان و8 بتات أخرى لتخزين تشبع (شفافية) البيانات. هذه هي ما يسمى قناة ألفا.

وصف اختيار عمق اللون

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

تقليل عدد الألوان في الصورة

يصف هذا القسم طريقة لتقليل عدد الألوان في صور الفهرس أو صور RGB. دعونا نفكر أيضًا في طريقة نشر خلط الألوان الزائفة (الثبات). تستخدم هذه الطريقة زيادة مرئية في عدد الألوان في الصورة.

فيما يلي أوصاف مختصرة لوظائف تقليل ألوان الصورة في Image Processing Toolbox.

في الأنظمة المزودة بشاشة ملونة RGB 24 بت، يمكن عرض الصور بـ 16,777,216 (أي 2 24) لونًا. في الأنظمة التي تحتوي على عدد أقل من ألوان RGB المعروضة، سيتم عرض الصور أيضًا بشكل جيد لأن MATLAB يستخدم تلقائيًا تقريب الألوان وخلط الألوان الزائفة.

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

  • في أنظمة العرض 8 بت، عند عرض صور الفهرس التي تحتوي على أكثر من 256 لونًا، يتم استخدام ثبات الألوان لأنه لا يمكن للنظام تمثيل كافة الألوان.
  • في بعض الأنظمة، لا يمكن للوحة الألوان، من حيث المبدأ، أن تحتوي على أكثر من 256 موضعًا.
  • إذا كانت صورة الفهرس تحتوي على أكثر من 256 لونًا، يقوم MATLAB بتخزين بيانات الصورة في مصفوفة ليس بتنسيق uint8، ولكن بتنسيق مزدوج الدقة. يؤدي هذا إلى تخزين المزيد من البيانات نظرًا لأن كل بكسل يشغل 64 بت.
  • يُنصح بتسجيل ملفات صور كبيرة بتنسيق يستخدم 256 لونًا للعرض. إذا كانت الصور تحتوي على أكثر من 256 لونًا عند التسجيل (باستخدام وظيفة imwrite) بنفس التنسيق، فمن الممكن حدوث أخطاء في العرض في المستقبل.

تقليل عدد الألوان في صورة الفهرس

باستخدام rgb2ind

تقوم وظيفة rgb2ind بتحويل صورة RGB إلى صورة فهرس، مما يقلل من عدد الألوان المعروضة. عند معالجة الصورة المصدر، تستخدم الوظيفة طرق تقريب الألوان التالية:

  • توضيح
    • التكميم الموحد
    • أدنى التباين الكمي
  • عرض اللوحة

تعتمد جودة الصورة الناتجة على طريقة التقريب المحددة، ونطاق ألوان الصورة المصدر، واستخدام التدرج. لاحظ أن نتيجة الطرق تعتمد أيضًا بشكل كبير على الصورة المحددة.

توضيح

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

عند النظر في هذه المشكلة، يتم استخدام مفهوم مكعب الألوان RGB. مكعب ألوان RGB عبارة عن مصفوفة ثلاثية الأبعاد لجميع الألوان التي تم تعريفها لنوع البيانات هذا. نظرًا لأنه يمكن تمثيل الصور في MATLAB بتنسيقات مختلفة (uint8 أو uint16 أو double)، فسيؤثر ذلك على أخذ عينات من الألوان في مكعب RGB.

الكمي الموحد.لإجراء تكميم موحد، استخدم الدالة rgb2ind مع المعلمات المناسبة.

فيما يلي مثال على التكميم الموحد. تؤثر الحجة الثانية على خصوصية التكميم.

RGB = imread("peppers.png"); = rgb2ind(RGB, 0.1);

توضح الصورة التكميم الموحد للصورة الممثلة بتنسيق uint8. وللتسهيل عليك، تعرض الصورة شريحة ثنائية الأبعاد من مكعب الألوان، حيث يكون اللون الأحمر هو 0 ونطاق اللون الأخضر والسماوي هو .

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

RGB = imread("peppers.png"); = rgb2ind(RGB,185);

تعتمد طريقة تكميم التباين الأقل على تجميع وحدات البكسل بناءً على الانحرافات بين قيمها. أولئك. يجب أن يكون للبكسل المحدد أقل انحراف إجمالي عن جميع وحدات البكسل في المجموعة.

تقليل عدد الألوان في صورة الفهرس

تُستخدم الدالة imapprox أيضًا لتقليل عدد الألوان في الصورة. تستخدم الدالة imapprox بعض تقنيات التقريب. بشكل أساسي، تستخدم وظيفة imaprox أولاً وظيفة ind2rgb لتحويل الصورة إلى RGB، ثم تستخدم وظيفة rgb2ind لتحويلها إلى صورة فهرس مع تغيير عدد الألوان.

مثال.
دعونا نلقي نظرة على مثال لإنشاء صور تحتوي على 128 و16 لونًا باستخدام الدالتين rgb2ind وimapprox، على التوالي.

L=imread("peppers.png"); الشكل، إيمشو (L)؛


الصورة الأصلية

L=im2double(L); = rgb2ind(L, 128); الشكل، imshow (x، خريطة)؛


صورة بـ 128 لونًا

Imaprox(x,map,16); الشكل، imshow(Y، خريطة جديدة)؛


صورة بـ 16 لونًا

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

تجانس التحولات اللونية

طريقة خلط الألوان الزائفة المنتشرة (الثبات)

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

دعونا نلقي نظرة على مثال لكيفية عمل طريقة ثبات الألوان.

  1. قراءة وتصور الصورة الأصلية. rgb=imread("onion.png"); imshow(rgb);

  2. قم بإنشاء صورة فهرس بثمانية ألوان دون استخدام التدرج. =rgb2ind(rgb,8,nodither"); الشكل، imshow(X_no_dither,map);

  3. قم بإنشاء صورة فهرس بثمانية ألوان باستخدام ثبات الألوان. =rgb2ind(rgb,8,"ثبات اللون"); الشكل، imshow(X_dither,map);

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

    إجراء تحويل مساحة اللون

    تحويل بيانات اللون بين فراغات اللون

    نظام الألوان الأكثر شيوعًا المستخدم في Image Processing Toolbox لوصف الصور الرقمية هو RGB. في هذه الحالة، تمثل أعمدة اللوحة شدة المكونات الحمراء والخضراء والزرقاء. يمكن أن تحتوي صور اللوحة على أعماق ألوان عشوائية، على الرغم من أن صور اللوحة الأكثر استخدامًا هي تلك ذات عمق الألوان 4 و8 بت لكل بكسل، على التوالي.

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

    التحويلات بين مساحات الألوان المعتمدة على الجهاز

    دعونا نفكر في مساحتين لونيتين هما RGB وCMYK. يتم تشكيل أي لون في مساحة RGB كمجموع كميات مختلفة من المكونات الحمراء والخضراء والزرقاء. عندما تكون قيم جميع المكونات تساوي الصفر، يتكون اللون الأسود. إذا أخذت جميع المكونات أقصى قيمة ممكنة، فسيتم تشكيل اللون الأبيض. ومع ذلك، فإن مفهوم "اللون الأبيض" تقريبي. والحقيقة هي أن مكونات RGB توفر فقط تقريبًا جيدًا، ولا يمكن الحصول على اللون الأبيض الحقيقي إلا عن طريق إضافة جميع مكوناته الطيفية، وليس فقط R وG وB. في مساحة CMYK، يتم تحقيق اللون الأبيض عن طريق صفر جميع مكوناته ، والسماوي (C، سماوي)، والأرجواني (M، أرجواني) والأصفر (Y، الأصفر) يتم استخدامها لإنشاء ألوان أخرى. عيب مساحة الألوان هذه هو أن الأجهزة التي تستخدمها لا يمكنها عرض الألوان الزاهية والمشبعة.

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

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

    يعرض الجدول قائمة بمساحات الألوان المعتمدة على الجهاز والتي يدعمها تطبيق معالجة الصور Matlab.

    وظيفة غاية غاية
    XYZ نظام إحداثي للألوان الطيفية الأساسية تم تطويره في عام 1931 من قبل اللجنة الدولية للإضاءة. xyY، uvL، u"v"L وL*a*b*
    xyY وصف الحصول على القيم اللونية الطبيعية. يمثل المكون Y، كما هو الحال في نظام XYZ، السطوع. XYZ
    الأشعة فوق البنفسجية نظام إحداثيات متساوي التباين. ليمثل السطوع وهو نظير Y في XYZ. XYZ
    ش "ت" ل تطور لنظام سابق لإنتاج مساحة لونية يتم فيها إدراك التغييرات الفردية في اللون والنصوع بشكل متساوٍ. XYZ
    مختبر* محاولة لمراعاة اعتماد الإدراك والسطوع. ل*يمثل التحجيم غير الخطي ل، تطبيع فيما يتعلق ببعض النقاط. XYZ
    L * الفصل في هذا النموذج، يمثل c وh التشبع والصفاء على التوالي. في الإحداثيات القطبية يتحول هذا النظام إلى مختبر*. مختبر*
    إس آر جي بي مساحة لونية تتوافق مع التدرج اللوني لشاشة CRT متوسطة الحجم. XYZ وL*a*b*

    مثال: تمثيل الصور في مساحات لونية مختلفة

    اقرأ صورة RGB في مساحة عمل MATLAB وقم بتحويل بيانات الألوان إلى مساحة الألوان XYZ:

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

أخذ عينات من الصور

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

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

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

وفي حالة أخذ العينات الموحدة، ينطبق ما يلي: نظرية كوتيلنيكوف، نُشر عام 1933 في عمل "حول قدرة الهواء والأسلاك في الاتصالات". تقول: إذا كانت الإشارة المستمرة لها طيف محدود بالتردد، فيمكن إعادة بنائها بالكامل وبشكل لا لبس فيه من عيناتها المنفصلة المأخوذة بفترة، أي. مع التردد.

تتم استعادة الإشارة باستخدام الوظيفة . أثبت Kotelnikov أن الإشارة المستمرة التي تلبي المعايير المذكورة أعلاه يمكن تمثيلها كسلسلة:

.

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

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

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

تكميم الصورة

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

أرز. 1. وظيفة تصف التكميم

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

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

نظرًا لأن فكرة DPCM بسيطة جدًا، فكما يلي من المخططات في الشكل. في الشكل 4.8، يتم تحديد خصائص نظام تقليل تكرار الصورة DPCM بواسطة [ترتيب المتنبئ ف،قيم معاملات التنبؤ أ أنا , عدد مستويات التكميم وموقعها.

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

معاملات التنبؤ أ أنايمكن تحديدها باستخدام تحليل الخطأ المربع المتوسط. يترك ز ( ك ) - العينات على خط المسح، أ

( ك ) - القيم المتوقعة لهذه القراءات. ومن الضروري أن يكون متوسط ​​خطأ التربيع في حده الأدنى، أي. تحتاج لتجد

دقيقة ه = E ( ز(ك) - } (4.21)

في كل مكان ك، وأنا

هذه مهمة معروفة، وإذا كانت هذه العملية ز ( ك ) ثابتة، فإن حلها له الشكل

, (4.22)

ص (ي - ط) = ه [ ز (ك - ي) ز (ك -i) ] (4.23)

تسمى عادة وظيفة الارتباط التلقائي للعملية ز.احتمال أيتم الحصول عليها عن طريق حل نظام المعادلات (4.22).

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

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

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

يتيح التكميم بأكثر من مستويين الحصول على صور ذات جودة أعلى مع تقليل التكرار. ينتج نظام ضغط DPCM مع تكميم 8 مستويات (3 بت)، عند وضعه على النحو الأمثل عند العتبات، صورًا بنفس جودة نظام PCM بعمق بت من 6 إلى 8، باستثناء الأخطاء القريبة من خطوط السطوع.

يجب بالطبع تشفير الإشارة الصادرة من مخرج جهاز التكميم، نظرًا لأن التوزيع الاحتمالي للاختلافات الكمية ليس موحدًا. من خلال الاختيار الناجح للكود (على سبيل المثال، كود Shannon-Fano أو Huffman)، من الممكن تقليل السرعة الإجمالية لإنشاء المعلومات. يشير برات إلى أنه عند استخدام كود هوفمان، من الممكن تقليل معدل إنشاء المعلومات إلى 2.5 بت/نقطة. يجب موازنة هذا التخفيض الإضافي في السرعة مع التكلفة المتزايدة والتعقيد للذاكرة والمزامنات وسجلات الذاكرة المساعدة المطلوبة لتشغيل رموز هوفمان.

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

بالنسبة للصور التي تتكون من إطارات متسلسلة، مثل التلفزيون، يمكن توسيع أفكار التنبؤ والطرح المرتبطة بـ DPCM إلى المجال الزمني. في مثل هذه الصور، لا يتغير سطوع العديد من النقاط من إطار إلى آخر أو يتغير ببطء. لذلك، من الممكن إنشاء نظام ضغط DPCM يتم فيه التنبؤ بسطوع النقطة التالية بناءً على سطوع مجموعة نقاط ثنائية الأبعاد للإطار الحالي والنقاط المقابلة للإطارات السابقة. من الناحية العملية، لا يمكن أن يكون ترتيب التنبؤ الزمني مرتفعًا، لأنه من الضروري لكل مصطلح زمني أن يكون لديك جهاز تخزين حيث سيتم تخزين الإطار بأكمله. أظهرت عمليات المحاكاة باستخدام متنبئ من الدرجة الثالثة، حيث تم استخدام النقاط الموجودة في التيار (والإطارات السابقة) على يسار النقطة المعنية وفوقها للتنبؤ، أنه يمكن الحصول على صور جيدة جدًا بمتوسط ​​عمق بت يبلغ 1 بت/نقطة.

4.3.3. مخططات لتقليل تكرار الصورة من خلال المعالجة في مجال التحويل

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

[ج ز] = [و] [

] [ Ф ] ت = , (4.24)

أين [ F] - مصفوفة مكونة من أعمدة المتجهات الذاتية المتعامدة F أناأ [ ] - مصفوفة قطرية للقيم الذاتية.

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

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

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

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

-4 -3 -2 -1
ب ط

لإخفاء البت i من الرسالة، يتم حساب الفرق. إذا، في هذه الحالة، b i لا يتوافق مع البتة السرية التي يجب إخفاؤها، فسيتم استبدال القيمة بأقرب قيمة يتم استيفاء هذا الشرط لها. وفي هذه الحالة يتم ضبط قيم كثافة البكسلات التي تم حساب الفرق بينها وفقًا لذلك، ويتم استخراج الرسالة السرية وفقًا للقيمة المقابلة للفرق.

لنفكر في مثال لبرنامج يطبق طريقة تكميم الصورة

البيانات الأولية قياسية.

الخطوة 2

نقوم بحساب المفتاح المبطن باستخدام الوحدتين (M.28) و (M.29). في هذه الحالة، تقوم الوحدة (M.28) بإرجاع جميع اختلافات الإشارة الممكنة (من -255 إلى +255)، وتقوم الوحدة (M 29) بإرجاع قيم البتات المقابلة لهذه الاختلافات.

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

ل- ب=
-255
-254
-253
-252
-2
-1

أرز. 6.15. أجزاء رئيسية مبطنة

دعونا نشر مجموعة الحاوية مع(مصفوفة من مكونات اللون الأزرق) في متجه باستخدام الوحدة (M.16). لنقم بتعيين فهرس البداية لعنصر المتجه الناتج، والذي سيتم من خلاله تضمين البتات والرسائل (على سبيل المثال، ).

لحساب حجم الخطوة (الفاصل العشوائي الزائف)، نستخدم الوحدة (M.15). اسمحوا في نفس الوقت ل := 8.

الخطوة 4

يتم تنفيذ خوارزمية التضمين بواسطة الوحدة (M.30). إن تكوين متجه البيانات الثنائية من سلسلة من الأحرف يشبه ذلك المعروض في (M.21) (ولكن في هذه الحالة، من الضروري استبداله بـ ).

لكل بت من الرسالة، يتم حساب فهرس ضعنصر ناقل الحاوية السيرة الذاتية. يتم حساب الفرق بين البكسلات المجاورة CVZو CVZ-1تبحث الحلقة الداخلية عن قيمة الفرق المقابلة في المتجه. إذا تم اكتشافه، يتم تعيين قيمة الفهرس للمتغير أنا،والذي يتوافق مع هذا الاختلاف في .

إذا كانت القيمة لا تتوافق مع البت الحالي للرسالة المخفية، فسيتم إجراء بحث عن أقرب فهرس حيث ثنائيةيساوي بت الرسالة. يتم البحث إلى الأسفل (ل)و اعلى (ح)من الفهرس.

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

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

نقوم بتنفيذ الطي العكسي للناقل سانتفي مصفوفة لها أبعاد المصفوفة الأساسية مع(م.7). نحصل على مصفوفة س.

يجذب الانتباه

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

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

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

خلفية

منذ زمن طويل، عندما كانت شركة نوكيا دافئة وهيمنت الأنابيب على سوق الهواتف الذكية، وكان أصحاب الهواتف الذكية يطلقون على أنفسهم بكل فخر اسم "أشخاص الهواتف الذكية"، في تلك العصور القديمة كتبت برامج بسيطة بلغة بايثون للسلسلة60. لقد عثرت على أحدهم ذات يوم أثناء البحث في الأرشيف. GifTool هو برنامج لإنشاء صور GIF متحركة من مجموعة من الصور. في ذلك، قمت بتنفيذ التكميم باستخدام طريقة القسم المتوسط، وخوارزمية الضغط LZW، وتم إنشاء بنية الملف بالكامل بشكل مستقل، وتم استخدام الشفافية لوحدات البكسل التي لم تتغير في الشريحة التالية لتقليل حجم الملف النهائي. أردت أن أنعش ذاكرتي وأرى كيف تعمل. فتحت الكود و... هذا الشعور عندما لا تتمكن من اكتشاف الكود الرديء الخاص بك منذ عشر سنوات مضت. لم أكن أعرف شيئًا عن PEP8 في ذلك الوقت، لذا كانت سهولة قراءة الكود أقل قليلاً من عدم وجودها (في ذلك الوقت أحببت البساطة، مثل العديد من المبرمجين المبتدئين). ذرفت بعض الدموع، وبصقت، وأعدت بناءه في PyCharm، واكتشفت كيفية تنفيذ طريقة القسم المتوسط، وسرعان ما أنشأت نصًا "قذرًا". يعمل! يتم إنشاء اللوحة، وتكون الصورة الناتجة مقبولة. ثم تساءلت عما إذا كان بإمكاني تحقيق نتائج أفضل بحيث تكون الصورة أقرب ما تكون إلى الصورة الأصلية قدر الإمكان.


لذلك - طريقة القسم المتوسط. انها بسيطة مثل الجحيم. الخطوة الأولى هي إنشاء مكعب RGB من جميع الألوان الفريدة للصورة. بعد ذلك، قم بقصها على طول الجانب الأطول. على سبيل المثال، النطاق الأحمر لدينا هو من 7 إلى 231 (الطول 231-7 = 224)، والأخضر من 32 إلى 170 (الطول 170-32 = 138)، والأزرق من 12 إلى 250 (الطول 250-12 = 238)، وهو ما يعني سنقوم "بقص" المكعب على طول الجانب الأزرق. نقوم أيضًا بقطع الأجزاء الناتجة على طول الجانب الطويل، وما إلى ذلك. حتى نحصل على 256 قطعة. لكل قطعة، احسب متوسط ​​اللون - هكذا نحصل على اللوحة.

هناك صورتان تقريبًا حول الموضوع من أجل الوضوح



ما الذي يمكن تحسينه هنا؟ أول ما يتبادر إلى الذهن هو حساب متوسط ​​اللون، ليس عن طريق جمع كل الألوان بغباء وتقسيمها على عددها [ sum(color) / count(color) ]، ولكن عن طريق الأخذ في الاعتبار عدد مرات ظهور كل لون في الصورة. أي أننا نقوم بضرب كل لون في عدد مرات ظهوره في الصورة، ثم نضيف القيم الناتجة، ونقسم الناتج على عدد مرات ظهوره في الصورة لجميع ألوان هذه القطعة [ sum(color *tal) / sum( المجموع) ]. ونتيجة لذلك، فإن الألوان التي يتم مواجهتها بشكل متكرر لها الأولوية في الحساب، ولكن الألوان النادرة تقوم أيضًا بإجراء تعديلاتها الخاصة، وبالتالي تكون لوحة الألوان أفضل والانحراف البصري للألوان أقل. للحصول على أفضل النتائج، من المستحسن أن تأخذ في الاعتبار أيضًا غاما، لكنني تركت هذا لوقت لاحق. والثاني ليس واضحًا جدًا - فالقسم المتوسط ​​​​لا يأخذ في الاعتبار خصوصيات إدراك اللون بالعين البشرية. نحن ندرك ظلال اللون الأخضر أفضل بكثير من ظلال اللون الأزرق. قررت تصحيح سوء الفهم هذا و"تسوية" المكعب - لقد ضربت أطوال الجوانب في المعاملات الواردة في هذه المقالة. ونتيجة لذلك، كان هناك المزيد من الأقسام على الجانبين الأخضر والأحمر، وعدد أقل على الجانب الأزرق. لم أجد مثل هذا الحل في أي مكان آخر (ربما لم أبحث عنه جيدًا)، لكن النتيجة واضحة.

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

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

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

حسنًا، أردت أن أشرح الأمر باختصار، لكن تبين أن الأمر عبارة عن مجموعة كاملة من الكتابة غير المفهومة. آمل أن أكتب كودًا أفضل مما أشرحه، لذا إليك رابط إلى github. تمت إعادة كتابة الكود عدة مرات، في البداية تم تحسين الخوارزمية حتى لم أكن راضيًا عن النتيجة، ثم اتضح أنها كانت تستهلك الكثير من ذاكرة الوصول العشوائي عند معالجة الصور (أولاً اختبرتها على صور صغيرة)، واضطررت إلى النقل مكعب RGB والقسم المتوسط ​​وخريطة البكسل لقاعدة البيانات (Sqlite). يعمل البرنامج النصي ببطء شديد، لكن النتيجة أفضل من التكميم باستخدام PIL/Pillow وGIMP (تسمى هذه العملية بالفهرسة).

مظاهرة مرئية:

إبداعي

نتيجة التكميم في GIMP، لوحة مثالية مكونة من 256 لونًا + طمس الألوان من Floyd-Stenberg (عادي)

نتيجة التكميم PIL/Pillow image.convert(mode = "P"، ثبات = PIL.Image.FLOYDSTEINBERG، لوحة = PIL.Image.ADAPTIVE، الألوان = 256)

نتيجة التكميم بواسطة الكود الخاص بي

ما يجب الانتباه إليه: تشتيت الأخطاء في GIMP صاخب جدًا، PIL/Pillow ينشئ لوحة ألوان ليست مثالية جدًا ولا يبدد الأخطاء عمليًا (انتقالات حادة بين الألوان).
إذا كنت لا ترى الفرق، فابحث عن أمثلة أخرى على جيثب.


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