4.13. صيغ البكسل¶
تحزم المرحلة الأخيرة من خط أنابيب الـ ISP كل بكسل في تخطيط بايتات معيّن في الذاكرة. وتوازن الصيغة المختارة بين جودة الصورة وحجم الذاكرة وكيفية قراءة الكود اللاحق للبايتات. وهناك حفنة من الصيغ هي المهيمنة.
4.13.1. RAW (Bayer)¶
الخرج الافتراضي هو Bayer الخام -- وهو الفسيفساء نفسها ذات القناة الواحدة لكل بكسل التي ينتجها المستشعر. بايت واحد لكل بكسل، مرتّب وفق نمط Bayer: الأحمر والأخضر يتناوبان في الصفوف الزوجية، والأخضر والأزرق يتناوبان في الصفوف الفردية. ولم يُطبَّق أي فك بَيير، لذا ما زالت كل خلية تحمل فقط القيمة التي مرّرها مرشّح لونها.
يبلغ حجم Bayer الخام ثلث ذاكرة صورة RGB كاملة ثلاثية القنوات -- بايت واحد لكل بكسل مقابل ثلاثة -- ولم يُنفق أي دورات للـ ISP في فك البَيير أو تحويله. والكلفة هي أن على كود المستخدم القيام بفك البَيير بنفسه قبل أن يتسنى تشغيل أي معالجة واعية بالألوان.
4.13.2. RGB888¶
تُعدّ RGB888 الصيغة الكاملة الطبيعية للصورة الملونة: ثلاثة بايتات لكل بكسل، واحد لكل من القنوات الحمراء والخضراء والزرقاء بمعدل 8 بتات لكل قناة. أي أربعة وعشرون بتًا لكل بكسل وأقل بقليل من سبعة عشر مليون لون متمايز.
تُعدّ RGB888 المرجع المفاهيمي للصور الملونة الكاملة، ومعظم البرمجيات خارج اللوحة تتعامل بها. وعلى العتاد المدمج، يكمن عيبها الرئيسي في حجم البكسل ذي الـ 24 بت -- وهو ليس من مضاعفات حجم كلمة المعالج، ومحرج لمحاذاة الذاكرة، وأكبر بنسبة 50% من الصيغة التالية الأدنى.
4.13.3. RGB565¶
تحزم RGB565 كل بكسل في بايتين: خمسة بتات للأحمر، وستة بتات للأخضر، وخمسة بتات للأزرق. ويعكس بت الأخضر الإضافي حساسية العين الأعلى للأخضر، وهو يطابق الوزن المضاعف للقناة الخضراء في نمط Bayer.
تُعدّ RGB565 صيغة اللون الافتراضية على OpenMV Cam. فبايتان لكل بكسل محاذيان لـ 16 بت، وهو ما يلائم أعراض البيانات الطبيعية لوحدة التحكم الدقيقة -- إذ تعمل عمليات تحميل البكسل وتخزينه والحساب عليه جميعها بكامل السرعة، ويمكن للعديد من العمليات معالجة زوج من البكسلات دفعة واحدة. أما بكسلات RGB888 ذات الـ 24 بت فلا تصطف بهذه الطريقة وتدفع كلفة عند كل وصول. كما أن توفير الذاكرة بنسبة 33 بالمئة عن RGB888 يتراكم أيضًا: فدقة QVGA (320 × 240) تبلغ 150 كيلوبايت بصيغة RGB565 مقابل 225 كيلوبايت بصيغة RGB888، وتزداد الفجوة مع الدقة.
المقايضة هي 65 ألف لون متمايز بدلًا من سبعة عشر مليونًا. وبالنسبة لمعظم مهام الرؤية الآلية يكون الفرق غير مرئي، لأن الخوارزميات تختزل الإطار إلى تمثيلات مُحدَّدة العتبة أو مكتشَفة الحواف تُسقط معظم تفاصيل اللون على أي حال. أما بالنسبة للمشاهدة البشرية فتظهر البتات المفقودة على هيئة تشريط خفيف في تدرجات الألوان الناعمة لكن ليس على هيئة أي شيء تلتقطه العين فورًا.
4.13.4. YUV422¶
تقسم YUV422 لون كل بكسل إلى قيمة إضاءة (Y) وقيمتي كرومينانس (U و V)، ثم تُجري معاينة فرعية على الكرومينانس لأن الرؤية البشرية أقل حساسية بكثير لتباين اللون مقارنةً بتباين السطوع. ويحمل كل بكسل قيمة Y الخاصة به، لكن كل زوج من البكسلات المتجاورة يتشاركان قيمة U واحدة وقيمة V واحدة. ويبلغ تخطيط البايتات لكل زوج أربعة بايتات -- Y0 و U و Y1 و V -- وهو ما يساوي في المتوسط بايتين لكل بكسل، أي مطابقًا لـ RGB565.
غير أن البايتين يعنيان أشياء مختلفة عن RGB565. فقناة Y وحدها هي صورة تدرج رمادي بثمانية بتات جاهزة للاستخدام، وهي ما تستهلكه فعليًا معظم خوارزميات الرؤية الآلية الكلاسيكية (كشف الحواف، ومطابقة القوالب، وتحليل الكتل)؛ بينما تحمل القناتان U و V معلومات اللون للعدد القليل من الخوارزميات التي تحتاج إليها.
تُعدّ YUV422 الخيار الصحيح عندما يحتاج خط الأنابيب إلى كليهما -- خوارزمية في مرحلة مبكرة تقرأ Y فقط تليها مرحلة لاحقة تستخدم الكروما لقرارات لون أدق -- لأن قيم Y تكون موجودة هناك جاهزة للاستخدام دون أي تحويل لفضاء اللون.
4.13.5. تدرج الرمادي¶
تدرج الرمادي هو بايت واحد لكل بكسل: قيمة الإضاءة فقط، دون أي لون على الإطلاق. وهو أصغر صيغة كاملة -- نصف حجم RGB565 و YUV422، وثلث حجم RGB888.
تعمل معظم خوارزميات الرؤية الآلية الكلاسيكية على تدرج الرمادي على أي حال، لذا فإن إسقاط قناة اللون مباشرةً من المستشعر يكون غالبًا الخيار الأبسط والأكثر كفاءة في استخدام الذاكرة. فكشف الحواف، وإيجاد الخطوط، وتحليل الكتل، وفك ترميز رمز QR، ومطابقة القوالب، وكشف AprilTag، تعمل جميعها على تدرج الرمادي وتستفيد من المخزن المؤقت الأصغر.
4.13.6. صيغ أخرى¶
هناك بضع صيغ يستطيع OpenMV Cam إنتاجها لكنها لا تخرج من خط أنابيب الـ ISP كجزء من التدفق الطبيعي.
BINARY هي بت واحد لكل بكسل -- أصغر تمثيل ممكن. تُستخدم للصور مُحدَّدة العتبة، ومخازن الأقنعة، وخرج أي عملية تميّز فقط بين المطابقة وعدم المطابقة عند كل بكسل.
JPEG صيغة لون مضغوطة. تتضمن بعض المستشعرات مرمّز JPEG على الشريحة ويمكنها تسليم إطارات مضغوطة بصيغة JPEG مباشرةً؛ أما المستشعرات التي لا تملك واحدًا، فتشغّل وحدة التحكم الدقيقة مرمّز JPEG على إطار RGB أو تدرج رمادي كامل بعد الـ ISP. وفي كلتا الحالتين يكون الخرج تدفقًا بتّيًا بصيغة JPEG، مفيدًا لحفظ الإطارات في وحدة التخزين أو إرسالها عبر وصلة محدودة عرض النطاق.
PNG صيغة مضغوطة بلا فقدان. لا تنتج المستشعرات PNG مباشرةً؛ بل تضغط وحدة التحكم الدقيقة إطار RGB أو تدرج رمادي كامل عند الطلب. وهي مفيدة عندما يهمّ عرض النطاق أو التخزين لكن الضغط ذا الفقدان الذي تطبّقه JPEG قد يتخلص من معلومات يحتاجها التطبيق لاحقًا.