6.20. สรุป

บทนี้ครอบคลุมส่วนต่าง ๆ ของ numpy และ scipy ที่แอปพลิเคชัน OpenMV ใช้เมื่อการดำเนินการไม่มีวิธีในไลบรารีภาพในตัว:

  • แนวคิด -- ndarray คืออะไร ทำไมบัฟเฟอร์แบบมีประเภทและบรรจุแน่นจึงดีกว่า Python list สำหรับงานตัวเลข และชุด dtype ที่กล้องรองรับ

  • รูปร่างและการทำดัชนี -- views กับ copies การกำหนดค่าสไลซ์สำหรับการอัปเดตโดยไม่จัดสรรหน่วยความจำ transpose() ในฐานะการแก้ไข descriptor

  • คณิตศาสตร์ -- ตัวดำเนินการเชิงองค์ประกอบ ฟังก์ชันสากลเช่น sin() กฎการออกอากาศ การลดขนาดเช่น mean() และตัวช่วยการเลือกเช่น where()

  • พีชคณิตเชิงเส้น -- dot() สำหรับการคูณเมทริกซ์ inv() / det() สำหรับอินเวอร์ส และการแยกส่วนประกอบและตัวแก้สมการภายใต้ numpy.linalg และ scipy.linalg สำหรับปัญหาที่มีโครงสร้างมากขึ้น

  • การประมวลผลสัญญาณ -- fft(), sosfilt() สำหรับการกรองดิจิทัล และ spectrogram() สำหรับสเปกตรัมขนาดโดยไม่จัดสรรหน่วยความจำในลูปการสตรีม

  • เส้นโค้งและการอินทิเกรต -- interp(), polyfit() / polyval(), convolve() สำหรับตัวกรอง FIR สั้น trapz() สำหรับการอินทิเกรตแบบ trapezoidal ของข้อมูลที่สุ่มตัวอย่าง

  • ตัวแก้สมการและตัวเลขสุ่ม -- scipy.integrate สำหรับ quadrature ของ Python callable scipy.optimize สำหรับการหารากและการหาค่าต่ำสุด scipy.special สำหรับฟังก์ชันพิเศษทางสถิติ และ Generator สำหรับการสุ่มตัวอย่างเทียม

  • ภาพ -- สะพาน to_ndarray() และ image.Image สำหรับกรณีที่พบไม่บ่อยที่ไลบรารีภาพไม่ครอบคลุม

  • ประสิทธิภาพ -- dtype ขนาดเล็ก บัฟเฟอร์ที่จัดสรรล่วงหน้า ตัวดำเนินการ in-place คีย์เวิร์ด out= และระวัง boolean-mask churn ในลูปการสตรีม

นั่นครอบคลุมงานตัวเลขทั่วไปที่กล้องส่วนที่เหลือพึ่งพา numpy คือกล่องเครื่องมือที่แอปพลิเคชันหยิบใช้เมื่อการดำเนินการไม่มีวิธีในตัวบน Image เช่น การแปลงพิกเซลแบบกำหนดเอง การแก้สมการการสอบเทียบ หรือ FFT ของเสียงที่บัฟเฟอร์ไว้