6.20. خلاصة

غطّى هذا الفصل أجزاء numpy و scipy التي يلجأ إليها تطبيق OpenMV عندما لا يكون للعملية طريقة مدمجة في مكتبة الصور:

  • المفاهيم -- ما هي ndarray، ولماذا يتفوق مخزن مؤقت مُحزَّم ومُنمَّط على list في Python للعمل العددي، ومجموعة أنواع البيانات التي تدعمها الكاميرا.

  • الشكل والفهرسة -- العروض مقابل النسخ، وإسناد الشرائح للتحديثات الخالية من التخصيص، و transpose() بوصفها تعديلًا للواصف.

  • الرياضيات -- المعاملات عنصرًا بعنصر، والدوال الشاملة مثل sin()، وقواعد البثّ، والتخفيضات مثل mean()، ودوال الاختيار المساعدة مثل where().

  • الجبر الخطي -- dot() لضرب المصفوفات، و inv() / det() للمعكوس، والتحليلات والحلَّالات تحت numpy.linalg و scipy.linalg للمسائل ذات البنية الأكثر.

  • معالجة الإشارات -- fft()، و sosfilt() للترشيح الرقمي، و spectrogram() لأطياف المقدار الخالية من التخصيص في حلقة بثّية.

  • المنحنيات والتكامل -- interp()، و polyfit() / polyval()، و convolve() لمرشحات FIR القصيرة، و trapz() للتكامل شبه المنحرفي للبيانات المُعيَّنة.

  • الحلَّالات والأعداد العشوائية -- scipy.integrate لتربيع كائن Python قابل للاستدعاء، و scipy.optimize لإيجاد الجذور والتصغير، و scipy.special للدوال الإحصائية الخاصة، و Generator للمعاينة شبه العشوائية.

  • الصور -- جسر to_ndarray() و image.Image للحالات النادرة التي لا تغطيها مكتبة الصور.

  • الأداء -- أنواع البيانات الصغيرة، والمخازن المؤقتة المُخصّصة مسبقًا، والمعاملات في المكان، والكلمات المفتاحية out=، والحذر من تموّج الأقنعة المنطقية في الحلقات البثّية.

يغطي ذلك العمل العددي العام الذي يستند إليه باقي الكاميرا. فالـ numpy هي صندوق الأدوات الذي يمدّ إليه التطبيق يده عندما لا تكون للعملية طريقة مدمجة على Image -- تحويل بكسل مخصص، أو حلّ معايرة، أو FFT لصوت مُخزّن مؤقتًا.