5.34. الخاتمة¶
وحدة image هي أكبر واجهة برمجية تكشفها الكاميرا، وقد غطى هذا الفصل للتوّ الخطوط العريضة لها: كيف تُمثَّل الصورة في الذاكرة، وكيف تقرأ الكاميرا البكسلات الفردية وتكتبها، وكيف ترسم داخل الإطارات الملتقطة، وكيف تحوّلها حسابياً وهندسياً، وكيف تصنّفها بالعتبات وترشّحها، وكيف تستخرج منها القياسات والكشوف، وكيف تفك تشفير الرموز المطبوعة منها، وكيف تقارن صورة بأخرى، وكيف تنقل النتائج إلى الكاميرا ومنها.
اتساع مجموعة الأدوات مقصود. فمسار رؤية حاسوبية كلاسيكي يعمل على كاميرا مدمجة صغيرة يؤدي معظم عمله قبل أن يصل أي شيء إلى نموذج تعلُّم آلي، إن وُجد -- إذ تنظّف العَتْبَنةُ الدخلَ، وتُزيل المرشِّحاتُ الضوضاءَ، وتضيّق المناطقُ نطاق البحث، وتُوطّن كواشف الكتل والخطوط المرشَّحين، ويقرّر تسجيل التشابه ما إذا كان المرشَّح مثيراً للاهتمام، وتُسلّم طبقة الإدخال/الإخراج النتيجةَ إلى أي شيء يشغّل المرحلة التالية. وغطّت كل صفحة في هذا الفصل واحدة من تلك العمليات؛ والمسار الصحيح لأي تطبيق بعينه هو تسلسل منها مركّب بالترتيب الذي تتطلبه المشكلة.
5.34.1. نمط المسار¶
تتبع معظم تطبيقات الكاميرا غير التافهة الخطوط العريضة نفسها. التقط إطاراً من المستشعر. عالِجه مسبقاً: حوّل الصيغ، وسوِّ المدرج التكراري، وموّه الضوضاء. وطّن المناطق أو الميزات ذات الاهتمام: كشف الكتل، وكشف الخطوط، ومطابقة القوالب، وفك تشفير الرموز. حلّل ما عُثر عليه: القياسات الهندسية، وتسجيل التشابه، والإحصاءات. قرّر ما الذي ستفعله بناءً على التحليل: أطلق GPIO، أو أبلِغ بحمولة، أو التقط وسجّل، أو سلّم الإطار إلى نموذج تعلُّم آلي. أخرِج القرارَ أو الأثرَ الملتقط: احفظ، أو رمّز، أو أرسل، أو ارسم عائداً في الإطار لمعاينة OpenMV IDE.
لم تغطِّ أي صفحة واحدة من الفصل كل خطوة؛ بل غطى الفصل اللبنات الأساسية التي يركّبها المسار. واختيار أي اللبنات تُستخدم وبأي ترتيب هو عمل البرنامج النصي للتطبيق.
5.34.2. إلى أين يقود الفصل¶
تتعامل وحدة image مع الصور بوصفها صوراً -- بكسلات، ومناطق، ورسم، وكشوف. وكثير من العمل على البيانات الملتقطة لا يندرج في ذلك الإطار. فحساب الإحصاءات على مصفوفة عددية اعتباطية، وتشغيل حساب مُتّجَه على بيانات مستشعر خام، وتطبيق تحويل مصفوفي مخصص لا تقف وراءه طريقة في وحدة image، وتحضير البيانات لنموذج تعلُّم آلي يريد تخطيط مُوَتِّر معيّناً -- كلها مهام لمكتبة مصفوفات عددية، لا لمكتبة معالجة صور.
يغطي الفصل التالي ذلك بالضبط. فوحدة ulab.numpy المرفقة مع MicroPython على الكاميرا هي مجموعة فرعية من NumPy، ويربطها بوحدة image جسران: تنسخ to_ndarray() بكسلات إطار إلى ndarray للعمل العددي، ويقبل مُنشئ Image كائنَ ndarray لبناء صورة جديدة من النتيجة، جاهزةً للعرض أو الحفظ أو التغذية الراجعة إلى مكتبة image. وتتركّب الوحدتان -- كل منهما تفعل ما لا تفعله الأخرى، وتغطيان معاً العمل العددي والتصويري الذي يحتاجه تطبيق رؤية مدمج.